mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-09-27 16:56:57 +02:00
Update dashboard when one of its preferences has changed
This commit is contained in:
parent
bf3830924d
commit
8f31786f44
@ -87,16 +87,25 @@ public class DashboardFragment extends Fragment {
|
||||
private DashboardActiveTimeWidget activeTimeWidget;
|
||||
private DashboardSleepWidget sleepWidget;
|
||||
private DashboardData dashboardData = new DashboardData();
|
||||
private boolean isConfigChanged = false;
|
||||
|
||||
public static final String ACTION_CONFIG_CHANGE = "nodomain.freeyourgadget.gadgetbridge.activities.dashboardfragment.action.config_change";
|
||||
|
||||
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
String action = intent.getAction();
|
||||
if (action != null && action.equals(GBDevice.ACTION_DEVICE_CHANGED)) {
|
||||
GBDevice dev = intent.getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (dev != null && !dev.isBusy()) {
|
||||
refresh();
|
||||
}
|
||||
if (action == null) return;
|
||||
switch (action) {
|
||||
case GBDevice.ACTION_DEVICE_CHANGED:
|
||||
GBDevice dev = intent.getParcelableExtra(GBDevice.EXTRA_DEVICE);
|
||||
if (dev != null && !dev.isBusy()) {
|
||||
refresh();
|
||||
}
|
||||
break;
|
||||
case ACTION_CONFIG_CHANGE:
|
||||
isConfigChanged = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
};
|
||||
@ -162,6 +171,7 @@ public class DashboardFragment extends Fragment {
|
||||
|
||||
IntentFilter filterLocal = new IntentFilter();
|
||||
filterLocal.addAction(GBDevice.ACTION_DEVICE_CHANGED);
|
||||
filterLocal.addAction(ACTION_CONFIG_CHANGE);
|
||||
LocalBroadcastManager.getInstance(requireContext()).registerReceiver(mReceiver, filterLocal);
|
||||
|
||||
return dashboardView;
|
||||
@ -171,7 +181,12 @@ public class DashboardFragment extends Fragment {
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
draw();
|
||||
if (dashboardData.isEmpty() || todayWidget == null) refresh();
|
||||
if (isConfigChanged) {
|
||||
isConfigChanged = false;
|
||||
fullRefresh();
|
||||
} else if (dashboardData.isEmpty() || todayWidget == null) {
|
||||
refresh();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -413,6 +413,76 @@ public class SettingsActivity extends AbstractSettingsActivityV2 {
|
||||
dashboardDevices.setEntryValues(deviceMACs.toArray(new String[0]));
|
||||
dashboardDevices.setEntries(deviceNames.toArray(new String[0]));
|
||||
}
|
||||
pref = findPreference("dashboard_cards_enabled");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("pref_dashboard_widgets_order");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_widget_today_24h");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_widget_today_2columns");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_widget_today_legend");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_widget_today_hr_interval");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_widget_goals_2columns");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_widget_goals_legend");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_devices_all");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
pref = findPreference("dashboard_devices_multiselect");
|
||||
if (pref != null) {
|
||||
pref.setOnPreferenceChangeListener((preference, autoExportEnabled) -> {
|
||||
sendDashboardConfigChangedIntent();
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
final Preference theme = findPreference("pref_key_theme");
|
||||
final Preference amoled_black = findPreference("pref_key_theme_amoled_black");
|
||||
@ -608,5 +678,14 @@ public class SettingsActivity extends AbstractSettingsActivityV2 {
|
||||
intent.setAction(GBApplication.ACTION_THEME_CHANGE);
|
||||
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Signal dashboard that its config has changed
|
||||
*/
|
||||
private void sendDashboardConfigChangedIntent() {
|
||||
Intent intent = new Intent();
|
||||
intent.setAction(DashboardFragment.ACTION_CONFIG_CHANGE);
|
||||
LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user