/*
* Copyright (C) 2013 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.eugene.fithealthmaingit.UI.NavFragments;
import android.app.Activity;
import android.content.SharedPreferences;
import android.graphics.Typeface;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.support.v7.widget.Toolbar;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.eugene.fithealthmaingit.Custom.TextViewFont;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogWeight.WeightLog;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogWeight.WeightLogAdapter;
import com.eugene.fithealthmaingit.R;
import com.eugene.fithealthmaingit.Utilities.Globals;
import java.text.DecimalFormat;
public class FragmentHealth extends Fragment {
// Save and load user Info
private SharedPreferences sharedPreferences;
DecimalFormat dfW = new DecimalFormat("0");
TextView mPersonBMR, mCaloriesToMaintain, mCaloriesToLose, mCalorieGoal, weightLossGoal, tvUnderWeight1, tvNormal1, tvOverWeight1, tvObese1, tvVeryObese1;
TextView tvUnderWeight, tvNormal, tvOverWeight, tvObese, tvVeryObese;
private View v;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
v = inflater.inflate(R.layout.fragment_health, container, false);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getActivity());
findViews();
loadSavedPreferences();
return v;
}
private void findViews() {
Toolbar toolbar_journal_health = (Toolbar) v.findViewById(R.id.toolbar_journal_health);
TextViewFont txtTitle = (TextViewFont) v.findViewById(R.id.txtTitle);
txtTitle.setText("Health");
toolbar_journal_health.setNavigationIcon(R.mipmap.ic_menu);
toolbar_journal_health.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallbacks.openNavigationDrawer();
}
});
mCalorieGoal = (TextView) v.findViewById(R.id.CalorieGoal1);
mPersonBMR = (TextView) v.findViewById(R.id.BMR);
mCaloriesToMaintain = (TextView) v.findViewById(R.id.calorieMaintain);
weightLossGoal = (TextView) v.findViewById(R.id.weightLossGoal);
mCaloriesToLose = (TextView) v.findViewById(R.id.CalorieLoss);
tvUnderWeight1 = (TextView) v.findViewById(R.id.tvUnderWeight1);
tvNormal1 = (TextView) v.findViewById(R.id.tvNormal1);
tvOverWeight1 = (TextView) v.findViewById(R.id.tvOverWeight1);
tvObese1 = (TextView) v.findViewById(R.id.tvObese1);
tvVeryObese1 = (TextView) v.findViewById(R.id.tvVeryObese1);
tvUnderWeight = (TextView) v.findViewById(R.id.tvUnderWeight);
tvNormal = (TextView) v.findViewById(R.id.tvNormal);
tvOverWeight = (TextView) v.findViewById(R.id.tvOverWeight);
tvObese = (TextView) v.findViewById(R.id.tvObese);
tvVeryObese = (TextView) v.findViewById(R.id.tvVeryObese);
}
DecimalFormat df = new DecimalFormat("0");
double weightPerWeek;
double timeTillGoal;
private void loadSavedPreferences() {
// Goal Overview
weightLossGoal.setText(sharedPreferences.getString(Globals.USER_GOAL, "0"));
TextView goalWeight = (TextView) v.findViewById(R.id.weightGoal);
goalWeight.setText(sharedPreferences.getString(Globals.USER_WEIGHT_GOAL, "") + " lbs");
WeightLogAdapter weightLogAdapter = new WeightLogAdapter(getActivity(), 0, WeightLog.all());
WeightLog weightLogCurrent = weightLogAdapter.getItem(weightLogAdapter.getCount() - 1);
TextView currentWeight = (TextView) v.findViewById(R.id.weightCurrent);
currentWeight.setText(df.format(weightLogCurrent.getCurrentWeight()) + " lbs");
double weightRemaining = weightLogCurrent.getCurrentWeight() - Double.valueOf(sharedPreferences.getString(Globals.USER_WEIGHT_GOAL, ""));
int goalPosition = Integer.valueOf(sharedPreferences.getString(Globals.USER_WEIGHT_LOSS_GOAL, ""));
if (goalPosition == 0 || goalPosition == 8) {
weightPerWeek = 2;
}
if (goalPosition == 1 || goalPosition == 7) {
weightPerWeek = 1.5;
}
if (goalPosition == 2 || goalPosition == 6) {
weightPerWeek = 1;
}
if (goalPosition == 3 || goalPosition == 5) {
weightPerWeek = .5;
}
if (goalPosition == 4) {
weightPerWeek = 0;
}
timeTillGoal = weightRemaining / weightPerWeek;
TextView timeRem = (TextView) v.findViewById(R.id.timeGoal);
timeRem.setText(df.format(timeTillGoal) + " week(s)");
// Calorie Goal
mPersonBMR.setText(dfW.format(Double.valueOf(sharedPreferences.getString(Globals.USER_BASAL_METABOLIC_RATE, "0"))) + " Cal");
mCaloriesToMaintain.setText(dfW.format(Double.valueOf(sharedPreferences.getString(Globals.USER_CALORIES_TO_MAINTAIN_WEIGHT, "0"))) + " Cal");
mCaloriesToLose.setText(dfW.format(Double.valueOf(sharedPreferences.getString(Globals.USER_CALORIES_GIVE_UP, "0"))) + " Cal");
mCalorieGoal.setText(dfW.format(Double.valueOf(sharedPreferences.getString(Globals.USER_CALORIES_TO_REACH_GOAL, "0"))) + " Cal");
// BMI
double mBmi = Double.valueOf(sharedPreferences.getString(Globals.USER_BODY_MASS_INDEX, "0"));
tvUnderWeight1.setText("19 <");
if (mBmi <= 19) {
tvUnderWeight1.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvUnderWeight1.setTypeface(null, Typeface.BOLD);
tvUnderWeight.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvUnderWeight.setTypeface(null, Typeface.BOLD);
}
if (mBmi > 19 && mBmi <= 24) {
tvNormal1.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvNormal1.setTypeface(null, Typeface.BOLD);
tvNormal.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvNormal.setTypeface(null, Typeface.BOLD);
}
if (mBmi > 24 && mBmi <= 30) {
tvOverWeight1.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvOverWeight1.setTypeface(null, Typeface.BOLD);
tvOverWeight.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvOverWeight.setTypeface(null, Typeface.BOLD);
}
if (mBmi > 30 && mBmi <= 40) {
tvObese1.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvObese1.setTypeface(null, Typeface.BOLD);
tvObese.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvObese.setTypeface(null, Typeface.BOLD);
}
if (mBmi > 40) {
tvVeryObese1.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvVeryObese1.setTypeface(null, Typeface.BOLD);
tvVeryObese.setTextColor(getActivity().getResources().getColor(R.color.primary_dark));
tvVeryObese.setTypeface(null, Typeface.BOLD);
}
}
/**
* Interface to communicate to the parent activity (MainActivity.java)
*/
private FragmentCallbacks mCallbacks;
public interface FragmentCallbacks {
void openNavigationDrawer();
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mCallbacks = (FragmentCallbacks) activity;
} catch (ClassCastException e) {
throw new ClassCastException("Activity must implement Fragment One.");
}
}
@Override
public void onDetach() {
super.onDetach();
mCallbacks = null;
}
}