From 66d5d204651c253874a23cf82ed77c905e32eec9 Mon Sep 17 00:00:00 2001 From: Sergey Solovyev Date: Fri, 12 Oct 2012 21:16:53 +0400 Subject: [PATCH] Preferences fixes --- .../calculator/AbstractCalculatorHelper.java | 2 + .../CalculatorKeyboardFragment.java | 266 +++++++++--------- .../calculator/NumeralBaseButtons.java | 6 +- 3 files changed, 137 insertions(+), 137 deletions(-) diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java index e473d767..0a64e610 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/AbstractCalculatorHelper.java @@ -157,6 +157,8 @@ public abstract class AbstractCalculatorHelper implements SharedPreferences.OnSh CalculatorButtons.processButtons(true, theme, root); CalculatorButtons.toggleEqualsButton(preferences, activity); + CalculatorButtons.initMultiplicationButton(root); + NumeralBaseButtons.toggleNumericDigits(activity, preferences); } private void toggleButtonDirectionText(@NotNull View root, int id, boolean showDirectionText, @NotNull DragDirection... dragDirections) { diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorKeyboardFragment.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorKeyboardFragment.java index e55c7dbc..98cdc613 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorKeyboardFragment.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorKeyboardFragment.java @@ -1,134 +1,132 @@ -package org.solovyev.android.calculator; - -import android.content.SharedPreferences; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import com.actionbarsherlock.app.SherlockFragment; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.solovyev.android.calculator.model.AndroidCalculatorEngine; - -/** - * User: Solovyev_S - * Date: 25.09.12 - * Time: 12:25 - */ -public class CalculatorKeyboardFragment extends SherlockFragment implements SharedPreferences.OnSharedPreferenceChangeListener { - - @NotNull - private NumeralBaseButtons numeralBaseButtons = new NumeralBaseButtons(); - - @NotNull - private CalculatorPreferences.Gui.Theme theme; - - @NotNull - private CalculatorFragmentHelper fragmentHelper; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); - - fragmentHelper = CalculatorApplication.getInstance().createFragmentHelper(R.layout.calc_keyboard); - fragmentHelper.onCreate(this); - - preferences.registerOnSharedPreferenceChangeListener(this); - - theme = CalculatorPreferences.Gui.theme.getPreferenceNoError(preferences); - - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - return fragmentHelper.onCreateView(this, inflater, container); - } - - @Override - public void onViewCreated(View root, Bundle savedInstanceState) { - super.onViewCreated(root, savedInstanceState); - - fragmentHelper.onViewCreated(this, root); - } - - - @Override - public void onResume() { - super.onResume(); - - this.fragmentHelper.onResume(this); - } - - @Override - public void onPause() { - this.fragmentHelper.onPause(this); - - super.onPause(); - } - - @Override - public void onDestroy() { - super.onDestroy(); - - fragmentHelper.onDestroy(this); - - final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); - preferences.unregisterOnSharedPreferenceChangeListener(this); - - } - - /* private static void setMarginsForView(@Nullable View view, int marginLeft, int marginBottom, @NotNull Context context) { - // IMPORTANT: this is workaround for probably android bug - // currently margin values set in styles are not applied for some reasons to the views (using include tag) => set them manually - - if (view != null) { - final DisplayMetrics dm = context.getResources().getDisplayMetrics(); - if (view.getLayoutParams() instanceof LinearLayout.LayoutParams) { - final LinearLayout.LayoutParams oldParams = (LinearLayout.LayoutParams) view.getLayoutParams(); - final LinearLayout.LayoutParams newParams = new LinearLayout.LayoutParams(oldParams.width, oldParams.height, oldParams.weight); - newParams.setMargins(AndroidUtils.toPixels(dm, marginLeft), 0, 0, AndroidUtils.toPixels(dm, marginBottom)); - view.setLayoutParams(newParams); - } - } - }*/ - - @Override - public void onActivityCreated(Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { - if (AndroidCalculatorEngine.Preferences.numeralBase.getKey().equals(key)) { - numeralBaseButtons.toggleNumericDigits(this.getActivity(), preferences); - } - - if ( CalculatorPreferences.Gui.showEqualsButton.getKey().equals(key) ) { - CalculatorButtons.toggleEqualsButton(preferences, this.getActivity()); - } - - if ( AndroidCalculatorEngine.Preferences.multiplicationSign.getKey().equals(key) ) { - CalculatorButtons.initMultiplicationButton(getView()); - } - } - - - @Nullable - private static AndroidCalculatorDisplayView getCalculatorDisplayView() { - return (AndroidCalculatorDisplayView) CalculatorLocatorImpl.getInstance().getDisplay().getView(); - } - - @NotNull - private Calculator getCalculator() { - return CalculatorLocatorImpl.getInstance().getCalculator(); - } - - @NotNull - private static CalculatorKeyboard getKeyboard() { - return CalculatorLocatorImpl.getInstance().getKeyboard(); - } -} - +package org.solovyev.android.calculator; + +import android.content.SharedPreferences; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import com.actionbarsherlock.app.SherlockFragment; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import org.solovyev.android.calculator.model.AndroidCalculatorEngine; + +/** + * User: Solovyev_S + * Date: 25.09.12 + * Time: 12:25 + */ +public class CalculatorKeyboardFragment extends SherlockFragment implements SharedPreferences.OnSharedPreferenceChangeListener { + + @NotNull + private CalculatorPreferences.Gui.Theme theme; + + @NotNull + private CalculatorFragmentHelper fragmentHelper; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); + + fragmentHelper = CalculatorApplication.getInstance().createFragmentHelper(R.layout.calc_keyboard); + fragmentHelper.onCreate(this); + + preferences.registerOnSharedPreferenceChangeListener(this); + + theme = CalculatorPreferences.Gui.theme.getPreferenceNoError(preferences); + + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + return fragmentHelper.onCreateView(this, inflater, container); + } + + @Override + public void onViewCreated(View root, Bundle savedInstanceState) { + super.onViewCreated(root, savedInstanceState); + + fragmentHelper.onViewCreated(this, root); + } + + + @Override + public void onResume() { + super.onResume(); + + this.fragmentHelper.onResume(this); + } + + @Override + public void onPause() { + this.fragmentHelper.onPause(this); + + super.onPause(); + } + + @Override + public void onDestroy() { + super.onDestroy(); + + fragmentHelper.onDestroy(this); + + final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this.getActivity()); + preferences.unregisterOnSharedPreferenceChangeListener(this); + + } + + /* private static void setMarginsForView(@Nullable View view, int marginLeft, int marginBottom, @NotNull Context context) { + // IMPORTANT: this is workaround for probably android bug + // currently margin values set in styles are not applied for some reasons to the views (using include tag) => set them manually + + if (view != null) { + final DisplayMetrics dm = context.getResources().getDisplayMetrics(); + if (view.getLayoutParams() instanceof LinearLayout.LayoutParams) { + final LinearLayout.LayoutParams oldParams = (LinearLayout.LayoutParams) view.getLayoutParams(); + final LinearLayout.LayoutParams newParams = new LinearLayout.LayoutParams(oldParams.width, oldParams.height, oldParams.weight); + newParams.setMargins(AndroidUtils.toPixels(dm, marginLeft), 0, 0, AndroidUtils.toPixels(dm, marginBottom)); + view.setLayoutParams(newParams); + } + } + }*/ + + @Override + public void onActivityCreated(Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + } + + @Override + public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { + if (AndroidCalculatorEngine.Preferences.numeralBase.getKey().equals(key) || + CalculatorPreferences.Gui.hideNumeralBaseDigits.getKey().equals(key) ) { + NumeralBaseButtons.toggleNumericDigits(this.getActivity(), preferences); + } + + if ( CalculatorPreferences.Gui.showEqualsButton.getKey().equals(key) ) { + CalculatorButtons.toggleEqualsButton(preferences, this.getActivity()); + } + + if ( AndroidCalculatorEngine.Preferences.multiplicationSign.getKey().equals(key) ) { + CalculatorButtons.initMultiplicationButton(getView()); + } + } + + + @Nullable + private static AndroidCalculatorDisplayView getCalculatorDisplayView() { + return (AndroidCalculatorDisplayView) CalculatorLocatorImpl.getInstance().getDisplay().getView(); + } + + @NotNull + private Calculator getCalculator() { + return CalculatorLocatorImpl.getInstance().getCalculator(); + } + + @NotNull + private static CalculatorKeyboard getKeyboard() { + return CalculatorLocatorImpl.getInstance().getKeyboard(); + } +} + diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/NumeralBaseButtons.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/NumeralBaseButtons.java index 96bc4b10..dd451c36 100644 --- a/calculatorpp/src/main/java/org/solovyev/android/calculator/NumeralBaseButtons.java +++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/NumeralBaseButtons.java @@ -13,7 +13,7 @@ import org.solovyev.android.calculator.model.AndroidCalculatorEngine; */ public class NumeralBaseButtons { - public synchronized void toggleNumericDigits(@NotNull Activity activity, @NotNull NumeralBase currentNumeralBase) { + public static void toggleNumericDigits(@NotNull Activity activity, @NotNull NumeralBase currentNumeralBase) { for (NumeralBase numeralBase : NumeralBase.values()) { if ( currentNumeralBase != numeralBase ) { AndroidNumeralBase.valueOf(numeralBase).toggleButtons(false, activity); @@ -23,10 +23,10 @@ public class NumeralBaseButtons { AndroidNumeralBase.valueOf(currentNumeralBase).toggleButtons(true, activity); } - public synchronized void toggleNumericDigits(@NotNull Activity activity, @NotNull SharedPreferences preferences) { + public static void toggleNumericDigits(@NotNull Activity activity, @NotNull SharedPreferences preferences) { if (CalculatorPreferences.Gui.hideNumeralBaseDigits.getPreference(preferences)) { final NumeralBase nb = AndroidCalculatorEngine.Preferences.numeralBase.getPreference(preferences); - this.toggleNumericDigits(activity, nb); + toggleNumericDigits(activity, nb); } else { // set HEX to show all digits AndroidNumeralBase.valueOf(NumeralBase.hex).toggleButtons(true, activity);