diff options
| author | Mike Miller <mikem.exe@gmail.com> | 2014-06-22 17:57:06 -0700 | 
|---|---|---|
| committer | Mike Miller <mikem.exe@gmail.com> | 2014-06-22 17:57:06 -0700 | 
| commit | 6033c7cf983a347c35574769b2e33a21e428783c (patch) | |
| tree | 958c5a4a8117c13fdc300a8d24482a64215530fb /GymLog/src/main | |
| parent | 99bb04032209271f0ed416bb42ea5ab09de23eb8 (diff) | |
| download | GymLog-6033c7cf983a347c35574769b2e33a21e428783c.tar.xz GymLog-6033c7cf983a347c35574769b2e33a21e428783c.zip | |
A few improvements
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>
 |