com.eugene.fithealthmaingit.UI.NavFragments.FragmentHealth.java Source code

Java tutorial

Introduction

Here is the source code for com.eugene.fithealthmaingit.UI.NavFragments.FragmentHealth.java

Source

/*
 * 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;
    }

}