package com.eugene.fithealthmaingit.CalTesting; import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.FragmentTransaction; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.text.format.DateFormat; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.ViewTreeObserver; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.db.chart.Tools; import com.db.chart.model.LineSet; import com.db.chart.view.LineChartView; import com.db.chart.view.XController; import com.db.chart.view.YController; import com.echo.holographlibrary.PieGraph; import com.echo.holographlibrary.PieSlice; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.CalSQLiteDatabase.DailyCalorieIntake; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.CalSQLiteDatabase.DailyCalorieAdapter; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.CalSQLiteDatabase.DatabaseHandler; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogAdapterAll; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogFood.LogMeal; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogWeight.WeightLog; import com.eugene.fithealthmaingit.Databases_Adapters_ListViews.LogWeight.WeightLogAdapter; import com.eugene.fithealthmaingit.MainActivity; import com.eugene.fithealthmaingit.R; import com.eugene.fithealthmaingit.Utilities.DateCompare; import com.eugene.fithealthmaingit.Utilities.Equations; import com.eugene.fithealthmaingit.Utilities.Globals; import com.roomorama.caldroid.CaldroidFragment; import com.roomorama.caldroid.CaldroidListener; import com.sothree.slidinguppanel.SlidingUpPanelLayout; import org.apache.commons.math3.util.Precision; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List; public class CalendarTesting extends AppCompatActivity implements SlidingUpPanelLayout.PanelSlideListener { private CaldroidFragment caldroidFragment; private DatabaseHandler db; List<DailyCalorieIntake> dailyCalorieIntakes; private DailyCalorieAdapter dailyCalorieAdapter; private void setCustomResourceForDates() { Calendar cal = Calendar.getInstance(); // Min date is last 7 days cal.add(Calendar.DATE, 0); Date blueDate = cal.getTime(); if (caldroidFragment != null) { caldroidFragment.setTextColorForDate(R.color.primary, blueDate); } } Date mainDate = new Date(); private void setMoreData(Date getDate) { mainDate = getDate; TextView slideTitle = (TextView) findViewById(R.id.slideTitle); if (DateCompare.areDatesEqual(new Date(), getDate)) { // Are Dates Equal Today slideTitle.setText("Today"); } else if (DateCompare.areDatesEqualYesterday(new Date(), getDate)) { // Are Dates Equal Yesterday slideTitle.setText("Yesterday"); } else if (DateCompare.areDatesEqualTomorrow(new Date(), getDate)) { // Are Dates Equal Yesterday slideTitle.setText("Tomorrow"); } else { slideTitle.setText(DateFormat.format("MMM d, EE", getDate)); } String currentDay = (String) android.text.format.DateFormat.format("dd", getDate); //20 if (Integer.valueOf(currentDay) > 21) { mLayout.setParalaxOffset(height / 3); } else { mLayout.setParalaxOffset(0); } LogAdapterAll logAdapterAll = new LogAdapterAll(this, 0, LogMeal.logsByDate(getDate)); double intCalories = 0; double intFat = 0; double intCarbs = 0; double intPro = 0; for (LogMeal logMeal : logAdapterAll.getLogs()) { intCalories += logMeal.getCalorieCount(); intFat += logMeal.getFatCount(); intCarbs += logMeal.getCarbCount(); intPro += logMeal.getProteinCount(); } TextView cals = (TextView) findViewById(R.id.calories); TextView fat = (TextView) findViewById(R.id.fat); TextView carbs = (TextView) findViewById(R.id.carbs); TextView pro = (TextView) findViewById(R.id.pro); cals.setText(df.format(intCalories)); fat.setText(df.format(intFat)); carbs.setText(df.format(intCarbs)); pro.setText(df.format(intPro)); pg = (PieGraph) findViewById(R.id.graph); pg.removeSlices(); // Fat int fatCount = Integer.valueOf(df.format(intFat)) * 9; PieSlice slice = new PieSlice(); slice.setColor(Color.parseColor("#4DB6AC")); if (fatCount == 0) { slice.setValue(1); } else { slice.setValue(fatCount); } pg.addSlice(slice); // Carbs int carbCount = Integer.valueOf(df.format(intCarbs)) * 4; slice = new PieSlice(); slice.setColor(Color.parseColor("#FFC107")); if (carbCount == 0) { slice.setValue(1); } else { slice.setValue(carbCount); } pg.addSlice(slice); // Pro int proCount = Integer.valueOf(df.format(intPro)) * 4; slice = new PieSlice(); slice.setColor(Color.parseColor("#9C27B0")); if (proCount == 0) { slice.setValue(1); } else { slice.setValue(proCount); } pg.addSlice(slice); double percentage = fatCount + carbCount + proCount; double fatPer = (fatCount / percentage) * 100; double carbPer = (carbCount / percentage) * 100; double proPer = (proCount / percentage) * 100; boolean fatNaN = fatPer != fatPer; boolean carbNaN = carbPer != carbPer; boolean proNaN = proPer != proPer; if (fatNaN) { fatPer = 0; } if (carbNaN) { carbPer = 0; } if (proNaN) { proPer = 0; } TextView fatp = (TextView) findViewById(R.id.fatP); TextView carbsP = (TextView) findViewById(R.id.carbsP); TextView proP = (TextView) findViewById(R.id.proP); fatp.setText(dfT.format(fatPer) + "%"); fatp.setTextColor(Color.parseColor("#4DB6AC")); carbsP.setText(dfT.format(carbPer) + "%"); carbsP.setTextColor(Color.parseColor("#FFC107")); proP.setText(dfT.format(proPer) + "%"); proP.setTextColor(Color.parseColor("#9C27B0")); } Toolbar toolbar; LinearLayout calView; List<Date> test; DecimalFormat df = new DecimalFormat("0"); TextView txtTitle; private SlidingUpPanelLayout mLayout; ImageView moreLess; int height; TextView setDate; PieGraph pg; ViewPager pager; RelativeLayout slide_helper; private DecimalFormat dfT = new DecimalFormat("0.0"); protected void init() { height = calView.getHeight(); } Paint mLineGridPaint; LineSet dataSet; float[] simpleArray; String[] dates; int max; int min; float goalWeightLine; private void weightChart() { SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); TextView weight = (TextView) findViewById(R.id.weight); WeightLogAdapter weightLogAdapter = new WeightLogAdapter(this, 0, WeightLog.all()); WeightLog weightLog = weightLogAdapter.getItem(weightLogAdapter.getCount() - 1); weight.setText(df.format(weightLog.getCurrentWeight()) + " lbs"); WeightLog weightLogStart = weightLogAdapter.getItem(0); max = (int) Precision.round(weightLogStart.getCurrentWeight(), -1) + 10; if (Double.valueOf(sharedPreferences.getString(Globals.USER_WEIGHT_GOAL, "")) < weightLog.getCurrentWeight()) { min = (int) Precision.round(Integer.valueOf(sharedPreferences.getString(Globals.USER_WEIGHT_GOAL, "")), -1) - 10; } else { min = (int) Precision.round(weightLog.getCurrentWeight(), -1) - 10; } goalWeightLine = Float.valueOf(sharedPreferences.getString(Globals.USER_WEIGHT_GOAL, "")); LineChartView mLineChart = (LineChartView) findViewById(R.id.linechart); mLineChart.reset(); dataSet = new LineSet(); simpleArray = new float[weightLogAdapter.getCount()]; dates = new String[weightLogAdapter.getCount()]; for (int i = 0; i < weightLogAdapter.getCount(); i++) { WeightLog weightLogWeight = weightLogAdapter.getItem(i); simpleArray[i] = (float) weightLogWeight.getCurrentWeight(); dates[i] = String.valueOf(DateFormat.format("MMM dd", weightLogWeight.getDate())); } dataSet.addPoints(dates, simpleArray); mLineGridPaint = new Paint(); mLineGridPaint.setColor(this.getResources().getColor(R.color.accent)); mLineGridPaint.setStyle(Paint.Style.FILL); mLineGridPaint.setAntiAlias(true); /** * Controlling the data set and setting it to the chart. */ dataSet .setDots(true) .setDotsColor(this.getResources().getColor(R.color.primary)) .setDotsRadius(Tools.fromDpToPx(3)) .setDotsStrokeThickness(Tools.fromDpToPx(1)) .setDotsStrokeColor(this.getResources().getColor(R.color.primary)) .setLineColor(this.getResources().getColor(R.color.primary_dark)) .setLineThickness(Tools.fromDpToPx(1)) .beginAt(0).endAt(weightLogAdapter.getCount()); mLineChart.addData(dataSet); mLineChart .setBorderSpacing(Tools.fromDpToPx(0)) .setGrid(LineChartView.GridType.HORIZONTAL, mLineGridPaint) .setXAxis(false) .setXLabels(XController.LabelPosition.OUTSIDE) .setYAxis(false) .setYLabels(YController.LabelPosition.OUTSIDE) .setAxisBorderValues(min, max, 10) .setLabelColor(this.getResources().getColor(R.color.text_color)) .setLabelsFormat(new DecimalFormat("##' lbs'")) .show(); Paint paint = new Paint(); paint.setStrokeWidth((float) Equations.dpToPx(this, 2)); paint.setColor(this.getResources().getColor(R.color.green)); mLineChart.setThresholdLine(goalWeightLine, paint); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_calendar); pager = (ViewPager) findViewById(R.id.viewPager); CalViewPager calViewPager = new CalViewPager(); weightChart(); slide_helper = (RelativeLayout) findViewById(R.id.slide_helper); slide_helper.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } }); pager.setAdapter(calViewPager); final ImageView pageOne = (ImageView) findViewById(R.id.pageOne); pageOne.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { pager.setCurrentItem(0); return false; } }); final ImageView pageTwo = (ImageView) findViewById(R.id.pageTwo); pageTwo.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { pager.setCurrentItem(1); return false; } }); pager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { if (position == 0) { pageOne.setColorFilter(Color.parseColor("#6D6D6D"), android.graphics.PorterDuff.Mode.MULTIPLY); pageTwo.setColorFilter(Color.parseColor("#30000000"), android.graphics.PorterDuff.Mode.MULTIPLY); } else { pageOne.setColorFilter(Color.parseColor("#30000000"), android.graphics.PorterDuff.Mode.MULTIPLY); pageTwo.setColorFilter(Color.parseColor("#6D6D6D"), android.graphics.PorterDuff.Mode.MULTIPLY); } } @Override public void onPageScrollStateChanged(int state) { } }); caldroidFragment = new CaldroidSampleCustomFragment(); mLayout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout); mLayout.setPanelSlideListener(this); moreLess = (ImageView) findViewById(R.id.moreLess); setDate = (TextView) findViewById(R.id.setDate); setDate.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent data = new Intent(); data.putExtra(MainActivity.ACTIVITY_ONE_RESULT, mainDate); setResult(RESULT_OK, data); // passing the RESULT_OK parameter finish(); } }); moreLess.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mLayout.getPanelState().equals(SlidingUpPanelLayout.PanelState.COLLAPSED)) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); } else { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); } } }); toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { finish(); } }); txtTitle = (TextView) findViewById(R.id.txtTitle); toolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { if (item.getItemId() == R.id.action_today) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); caldroidFragment.setBackgroundResourceForDate(R.color.white, test.get(test.size() - 1)); caldroidFragment.setBackgroundResourceForDate(R.color.light_trans, new Date()); caldroidFragment.refreshView(); toolbar.getMenu().clear(); test.add(new Date()); caldroidFragment.moveToDate(new Date()); setMoreData(new Date()); } return false; } }); if (savedInstanceState != null) { caldroidFragment.restoreStatesFromKey(savedInstanceState, "CALDROID_SAVED_STATE"); } else { Bundle args = new Bundle(); Calendar cal = Calendar.getInstance(); args.putInt(CaldroidFragment.MONTH, cal.get(Calendar.MONTH) + 1); args.putInt(CaldroidFragment.YEAR, cal.get(Calendar.YEAR)); args.putBoolean(CaldroidFragment.ENABLE_SWIPE, true); args.putBoolean(CaldroidFragment.SIX_WEEKS_IN_CALENDAR, true); caldroidFragment.setArguments(args); } test = new ArrayList<>(); HashMap<Date, Integer> meMap = new HashMap<>(); db = new DatabaseHandler(this); dailyCalorieIntakes = db.getAllContacts(); // filter by string dailyCalorieAdapter = new DailyCalorieAdapter(this, 0, dailyCalorieIntakes); if (caldroidFragment != null) { HashMap<String, Object> extraData = caldroidFragment.getExtraData(); for (int i = 0; i < dailyCalorieAdapter.getCount(); i++) { DailyCalorieIntake dailyCalorieIntake = dailyCalorieAdapter.getItem(i); meMap.put(DateCompare.stringTodDate(dailyCalorieIntake.getDate()), 0); extraData.put(dailyCalorieIntake.getDate(), df.format(dailyCalorieIntake.getPhoneNumber())); caldroidFragment.refreshView(); } } caldroidFragment.setBackgroundResourceForDate(R.color.light_trans, new Date()); caldroidFragment.refreshView(); test.add(new Date()); setCustomResourceForDates(); FragmentTransaction t = getSupportFragmentManager().beginTransaction(); calView = (LinearLayout) findViewById(R.id.calendar1); t.replace(R.id.calendar1, caldroidFragment); t.commit(); ViewTreeObserver observer = calView.getViewTreeObserver(); observer.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { init(); calView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } }); setMoreData(new Date()); // Setup listener final CaldroidListener listener = new CaldroidListener() { @Override public void onSelectDate(Date date, View view) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); if (!DateCompare.dateToString(new Date()).equals(DateCompare.dateToString(date))) { toolbar.getMenu().clear(); toolbar.inflateMenu(R.menu.menu_calendar); } else { toolbar.getMenu().clear(); } caldroidFragment.setBackgroundResourceForDate(R.color.white, test.get(test.size() - 1)); caldroidFragment.setBackgroundResourceForDate(R.color.light_trans, date); caldroidFragment.refreshView(); test.add(date); setMoreData(date); } @Override public void onChangeMonth(int month, int year) { mLayout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); Calendar cal = Calendar.getInstance(); if (cal.get(Calendar.MONTH) + 1 == month) { toolbar.getMenu().clear(); } else { toolbar.getMenu().clear(); toolbar.inflateMenu(R.menu.menu_calendar); } if (month == 1) { txtTitle.setText("January, " + year); } else if (month == 2) { txtTitle.setText("February, " + year); } else if (month == 3) { txtTitle.setText("March, " + year); } else if (month == 4) { txtTitle.setText("April, " + year); } else if (month == 5) { txtTitle.setText("May, " + year); } else if (month == 6) { txtTitle.setText("June, " + year); } else if (month == 7) { txtTitle.setText("July, " + year); } else if (month == 8) { txtTitle.setText("August, " + year); } else if (month == 9) { txtTitle.setText("September, " + year); } else if (month == 10) { txtTitle.setText("October, " + year); } else if (month == 11) { txtTitle.setText("November, " + year); } else if (month == 12) { txtTitle.setText("December, " + year); } } @Override public void onLongClickDate(Date date, View view) { } @Override public void onCaldroidViewCreated() { TextView title = caldroidFragment.getMonthTitleTextView(); title.setVisibility(View.GONE); caldroidFragment.setShowNavigationArrows(false); caldroidFragment.refreshView(); } }; caldroidFragment.setCaldroidListener(listener); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); if (caldroidFragment != null) { caldroidFragment.saveStatesToKey(outState, "CALDROID_SAVED_STATE"); } } @Override public void onPanelSlide(View view, float v) { slide_helper.setVisibility(View.VISIBLE); slide_helper.setAlpha(v); Matrix matrix = new Matrix(); moreLess.setScaleType(ImageView.ScaleType.MATRIX); //required double angle = 180 * v; matrix.postRotate((float) angle, 56, 56); moreLess.setImageMatrix(matrix); } @Override public void onPanelCollapsed(View view) { pager.setCurrentItem(0); slide_helper.setVisibility(View.GONE); } @Override public void onPanelExpanded(View view) { } @Override public void onPanelAnchored(View view) { } @Override public void onPanelHidden(View view) { } }