2024-01-10 18:54:00 +01:00
|
|
|
/* Copyright (C) 2021-2024 Arjan Schrijver, José Rebelo
|
2021-11-16 14:25:58 +01:00
|
|
|
|
|
|
|
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
|
2024-01-10 18:54:00 +01:00
|
|
|
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
2021-11-16 14:25:58 +01:00
|
|
|
package nodomain.freeyourgadget.gadgetbridge.devices.qhybrid;
|
|
|
|
|
|
|
|
import android.content.Intent;
|
|
|
|
import android.os.Bundle;
|
2023-07-31 21:31:42 +02:00
|
|
|
import android.text.InputType;
|
|
|
|
import android.view.MenuItem;
|
|
|
|
|
2023-07-25 21:50:20 +02:00
|
|
|
import androidx.preference.EditTextPreference;
|
|
|
|
import androidx.preference.ListPreference;
|
|
|
|
import androidx.preference.Preference;
|
2023-07-27 00:08:13 +02:00
|
|
|
import androidx.preference.PreferenceFragmentCompat;
|
2023-10-06 22:06:35 +02:00
|
|
|
import androidx.preference.SwitchPreferenceCompat;
|
2023-07-25 21:50:20 +02:00
|
|
|
|
2021-11-16 14:25:58 +01:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
2023-07-25 21:50:20 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractPreferenceFragment;
|
2023-07-27 00:08:13 +02:00
|
|
|
import nodomain.freeyourgadget.gadgetbridge.activities.AbstractSettingsActivityV2;
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-27 00:08:13 +02:00
|
|
|
public class HybridHRWatchfaceSettingsActivity extends AbstractSettingsActivityV2 {
|
2021-11-16 14:25:58 +01:00
|
|
|
static HybridHRWatchfaceSettings settings;
|
|
|
|
|
|
|
|
@Override
|
2023-07-27 00:08:13 +02:00
|
|
|
protected String fragmentTag() {
|
|
|
|
return HybridHRWatchfaceSettingsFragment.FRAGMENT_TAG;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
protected PreferenceFragmentCompat newFragment() {
|
|
|
|
return new HybridHRWatchfaceSettingsFragment();
|
|
|
|
}
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-27 00:08:13 +02:00
|
|
|
@Override
|
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
2021-11-16 14:25:58 +01:00
|
|
|
Intent intent = getIntent();
|
|
|
|
Bundle bundle = intent.getExtras();
|
|
|
|
if (bundle != null) {
|
|
|
|
settings = (HybridHRWatchfaceSettings) bundle.getSerializable("watchfaceSettings");
|
|
|
|
} else {
|
|
|
|
throw new IllegalArgumentException("Must provide a settings object when invoking this activity");
|
|
|
|
}
|
|
|
|
|
2023-07-27 00:08:13 +02:00
|
|
|
super.onCreate(savedInstanceState);
|
2021-11-16 14:25:58 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onBackPressed() {
|
|
|
|
// Hardware back button
|
|
|
|
Intent output = new Intent();
|
|
|
|
output.putExtra("watchfaceSettings", settings);
|
|
|
|
setResult(RESULT_OK, output);
|
|
|
|
finish();
|
|
|
|
super.onBackPressed();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onOptionsItemSelected(MenuItem item) {
|
|
|
|
if (item.getItemId() == android.R.id.home) {
|
|
|
|
// Action bar back button
|
|
|
|
Intent output = new Intent();
|
|
|
|
output.putExtra("watchfaceSettings", settings);
|
|
|
|
setResult(RESULT_OK, output);
|
|
|
|
finish();
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return super.onOptionsItemSelected(item);
|
|
|
|
}
|
|
|
|
|
2023-07-25 21:50:20 +02:00
|
|
|
public static class HybridHRWatchfaceSettingsFragment extends AbstractPreferenceFragment implements Preference.OnPreferenceChangeListener {
|
|
|
|
static final String FRAGMENT_TAG = "HYBRID_HR_WATCHFACE_SETTINGS_FRAGMENT";
|
|
|
|
|
2021-11-16 14:25:58 +01:00
|
|
|
@Override
|
2023-07-25 21:50:20 +02:00
|
|
|
public void onCreatePreferences(final Bundle savedInstanceState, final String rootKey) {
|
2023-07-27 00:08:13 +02:00
|
|
|
setPreferencesFromResource(R.xml.fossil_hr_watchface_settings, rootKey);
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
EditTextPreference refresh_full = findPreference("pref_hybridhr_watchface_refresh_full");
|
2022-07-25 22:23:22 +02:00
|
|
|
refresh_full.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
refresh_full.setText(Integer.toString(settings.getDisplayTimeoutFull()));
|
|
|
|
refresh_full.setSummary(Integer.toString(settings.getDisplayTimeoutFull()));
|
2023-07-31 21:31:42 +02:00
|
|
|
setInputTypeFor("pref_hybridhr_watchface_refresh_full", InputType.TYPE_CLASS_NUMBER);
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
EditTextPreference refresh_partial = findPreference("pref_hybridhr_watchface_refresh_partial");
|
2022-07-25 22:23:22 +02:00
|
|
|
refresh_partial.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
refresh_partial.setText(Integer.toString(settings.getDisplayTimeoutPartial()));
|
|
|
|
refresh_partial.setSummary(Integer.toString(settings.getDisplayTimeoutPartial()));
|
2023-07-31 21:31:42 +02:00
|
|
|
setInputTypeFor("pref_hybridhr_watchface_refresh_partial", InputType.TYPE_CLASS_NUMBER);
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-10-06 22:06:35 +02:00
|
|
|
SwitchPreferenceCompat wrist_flick_relative = findPreference("pref_hybridhr_watchface_wrist_flick_relative");
|
2022-07-25 22:23:22 +02:00
|
|
|
wrist_flick_relative.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
wrist_flick_relative.setChecked(settings.isWristFlickHandsMoveRelative());
|
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
EditTextPreference wrist_flick_hour_hand = findPreference("pref_hybridhr_watchface_wrist_flick_hour_hand");
|
2022-07-25 22:23:22 +02:00
|
|
|
wrist_flick_hour_hand.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
wrist_flick_hour_hand.setText(Integer.toString(settings.getWristFlickMoveHour()));
|
|
|
|
wrist_flick_hour_hand.setSummary(Integer.toString(settings.getWristFlickMoveHour()));
|
2023-07-31 21:31:42 +02:00
|
|
|
setInputTypeFor("pref_hybridhr_watchface_wrist_flick_hour_hand", InputType.TYPE_CLASS_NUMBER);
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
EditTextPreference wrist_flick_minute_hand = findPreference("pref_hybridhr_watchface_wrist_flick_minute_hand");
|
2022-07-25 22:23:22 +02:00
|
|
|
wrist_flick_minute_hand.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
wrist_flick_minute_hand.setText(Integer.toString(settings.getWristFlickMoveMinute()));
|
|
|
|
wrist_flick_minute_hand.setSummary(Integer.toString(settings.getWristFlickMoveMinute()));
|
2023-07-31 21:31:42 +02:00
|
|
|
setInputTypeFor("pref_hybridhr_watchface_wrist_flick_minute_hand", InputType.TYPE_CLASS_NUMBER);
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
EditTextPreference wrist_flick_duration = findPreference("pref_hybridhr_watchface_wrist_flick_duration");
|
2022-07-25 22:23:22 +02:00
|
|
|
wrist_flick_duration.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
wrist_flick_duration.setText(Integer.toString(settings.getWristFlickDuration()));
|
|
|
|
wrist_flick_duration.setSummary(Integer.toString(settings.getWristFlickDuration()));
|
2023-07-31 21:31:42 +02:00
|
|
|
setInputTypeFor("pref_hybridhr_watchface_wrist_flick_duration", InputType.TYPE_CLASS_NUMBER);
|
2021-11-16 14:25:58 +01:00
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
ListPreference toggle_widgets = findPreference("pref_hybridhr_watchface_toggle_widgets");
|
2022-07-25 22:23:22 +02:00
|
|
|
toggle_widgets.setOnPreferenceChangeListener(this);
|
|
|
|
toggle_widgets.setValue(settings.getToggleWidgetsEvent());
|
|
|
|
toggle_widgets.setSummary(toggle_widgets.getEntry());
|
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
ListPreference toggle_backlight = findPreference("pref_hybridhr_watchface_toggle_backlight");
|
2022-08-01 17:21:55 +02:00
|
|
|
toggle_backlight.setOnPreferenceChangeListener(this);
|
|
|
|
toggle_backlight.setValue(settings.getToggleBacklightEvent());
|
|
|
|
toggle_backlight.setSummary(toggle_backlight.getEntry());
|
|
|
|
|
2023-07-31 21:31:42 +02:00
|
|
|
ListPreference move_hands = findPreference("pref_hybridhr_watchface_move_hands");
|
2022-09-12 17:38:18 +02:00
|
|
|
move_hands.setOnPreferenceChangeListener(this);
|
|
|
|
move_hands.setValue(settings.getMoveHandsEvent());
|
|
|
|
move_hands.setSummary(move_hands.getEntry());
|
|
|
|
|
2023-10-06 22:06:35 +02:00
|
|
|
SwitchPreferenceCompat power_saving_display = findPreference("pref_hybridhr_watchface_power_saving_display");
|
2022-07-25 22:23:22 +02:00
|
|
|
power_saving_display.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
power_saving_display.setChecked(settings.getPowersaveDisplay());
|
|
|
|
|
2023-10-06 22:06:35 +02:00
|
|
|
SwitchPreferenceCompat power_saving_hands = findPreference("pref_hybridhr_watchface_power_saving_hands");
|
2022-07-25 22:23:22 +02:00
|
|
|
power_saving_hands.setOnPreferenceChangeListener(this);
|
2021-11-16 14:25:58 +01:00
|
|
|
power_saving_hands.setChecked(settings.getPowersaveHands());
|
2022-03-22 20:52:43 +01:00
|
|
|
|
2023-10-06 22:06:35 +02:00
|
|
|
SwitchPreferenceCompat light_up_on_notification = findPreference("pref_hybridhr_watchface_light_up_on_notification");
|
2022-07-25 22:23:22 +02:00
|
|
|
light_up_on_notification.setOnPreferenceChangeListener(this);
|
2022-03-22 20:52:43 +01:00
|
|
|
light_up_on_notification.setChecked(settings.getLightUpOnNotification());
|
2021-11-16 14:25:58 +01:00
|
|
|
}
|
|
|
|
|
2022-07-25 22:23:22 +02:00
|
|
|
@Override
|
|
|
|
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
|
|
|
switch (preference.getKey()) {
|
|
|
|
case "pref_hybridhr_watchface_refresh_full":
|
|
|
|
settings.setDisplayTimeoutFull(Integer.parseInt(newValue.toString()));
|
|
|
|
preference.setSummary(newValue.toString());
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_refresh_partial":
|
|
|
|
settings.setDisplayTimeoutPartial(Integer.parseInt(newValue.toString()));
|
|
|
|
preference.setSummary(newValue.toString());
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_wrist_flick_relative":
|
|
|
|
settings.setWristFlickHandsMoveRelative((boolean) newValue);
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_wrist_flick_hour_hand":
|
|
|
|
settings.setWristFlickMoveHour(Integer.parseInt(newValue.toString()));
|
|
|
|
preference.setSummary(newValue.toString());
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_wrist_flick_minute_hand":
|
|
|
|
settings.setWristFlickMoveMinute(Integer.parseInt(newValue.toString()));
|
|
|
|
preference.setSummary(newValue.toString());
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_wrist_flick_duration":
|
|
|
|
settings.setWristFlickDuration(Integer.parseInt(newValue.toString()));
|
|
|
|
preference.setSummary(newValue.toString());
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_toggle_widgets":
|
|
|
|
settings.setToggleWidgetsEvent(newValue.toString());
|
|
|
|
((ListPreference)preference).setValue(newValue.toString());
|
|
|
|
preference.setSummary(((ListPreference)preference).getEntry());
|
|
|
|
break;
|
2022-08-01 17:21:55 +02:00
|
|
|
case "pref_hybridhr_watchface_toggle_backlight":
|
|
|
|
settings.setToggleBacklightEvent(newValue.toString());
|
|
|
|
((ListPreference)preference).setValue(newValue.toString());
|
|
|
|
preference.setSummary(((ListPreference)preference).getEntry());
|
|
|
|
break;
|
2022-09-12 17:38:18 +02:00
|
|
|
case "pref_hybridhr_watchface_move_hands":
|
|
|
|
settings.setMoveHandsEvent(newValue.toString());
|
|
|
|
((ListPreference)preference).setValue(newValue.toString());
|
|
|
|
preference.setSummary(((ListPreference)preference).getEntry());
|
|
|
|
break;
|
2022-07-25 22:23:22 +02:00
|
|
|
case "pref_hybridhr_watchface_power_saving_display":
|
|
|
|
settings.setPowersaveDisplay((boolean) newValue);
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_power_saving_hands":
|
|
|
|
settings.setPowersaveHands((boolean) newValue);
|
|
|
|
break;
|
|
|
|
case "pref_hybridhr_watchface_light_up_on_notification":
|
|
|
|
settings.setLightUpOnNotification((boolean) newValue);
|
|
|
|
break;
|
2021-11-16 14:25:58 +01:00
|
|
|
}
|
2022-07-25 22:23:22 +02:00
|
|
|
return true;
|
2021-11-16 14:25:58 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|