Skip to content

Commit e632893

Browse files
committed
Fix code design error to prevent possible FC's
this commit should begin with uuuuuups ;) Till now this code design error had no negative effect on functionality because the situation is not given to force the possible FC (so no one discovered till now this design derp). Last days I programmed another new feature and ran into this stackoverflow FC.....and I really wondered why. Seems to be that I dreamed today about that....and woke up with the solution that I am an idiot. I did it one time wrong (no idea why....on half of other files I did it right) and due copy paste this error went also into some other files. Whatever to rebuild the preferencescreen that you can call it on every place without running into an stackoverflow (eg would happen if you call the old method from a preferencechange) it should be a preference screen method with returning at the end the preferencescreen. Beside that I introduced boolean mCheckPreferences to prevent unneeded writings on provider.Settings. Just a performance change and a bit help for color resets. corrected on all files where this problem is + one cleanup sorry again for this code design error cheers Change-Id: Ie59939dbf8b6d46800e341542b80b55993011d7b
1 parent 575ed73 commit e632893

File tree

8 files changed

+76
-16
lines changed

8 files changed

+76
-16
lines changed

src/com/android/settings/slim/LockscreenInterface.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ public class LockscreenInterface extends SettingsPreferenceFragment implements P
8181

8282
private boolean mIsScreenLarge;
8383

84+
private boolean mCheckPreferences;
85+
8486
private Activity mActivity;
8587
private ContentResolver mResolver;
8688
private File wallpaperImage;
@@ -103,6 +105,7 @@ public void onCreate(Bundle savedInstanceState) {
103105
}
104106

105107
private PreferenceScreen createCustomLockscreenView() {
108+
mCheckPreferences = false;
106109
PreferenceScreen prefs = getPreferenceScreen();
107110
if (prefs != null) {
108111
prefs.removeAll();
@@ -185,6 +188,7 @@ private PreferenceScreen createCustomLockscreenView() {
185188

186189
setBatteryStatusSummary();
187190
updateCustomBackgroundSummary();
191+
mCheckPreferences = true;
188192
return prefs;
189193
}
190194

@@ -230,6 +234,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preferen
230234

231235
@Override
232236
public boolean onPreferenceChange(Preference preference, Object objValue) {
237+
if (!mCheckPreferences) {
238+
return false;
239+
}
233240
if (preference == mBatteryStatus) {
234241
int value = Integer.valueOf((String) objValue);
235242
int index = mBatteryStatus.findIndexOfValue((String) objValue);

src/com/android/settings/slim/NavBarButtonStyle.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public class NavBarButtonStyle extends SettingsPreferenceFragment implements
4949
private static final String PREF_BUTTON_TRANSPARENCY = "button_transparency";
5050
private static final String PREF_NAV_BUTTON_COLOR_MODE = "nav_button_color_mode";
5151

52+
private boolean mCheckPreferences;
53+
5254
ColorPickerPreference mNavigationBarButtonColor;
5355
ListPreference mNavigationBarButtonColorMode;
5456
SeekBarPreference mButtonAlpha;
@@ -59,7 +61,8 @@ public void onCreate(Bundle savedInstanceState) {
5961
refreshSettings();
6062
}
6163

62-
public void refreshSettings() {
64+
private PreferenceScreen refreshSettings() {
65+
mCheckPreferences = false;
6366
PreferenceScreen prefs = getPreferenceScreen();
6467
if (prefs != null) {
6568
prefs.removeAll();
@@ -102,6 +105,8 @@ public void refreshSettings() {
102105
mButtonAlpha.setOnPreferenceChangeListener(this);
103106

104107
setHasOptionsMenu(true);
108+
mCheckPreferences = true;
109+
return prefs;
105110
}
106111

107112

@@ -137,6 +142,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
137142

138143
@Override
139144
public boolean onPreferenceChange(Preference preference, Object newValue) {
145+
if (!mCheckPreferences) {
146+
return false;
147+
}
140148
if (preference == mNavigationBarButtonColor) {
141149
String hex = ColorPickerPreference.convertToARGB(
142150
Integer.valueOf(String.valueOf(newValue)));

src/com/android/settings/slim/NavBarStyle.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public class NavBarStyle extends SettingsPreferenceFragment implements
4949
private static final String PREF_NAV_BAR_ALPHA_MODE = "nav_bar_alpha_mode";
5050
private static final String PREF_NAV_BAR_COLOR = "nav_bar_color";
5151

52+
private boolean mCheckPreferences;
53+
5254
private SeekBarPreference mNavBarTransparency;
5355
private ColorPickerPreference mNavBarColor;
5456
private ListPreference mAlphaMode;
@@ -59,7 +61,8 @@ public void onCreate(Bundle savedInstanceState) {
5961
refreshSettings();
6062
}
6163

62-
public void refreshSettings() {
64+
private PreferenceScreen refreshSettings() {
65+
mCheckPreferences = false;
6366
PreferenceScreen prefs = getPreferenceScreen();
6467
if (prefs != null) {
6568
prefs.removeAll();
@@ -101,6 +104,8 @@ public void refreshSettings() {
101104
mAlphaMode.setOnPreferenceChangeListener(this);
102105

103106
setHasOptionsMenu(true);
107+
mCheckPreferences = true;
108+
return prefs;
104109
}
105110

106111

@@ -137,6 +142,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
137142

138143
@Override
139144
public boolean onPreferenceChange(Preference preference, Object newValue) {
145+
if (!mCheckPreferences) {
146+
return false;
147+
}
140148
if (preference == mNavBarTransparency) {
141149
float valStat = Float.parseFloat((String) newValue);
142150
Settings.System.putFloat(getActivity().getContentResolver(),

src/com/android/settings/slim/NavRingTargets.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ public class NavRingTargets extends SettingsPreferenceFragment implements
8585
private File customnavImage;
8686
private File customnavTemp;
8787

88+
private boolean mCheckPreferences;
89+
8890
CheckBoxPreference mEnableNavringLong;
8991
ListPreference mNavRingButtonQty;
9092

@@ -100,10 +102,11 @@ private static class NavRingCustomAction {
100102
public void onCreate(Bundle savedInstanceState) {
101103
super.onCreate(savedInstanceState);
102104

103-
createCustomLockscreenView();
105+
createCustomView();
104106
}
105107

106-
private PreferenceScreen createCustomLockscreenView() {
108+
private PreferenceScreen createCustomView() {
109+
mCheckPreferences = false;
107110
PreferenceScreen prefs = getPreferenceScreen();
108111
if (prefs != null) {
109112
prefs.removeAll();
@@ -249,6 +252,7 @@ public void onClick(View v) {
249252

250253
}
251254
setHasOptionsMenu(true);
255+
mCheckPreferences = true;
252256
return prefs;
253257
}
254258

@@ -272,7 +276,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
272276
Settings.System.putInt(getActivity().getContentResolver(),
273277
Settings.System.SYSTEMUI_NAVRING_LONG_ENABLE, 0);
274278

275-
createCustomLockscreenView();
279+
createCustomView();
276280

277281
default:
278282
return super.onContextItemSelected(item);
@@ -282,7 +286,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
282286
@Override
283287
public void onResume() {
284288
super.onResume();
285-
createCustomLockscreenView();
289+
createCustomView();
286290
}
287291

288292
@Override
@@ -293,23 +297,24 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
293297
Settings.System.putInt(getActivity().getContentResolver(),
294298
Settings.System.SYSTEMUI_NAVRING_LONG_ENABLE,
295299
((CheckBoxPreference) preference).isChecked() ? 1 : 0);
296-
createCustomLockscreenView();
300+
createCustomView();
297301
return true;
298302
}
299303
return super.onPreferenceTreeClick(preferenceScreen, preference);
300304
}
301305

302306
@Override
303307
public boolean onPreferenceChange(Preference preference, Object newValue) {
304-
boolean result = false;
305-
308+
if (!mCheckPreferences) {
309+
return false;
310+
}
306311
if (preference == mNavRingButtonQty) {
307312
int val = Integer.parseInt((String) newValue);
308313
Settings.System.putInt(getActivity().getContentResolver(),
309314
Settings.System.SYSTEMUI_NAVRING_AMOUNT, val);
310315
resetNavRing();
311316
resetNavRingLong();
312-
createCustomLockscreenView();
317+
createCustomView();
313318
return true;
314319
} else if ((preference.getKey().startsWith("interface_navring_release"))
315320
|| (preference.getKey().startsWith("interface_navring_long"))) {
@@ -341,7 +346,7 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
341346
Settings.System.NAVRING_CUSTOM_APP_ICONS[index], "");
342347
}
343348
}
344-
createCustomLockscreenView();
349+
createCustomView();
345350
return true;
346351
}
347352
return false;
@@ -560,7 +565,7 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
560565
+ getResources().getString(
561566
R.string.custom_app_icon_successfully),
562567
Toast.LENGTH_LONG).show();
563-
createCustomLockscreenView();
568+
createCustomView();
564569
}
565570
} else if (resultCode == Activity.RESULT_CANCELED && data != null) {
566571

src/com/android/settings/slim/NavbarButtonSettings.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,8 @@ public class NavbarButtonSettings extends SettingsPreferenceFragment implements
8787
private File customnavImage;
8888
private File customnavTemp;
8989

90+
private boolean mCheckPreferences;
91+
9092
private static class NavBarCustomAction {
9193
String activitySettingName;
9294
Preference preference;
@@ -178,6 +180,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
178180

179181
@Override
180182
public boolean onPreferenceChange(Preference preference, Object newValue) {
183+
if (!mCheckPreferences) {
184+
return false;
185+
}
181186
if (preference == mNavBarButtonQty) {
182187
int val = Integer.parseInt((String) newValue);
183188
Settings.System.putInt(getActivity().getContentResolver(),
@@ -275,7 +280,8 @@ public void onActivityResult(int requestCode, int resultCode, Intent data) {
275280
super.onActivityResult(requestCode, resultCode, data);
276281
}
277282

278-
public void refreshSettings() {
283+
private PreferenceScreen refreshSettings() {
284+
mCheckPreferences = false;
279285
PreferenceScreen prefs = getPreferenceScreen();
280286
if (prefs != null) {
281287
prefs.removeAll();
@@ -417,6 +423,8 @@ public void onClick(View v) {
417423
pAction.setIcon(resize(getNavbarIconImage(i, false)));
418424
}
419425
}
426+
mCheckPreferences = true;
427+
return prefs;
420428
}
421429

422430
private Drawable resize(Drawable image) {

src/com/android/settings/slim/NavbarStyleDimenSettings.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public class NavbarStyleDimenSettings extends SettingsPreferenceFragment impleme
5151
private static final String PREF_NAVIGATION_BAR_WIDTH = "navigation_bar_width";
5252
private static final String KEY_DIMEN_OPTIONS = "navbar_dimen";
5353

54+
private boolean mCheckPreferences;
55+
5456
ColorPickerPreference mNavigationBarGlowColor;
5557
ListPreference mNavigationBarHeight;
5658
ListPreference mNavigationBarHeightLandscape;
@@ -62,7 +64,8 @@ public void onCreate(Bundle savedInstanceState) {
6264
refreshSettings();
6365
}
6466

65-
public void refreshSettings() {
67+
private PreferenceScreen refreshSettings() {
68+
mCheckPreferences = false;
6669
PreferenceScreen prefs = getPreferenceScreen();
6770
if (prefs != null) {
6871
prefs.removeAll();
@@ -95,6 +98,8 @@ public void refreshSettings() {
9598
}
9699

97100
setHasOptionsMenu(true);
101+
mCheckPreferences = true;
102+
return prefs;
98103
}
99104

100105

@@ -145,6 +150,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
145150

146151
@Override
147152
public boolean onPreferenceChange(Preference preference, Object newValue) {
153+
if (!mCheckPreferences) {
154+
return false;
155+
}
148156
if (preference == mNavigationBarGlowColor) {
149157
String hex = ColorPickerPreference.convertToARGB(
150158
Integer.valueOf(String.valueOf(newValue)));

src/com/android/settings/slim/StatusBarStyle.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ public class StatusBarStyle extends SettingsPreferenceFragment implements
4949
private static final String PREF_STATUS_BAR_ALPHA_MODE = "status_bar_alpha_mode";
5050
private static final String PREF_STATUS_BAR_COLOR = "status_bar_color";
5151

52+
private boolean mCheckPreferences;
53+
5254
private SeekBarPreference mStatusbarTransparency;
5355
private ColorPickerPreference mStatusBarColor;
5456
private ListPreference mAlphaMode;
@@ -59,7 +61,8 @@ public void onCreate(Bundle savedInstanceState) {
5961
refreshSettings();
6062
}
6163

62-
public void refreshSettings() {
64+
private PreferenceScreen refreshSettings() {
65+
mCheckPreferences = false;
6366
PreferenceScreen prefs = getPreferenceScreen();
6467
if (prefs != null) {
6568
prefs.removeAll();
@@ -102,6 +105,8 @@ public void refreshSettings() {
102105
mAlphaMode.setOnPreferenceChangeListener(this);
103106

104107
setHasOptionsMenu(true);
108+
mCheckPreferences = true;
109+
return prefs;
105110
}
106111

107112

@@ -138,6 +143,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
138143

139144
@Override
140145
public boolean onPreferenceChange(Preference preference, Object newValue) {
146+
if (!mCheckPreferences) {
147+
return false;
148+
}
141149
if (preference == mStatusbarTransparency) {
142150
float valStat = Float.parseFloat((String) newValue);
143151
Settings.System.putFloat(getActivity().getContentResolver(),

src/com/android/settings/slim/quicksettings/QuickSettingsTilesStyle.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,16 @@ public class QuickSettingsTilesStyle extends SettingsPreferenceFragment implemen
6060
private ColorPickerPreference mQuickTilesBgPressedColor;
6161
private ColorPickerPreference mQuickTilesTextColor;
6262

63+
private boolean mCheckPreferences;
64+
6365
@Override
6466
public void onCreate(Bundle savedInstanceState) {
6567
super.onCreate(savedInstanceState);
6668
refreshSettings();
6769
}
6870

69-
public void refreshSettings() {
71+
private PreferenceScreen refreshSettings() {
72+
mCheckPreferences = false;
7073
PreferenceScreen prefs = getPreferenceScreen();
7174
if (prefs != null) {
7275
prefs.removeAll();
@@ -123,6 +126,8 @@ public void refreshSettings() {
123126
Settings.System.QUICK_TILES_PER_ROW_DUPLICATE_LANDSCAPE, 1) == 1);
124127

125128
setHasOptionsMenu(true);
129+
mCheckPreferences = true;
130+
return prefs;
126131
}
127132

128133

@@ -164,6 +169,9 @@ public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
164169

165170
@Override
166171
public boolean onPreferenceChange(Preference preference, Object newValue) {
172+
if (!mCheckPreferences) {
173+
return false;
174+
}
167175
if (preference == mTilesPerRow) {
168176
int index = mTilesPerRow.findIndexOfValue((String) newValue);
169177
int value = Integer.valueOf((String) newValue);

0 commit comments

Comments
 (0)