diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiWidgetManager.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiWidgetManager.java index c5b821c1d..e8d9ee0aa 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiWidgetManager.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/xiaomi/XiaomiWidgetManager.java @@ -29,6 +29,7 @@ import java.util.Collections; import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Objects; import java.util.Set; @@ -90,6 +91,9 @@ public class XiaomiWidgetManager implements WidgetManager { final XiaomiProto.WidgetParts rawWidgetParts = getRawWidgetParts(); + final Set seenNames = new HashSet<>(); + final Set duplicatedNames = new HashSet<>(); + for (final XiaomiProto.WidgetPart widgetPart : rawWidgetParts.getWidgetPartList()) { final WidgetType type = fromRawWidgetType(widgetPart.getType()); @@ -118,10 +122,23 @@ public class XiaomiWidgetManager implements WidgetManager { } } + if (seenNames.contains(newPart.getFullName())) { + duplicatedNames.add(newPart.getFullName()); + } else { + seenNames.add(newPart.getFullName()); + } + parts.add(newPart); } } + // Ensure that all names are unique + for (final WidgetPart part : parts) { + if (duplicatedNames.contains(part.getFullName())) { + part.setName(String.format(Locale.ROOT, "%s (%s)", part.getName(), part.getId())); + } + } + return parts; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java index 9b88806f3..558bf9e22 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/devices/xiaomi/services/XiaomiSystemService.java @@ -833,6 +833,7 @@ public class XiaomiSystemService extends AbstractXiaomiService implements Xiaomi } private void setWidgets() { + // Just take the persisted protobuf and send it (see above and XiaomiWidgetManager) final String hex = getDevicePrefs().getString(XiaomiPreferences.PREF_WIDGET_SCREENS, null); if (hex == null) { LOG.warn("raw widget screens hex is null"); diff --git a/app/src/main/res/layout/activity_widget_screen_details.xml b/app/src/main/res/layout/activity_widget_screen_details.xml index 5b6929dfe..3d56ac590 100644 --- a/app/src/main/res/layout/activity_widget_screen_details.xml +++ b/app/src/main/res/layout/activity_widget_screen_details.xml @@ -41,7 +41,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="2x1" - android:textAppearance="?android:attr/textAppearanceLarge" + android:textAppearance="?android:attr/textAppearanceMedium" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_layout" /> @@ -80,7 +80,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="TOP LEFT" - android:textAppearance="?android:attr/textAppearanceLarge" + android:textAppearance="?android:attr/textAppearanceMedium" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_widget_top_left" /> @@ -119,7 +119,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="TOP RIGHT" - android:textAppearance="?android:attr/textAppearanceLarge" + android:textAppearance="?android:attr/textAppearanceMedium" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_widget_top_right" /> @@ -158,7 +158,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="CENTER" - android:textAppearance="?android:attr/textAppearanceLarge" + android:textAppearance="?android:attr/textAppearanceMedium" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_widget_center" /> @@ -197,7 +197,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="BOT LEFT" - android:textAppearance="?android:attr/textAppearanceLarge" + android:textAppearance="?android:attr/textAppearanceMedium" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_widget_bottom_left" /> @@ -236,7 +236,7 @@ android:layout_height="wrap_content" android:layout_marginTop="2dp" android:text="BOT RIGHT" - android:textAppearance="?android:attr/textAppearanceLarge" + android:textAppearance="?android:attr/textAppearanceMedium" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/label_widget_bottom_right" />