diff options
Diffstat (limited to 'GymLog/src/main')
9 files changed, 636 insertions, 483 deletions
diff --git a/GymLog/src/main/AndroidManifest.xml b/GymLog/src/main/AndroidManifest.xml index 417ce01..d587282 100644 --- a/GymLog/src/main/AndroidManifest.xml +++ b/GymLog/src/main/AndroidManifest.xml @@ -1,21 +1,21 @@ -<?xml version="1.0" encoding="utf-8"?> -<manifest xmlns:android="http://schemas.android.com/apk/res/android" - package="com.mikemiller.gymlog" > - - <application - android:allowBackup="true" - android:icon="@drawable/ic_launcher" - android:label="@string/app_name" - android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > - <activity - android:name="com.mikemiller.gymlog.MainActivity" - android:label="@string/app_name" > - <intent-filter> - <action android:name="android.intent.action.MAIN" /> - - <category android:name="android.intent.category.LAUNCHER" /> - </intent-filter> - </activity> - </application> - -</manifest> +<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.mikemiller.gymlog" >
+
+ <application
+ android:allowBackup="true"
+ android:icon="@drawable/ic_launcher"
+ android:label="@string/app_name"
+ android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
+ <activity
+ android:name="com.mikemiller.gymlog.MainActivity"
+ android:label="@string/app_name" >
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest>
diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/Activity.java b/GymLog/src/main/java/com/mikemiller/gymlog/Activity.java index bce8419..85ebf43 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/Activity.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/Activity.java @@ -1,46 +1,103 @@ -package com.mikemiller.gymlog; - -import java.io.Serializable; - -/** - * Created by Mike on 3/29/14. COPYRIGHT OLIO. - */ -public class Activity implements Serializable { - private String mName; - private int mSets; - private int mRepsLow; - private int mRepsHigh; - private int mWeightDecrement_percent; - private int mRepIncrement; - - public Activity (String name, int sets, int repsLow, int repsHigh, int weightDecrement_percent, int repIncrement) { - mName = name; - mSets = sets; - mRepsLow = repsLow; - mRepsHigh = repsHigh; - mWeightDecrement_percent = weightDecrement_percent; - mRepIncrement = repIncrement; - } - - public String getName() { return mName; } - public int getSets() { return mSets; } - public int getRepsLow() { return mRepsLow; } - public int getRepsHigh() { return mRepsHigh; } - public int getWeightForSet(int set, int setOneWeight) { - double val = (int)(setOneWeight - (set - 1) * setOneWeight * (mWeightDecrement_percent / 100.0)); - return (int) (5*(Math.round(val/5))); // Round to the nearest 5 lbs - } - public int getRepIncrement() { return mRepIncrement; } - - public String getSummary(int setOneWeight, int currentReps) { - String summary = ""; - String reps = getRepsLow() + (getRepsLow() == getRepsHigh() ? "" : " - " + getRepsHigh()); - summary += reps + " reps ("+ currentReps + ")\n\n"; - for (int i = 1; i <= getSets(); i++) { - summary += i + ": " + getWeightForSet(i, setOneWeight); - if (i > 1 && getRepIncrement() > 0) summary += " (+" + getRepIncrement() + " rep)"; - if (i < getSets()) summary += "\n"; - } - return summary; - } -} +package com.mikemiller.gymlog;
+
+import java.io.Serializable;
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+
+/**
+ * Created by Mike on 3/29/14. COPYRIGHT OLIO.
+ */
+public class Activity implements Serializable {
+ private String mName;
+ private int mSets;
+ private int mRepsLow;
+ private int mRepsHigh;
+ private int mWeightDecrement_percent;
+ private int mRepIncrement;
+
+ public Activity (String name, int sets, int repsLow, int repsHigh, int weightDecrement_percent, int repIncrement) {
+ mName = name;
+ mSets = sets;
+ mRepsLow = repsLow;
+ mRepsHigh = repsHigh;
+ mWeightDecrement_percent = weightDecrement_percent;
+ mRepIncrement = repIncrement;
+ }
+
+ public String getName() { return mName; }
+ public String getSharedPreferencesName() { return "activity_data_" + mName; }
+ public int getSets() { return mSets; }
+ public int getRepsLow() { return mRepsLow; }
+ public int getRepsHigh() { return mRepsHigh; }
+ public int getWeightForSet(int set, int setOneWeight) {
+ double val = (int)(setOneWeight - (set - 1) * setOneWeight * (mWeightDecrement_percent / 100.0));
+ return (int) (5*(Math.round(val/5))); // Round to the nearest 5 lbs
+ }
+ public int getRepIncrement() { return mRepIncrement; }
+
+ public String getSummary(int setOneWeight, int currentReps, int lastWeight, int lastReps) {
+ String summary = "";
+ String reps = getRepsLow() + (getRepsLow() == getRepsHigh() ? "" : "-" + getRepsHigh());
+ summary += reps + " reps ("+ lastWeight + "x" + lastReps + ")\n\n";
+ ArrayList<String> sideWeightPerSet = getSideWeightPerSet(45, setOneWeight, getSets());
+ for (int i = 1; i <= getSets(); i++) {
+ summary += i + ": " + getWeightForSet(i, setOneWeight) + "x" + (currentReps + (i-1) * getRepIncrement()) + " (" + sideWeightPerSet.get(i-1) + ")";
+ if (i < getSets()) summary += "\n";
+ }
+ return summary;
+ }
+
+ static double[] sAvailableWeights = new double[]{45, 35, 25, 10, 5, 2.5};
+
+ private ArrayList<String> getSideWeightPerSet(int barWeight, int setOneWeight, int sets) {
+ ArrayList<String> weightPerSide = new ArrayList<String>();
+
+ DecimalFormat format = new DecimalFormat();
+ format.setDecimalSeparatorAlwaysShown(false);
+
+ ArrayList<Double> lastWeights = new ArrayList<Double>();
+
+ for(int i = sets; i >= 1; i--) {
+ int weight = getWeightForSet(i, setOneWeight);
+ double sideTotal = (weight - barWeight) / 2.0;
+ ArrayList<Double> subWeights = getSubWeights(sideTotal, lastWeights);
+ String weightPerSideForThisSet = "";
+ for(Double subWeight : subWeights) {
+ weightPerSideForThisSet = weightPerSideForThisSet + format.format(subWeight) + " ";
+ }
+ if (weightPerSideForThisSet.length() > 0) {
+ weightPerSideForThisSet = weightPerSideForThisSet.substring(0, weightPerSideForThisSet.length() - 1);
+ }
+ weightPerSide.add(0, weightPerSideForThisSet);
+ lastWeights = subWeights;
+ }
+
+ return weightPerSide;
+ }
+
+ private ArrayList<Double> getSubWeights(double total, ArrayList<Double> lastWeights) {
+ ArrayList<Double> subWeights = new ArrayList<Double>();
+
+ // We allow removing the last weight and replacing it with a larger weight. This method is meant to be called in ascending total weight order (i.e. backwards from the inverted pyramid training, so start with the final, lightest rep).
+ if (lastWeights.size() > 0) {
+ lastWeights.remove(lastWeights.size() - 1);
+ }
+ for (double weight : lastWeights) {
+ total -= weight;
+ subWeights.add(weight);
+ }
+
+ int i = 0;
+ while (i < sAvailableWeights.length) {
+ double weight = sAvailableWeights[i];
+ if (weight <= total) {
+ subWeights.add(weight);
+ total -= weight;
+ } else {
+ i++;
+ }
+ }
+
+ return subWeights;
+ }
+}
diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java b/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java index a4986ea..25dd30a 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java @@ -1,179 +1,209 @@ -package com.mikemiller.gymlog; - -import android.app.Fragment; -import android.content.Context; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.view.GestureDetector; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.TextView; - -public class ActivityFragment extends Fragment { - - private Activity mActivity; - private int mWeight = 0; - private int mReps = 0; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_activity, container, false); - - TextView name = (TextView) view.findViewById(R.id.name); - mActivity = (Activity) getArguments().getSerializable("activity"); - name.setText(mActivity.getName()); - - Button summary = (Button) view.findViewById(R.id.summary); - if (savedInstanceState!= null && savedInstanceState.containsKey("count")) { - mWeight = savedInstanceState.getInt("count"); - } - - summary.setText(Integer.toString(mWeight)); - summary.setOnTouchListener(new View.OnTouchListener() { - GestureDetector doubleTapDetector = new GestureDetector(new DoubleTapDetector(getActivity())); - GestureDetector flingDetector = new GestureDetector(getActivity(), new GestureDetector.OnGestureListener() { - @Override - public boolean onDown(MotionEvent e) { - return false; - } - - @Override - public void onShowPress(MotionEvent e) { - - } - - @Override - public boolean onSingleTapUp(MotionEvent e) { - return false; - } - - @Override - public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { - return false; - } - - @Override - public void onLongPress(MotionEvent e) { - decrementWeight(); - } - - @Override - public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { - final float minFlingVelocity = 300; - if (velocityY > minFlingVelocity && Math.abs(velocityX) < minFlingVelocity) { - decrementReps(); - } else if (velocityY < -minFlingVelocity && Math.abs(velocityX) < minFlingVelocity ) { - incrementReps(); - } - return true; - } - }); - - @Override - public boolean onTouch(View v, MotionEvent event) { - if (flingDetector.onTouchEvent(event)) { - return true; - } - if (doubleTapDetector.onTouchEvent(event)) { - // A double tap occurred. - incrementWeight(); - return true; - } - return false; - } - }); - - - /* - count.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - incrementWeight(); - } - });*/ - - return view; - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - - outState.putInt("weight", mWeight); - } - - @Override - public void onViewStateRestored(Bundle savedInstanceState) { - super.onViewStateRestored(savedInstanceState); - - if (savedInstanceState!= null && savedInstanceState.containsKey("weight")) { - setWeight(savedInstanceState.getInt("weight")); - } - } - - private void setWeight(int weight) { - mWeight = weight; - Button summaryButton = (Button) getView().findViewById(R.id.summary); - summaryButton.setText(getSummary()); - } - private void setReps(int reps) { - mReps = reps; - Button summaryButton = (Button) getView().findViewById(R.id.summary); - summaryButton.setText(getSummary()); - } - - private String getSummary() { - return mActivity.getSummary(mWeight, mReps); - } - - public void incrementWeight() { - setWeight(mWeight + 5); - } - public void decrementWeight() { - setWeight(mWeight - 5); - } - public void incrementReps() { - setReps(mReps + 1); - } - public void decrementReps() { - setReps(mReps - 1); - } - - public static ActivityFragment newInstance(Activity activity) { - - ActivityFragment f = new ActivityFragment(); - Bundle b = new Bundle(); - b.putSerializable("activity", activity); - f.setArguments(b); - - return f; - } - - @Override - public void onStop() { - super.onStop(); - saveData(); - } - - private void saveData() { - SharedPreferences.Editor outState = getActivity().getSharedPreferences(getSharedpreferencesName(), Context.MODE_APPEND).edit(); - outState.putInt("weight", mWeight); - outState.putInt("reps", mReps); - outState.commit(); - } - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - SharedPreferences activity_data = getActivity().getSharedPreferences(getSharedpreferencesName(), Context.MODE_APPEND); - setWeight(activity_data.getInt("weight", 0)); - setReps(activity_data.getInt("reps", 0)); - } - - private String getSharedpreferencesName() { - return "activity_data_" + mActivity.getName(); - } +package com.mikemiller.gymlog;
+
+import android.app.Fragment;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.GestureDetector;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+import java.util.Calendar;
+import java.util.Date;
+
+public class ActivityFragment extends Fragment {
+
+ private Activity mActivity;
+ private int mWeight = 0;
+ private int mReps = 0;
+ private int mLastWeight = 0;
+ private int mLastReps = 0;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_activity, container, false);
+
+ TextView name = (TextView) view.findViewById(R.id.name);
+ mActivity = (Activity) getArguments().getSerializable("activity");
+ name.setText(mActivity.getName());
+
+ Button summary = (Button) view.findViewById(R.id.summary);
+ if (savedInstanceState!= null && savedInstanceState.containsKey("count")) {
+ mWeight = savedInstanceState.getInt("count");
+ }
+
+ summary.setText(Integer.toString(mWeight));
+ summary.setOnTouchListener(new View.OnTouchListener() {
+ GestureDetector doubleTapDetector = new GestureDetector(new DoubleTapDetector(getActivity()));
+ GestureDetector flingAndLongPressDetector = new GestureDetector(getActivity(), new GestureDetector.OnGestureListener() {
+ @Override
+ public boolean onDown(MotionEvent e) {
+ return false;
+ }
+
+ @Override
+ public void onShowPress(MotionEvent e) {
+
+ }
+
+ @Override
+ public boolean onSingleTapUp(MotionEvent e) {
+ return false;
+ }
+
+ @Override
+ public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
+ return false;
+ }
+
+ @Override
+ public void onLongPress(MotionEvent e) {
+ decrementWeight();
+ }
+
+ @Override
+ public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
+ final float minFlingVelocity = 1000;
+ if (Math.abs(velocityX) < Math.abs(velocityY)) { // make sure we're flinging more up than sideways
+ if (velocityY > minFlingVelocity) {
+ decrementReps();
+ } else if (velocityY < -minFlingVelocity) {
+ incrementReps();
+ }
+ }
+ return true;
+ }
+ });
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ if (flingAndLongPressDetector.onTouchEvent(event)) {
+ return true;
+ }
+ if (doubleTapDetector.onTouchEvent(event)) {
+ // A double tap occurred.
+ incrementWeight();
+ return true;
+ }
+ return false;
+ }
+ });
+
+
+ /*
+ count.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ incrementWeight();
+ }
+ });*/
+
+ return view;
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putInt("weight", mWeight);
+ outState.putInt("reps", mReps);
+ }
+
+ @Override
+ public void onViewStateRestored(Bundle savedInstanceState) {
+ super.onViewStateRestored(savedInstanceState);
+
+ if (savedInstanceState!= null && savedInstanceState.containsKey("weight")) {
+ setWeight(savedInstanceState.getInt("weight"));
+ }
+ if (savedInstanceState!= null && savedInstanceState.containsKey("reps")) {
+ setWeight(savedInstanceState.getInt("reps"));
+ }
+ }
+
+ private void setWeight(int weight) {
+ mWeight = weight;
+ refreshButton();
+ }
+ private void setReps(int reps) {
+ mReps = reps;
+ refreshButton();
+ }
+ private void setLastWeight(int weight) {
+ mLastWeight = weight;
+ refreshButton();
+ }
+ private void setLastReps(int reps) {
+ mLastReps = reps;
+ refreshButton();
+ }
+
+ private void refreshButton() {
+ Button summaryButton = (Button) getView().findViewById(R.id.summary);
+ summaryButton.setText(mActivity.getSummary(mWeight, mReps, mLastWeight, mLastReps));
+ }
+
+
+ public void incrementWeight() {
+ setWeight(mWeight + 5);
+ }
+ public void decrementWeight() {
+ setWeight(mWeight - 5);
+ }
+ public void incrementReps() {
+ setReps(mReps + 1);
+ }
+ public void decrementReps() {
+ setReps(mReps - 1);
+ }
+
+ public static ActivityFragment newInstance(Activity activity) {
+
+ ActivityFragment f = new ActivityFragment();
+ Bundle b = new Bundle();
+ b.putSerializable("activity", activity);
+ f.setArguments(b);
+
+ return f;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ saveData();
+ }
+
+ private void saveData() {
+ SharedPreferences.Editor outState = getActivity().getSharedPreferences(mActivity.getSharedPreferencesName(), Context.MODE_APPEND).edit();
+ outState.putInt("weight", mWeight);
+ outState.putInt("reps", mReps);
+ outState.putLong("dateSaved", Calendar.getInstance().getTimeInMillis());
+ outState.commit();
+ }
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ SharedPreferences activity_data = getActivity().getSharedPreferences(mActivity.getSharedPreferencesName(), Context.MODE_APPEND);
+ setWeight(activity_data.getInt("weight", 0));
+ setReps(activity_data.getInt("reps", 0));
+
+ long dateSavedMillis = activity_data.getLong("dateSaved", 0);
+ if (dateSavedMillis > 0) {
+ Date dateSaved = new Date(dateSavedMillis);
+
+ long diff = Math.abs(Calendar.getInstance().getTime().getTime() - dateSaved.getTime());
+ long diffDays = diff / (24 * 60 * 60 * 1000);
+ if (diffDays > 2) {
+ setLastWeight(mWeight);
+ setLastReps(mReps);
+ }
+ }
+
+ }
}
\ No newline at end of file diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/DoubleTapDetector.java b/GymLog/src/main/java/com/mikemiller/gymlog/DoubleTapDetector.java index 4b42bc4..c5505e8 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/DoubleTapDetector.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/DoubleTapDetector.java @@ -1,30 +1,30 @@ -package com.mikemiller.gymlog; - -import android.content.Context; -import android.view.GestureDetector; -import android.view.MotionEvent; - -/** - * Created by Mike on 3/29/14. COPYRIGHT OLIO. - */ -public class DoubleTapDetector extends GestureDetector.SimpleOnGestureListener { - public Context context; - public String phno; - - public DoubleTapDetector(Context con) - { - this.context=con; - } - @Override - public boolean onDown(MotionEvent e) { - return false; - } - @Override - public boolean onDoubleTap(MotionEvent e) { - return true; - } - @Override - public boolean onSingleTapUp(MotionEvent e) { - return false; - } +package com.mikemiller.gymlog;
+
+import android.content.Context;
+import android.view.GestureDetector;
+import android.view.MotionEvent;
+
+/**
+ * Created by Mike on 3/29/14. COPYRIGHT OLIO.
+ */
+public class DoubleTapDetector extends GestureDetector.SimpleOnGestureListener {
+ public Context context;
+ public String phno;
+
+ public DoubleTapDetector(Context con)
+ {
+ this.context=con;
+ }
+ @Override
+ public boolean onDown(MotionEvent e) {
+ return false;
+ }
+ @Override
+ public boolean onDoubleTap(MotionEvent e) {
+ return true;
+ }
+ @Override
+ public boolean onSingleTapUp(MotionEvent e) {
+ return false;
+ }
}
\ No newline at end of file diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java b/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java index e7c8f60..9659467 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java @@ -2,31 +2,52 @@ package com.mikemiller.gymlog; import android.app.Fragment; import android.app.FragmentManager; +import android.content.Context; +import android.content.SharedPreferences; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; +import android.util.Log; +import java.text.SimpleDateFormat; +import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; public class MainActivity extends FragmentActivity { SimpleCounterFragment mEpisodeFragment; + ArrayList<Integer> mMonday = new ArrayList<Integer>() {{ + add(2); + add(3); + }}; + ArrayList<Integer> mWednesday = new ArrayList<Integer>() {{ + add(4); + add(5); + }}; + ArrayList<Integer> mFriday = new ArrayList<Integer>() {{ + add(6); + add(7); + add(1); + }}; + // 1 = Sunday - final Map<Integer[], Activity[]> mDaysOfWeekToActivity = new HashMap<Integer[], Activity[]>(){{ - put(new Integer[]{2, 3}, new Activity[]{ + final Map<ArrayList<Integer>, Activity[]> mDaysOfWeekToActivity = new HashMap<ArrayList<Integer>, Activity[]>(){{ + put(mMonday, new Activity[]{ new Activity("Barbell Deadlifts", 3, 4, 6, 10, 1), - new Activity("Assisted Chin-ups", 3, 4, 6, 10, 1), - new Activity("Pendlay Rows", 2, 4, 6, 10, 1) }); - put(new Integer[]{4, 5}, new Activity[]{ - new Activity("Flat Dumbell Bench Press", 3, 6, 10, 10, 1), - new Activity("Incline Dumbell Bench Press", 2, 8, 12, 10, 1), + new Activity("Pendlay Rows", 2, 4, 6, 10, 1), + new Activity("Assisted Chin-ups", 3, 4, 6, 10, 1) }); + put(mWednesday, new Activity[]{ + new Activity("Flat Barbell Bench Press", 3, 6, 10, 10, 1), + new Activity("Incline Barbell Bench Press", 2, 8, 12, 10, 1), new Activity("Barbell Curls", 3, 0, 8, 0, 0)}); - put(new Integer[]{6, 7, 1}, new Activity[]{ + put(mFriday, new Activity[]{ new Activity("Barbell Squats", 2, 6, 8, 10, 1), new Activity("Widowmaker Squats", 1, 20, 20, 0, 0), new Activity("Stiff Legged Deadlifts", 2, 15, 20, 10, 1), @@ -43,6 +64,9 @@ public class MainActivity extends FragmentActivity { pager.setAdapter(new MyPagerAdapter(getFragmentManager())); mEpisodeFragment = SimpleCounterFragment.newInstance("Whose Line"); + + String summary = getWeekSummary(); + Log.d("Summary", summary); } // 1 = Sunday @@ -52,18 +76,60 @@ public class MainActivity extends FragmentActivity { } private Activity[] getActivitiesForDayOfWeek(int dayOfWeek) { - for(Integer[] key : mDaysOfWeekToActivity.keySet()) { - if (Arrays.asList(key).contains(dayOfWeek)) { + for(ArrayList<Integer> key : mDaysOfWeekToActivity.keySet()) { + if (key.contains(dayOfWeek)) { return mDaysOfWeekToActivity.get(key); } } return new Activity[]{}; } - private Activity[] getActivitiesForTody() { + private Activity[] getActivitiesForToday() { return getActivitiesForDayOfWeek(getDayOfWeek()); } + public String getWeekSummary() { + ArrayList<Activity> allActivities = new ArrayList<Activity>(); + + for (Activity activity : mDaysOfWeekToActivity.get(mMonday)) { + allActivities.add(activity); + } + for (Activity activity : mDaysOfWeekToActivity.get(mWednesday)) { + allActivities.add(activity); + } + for (Activity activity : mDaysOfWeekToActivity.get(mFriday)) { + allActivities.add(activity); + } + + + Activity mondayActivity = mDaysOfWeekToActivity.get(mMonday)[0]; + SharedPreferences activity_data = getSharedPreferences(mondayActivity.getSharedPreferencesName(), Context.MODE_APPEND); + long dateSavedMillis = activity_data.getLong("dateSaved", 0); + + Calendar c = Calendar.getInstance(); + c.setTimeInMillis(dateSavedMillis); + c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); // Move the date to the previous Monday + //System.out.println("Date " + c.getTime()); + + SimpleDateFormat simpleDate = new SimpleDateFormat("MM/dd/yyyy"); + String mondayDateString = simpleDate.format(c.getTime()); + + + String summary = mondayDateString + "\t"; + + for(Activity activity : allActivities) { + activity_data = getSharedPreferences(activity.getSharedPreferencesName(), Context.MODE_APPEND); + int weight = activity_data.getInt("weight", 0); + int reps = activity_data.getInt("reps", 0); + + summary += weight + "x"; + summary += reps + "\t"; + } + + + return summary; + } + private class MyPagerAdapter extends FragmentPagerAdapter { @@ -73,20 +139,20 @@ public class MainActivity extends FragmentActivity { @Override public Fragment getItem(int pos) { - Activity[] activities = getActivitiesForTody(); + Activity[] activities = getActivitiesForToday(); - if (pos == 0) { + /*if (pos == 0) { return mEpisodeFragment; - } + }*/ if (pos > activities.length) pos = activities.length; - return ActivityFragment.newInstance(activities[pos - 1]); + return ActivityFragment.newInstance(activities[pos]); } @Override public int getCount() { - return getActivitiesForTody().length + 1; + return getActivitiesForToday().length + 1; } } }
\ No newline at end of file diff --git a/GymLog/src/main/java/com/mikemiller/gymlog/SimpleCounterFragment.java b/GymLog/src/main/java/com/mikemiller/gymlog/SimpleCounterFragment.java index a6870d0..4ec1c90 100644 --- a/GymLog/src/main/java/com/mikemiller/gymlog/SimpleCounterFragment.java +++ b/GymLog/src/main/java/com/mikemiller/gymlog/SimpleCounterFragment.java @@ -1,123 +1,123 @@ -package com.mikemiller.gymlog; - -import android.app.Fragment; -import android.content.Context; -import android.content.SharedPreferences; -import android.os.Bundle; -import android.view.GestureDetector; -import android.view.LayoutInflater; -import android.view.MotionEvent; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; -import android.widget.TextView; - -public class SimpleCounterFragment extends Fragment { - - private String mShow = ""; - private int mCount = 0; - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - View view = inflater.inflate(R.layout.fragment_simple_counter, container, false); - - TextView show = (TextView) view.findViewById(R.id.show); - mShow = getArguments().getString("show"); - show.setText(mShow); - - Button count = (Button) view.findViewById(R.id.count); - if (savedInstanceState!= null && savedInstanceState.containsKey("count")) { - mCount = savedInstanceState.getInt("count"); - } - - count.setText(Integer.toString(mCount)); - - count.setOnTouchListener(new View.OnTouchListener() { - GestureDetector doubleTapDetector = new GestureDetector(new DoubleTapDetector(getActivity())); - - @Override - public boolean onTouch(View v, MotionEvent event) { - if (doubleTapDetector.onTouchEvent(event)) { - // A double tap occurred. - increment(); - return true; - } - return false; - } - }); - - count.setOnLongClickListener(new View.OnLongClickListener() { - @Override - public boolean onLongClick(View v) { - decrement(); - return true; - } - }); - - return view; - } - - @Override - public void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - - outState.putInt("count", mCount); - } - - @Override - public void onViewStateRestored(Bundle savedInstanceState) { - super.onViewStateRestored(savedInstanceState); - - if (savedInstanceState!= null && savedInstanceState.containsKey("count")) { - setCount(savedInstanceState.getInt("count")); - } - } - - private void setCount(int count) { - mCount = count; - Button countButton = (Button) getView().findViewById(R.id.count); - countButton.setText(Integer.toString(mCount)); - - } - - public void increment() { - setCount(mCount + 1); - } - public void decrement() { - setCount(mCount - 1); - } - - public static SimpleCounterFragment newInstance(String show) { - - SimpleCounterFragment f = new SimpleCounterFragment(); - Bundle b = new Bundle(); - b.putString("show", show); - f.setArguments(b); - - return f; - } - - @Override - public void onStop() { - super.onStop(); - saveData(); - } - - private void saveData() { - - SharedPreferences.Editor outState = getActivity().getSharedPreferences(getSharedpreferencesName(), Context.MODE_APPEND).edit(); - outState.putInt("count", mCount); - outState.commit(); - } - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - - SharedPreferences counter_data = getActivity().getSharedPreferences(getSharedpreferencesName(), Context.MODE_APPEND); - setCount(counter_data.getInt("count", 0)); - } - - private String getSharedpreferencesName() { - return "counter_data_" + mShow; - } +package com.mikemiller.gymlog;
+
+import android.app.Fragment;
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.os.Bundle;
+import android.view.GestureDetector;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.TextView;
+
+public class SimpleCounterFragment extends Fragment {
+
+ private String mShow = "";
+ private int mCount = 0;
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.fragment_simple_counter, container, false);
+
+ TextView show = (TextView) view.findViewById(R.id.show);
+ mShow = getArguments().getString("show");
+ show.setText(mShow);
+
+ Button count = (Button) view.findViewById(R.id.count);
+ if (savedInstanceState!= null && savedInstanceState.containsKey("count")) {
+ mCount = savedInstanceState.getInt("count");
+ }
+
+ count.setText(Integer.toString(mCount));
+
+ count.setOnTouchListener(new View.OnTouchListener() {
+ GestureDetector doubleTapDetector = new GestureDetector(new DoubleTapDetector(getActivity()));
+
+ @Override
+ public boolean onTouch(View v, MotionEvent event) {
+ if (doubleTapDetector.onTouchEvent(event)) {
+ // A double tap occurred.
+ increment();
+ return true;
+ }
+ return false;
+ }
+ });
+
+ count.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ decrement();
+ return true;
+ }
+ });
+
+ return view;
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState) {
+ super.onSaveInstanceState(outState);
+
+ outState.putInt("count", mCount);
+ }
+
+ @Override
+ public void onViewStateRestored(Bundle savedInstanceState) {
+ super.onViewStateRestored(savedInstanceState);
+
+ if (savedInstanceState!= null && savedInstanceState.containsKey("count")) {
+ setCount(savedInstanceState.getInt("count"));
+ }
+ }
+
+ private void setCount(int count) {
+ mCount = count;
+ Button countButton = (Button) getView().findViewById(R.id.count);
+ countButton.setText(Integer.toString(mCount));
+
+ }
+
+ public void increment() {
+ setCount(mCount + 1);
+ }
+ public void decrement() {
+ setCount(mCount - 1);
+ }
+
+ public static SimpleCounterFragment newInstance(String show) {
+
+ SimpleCounterFragment f = new SimpleCounterFragment();
+ Bundle b = new Bundle();
+ b.putString("show", show);
+ f.setArguments(b);
+
+ return f;
+ }
+
+ @Override
+ public void onStop() {
+ super.onStop();
+ saveData();
+ }
+
+ private void saveData() {
+
+ SharedPreferences.Editor outState = getActivity().getSharedPreferences(getSharedpreferencesName(), Context.MODE_APPEND).edit();
+ outState.putInt("count", mCount);
+ outState.commit();
+ }
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+
+ SharedPreferences counter_data = getActivity().getSharedPreferences(getSharedpreferencesName(), Context.MODE_APPEND);
+ setCount(counter_data.getInt("count", 0));
+ }
+
+ private String getSharedpreferencesName() {
+ return "counter_data_" + mShow;
+ }
}
\ No newline at end of file diff --git a/GymLog/src/main/res/layout/fragment_activity.xml b/GymLog/src/main/res/layout/fragment_activity.xml index 5ae1af5..ed7af4e 100644 --- a/GymLog/src/main/res/layout/fragment_activity.xml +++ b/GymLog/src/main/res/layout/fragment_activity.xml @@ -1,31 +1,31 @@ -<?xml version="1.0" encoding="utf-8"?> - -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" - android:gravity="center_horizontal" - android:background="@android:color/black" > - - <Button - android:id="@+id/summary" - android:layout_above="@+id/name" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_centerHorizontal="false" - android:gravity="center_vertical" - android:textSize="40dp" - android:text="0" - android:textColor="@android:color/holo_blue_dark" - android:background="@android:color/black" /> - <TextView - android:id="@+id/name" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_centerHorizontal="true" - android:gravity="center_horizontal" - android:textSize="30dp" - android:text="Activity Name" - android:textColor="@android:color/holo_blue_dark" /> +<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ android:background="@android:color/black" >
+
+ <Button
+ android:id="@+id/summary"
+ android:layout_above="@+id/name"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="false"
+ android:gravity="center_vertical"
+ android:textSize="30dp"
+ android:text="0"
+ android:textColor="@android:color/holo_blue_dark"
+ android:background="@android:color/black" />
+ <TextView
+ android:id="@+id/name"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_centerHorizontal="true"
+ android:gravity="center_horizontal"
+ android:textSize="30dp"
+ android:text="Activity Name"
+ android:textColor="@android:color/holo_blue_dark" />
</RelativeLayout>
\ No newline at end of file diff --git a/GymLog/src/main/res/layout/fragment_simple_counter.xml b/GymLog/src/main/res/layout/fragment_simple_counter.xml index 327677a..e6db43d 100644 --- a/GymLog/src/main/res/layout/fragment_simple_counter.xml +++ b/GymLog/src/main/res/layout/fragment_simple_counter.xml @@ -1,34 +1,34 @@ -<?xml version="1.0" encoding="utf-8"?> - -<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:orientation="vertical" - android:gravity="center_horizontal" - android:background="@android:color/black" > - - - <Button - android:id="@+id/count" - android:layout_width="match_parent" - android:layout_height="match_parent" - android:layout_centerHorizontal="true" - android:layout_centerVertical="true" - android:textSize="166dp" - android:text="0" - android:textColor="@android:color/holo_blue_dark" - android:background="@android:color/black" /> - <View - android:layout_width="match_parent" - android:layout_height="10dp"/> - <TextView - android:id="@+id/show" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:layout_alignParentBottom="true" - android:layout_centerHorizontal="true" - android:gravity="center_horizontal" - android:textSize="26dp" - android:text="Show Name" - android:textColor="@android:color/holo_blue_dark" /> +<?xml version="1.0" encoding="utf-8"?>
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:orientation="vertical"
+ android:gravity="center_horizontal"
+ android:background="@android:color/black" >
+
+
+ <Button
+ android:id="@+id/count"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_centerHorizontal="true"
+ android:layout_centerVertical="true"
+ android:textSize="166dp"
+ android:text="0"
+ android:textColor="@android:color/holo_blue_dark"
+ android:background="@android:color/black" />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="10dp"/>
+ <TextView
+ android:id="@+id/show"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_centerHorizontal="true"
+ android:gravity="center_horizontal"
+ android:textSize="26dp"
+ android:text="Show Name"
+ android:textColor="@android:color/holo_blue_dark" />
</RelativeLayout>
\ No newline at end of file diff --git a/GymLog/src/main/res/values/strings.xml b/GymLog/src/main/res/values/strings.xml index 530eeb9..9c86f89 100644 --- a/GymLog/src/main/res/values/strings.xml +++ b/GymLog/src/main/res/values/strings.xml @@ -1,9 +1,9 @@ <?xml version="1.0" encoding="utf-8"?> -<resources> - - <string name="app_name">GymLog</string> - <string name="hello_world">Hello world!</string> - <string name="action_settings">Settings</string> - <string name="hello_blank_fragment">Hello blank fragment</string> - -</resources> +<resources>
+
+ <string name="app_name">GymLog</string>
+ <string name="hello_world">Hello world!</string>
+ <string name="action_settings">Settings</string>
+ <string name="hello_blank_fragment">Hello blank fragment</string>
+
+</resources>
|