From c1d024876dc82b1c7cb4af68a6af210eb16d0ce7 Mon Sep 17 00:00:00 2001 From: vanous Date: Fri, 1 Nov 2019 23:40:17 +0100 Subject: [PATCH] Add forward/backward buttons to charts --- .../charts/AbstractChartFragment.java | 44 +++++++------ .../activities/charts/ChartsActivity.java | 48 +++++++++++--- .../activities/charts/ChartsHost.java | 10 ++- app/src/main/res/layout/activity_charts.xml | 62 +++++++++++++++---- 4 files changed, 117 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java index ff2174330..57a86f212 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/AbstractChartFragment.java @@ -152,8 +152,12 @@ public abstract class AbstractChartFragment extends AbstractGBFragment { if (intentFilterActions != null) { mIntentFilterActions.addAll(Arrays.asList(intentFilterActions)); } - mIntentFilterActions.add(ChartsHost.DATE_NEXT); - mIntentFilterActions.add(ChartsHost.DATE_PREV); + mIntentFilterActions.add(ChartsHost.DATE_NEXT_DAY); + mIntentFilterActions.add(ChartsHost.DATE_PREV_DAY); + mIntentFilterActions.add(ChartsHost.DATE_NEXT_WEEK); + mIntentFilterActions.add(ChartsHost.DATE_PREV_WEEK); + mIntentFilterActions.add(ChartsHost.DATE_NEXT_MONTH); + mIntentFilterActions.add(ChartsHost.DATE_PREV_MONTH); mIntentFilterActions.add(ChartsHost.REFRESH); } @@ -250,10 +254,18 @@ public abstract class AbstractChartFragment extends AbstractGBFragment { String action = intent.getAction(); if (ChartsHost.REFRESH.equals(action)) { refresh(); - } else if (ChartsHost.DATE_NEXT.equals(action)) { - handleDateNext(getStartDate(), getEndDate()); - } else if (ChartsHost.DATE_PREV.equals(action)) { - handleDatePrev(getStartDate(), getEndDate()); + } else if (ChartsHost.DATE_NEXT_DAY.equals(action)) { + handleDate(getStartDate(), getEndDate(),+1); + } else if (ChartsHost.DATE_PREV_DAY.equals(action)) { + handleDate(getStartDate(), getEndDate(),-1); + } else if (ChartsHost.DATE_NEXT_WEEK.equals(action)) { + handleDate(getStartDate(), getEndDate(),+7); + } else if (ChartsHost.DATE_PREV_WEEK.equals(action)) { + handleDate(getStartDate(), getEndDate(),-7); + } else if (ChartsHost.DATE_NEXT_MONTH.equals(action)) { + handleDate(getStartDate(), getEndDate(),+30); + } else if (ChartsHost.DATE_PREV_MONTH.equals(action)) { + handleDate(getStartDate(), getEndDate(),-30); } } @@ -263,31 +275,17 @@ public abstract class AbstractChartFragment extends AbstractGBFragment { * * @param startDate * @param endDate + * @param Offset */ - protected void handleDatePrev(Date startDate, Date endDate) { + protected void handleDate(Date startDate, Date endDate, Integer Offset) { if (isVisibleInActivity()) { - if (!shiftDates(startDate, endDate, -1)) { + if (!shiftDates(startDate, endDate, Offset)) { return; } } refreshIfVisible(); } - /** - * Default implementation shifts the dates by one day, if visible - * and calls #refreshIfVisible(). - * - * @param startDate - * @param endDate - */ - protected void handleDateNext(Date startDate, Date endDate) { - if (isVisibleInActivity()) { - if (!shiftDates(startDate, endDate, +1)) { - return; - } - } - refreshIfVisible(); - } protected void refreshIfVisible() { if (isVisibleInActivity()) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java index 2c2e98531..68fa9eda4 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsActivity.java @@ -175,20 +175,52 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts } }); - Button mPrevButton = findViewById(R.id.charts_previous); + Button mPrevButton = findViewById(R.id.charts_previous_day); mPrevButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - handlePrevButtonClicked(); + handleButtonClicked(DATE_PREV_DAY); } }); - Button mNextButton = findViewById(R.id.charts_next); + Button mNextButton = findViewById(R.id.charts_next_day); mNextButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - handleNextButtonClicked(); + handleButtonClicked(DATE_NEXT_DAY); } }); + + Button mPrevWeekButton = findViewById(R.id.charts_previous_week); + mPrevWeekButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + handleButtonClicked(DATE_PREV_WEEK); + } + }); + Button mNextWeekButton = findViewById(R.id.charts_next_week); + mNextWeekButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + handleButtonClicked(DATE_NEXT_WEEK); + } + }); + + Button mPrevMonthButton = findViewById(R.id.charts_previous_month); + mPrevMonthButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + handleButtonClicked(DATE_PREV_MONTH); + } + }); + Button mNextMonthButton = findViewById(R.id.charts_next_month); + mNextMonthButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + handleButtonClicked(DATE_NEXT_MONTH); + } + }); + + } private String formatDetailedDuration() { @@ -229,12 +261,8 @@ public class ChartsActivity extends AbstractGBFragmentActivity implements Charts return mEndDate; } - private void handleNextButtonClicked() { - LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(DATE_NEXT)); - } - - private void handlePrevButtonClicked() { - LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(DATE_PREV)); + private void handleButtonClicked(String Action) { + LocalBroadcastManager.getInstance(this).sendBroadcast(new Intent(Action)); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java index 43ee7ae82..566dfec05 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/charts/ChartsHost.java @@ -23,8 +23,14 @@ import java.util.Date; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; public interface ChartsHost { - String DATE_PREV = ChartsActivity.class.getName().concat(".date_prev"); - String DATE_NEXT = ChartsActivity.class.getName().concat(".date_next"); + String DATE_PREV_DAY = ChartsActivity.class.getName().concat(".date_prev_day"); + String DATE_NEXT_DAY = ChartsActivity.class.getName().concat(".date_next_day"); + String DATE_PREV_WEEK = ChartsActivity.class.getName().concat(".date_prev_week"); + String DATE_NEXT_WEEK = ChartsActivity.class.getName().concat(".date_next_week"); + String DATE_PREV_MONTH = ChartsActivity.class.getName().concat(".date_prev_month"); + String DATE_NEXT_MONTH = ChartsActivity.class.getName().concat(".date_next_month"); + + String REFRESH = ChartsActivity.class.getName().concat(".refresh"); GBDevice getDevice(); diff --git a/app/src/main/res/layout/activity_charts.xml b/app/src/main/res/layout/activity_charts.xml index 0d730ce50..e42f90792 100644 --- a/app/src/main/res/layout/activity_charts.xml +++ b/app/src/main/res/layout/activity_charts.xml @@ -27,32 +27,70 @@ app:tabMode="scrollable" /> + + + + + +