From 697e1ba3c4cb0a96c4584f1553de368d46287ab7 Mon Sep 17 00:00:00 2001 From: dam Date: Tue, 30 Nov 2021 01:06:44 +0000 Subject: Initial commit. --- src/com/example/surgerylog/MainActivity.java | 330 +++++++++++++++++++++++++++ 1 file changed, 330 insertions(+) create mode 100755 src/com/example/surgerylog/MainActivity.java (limited to 'src/com/example/surgerylog/MainActivity.java') diff --git a/src/com/example/surgerylog/MainActivity.java b/src/com/example/surgerylog/MainActivity.java new file mode 100755 index 0000000..47910cc --- /dev/null +++ b/src/com/example/surgerylog/MainActivity.java @@ -0,0 +1,330 @@ +package com.example.surgerylog; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FilenameFilter; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.io.StreamCorruptedException; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Locale; +import java.util.Map; +import net.redroid.medlog.R; + +import com.csvreader.CsvReader; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.os.Bundle; +import android.os.Environment; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.app.FragmentStatePagerAdapter; +import android.support.v4.app.NavUtils; +import android.support.v4.view.ViewPager; +import android.util.Log; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.view.ViewGroup; +import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.Spinner; +import android.widget.SpinnerAdapter; +import android.widget.TextView; +import android.widget.Toast; + +public class MainActivity extends FragmentActivity +{ + /** + * The {@link android.support.v4.view.PagerAdapter} that will provide + * fragments for each of the sections. We use a + * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which + * will keep every loaded fragment in memory. If this becomes too memory + * intensive, it may be best to switch to a + * {@link android.support.v4.app.FragmentStatePagerAdapter}. + */ + SectionsPagerAdapter mSectionsPagerAdapter; + + /** + * The {@link ViewPager} that will host the section contents. + */ + ViewPager mViewPager; + + // MedTree root + public MedLogRoot Root; + public List DataBase; + public MedLogInfo CurrentInfo = new MedLogInfo(); + + // MedTree description file + public int ProcessDescriptionFileNumColumns = 8; + public String AppFolder = Environment.getExternalStorageDirectory() + "//MedLog"; + public String TemplateDescriptionFile = Environment.getExternalStorageDirectory() + "//MedLog//template.csv"; + public String ExportFile = Environment.getExternalStorageDirectory() + "//MedLog//export.csv"; + public String MedLogConfigFile = Environment.getExternalStorageDirectory() + "//MedLog//config.bin"; + public String MedLogDataBaseFile = Environment.getExternalStorageDirectory() + "//MedLog//database.bin"; + private int MessageTime = 1; + + @Override + protected void onCreate(Bundle savedInstanceState) { + + //Log.e("Trace", "MainActiviyy START"); + + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_main); + + // Create root + Root = new MedLogRoot(); + + // Create the adapter that will return a fragment for each of the three + // primary sections of the app. + mSectionsPagerAdapter = new SectionsPagerAdapter( + getSupportFragmentManager()); + + // Set up the ViewPager with the sections adapter. + mViewPager = (ViewPager) findViewById(R.id.pager); + mViewPager.setAdapter(mSectionsPagerAdapter); + + CheckAppFolder(); + LoadMedLogConfig(); + LoadMedLogDB(); + + //Log.e("Trace", "MainActiviyy OUT"); + } + +// @Override +// public boolean onCreateOptionsMenu(Menu menu) { +// // Inflate the menu; this adds items to the action bar if it is present. +// getMenuInflater().inflate(R.menu.main, menu); +// return true; +// } + + private void CheckAppFolder() + { + File appFolder = new File(AppFolder); + if(appFolder.exists() == false) + { + appFolder.mkdir(); + } + } + + public void LoadMedLogConfig() + { + try { + //Log.e("Trace Cfg", "input file"); + FileInputStream fis = new FileInputStream(MedLogConfigFile); + //FileInputStream fis = getApplicationContext().openFileInput(MedLogConfigFile); + //FileInputStream fis = getApplicationContext().openFileInput("MedLogConfig.bin"); + //Log.e("Trace Cfg", "input stream"); + ObjectInputStream is = new ObjectInputStream(fis); + //Log.e("Trace Cfg", "read object"); + Root = (MedLogRoot) is.readObject(); + //Log.e("Trace Cfg", "close file"); + is.close(); + //Log.e("Trace Cfg", "done loading"); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + //Log.e("TrTrace Cfgace", "File not found during load."); + } catch (StreamCorruptedException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + //Log.e("Trace Cfg", "Stream corrupted during load."); + } catch (IOException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + //Log.e("Trace Cfg", "IO Exception during load."); + } catch (ClassNotFoundException e) { + // TODO Auto-generated catch block + //e.printStackTrace(); + //Log.e("Trace Cfg", "Class not found during load."); + } + } + + public void SaveMedLogConfig() + { + try { + //Log.e("Trace Cfg", "get context"); + Context c = getApplicationContext(); + //Log.e("Trace Cfg", "open output file"); + //FileOutputStream fos = getApplicationContext().openFileOutput(MedLogConfigFile, Context.MODE_PRIVATE); + FileOutputStream fos = new FileOutputStream(MedLogConfigFile); + //Log.e("Trace Cfg", "new output stream"); + ObjectOutputStream os = new ObjectOutputStream(fos); + //Log.e("Trace Cfg", "write"); + os.writeObject(Root); + //Log.e("Trace Cfg", "close"); + os.close(); + //Log.e("Trace Cfg", "done"); + } catch (FileNotFoundException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + //Log.e("Trace Cfg", "File not found during save."); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + //Log.e("Trace Cfg", "IO Exception during save."); + } + } + + public void LoadMedLogDB() + { + try { + //Log.e("Trace DB", "input file"); + FileInputStream fis = new FileInputStream(MedLogDataBaseFile); + //Log.e("Trace DB", "input stream"); + ObjectInputStream is = new ObjectInputStream(fis); + //Log.e("Trace DB", "read object"); + DataBase = (List) is.readObject(); + //Log.e("Trace DB", "close file"); + is.close(); + //Log.e("Trace DB", "done loading"); + } catch (FileNotFoundException e) { + //Log.e("Trace DB", "File not found during load."); + } catch (StreamCorruptedException e) { + //Log.e("Trace DB", "Stream corrupted during load."); + } catch (IOException e) { + //Log.e("Trace DB", "IO Exception during data base load."); + } catch (ClassNotFoundException e) { + //Log.e("Trace DB", "Class 'List' not found during load."); + } + finally + { + if(DataBase == null) + { + // create empty data base + DataBase = new ArrayList(); + } + } + } + + public void SaveMedLogDB() + { + try { + //Log.e("Trace DB", "get context"); + Context c = getApplicationContext(); + //Log.e("Trace DB", "open output file"); + FileOutputStream fos = new FileOutputStream(MedLogDataBaseFile); + //Log.e("Trace DB", "new output stream"); + ObjectOutputStream os = new ObjectOutputStream(fos); + //Log.e("Trace DB", "write"); + os.writeObject(DataBase); + //Log.e("Trace DB", "close"); + os.close(); + //Log.e("Trace DB", "done"); + } catch (FileNotFoundException e) { + //Log.e("Trace DB", "File not found during save."); + } catch (IOException e) { + //Log.e("Trace DB", "IO Exception during save."); + } + } + + public void AddNewEntry() + { + DataBase.add(CurrentInfo); + SaveMedLogDB(); + Root.GrowTreeWithInfo(CurrentInfo); + SaveMedLogConfig(); + CurrentInfo = new MedLogInfo(); + } + + public void ShowMessage(int messageId) + { + for (int i=0; i < MessageTime; i++) + { + Toast.makeText(this, messageId, Toast.LENGTH_LONG).show(); + } + } + + public void ShowMessage(String message) + { + for (int i=0; i < MessageTime; i++) + { + Toast.makeText(this, message, Toast.LENGTH_LONG).show(); + } + } + + /** + * A {@link FragmentPagerAdapter} that returns a fragment corresponding to + * one of the sections/tabs/pages. + */ + public class SectionsPagerAdapter extends FragmentStatePagerAdapter //FragmentPagerAdapter + { + + public SectionsPagerAdapter(FragmentManager fm) { + super(fm); + } + + @Override + public Fragment getItem(int position) + { + //Log.e("Trace", "new frag IN"); + + // getItem is called to instantiate the fragment for the given page. + // Return a DummySectionFragment (defined as a static inner class + // below) with the page number as its lone argument. + Fragment fragment; + if(position == 0) + { + fragment = new NewEntryFragment(); + } + else if(position == 1) + { + fragment = new ViewDataFragment(); + } + else + { + fragment = new FileOperationsFragment(); + } + + Bundle args = new Bundle(); + args.putInt(NewEntryFragment.ARG_SECTION_NUMBER, position + 1); + fragment.setArguments(args); + + // retain instances + //Log.e("Trace", "new frag"); + + return fragment; + } + + @Override + public int getCount() { + // Show 3 total pages. + return 3; + } + + @Override + public CharSequence getPageTitle(int position) + { + Locale l = Locale.getDefault(); + switch (position) { + case 0: + return getString(R.string.title_section1).toUpperCase(l); + case 1: + return getString(R.string.title_section2).toUpperCase(l); + case 2: + return getString(R.string.title_section3).toUpperCase(l); + } + return null; + } + } + + +} -- cgit v1.2.3