From 7420876a8801f73ec1bea41609225feb911c5e5c Mon Sep 17 00:00:00 2001 From: Arjan Schrijver Date: Thu, 2 Apr 2026 22:40:24 +0200 Subject: [PATCH] Fossil Q: Move notifications configuration to dedicated top-level device preference --- app/src/main/AndroidManifest.xml | 4 +-- .../devices/qhybrid/QHybridCoordinator.java | 2 +- ...> QHybridNotificationsConfigActivity.java} | 33 ++++++++----------- .../qhybrid/QHybridSettingsCustomizer.java | 4 +-- ...> activity_qhybrid_apps_notifications.xml} | 0 app/src/main/res/values/strings.xml | 2 -- .../devicesettings_fossilqhybrid_legacy.xml | 10 ------ .../devicesettings_qhybrid_notifications.xml | 9 +++++ 8 files changed, 27 insertions(+), 37 deletions(-) rename app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/{QHybridConfigActivity.java => QHybridNotificationsConfigActivity.java} (90%) rename app/src/main/res/layout/{activity_qhybrid_settings.xml => activity_qhybrid_apps_notifications.xml} (100%) delete mode 100644 app/src/main/res/xml/devicesettings_fossilqhybrid_legacy.xml create mode 100644 app/src/main/res/xml/devicesettings_qhybrid_notifications.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0eef8a601b..8733eaa79a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -968,7 +968,7 @@ @@ -976,7 +976,7 @@ android:name=".devices.qhybrid.QHybridAppChooserActivity" android:label="@string/qhybrid_title_apps" android:exported="true" - android:parentActivityName=".devices.qhybrid.QHybridConfigActivity" /> + android:parentActivityName=".devices.qhybrid.QHybridNotificationsConfigActivity" /> generic = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.GENERIC); - generic.add(R.xml.devicesettings_fossilqhybrid_legacy); generic.add(R.xml.devicesettings_qhybrid); generic.add(R.xml.devicesettings_fossilhybridhr_vibration); generic.add(R.xml.devicesettings_fossilhybridhr_calibration); + deviceSpecificSettings.addRootScreen(R.xml.devicesettings_qhybrid_notifications); final List developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER); developer.add(R.xml.devicesettings_fossilhybrids_dev); return deviceSpecificSettings; diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConfigActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridNotificationsConfigActivity.java similarity index 90% rename from app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConfigActivity.java rename to app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridNotificationsConfigActivity.java index 803ccddf92..28a723fa10 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridConfigActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridNotificationsConfigActivity.java @@ -51,13 +51,12 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.activities.AbstractGBActivity; import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; -import nodomain.freeyourgadget.gadgetbridge.model.ItemWithDetails; import nodomain.freeyourgadget.gadgetbridge.service.devices.qhybrid.QHybridSupport; import nodomain.freeyourgadget.gadgetbridge.util.GB; import nodomain.freeyourgadget.gadgetbridge.util.NotificationUtils; -public class QHybridConfigActivity extends AbstractGBActivity { - private static final Logger LOG = LoggerFactory.getLogger(QHybridConfigActivity.class); +public class QHybridNotificationsConfigActivity extends AbstractGBActivity { + private static final Logger LOG = LoggerFactory.getLogger(QHybridNotificationsConfigActivity.class); PackageAdapter adapter; ArrayList list; @@ -80,9 +79,9 @@ public class QHybridConfigActivity extends AbstractGBActivity { return; } - setContentView(R.layout.activity_qhybrid_settings); + setContentView(R.layout.activity_qhybrid_apps_notifications); - setTitle(R.string.preferences_qhybrid_settings); + setTitle(R.string.pref_header_notifications); ListView appList = findViewById(R.id.qhybrid_appList); @@ -97,13 +96,13 @@ public class QHybridConfigActivity extends AbstractGBActivity { list.add(null); appList.setAdapter(adapter = new PackageAdapter(this, R.layout.qhybrid_package_settings_item, list)); appList.setOnItemLongClickListener((adapterView, view, i, l) -> { - PopupMenu menu = new PopupMenu(QHybridConfigActivity.this, view); + PopupMenu menu = new PopupMenu(QHybridNotificationsConfigActivity.this, view); menu.getMenu().add(0, 0, 0, "edit"); menu.getMenu().add(0, 1, 1, "delete"); menu.setOnMenuItemClickListener(menuItem -> { switch (menuItem.getItemId()) { case 0: { - TimePicker picker = new TimePicker(QHybridConfigActivity.this, (NotificationConfiguration) adapterView.getItemAtPosition(i)); + TimePicker picker = new TimePicker(QHybridNotificationsConfigActivity.this, (NotificationConfiguration) adapterView.getItemAtPosition(i)); picker.finishListener = (success, config) -> { setControl(false, null); if (success) { @@ -111,15 +110,15 @@ public class QHybridConfigActivity extends AbstractGBActivity { helper.saveNotificationConfiguration(config); final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED); intent.putExtra(GBDevice.EXTRA_DEVICE, device); - LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(intent); + LocalBroadcastManager.getInstance(QHybridNotificationsConfigActivity.this).sendBroadcast(intent); } catch (Exception e) { GB.toast("error saving notification", Toast.LENGTH_SHORT, GB.ERROR, e); } refreshList(); } }; - picker.handsListener = QHybridConfigActivity.this::setHands; - picker.vibrationListener = QHybridConfigActivity.this::vibrate; + picker.handsListener = QHybridNotificationsConfigActivity.this::setHands; + picker.vibrationListener = QHybridNotificationsConfigActivity.this::vibrate; setControl(true, picker.getSettings()); break; } @@ -128,7 +127,7 @@ public class QHybridConfigActivity extends AbstractGBActivity { helper.deleteNotificationConfiguration((NotificationConfiguration) adapterView.getItemAtPosition(i)); final Intent intent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION_CONFIG_CHANGED); intent.putExtra(GBDevice.EXTRA_DEVICE, device); - LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(intent); + LocalBroadcastManager.getInstance(QHybridNotificationsConfigActivity.this).sendBroadcast(intent); } catch (Exception e) { GB.toast("error deleting setting", Toast.LENGTH_SHORT, GB.ERROR, e); } @@ -146,16 +145,10 @@ public class QHybridConfigActivity extends AbstractGBActivity { Intent notificationIntent = new Intent(QHybridSupport.QHYBRID_COMMAND_NOTIFICATION); notificationIntent.putExtra(GBDevice.EXTRA_DEVICE, device); notificationIntent.putExtra("CONFIG", (NotificationConfiguration) adapterView.getItemAtPosition(i)); - LocalBroadcastManager.getInstance(QHybridConfigActivity.this).sendBroadcast(notificationIntent); + LocalBroadcastManager.getInstance(QHybridNotificationsConfigActivity.this).sendBroadcast(notificationIntent); }); } - @NonNull - private String getDeviceInfoDetails(final String name) { - ItemWithDetails deviceInfo = device.getDeviceInfo(name); - return deviceInfo != null ? deviceInfo.getDetails() : ""; - } - private void setControl(boolean control, NotificationConfiguration config) { if (hasControl == control) return; Intent intent = new Intent(control ? QHybridSupport.QHYBRID_COMMAND_CONTROL : QHybridSupport.QHYBRID_COMMAND_UNCONTROL); @@ -232,11 +225,11 @@ public class QHybridConfigActivity extends AbstractGBActivity { NotificationConfiguration settings = getItem(position); if (settings == null) { - Button addButton = new Button(QHybridConfigActivity.this); + Button addButton = new Button(QHybridNotificationsConfigActivity.this); addButton.setText("+"); addButton.setLayoutParams(new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)); addButton.setOnClickListener(view1 -> { - final Intent appChooserIntent = new Intent(QHybridConfigActivity.this, QHybridAppChooserActivity.class); + final Intent appChooserIntent = new Intent(QHybridNotificationsConfigActivity.this, QHybridAppChooserActivity.class); appChooserIntent.putExtra(GBDevice.EXTRA_DEVICE, device); startActivityForResult(appChooserIntent, REQUEST_CODE_ADD_APP); }); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java index a28e19e1bb..d59c91767a 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/qhybrid/QHybridSettingsCustomizer.java @@ -39,10 +39,10 @@ public class QHybridSettingsCustomizer implements DeviceSpecificSettingsCustomiz public void customizeSettings(final DeviceSpecificSettingsHandler handler, final Prefs prefs, final String rootKey) { handler.addPreferenceHandlerFor("use_activity_hand_as_notification_counter"); - final Preference legacyPref = handler.findPreference("pref_key_qhybrid_legacy"); + final Preference legacyPref = handler.findPreference("notifications"); if (legacyPref != null) { legacyPref.setOnPreferenceClickListener(preference -> { - final Intent intent = new Intent(handler.getContext(), QHybridConfigActivity.class); + final Intent intent = new Intent(handler.getContext(), QHybridNotificationsConfigActivity.class); intent.putExtra(GBDevice.EXTRA_DEVICE, handler.getDevice()); handler.getContext().startActivity(intent); return true; diff --git a/app/src/main/res/layout/activity_qhybrid_settings.xml b/app/src/main/res/layout/activity_qhybrid_apps_notifications.xml similarity index 100% rename from app/src/main/res/layout/activity_qhybrid_settings.xml rename to app/src/main/res/layout/activity_qhybrid_apps_notifications.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5a142adaee..a18bba0856 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2294,8 +2294,6 @@ WeChat Pay Cards MI AI - Q Hybrid Settings - Legacy settings for Q Hybrid watches Music More NFC diff --git a/app/src/main/res/xml/devicesettings_fossilqhybrid_legacy.xml b/app/src/main/res/xml/devicesettings_fossilqhybrid_legacy.xml deleted file mode 100644 index aeed1ab0a6..0000000000 --- a/app/src/main/res/xml/devicesettings_fossilqhybrid_legacy.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/app/src/main/res/xml/devicesettings_qhybrid_notifications.xml b/app/src/main/res/xml/devicesettings_qhybrid_notifications.xml new file mode 100644 index 0000000000..0c786cafc4 --- /dev/null +++ b/app/src/main/res/xml/devicesettings_qhybrid_notifications.xml @@ -0,0 +1,9 @@ + + + + + +