From 93e9d407ec243d319f4256cf5b28097e55eb99da Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Thu, 14 Jul 2022 13:02:04 +0200 Subject: [PATCH] Fossil Hybrid HR: Show in appmanager which watchfaces are outdated --- .../AbstractAppManagerFragment.java | 10 ++++++++- .../adapter/GBDeviceAppAdapter.java | 7 ++++++ .../qhybrid/HybridHRWatchfaceFactory.java | 2 +- .../devices/qhybrid/QHybridConstants.java | 21 ++++++++++++++++++ .../gadgetbridge/impl/GBDeviceApp.java | 9 ++++++++ .../res/layout/item_appmanager_watchapp.xml | 22 +++++++++++++++---- app/src/main/res/values/strings.xml | 1 + 7 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConstants.java diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java index de829d3df..3be595881 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/appmanager/AbstractAppManagerFragment.java @@ -55,6 +55,7 @@ import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.ExternalPebbleJSActivity; import nodomain.freeyourgadget.gadgetbridge.adapter.GBDeviceAppAdapter; import nodomain.freeyourgadget.gadgetbridge.devices.DeviceCoordinator; +import nodomain.freeyourgadget.gadgetbridge.devices.qhybrid.QHybridConstants; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.impl.GBDeviceApp; import nodomain.freeyourgadget.gadgetbridge.model.DeviceService; @@ -129,6 +130,9 @@ public abstract class AbstractAppManagerFragment extends Fragment { GBDeviceApp app = new GBDeviceApp(uuid, appName, appCreator, appVersion, appType, previewImage); app.setOnDevice(true); + if ((mGBDevice.getType() == DeviceType.FOSSILQHYBRID) && (app.getType() == GBDeviceApp.Type.WATCHFACE) && (!QHybridConstants.HYBRIDHR_WATCHFACE_VERSION.equals(appVersion))) { + app.setUpToDate(false); + } if (filterApp(app)) { appList.add(app); } @@ -201,7 +205,11 @@ public abstract class AbstractAppManagerFragment extends Fragment { try { String jsonstring = FileUtils.getStringFromFile(jsonFile); JSONObject json = new JSONObject(jsonstring); - cachedAppList.add(new GBDeviceApp(json, configFile.exists(), getAppPreviewImage(baseName))); + GBDeviceApp app = new GBDeviceApp(json, configFile.exists(), getAppPreviewImage(baseName)); + if ((mGBDevice.getType() == DeviceType.FOSSILQHYBRID) && (app.getType() == GBDeviceApp.Type.WATCHFACE) && (!QHybridConstants.HYBRIDHR_WATCHFACE_VERSION.equals(app.getVersion()))) { + app.setUpToDate(false); + } + cachedAppList.add(app); } catch (Exception e) { LOG.info("could not read json file for " + baseName); if (mGBDevice.getType() == DeviceType.PEBBLE) { diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAppAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAppAdapter.java index b41c0ba73..34b58fe2f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAppAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAppAdapter.java @@ -87,6 +87,11 @@ public class GBDeviceAppAdapter extends RecyclerView.Adapter. */ +package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid; + +public final class QHybridConstants { + public static final String HYBRIDHR_WATCHFACE_VERSION = "1.1"; +} diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceApp.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceApp.java index 8e27b2f1c..454ae2796 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceApp.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/impl/GBDeviceApp.java @@ -34,6 +34,7 @@ public class GBDeviceApp { private boolean isOnDevice; private final boolean configurable; private final Bitmap previewImage; + private boolean isUpToDate = true; public GBDeviceApp(UUID uuid, String name, String creator, String version, Type type, Bitmap previewImage) { this.uuid = uuid; @@ -151,4 +152,12 @@ public class GBDeviceApp { public boolean isConfigurable() { return configurable; } + + public void setUpToDate(boolean isUpToDate) { + this.isUpToDate = isUpToDate; + } + + public boolean isUpToDate() { + return isUpToDate; + } } diff --git a/app/src/main/res/layout/item_appmanager_watchapp.xml b/app/src/main/res/layout/item_appmanager_watchapp.xml index 5d88ed4c6..cc1ae2421 100644 --- a/app/src/main/res/layout/item_appmanager_watchapp.xml +++ b/app/src/main/res/layout/item_appmanager_watchapp.xml @@ -61,12 +61,26 @@ android:text="Item Name" android:textAppearance="@style/TextAppearance.AppCompat.Subhead" /> - + android:orientation="horizontal"> + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0ca1da99c..c66f38a74 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -96,6 +96,7 @@ Install the Weather Notification app Configure Move to top + (outdated) Notification settings Blacklist all for notifications