package ufit.profilecreation; import java.util.ArrayList; import java.util.Random; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import ufit.DatabaseUtilities.ExerciseInfo; import ufit.DatabaseUtilities.ExerciseInfoAdapter; import ufit.DatabaseUtilities.MyDbAdapter; import ufit.global.MyApp; import ufit.namespace.R; import ufit.profile.Profile; public class TodaysExercisesActivity extends Activity implements OnClickListener { /** Called when the activity is first created. */ private MyApp application; private Profile profile; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.todaysexercises); application = (MyApp)getApplication(); profile = ((MyApp)getApplication()).getProfile(); initialiseButtons(); ArrayList<Integer> extraCardio = new ArrayList<Integer>(); extraCardio.add(35); extraCardio.add(41); if (profile.getElliptical()) extraCardio.add(37); if (profile.getBike()) extraCardio.add(38); System.gc(); // pass in current day Bundle b = getIntent().getExtras(); String whatDay = getBundleString(b,"day",this.getString(R.string.today)); //Toast.makeText(this,whatDay, Toast.LENGTH_SHORT).show(); loadInformation(whatDay); //name of items ArrayList <ExerciseInfo> listOfExercises = new ArrayList<ExerciseInfo>(); MyDbAdapter db = new MyDbAdapter(this, profile.getID()); db.open(); listOfExercises = db.fetchStoredExercises(); db.close(); ArrayList <Integer> properOrder = profile.getID(); int sizeList = properOrder.size(); ArrayList <ExerciseInfo> OrderedExercises = new ArrayList <ExerciseInfo>(); for(int i=0; i<sizeList; i++) //sizelist greater than listOfExercises { int target = properOrder.get(i); for(int j=0; j<listOfExercises.size(); j++) //no duplicates in dB { if(listOfExercises.get(j).getID()== target) { OrderedExercises.add(listOfExercises.get(j)); break; } else { //Log.wtf("ordering list error", "the id wasn't found? WTF!"); } } } listOfExercises.clear(); listOfExercises.trimToSize(); listOfExercises = null; properOrder = null; int skill = profile.getSkill(); int exerciseNum = skill + 2; ArrayList<ExerciseInfo> DisplayExercises = new ArrayList<ExerciseInfo>(); int q = 0; //week offset int days = profile.getNumWorkoutDays(); if (profile.hasBeenThreeWeeks()) { q = 3 * days * exerciseNum; } else if (profile.hasBeenTwoWeeks()) { q = 2 * days * exerciseNum; } else if (profile.hasBeenWeek()) { q = days * exerciseNum; } else; if (whatDay.equalsIgnoreCase("Day 1")) { for (int l = q+(0*exerciseNum); l < q+(1*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); //if(DisplayExercises.contains(OrderedExercises.get(l))) //{ //} //else //DisplayExercises.add(OrderedExercises.get(l)); } } else if (whatDay.equalsIgnoreCase("Day 2")) { for (int l = q+(1*exerciseNum); l < q+(2*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); } } else if (whatDay.equalsIgnoreCase("Day 3")) { for (int l = q+(2*exerciseNum); l < q+(3*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); } } else if (whatDay.equalsIgnoreCase("Day 4")) { for (int l = q+(3*exerciseNum); l < q+(4*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); } } else if (whatDay.equalsIgnoreCase("Day 5")) { for (int l = q+(4*exerciseNum); l < q+(5*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); } } else if (whatDay.equalsIgnoreCase("Day 6")) { for (int l = q+(5*exerciseNum); l < q+(6*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); } } else if (whatDay.equalsIgnoreCase("Day 7")) { for (int l = q+(6*exerciseNum); l < q+(7*exerciseNum); l++) { boolean found = false; int pid = OrderedExercises.get(l).getpID(); for(int r = 0; r < DisplayExercises.size(); r++) { if (DisplayExercises.get(r).getID() == pid) found = true; } if (found); else DisplayExercises.add(OrderedExercises.get(l)); } } else { Log.wtf("Day more than 7", "Why you no work?"); } if (DisplayExercises.size() < exerciseNum) { Random rand = new Random(); int x = rand.nextInt(extraCardio.size()); db.open(); db.setExerciseID(extraCardio.get(x)); ExerciseInfo Extra = db.fetchTheExercise(); db.close(); DisplayExercises.add(Extra); } ListView listView = (ListView) findViewById(R.id.ListViewId); listView.setAdapter(new ExerciseInfoAdapter(this, DisplayExercises)); } private void loadInformation(String s) { TextView name = (TextView) findViewById(R.id.today_day); // loads today's date into title name.setText(s+" Exercises"); } public String getBundleString(Bundle b, String key, String def) // checks bundle if null onot { if(b != null ){ String value = b.getString(key); if (value == null) value = def; return value; } return def; } public void initialiseButtons() { Button weekly = (Button) findViewById(R.id.weeklyplanner); weekly.setOnClickListener(this); } //@Override public void onClick(View v) { if(v.getId() == R.id.weeklyplanner){ //Intent intent = new Intent(this,WeeklyPlannerActivity.class); //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //this.startActivity(intent); finish(); } } }