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" />
+
+
+
+
+
+
-
-
+ android:layout_height="wrap_content"
+ android:text="<<<" />
+
+
+
+
+
+
+