package com.eugene.fithealthmaingit.HomeScreenWidget;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
import android.widget.RemoteViews;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogAdapterAll;
import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogMeal;
import com.eugene.fithealthmaingit.R;
import com.eugene.fithealthmaingit.MainActivity;
import com.eugene.fithealthmaingit.Utilities.Globals;
import java.text.DecimalFormat;
import java.util.Date;
/**
* Implementation of App Widget functionality.
*/
public class FitHealthWidget extends AppWidgetProvider {
public static String ACTION_SEARCH = "search_fragment";
public static String ACTION_ADD = "add_fragment";
Context mContext;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// There may be multiple widgets active, so update all of them
final int N = appWidgetIds.length;
for (int i = 0; i < N; i++) {
updateAppWidget(context, appWidgetManager, appWidgetIds[i]);
}
mContext = context;
}
@Override
public void onEnabled(Context context) {
// Enter relevant functionality for when the first widget is created
}
@Override
public void onDisabled(Context context) {
// Enter relevant functionality for when the last widget is disabled
}
static void updateAppWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId) {
Intent i = new Intent(context, MainActivity.class);
i.setAction(FitHealthWidget.ACTION_SEARCH);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, i, 0);
Intent add = new Intent(context, MainActivity.class);
add.setAction(FitHealthWidget.ACTION_ADD);
PendingIntent pendingIntentAdd = PendingIntent.getActivity(context, 0, add, 0);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.new_app_widget);
Intent openApp = new Intent(context, MainActivity.class);
PendingIntent piOPen = PendingIntent.getActivity(context, 0, openApp, 0);
views.setOnClickPendingIntent(R.id.search, pendingIntent);
views.setOnClickPendingIntent(R.id.add, pendingIntentAdd);
views.setOnClickPendingIntent(R.id.openApp, piOPen);
DecimalFormat df = new DecimalFormat("0");
LogAdapterAll mLogAdapterAll = new LogAdapterAll(context, 0, LogMeal.logsByDate(new Date()));
// Nutrition Consumed
double mAllCaloriesConsumed = 0;
double mAllFatConsumed = 0;
double mAllCarbsConsumed = 0;
double mAllProteinConsumed = 0;
for (LogMeal logMeal : mLogAdapterAll.getLogs()) {
mAllCaloriesConsumed += logMeal.getCalorieCount();
mAllFatConsumed += logMeal.getFatCount();
mAllCarbsConsumed += logMeal.getCarbCount();
mAllProteinConsumed += logMeal.getProteinCount();
}
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
double mCalorieGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_CALORIES_TO_REACH_GOAL, ""));
double mFatGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_DAILY_FAT, ""));
double mCarbGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_DAILY_CARBOHYDRATES, ""));
double mProteinGoal = Double.valueOf(sharedPreferences.getString(Globals.USER_DAILY_PROTEIN, ""));
views.setProgressBar(R.id.pbCal, Integer.valueOf(df.format(mCalorieGoal)), Integer.valueOf(df.format(mAllCaloriesConsumed)), false);
views.setProgressBar(R.id.pbFat, Integer.valueOf(df.format(mFatGoal)), Integer.valueOf(df.format(mAllFatConsumed)), false);
views.setProgressBar(R.id.pbCarb, Integer.valueOf(df.format(mCarbGoal)), Integer.valueOf(df.format(mAllCarbsConsumed)), false);
views.setProgressBar(R.id.pbPro, Integer.valueOf(df.format(mProteinGoal)), Integer.valueOf(df.format(mAllProteinConsumed)), false);
views.setTextViewText(R.id.txtRemainderCal, df.format(mCalorieGoal - mAllCaloriesConsumed));
views.setTextViewText(R.id.txtRemainderFat, df.format(mFatGoal - mAllFatConsumed));
views.setTextViewText(R.id.txtRemainderCarb, df.format(mCarbGoal - mAllCarbsConsumed));
views.setTextViewText(R.id.txtRemainderPro, df.format(mProteinGoal - mAllProteinConsumed));
appWidgetManager.updateAppWidget(appWidgetId, views);
}
}