Fossil Q: Move notifications configuration to dedicated top-level device preference

This commit is contained in:
Arjan Schrijver
2026-04-05 14:18:10 +02:00
committed by Arjan Schrijver
parent 7735b2d795
commit 7420876a88
8 changed files with 27 additions and 37 deletions
+2 -2
View File
@@ -968,7 +968,7 @@
</activity>
<activity
android:name=".devices.qhybrid.QHybridConfigActivity"
android:name=".devices.qhybrid.QHybridNotificationsConfigActivity"
android:label="@string/qhybrid_title_watchface"
android:exported="true"
android:parentActivityName=".activities.devicesettings.DeviceSettingsActivity" />
@@ -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" />
<activity
android:name=".devices.qhybrid.HRConfigActivity"
android:label="@string/qhybrid_title_watchface"
@@ -267,10 +267,10 @@ public class QHybridCoordinator extends AbstractBLEDeviceCoordinator {
// Q Hybrid watches, without eInk screen
if (!isHybridHR(device)) {
final List<Integer> 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<Integer> developer = deviceSpecificSettings.addRootScreen(DeviceSpecificSettingsScreen.DEVELOPER);
developer.add(R.xml.devicesettings_fossilhybrids_dev);
return deviceSpecificSettings;
@@ -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<NotificationConfiguration> 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);
});
@@ -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;
-2
View File
@@ -2294,8 +2294,6 @@
<string name="menuitem_wechat_pay">WeChat Pay</string>
<string name="menuitem_cards">Cards</string>
<string name="menuitem_mi_ai">MI AI</string>
<string name="preferences_qhybrid_settings">Q Hybrid Settings</string>
<string name="preferences_qhybrid_settings_summary">Legacy settings for Q Hybrid watches</string>
<string name="menuitem_music">Music</string>
<string name="menuitem_more">More</string>
<string name="menuitem_nfc">NFC</string>
@@ -1,10 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:icon="@drawable/ic_settings"
android:key="pref_key_qhybrid_legacy"
android:summary="@string/preferences_qhybrid_settings_summary"
android:title="@string/preferences_qhybrid_settings" />
</androidx.preference.PreferenceScreen>
@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.preference.PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<Preference
android:key="notifications"
android:title="@string/pref_header_notifications"
android:icon="@drawable/ic_notifications" />
</androidx.preference.PreferenceScreen>