summaryrefslogtreecommitdiff
path: root/GymLog/src
diff options
context:
space:
mode:
Diffstat (limited to 'GymLog/src')
-rw-r--r--GymLog/src/main/AndroidManifest.xml42
-rw-r--r--GymLog/src/main/java/com/mikemiller/gymlog/Activity.java149
-rw-r--r--GymLog/src/main/java/com/mikemiller/gymlog/ActivityFragment.java386
-rw-r--r--GymLog/src/main/java/com/mikemiller/gymlog/DoubleTapDetector.java58
-rw-r--r--GymLog/src/main/java/com/mikemiller/gymlog/MainActivity.java98
-rw-r--r--GymLog/src/main/java/com/mikemiller/gymlog/SimpleCounterFragment.java244
-rw-r--r--GymLog/src/main/res/layout/fragment_activity.xml60
-rw-r--r--GymLog/src/main/res/layout/fragment_simple_counter.xml66
-rw-r--r--GymLog/src/main/res/values/strings.xml16
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>