diff options
| author | mikem <mikem@oliodevices.com> | 2014-07-20 18:25:56 -0700 | 
|---|---|---|
| committer | mikem <mikem@oliodevices.com> | 2014-07-20 18:25:56 -0700 | 
| commit | 99647fa29ba92546dbad1bc8f742322f7161266a (patch) | |
| tree | fcd039eee6fe21c78914f84d0d350aa985ea4bc8 /GymLog/src/main/java/com | |
| parent | bd7d68613088655c4201aaca1cfa6d3e3bfee6ae (diff) | |
| download | GymLog-99647fa29ba92546dbad1bc8f742322f7161266a.tar.xz GymLog-99647fa29ba92546dbad1bc8f742322f7161266a.zip | |
Creating a weekly log file and savin to it any time changes are made to stats for an exercise.
Diffstat (limited to 'GymLog/src/main/java/com')
| -rw-r--r-- | GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java | 9 | ||||
| -rw-r--r-- | GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java | 103 | 
2 files changed, 111 insertions, 1 deletions
| diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java b/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java index be5078e..748f844 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java @@ -2,6 +2,7 @@ package com.mikemiller.gymlog;  import android.app.Fragment;
  import android.content.Context;
 +import android.content.Intent;
  import android.content.SharedPreferences;
  import android.os.Bundle;
  import android.os.Environment;
 @@ -25,6 +26,8 @@ import java.util.Properties;  public class ActivityFragment extends Fragment {
 +    public static String STAT_UPDATED = "STAT_UPDATED";
 +
      private class ActivityStats {
          public ActivityStats(int weight, int reps) {
              this.weight = weight;
 @@ -205,12 +208,18 @@ public class ActivityFragment extends Fragment {          stats.weight = weight;
          setActivityStats(stats);
          saveToFile();
 +
 +        // Update the weekly log file
 +        getActivity().sendBroadcast(new Intent(STAT_UPDATED));
      }
      private void setReps(int reps) {
          ActivityStats stats = getActivityStats();
          stats.reps = reps;
          setActivityStats(stats);
          saveToFile();
 +
 +        // Update the weekly log file
 +        getActivity().sendBroadcast(new Intent(STAT_UPDATED));
      }
      private void refreshButton() {
 diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java b/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java index f479fc7..4a78fd6 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java @@ -2,14 +2,24 @@ package com.mikemiller.gymlog;  import android.app.Fragment;  import android.app.FragmentManager; +import android.content.BroadcastReceiver;  import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter;  import android.content.SharedPreferences;  import android.os.Bundle; +import android.os.Environment;  import android.support.v4.app.FragmentActivity;  import android.support.v13.app.FragmentPagerAdapter;  import android.support.v4.view.ViewPager;  import android.util.Log; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.InputStreamReader; +import java.io.OutputStreamWriter;  import java.text.SimpleDateFormat;  import java.util.ArrayList;  import java.util.Arrays; @@ -18,6 +28,7 @@ import java.util.Date;  import java.util.HashMap;  import java.util.List;  import java.util.Map; +import java.util.Properties;  public class MainActivity extends FragmentActivity { @@ -55,6 +66,8 @@ public class MainActivity extends FragmentActivity {                  new Activity("Weighted Ab Cable Crunches", 1, 10, 20, 0, 0)});      }}; +    private IntentReceiver mIntentReceiver; +      @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState); @@ -63,7 +76,11 @@ public class MainActivity extends FragmentActivity {          ViewPager pager = (ViewPager) findViewById(R.id.viewPager);          pager.setAdapter(new MyPagerAdapter(getFragmentManager())); -        mEpisodeFragment = SimpleCounterFragment.newInstance("Whose Line"); +        //mEpisodeFragment = SimpleCounterFragment.newInstance("Whose Line"); + +        if (mIntentReceiver == null) mIntentReceiver = new IntentReceiver(); +        IntentFilter intentFilter = new IntentFilter(ActivityFragment.STAT_UPDATED); +        registerReceiver(mIntentReceiver, intentFilter);          String summary = getWeekSummary();          //Log.d("Summary", summary); @@ -153,4 +170,88 @@ public class MainActivity extends FragmentActivity {              return getActivitiesForToday().length;          }      } + +    private class IntentReceiver extends BroadcastReceiver { +        @Override +        public void onReceive(Context context, Intent intent) { +            if (intent.getAction().equals(ActivityFragment.STAT_UPDATED)) { +                String summary = getWeekSummary(); + +                ArrayList<String> allWeeks = getAllWeeklySummariesFromFile(); + +                allWeeks = replaceOrAddWeek(allWeeks, summary); +                saveAllWeeklySummariesToFile(allWeeks); + +                Log.d("", ""); +            } +        } +    } + +    private ArrayList<String> replaceOrAddWeek(ArrayList<String> allWeeks, String replacement) { +        String date = replacement.substring(0, replacement.indexOf('\t')); +        boolean replaced = false; +        for(int i = 0; i < allWeeks.size() - 1; i++) { +            String entry = allWeeks.get(i); +            if (entry.startsWith(date)) { +                // We found a previous entry for this week. Update it. +                allWeeks.remove(i); +                allWeeks.add(i, replacement); +                replaced = true; +            } +        } + +        if (!replaced) { +            allWeeks.add(replacement); +        } +        return allWeeks; +    } + +    public File getSaveFile() { +        // External storage is not always available (i.e. when mounting via adb). Consider using a different medium for saving. +        File dir = new File(Environment.getExternalStorageDirectory() + File.separator + "GymLog"+ File.separator); +        // have the object build the directory structure, if needed. +        dir.mkdirs(); +        // create a File object for the output file +        File file = new File(dir, "WeeklyLog.txt"); +        return file; +    } + +    private ArrayList<String> getAllWeeklySummariesFromFile() { + +        ArrayList<String> allLines = new ArrayList<String>(); + +        try { +            FileInputStream fi = new FileInputStream(getSaveFile()); +            InputStreamReader inputreader = new InputStreamReader(fi); +            BufferedReader buffreader = new BufferedReader(inputreader); + +            for (String line = buffreader.readLine(); line != null; line = buffreader.readLine()) { +                allLines.add(line); +            } + +            fi.close(); +        } catch (Exception e) { +            e.printStackTrace(); +        } + +        return allLines; +    } + +    private void saveAllWeeklySummariesToFile(ArrayList<String> allWeeks) { +        try { +            FileOutputStream os = new FileOutputStream(getSaveFile(), false); + +            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(os); +            outputStreamWriter.flush(); +            for(String line : allWeeks) { +                outputStreamWriter.write(line); +                outputStreamWriter.write("\r\n"); +            } +            outputStreamWriter.close(); + +            os.close(); +        } catch (Exception e) { +            e.printStackTrace(); +        } +    }  }
\ No newline at end of file |