summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJames Lemieux <jplemieux@google.com>2017-02-01 16:42:09 -0800
committerJames Lemieux <jplemieux@google.com>2017-02-01 16:42:09 -0800
commit22e6309fcd8d0fa027ee7bbef988ff7e9c426b12 (patch)
tree27872cc6f2151c68729a5b128e53254bf529746d /src
parent63669870c5677e73c61ae81dd7469abccb51d629 (diff)
downloadandroid_packages_apps_DeskClock-22e6309fcd8d0fa027ee7bbef988ff7e9c426b12.tar.gz
android_packages_apps_DeskClock-22e6309fcd8d0fa027ee7bbef988ff7e9c426b12.tar.bz2
android_packages_apps_DeskClock-22e6309fcd8d0fa027ee7bbef988ff7e9c426b12.zip
Disable seconds on the unseen clock depending on style
Bug: 34856983 Test: Manually test adjusting all combinations of clock style and seconds This has two benefits: 1) the unseen clock no longer schedules one second callbacks to update a GONE component 2) It avoids the reported exception caused by Activity.recreate() Change-Id: I0a1a3e30a5e4ae6c751a2285ca25f4470fc2bb9d
Diffstat (limited to 'src')
-rw-r--r--src/com/android/deskclock/ClockFragment.java23
-rw-r--r--src/com/android/deskclock/Utils.java23
2 files changed, 27 insertions, 19 deletions
diff --git a/src/com/android/deskclock/ClockFragment.java b/src/com/android/deskclock/ClockFragment.java
index 949897405..7afe72da0 100644
--- a/src/com/android/deskclock/ClockFragment.java
+++ b/src/com/android/deskclock/ClockFragment.java
@@ -129,12 +129,9 @@ public final class ClockFragment extends DeskClockFragment {
mDigitalClock = (TextClock) mClockFrame.findViewById(R.id.digital_clock);
mAnalogClock = (AnalogClock) mClockFrame.findViewById(R.id.analog_clock);
Utils.setClockIconTypeface(mClockFrame);
- Utils.refreshAlarm(context, mClockFrame);
- boolean enableSeconds = DataModel.getDataModel().getDisplayClockSeconds();
- Utils.setTimeFormat(mDigitalClock, enableSeconds);
- mAnalogClock.enableSeconds(enableSeconds);
Utils.updateDate(mDateFormat, mDateFormatForAccessibility, mClockFrame);
Utils.setClockStyle(mDigitalClock, mAnalogClock);
+ Utils.setClockSecondsEnabled(mDigitalClock, mAnalogClock);
}
// Schedule a runnable to update the date every quarter hour.
@@ -144,15 +141,6 @@ public final class ClockFragment extends DeskClockFragment {
}
@Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- if (mDigitalClock != null) {
- Utils.setTimeFormat(mDigitalClock, DataModel.getDataModel().getDisplayClockSeconds());
- }
- }
-
- @Override
public void onResume() {
super.onResume();
@@ -167,9 +155,10 @@ public final class ClockFragment extends DeskClockFragment {
activity.registerReceiver(mAlarmChangeReceiver, filter);
}
- // Resume can be invoked after changing the clock style.
+ // Resume can be invoked after changing the clock style or seconds display.
if (mDigitalClock != null && mAnalogClock != null) {
Utils.setClockStyle(mDigitalClock, mAnalogClock);
+ Utils.setClockSecondsEnabled(mDigitalClock, mAnalogClock);
}
final View view = getView();
@@ -547,13 +536,11 @@ public final class ClockFragment extends DeskClockFragment {
String dateFormatForAccessibility, boolean showHairline) {
Utils.refreshAlarm(context, itemView);
- final boolean displaySeconds = DataModel.getDataModel().getDisplayClockSeconds();
- Utils.setTimeFormat(mDigitalClock, displaySeconds);
- mAnalogClock.enableSeconds(displaySeconds);
-
Utils.updateDate(dateFormat, dateFormatForAccessibility, itemView);
Utils.setClockStyle(mDigitalClock, mAnalogClock);
mHairline.setVisibility(showHairline ? VISIBLE : GONE);
+
+ Utils.setClockSecondsEnabled(mDigitalClock, mAnalogClock);
}
}
}
diff --git a/src/com/android/deskclock/Utils.java b/src/com/android/deskclock/Utils.java
index a7261f17e..e9a3b40d9 100644
--- a/src/com/android/deskclock/Utils.java
+++ b/src/com/android/deskclock/Utils.java
@@ -202,7 +202,28 @@ public class Utils {
}
/**
- * For screensavers to set whether the digital or analog clock should be displayed.
+ * Configure the clock that is visible to display seconds. The clock that is not visible never
+ * displays seconds to avoid it scheduling unnecessary ticking runnables.
+ */
+ public static void setClockSecondsEnabled(TextClock digitalClock, AnalogClock analogClock) {
+ final boolean displaySeconds = DataModel.getDataModel().getDisplayClockSeconds();
+ final DataModel.ClockStyle clockStyle = DataModel.getDataModel().getClockStyle();
+ switch (clockStyle) {
+ case ANALOG:
+ setTimeFormat(digitalClock, false);
+ analogClock.enableSeconds(displaySeconds);
+ return;
+ case DIGITAL:
+ analogClock.enableSeconds(false);
+ setTimeFormat(digitalClock, displaySeconds);
+ return;
+ }
+
+ throw new IllegalStateException("unexpected clock style: " + clockStyle);
+ }
+
+ /**
+ * Set whether the digital or analog clock should be displayed in the application.
* Returns the view to be displayed.
*/
public static View setClockStyle(View digitalClock, View analogClock) {