package com.vorsk.crossfitr;
import java.io.File;
import java.math.BigDecimal;
import java.util.Date;
import com.vorsk.crossfitr.models.AchievementModel;
import com.vorsk.crossfitr.models.ProfileModel;
import com.vorsk.crossfitr.models.WorkoutSessionModel;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Environment;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.TextView;
public class CrossFitrActivity extends Activity implements OnClickListener {
private TextView workoutsText;
private TextView calendarText;
private TextView profileText;
private TextView numOfWorkouts;
private TextView lastWorkouts;
private TextView numOfAchievments;
private TextView statusDisplay1;
private TextView statusDisplay2;
private TextView statusDisplay3;
private ImageView userPic;
private File file;
private Typeface font;
WorkoutSessionModel sessionModel = new WorkoutSessionModel(this);
ProfileModel profileModel = new ProfileModel(this);
AchievementModel achievementModel = new AchievementModel(this);
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Typeface harabara = Typeface.createFromAsset(this.getAssets(),
"fonts/Harabara.ttf");
// Custom title bar
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);
TextView title = (TextView) findViewById(R.id.title);
title.setTypeface(harabara);
title.setText("crossfitr");
}
@Override
public void onResume() {
super.onResume();
font = Typeface.createFromAsset(this.getAssets(),
"fonts/Roboto-Thin.ttf");
// User photo
file = new File(Environment.getExternalStorageDirectory(),
"profile.png");
userPic = (ImageView) this.findViewById(R.id.main_button_userpic);
Bitmap bMap = BitmapFactory.decodeFile(file.toString());
if (bMap != null) {
userPic.setImageBitmap(bMap);
}
// workouts button
View workoutButton = findViewById(R.id.main_button_workouts);
workoutButton.setOnClickListener(this);
workoutsText = (TextView) findViewById(R.id.main_button_workouts);
workoutsText.setTypeface(font);
// calendar button
View calendarButton = findViewById(R.id.main_button_calendar);
calendarButton.setOnClickListener(this);
calendarText = (TextView) findViewById(R.id.main_button_calendar);
calendarText.setTypeface(font);
// profile button
View profileButton = findViewById(R.id.main_button_profile);
profileButton.setOnClickListener(this);
profileText = (TextView) findViewById(R.id.main_button_profile);
profileText.setTypeface(font);
profileText.setGravity(Gravity.LEFT);
// Building String
profileModel.open();
// Name Section
String profileDetails = " Name: ";
if (profileModel.getByAttribute("name") != null) {
profileDetails += profileModel.getByAttribute("name").value;
}
// BMI Section
profileDetails += "\n BMI: ";
if ((profileModel.getByAttribute("weight") != null)
&& (profileModel.getByAttribute("height") != null)) {
profileDetails += profileModel.calculateBMI()
.setScale(2, BigDecimal.ROUND_HALF_UP).toString();
}
// Current Weight Section
profileDetails += "\n Current Weight: ";
if (profileModel.getByAttribute("weight") != null) {
profileDetails += profileModel.getByAttribute("weight").value
+ " lbs";
}
// Goal Weight Section
profileDetails += "\n Goal Weight: ";
if (profileModel.getByAttribute("goal_weight") != null) {
profileDetails += profileModel.getByAttribute("goal_weight").value
+ " lbs";
}
if ((profileModel.getByAttribute("name") == null)
&& (profileModel.getByAttribute("weight") == null)
&& (profileModel.getByAttribute("goal_weight") == null)) {
profileDetails = " Press here to\n create your new\n profile!";
}
profileText.setText(profileDetails);
// Status Displays
statusDisplay1 = (TextView) findViewById(R.id.status_display1);
statusDisplay1.setTypeface(font);
statusDisplay2 = (TextView) findViewById(R.id.status_display2);
statusDisplay2.setTypeface(font);
statusDisplay3 = (TextView) findViewById(R.id.status_display3);
statusDisplay3.setTypeface(font);
/** user status dialog **/
// Number of workouts
numOfWorkouts = (TextView) findViewById(R.id.main_num_of_workouts);
sessionModel.open();
numOfWorkouts.setText(" " + sessionModel.getTotal());
numOfWorkouts.setTypeface(font);
// Days since last workout
lastWorkouts = (TextView) findViewById(R.id.main_last_workout);
Date oldDate;
boolean noWorkout = false;
try {
oldDate = new Date((sessionModel.getMostRecent(null).date_created));
} catch (Exception e) {
oldDate = new Date();
noWorkout = true;
}
Date newDate = new Date();
long sinceLastWorkout = newDate.getTime() - oldDate.getTime();
// Converting from milliseconds to days
sinceLastWorkout /= 1000;
sinceLastWorkout /= 60;
sinceLastWorkout /= 60;
sinceLastWorkout /= 24;
if (noWorkout == false) {
lastWorkouts.setText(String.valueOf(sinceLastWorkout) + " days");
lastWorkouts.setTextSize(20);
} else {
lastWorkouts.setTextSize(22);
lastWorkouts.setText("N/A");
}
lastWorkouts = (TextView) findViewById(R.id.main_last_workout);
lastWorkouts.setTypeface(font);
// Achievements
achievementModel.open();
numOfAchievments = (TextView) findViewById(R.id.main_num_of_achievments);
numOfAchievments.setText(" " + achievementModel.getTotal());
numOfAchievments.setTypeface(font);
sessionModel.close();
}
public void onClick(View v) {
switch (v.getId()) {
case R.id.main_button_workouts:
Intent i = new Intent(this, WorkoutsActivity.class);
startActivity(i);
break;
case R.id.main_button_calendar:
Intent c = new Intent(this, CalendarActivity.class);
startActivity(c);
break;
case R.id.main_button_profile:
Intent p = new Intent(this, UserProfileActivity.class);
startActivity(p);
break;
}
}
}