diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractListActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractListActivity.java index dcf97ed11..4ead62a6d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractListActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/AbstractListActivity.java @@ -35,6 +35,10 @@ public abstract class AbstractListActivity extends AbstractGBActivity { this.itemAdapter.loadItems(); } + public void setActivityKindFilter(int activityKind){ + this.itemAdapter.setActivityKindFilter(activityKind); + } + public AbstractItemAdapter getItemAdapter() { return itemAdapter; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java index 12a783318..678f8e74b 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/ActivitySummariesActivity.java @@ -32,8 +32,10 @@ import android.view.MenuItem; import android.view.View; import android.widget.AbsListView; import android.widget.AdapterView; +import android.widget.ArrayAdapter; import android.widget.DatePicker; import android.widget.ListView; +import android.widget.Spinner; import android.widget.Toast; import androidx.core.content.FileProvider; @@ -46,6 +48,7 @@ import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Calendar; +import java.util.LinkedHashMap; import java.util.List; import java.util.Objects; @@ -54,6 +57,7 @@ import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.adapter.ActivitySummariesAdapter; import nodomain.freeyourgadget.gadgetbridge.entities.BaseActivitySummary; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; +import nodomain.freeyourgadget.gadgetbridge.model.ActivityKind; import nodomain.freeyourgadget.gadgetbridge.model.ActivitySummary; import nodomain.freeyourgadget.gadgetbridge.model.RecordedDataTypes; import nodomain.freeyourgadget.gadgetbridge.util.AndroidUtils; @@ -67,6 +71,7 @@ public class ActivitySummariesActivity extends AbstractListActivity activityKindMap = new LinkedHashMap<>(1); private final BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override @@ -125,7 +130,8 @@ public class ActivitySummariesActivity extends AbstractListActivity newMap = new LinkedHashMap<>(1); //reset + newMap.put("All Activities", 0); + for (BaseActivitySummary item : getItemAdapter().getItems()) { + String activityName = ActivityKind.asString(item.getActivityKind(), this); + if (!newMap.containsKey(item.getActivityKind())) { + newMap.put(activityName, item.getActivityKind()); + } + } + return newMap; + } + + public void addListenerOnSpinnerItemSelection() { + Spinner spinner = (Spinner) findViewById(R.id.select_kind); + spinner.setOnItemSelectedListener(new CustomOnItemSelectedListener()); + } + + public class CustomOnItemSelectedListener implements AdapterView.OnItemSelectedListener { + + public void onItemSelected(AdapterView parent, View view, int pos,long id) { + setActivityKindFilter(activityKindMap.get(parent.getItemAtPosition(pos))); + refresh(); + } + + @Override + public void onNothingSelected(AdapterView arg0) { + // TODO Auto-generated method stub + } + + } + + public void addItemsOnSpinner() { + Spinner spinner = (Spinner) findViewById(R.id.select_kind); + ArrayList spinnerArray = new ArrayList<>(activityKindMap.keySet()); + ArrayAdapter dataAdapter = new ArrayAdapter(this, + android.R.layout.simple_spinner_dropdown_item, spinnerArray); + spinner.setAdapter(dataAdapter); } public void resetFetchTimestampToChosenDate() { @@ -278,14 +329,6 @@ public class ActivitySummariesActivity extends AbstractListActivity extends ArrayAdapter { this.horizontalAlignment = horizontalAlignment; } + public void setActivityKindFilter(int activityKind){ + this.setActivityKindFilter(activityKind); + } + @Override public View getView(int position, View view, ViewGroup parent) { T item = getItem(position); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/ActivitySummariesAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/ActivitySummariesAdapter.java index 2a5852ea1..ff4daa13d 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/ActivitySummariesAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/ActivitySummariesAdapter.java @@ -37,10 +37,12 @@ import nodomain.freeyourgadget.gadgetbridge.util.GB; public class ActivitySummariesAdapter extends AbstractItemAdapter { private final GBDevice device; + private int activityKindFilter; - public ActivitySummariesAdapter(Context context, GBDevice device) { + public ActivitySummariesAdapter(Context context, GBDevice device, int activityKindFilter) { super(context); this.device = device; + this.activityKindFilter = activityKindFilter; loadItems(); } @@ -51,7 +53,17 @@ public class ActivitySummariesAdapter extends AbstractItemAdapter qb = summaryDao.queryBuilder(); - qb.where(BaseActivitySummaryDao.Properties.DeviceId.eq(dbDevice.getId())).orderDesc(BaseActivitySummaryDao.Properties.StartTime); + if (activityKindFilter !=0){ + qb.where( + BaseActivitySummaryDao.Properties.DeviceId.eq(dbDevice.getId()), + BaseActivitySummaryDao.Properties.ActivityKind.eq(activityKindFilter)) + .orderDesc(BaseActivitySummaryDao.Properties.StartTime); + }else{ + qb.where( + BaseActivitySummaryDao.Properties.DeviceId.eq( + dbDevice.getId())).orderDesc(BaseActivitySummaryDao.Properties.StartTime); + } + List allSummaries = qb.build().list(); setItems(allSummaries, true); } catch (Exception e) { @@ -59,6 +71,10 @@ public class ActivitySummariesAdapter extends AbstractItemAdapter - + - + - + + + + + +