1
0
mirror of https://codeberg.org/Freeyourgadget/Gadgetbridge synced 2024-12-24 17:45:50 +01:00

Fossil Hybrid HR: Show in appmanager which watchfaces are outdated

This commit is contained in:
Arjan Schrijver 2022-07-14 13:02:04 +02:00
parent 6d16625112
commit 93e9d407ec
7 changed files with 66 additions and 6 deletions

View File

@ -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) {

View File

@ -87,6 +87,11 @@ public class GBDeviceAppAdapter extends RecyclerView.Adapter<GBDeviceAppAdapter.
appVersionAuthor = GBApplication.getContext().getString(R.string.appversion_by_creator, deviceApp.getVersion(), deviceApp.getCreator());
}
holder.mDeviceAppVersionAuthorLabel.setText(appVersionAuthor);
if (deviceApp.isUpToDate()) {
holder.mDeviceAppOutdated.setVisibility(View.GONE);
} else {
holder.mDeviceAppOutdated.setVisibility(View.VISIBLE);
}
// FIXME: replace with small icons
String appNameLabelText = deviceApp.getName();
holder.mDeviceAppNameLabel.setText(appNameLabelText);
@ -148,6 +153,7 @@ public class GBDeviceAppAdapter extends RecyclerView.Adapter<GBDeviceAppAdapter.
public class AppViewHolder extends RecyclerView.ViewHolder {
final TextView mDeviceAppVersionAuthorLabel;
final TextView mDeviceAppNameLabel;
final TextView mDeviceAppOutdated;
final ImageView mDeviceImageView;
final ImageView mDragHandle;
final ImageView mPreviewImage;
@ -156,6 +162,7 @@ public class GBDeviceAppAdapter extends RecyclerView.Adapter<GBDeviceAppAdapter.
super(itemView);
mDeviceAppVersionAuthorLabel = (TextView) itemView.findViewById(R.id.item_details);
mDeviceAppNameLabel = (TextView) itemView.findViewById(R.id.item_name);
mDeviceAppOutdated = (TextView) itemView.findViewById(R.id.item_watchapp_outdated);
mDeviceImageView = (ImageView) itemView.findViewById(R.id.item_image);
mDragHandle = (ImageView) itemView.findViewById(R.id.drag_handle);
mPreviewImage = (ImageView) itemView.findViewById(R.id.item_preview_image);

View File

@ -213,7 +213,7 @@ public class HybridHRWatchfaceFactory {
} catch (JSONException e) {
LOG.warn("Could not generate configuration", e);
}
FossilAppWriter appWriter = new FossilAppWriter(context, "1.0", code, icons, layout, displayName, config);
FossilAppWriter appWriter = new FossilAppWriter(context, QHybridConstants.HYBRIDHR_WATCHFACE_VERSION, code, icons, layout, displayName, config);
return appWriter.getWapp();
}

View File

@ -0,0 +1,21 @@
/* Copyright (C) 2022 Arjan Schrijver
This file is part of Gadgetbridge.
Gadgetbridge is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published
by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Gadgetbridge is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid;
public final class QHybridConstants {
public static final String HYBRIDHR_WATCHFACE_VERSION = "1.1";
}

View File

@ -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;
}
}

View File

@ -61,12 +61,26 @@
android:text="Item Name"
android:textAppearance="@style/TextAppearance.AppCompat.Subhead" />
<TextView
android:id="@+id/item_details"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item Description"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
android:orientation="horizontal">
<TextView
android:id="@+id/item_details"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Item Description"
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/item_watchapp_outdated"
android:visibility="gone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="5dp"
android:text="@string/appmanager_item_outdated"
android:textAppearance="@style/TextAppearance.AppCompat.Body1"
android:textColor="@android:color/holo_red_dark" />
</LinearLayout>
</LinearLayout>

View File

@ -96,6 +96,7 @@
<string name="appmanager_weather_install_provider">Install the Weather Notification app</string>
<string name="app_configure">Configure</string>
<string name="app_move_to_top">Move to top</string>
<string name="appmanager_item_outdated">(outdated)</string>
<!-- Strings related to AppBlacklist -->
<string name="title_activity_notification_management">Notification settings</string>
<string name="blacklist_all_for_notifications">Blacklist all for notifications</string>