diff --git a/res/values-ru/text_strings.xml b/res/values-ru/text_strings.xml
index 437b9fcd..0f542a07 100644
--- a/res/values-ru/text_strings.xml
+++ b/res/values-ru/text_strings.xml
@@ -110,6 +110,7 @@
Раскладка
Телефон
Калькулятор
+ Простая
Устанавливает раскладку кнопок
Отклик на нажатие
@@ -182,4 +183,8 @@
Пожалуйста, оцените Калькулятор++ \nна андроид.маркете,\n оставьте комментарий или \nобсудите приложение \nна нашем форуме
+ Единицы измерения углов изменены на \'%s\'!
+ Система счисления изменена на \'%s\'!
+
+
\ No newline at end of file
diff --git a/res/values/text_strings.xml b/res/values/text_strings.xml
index 0ed5b3fb..5ac941cd 100644
--- a/res/values/text_strings.xml
+++ b/res/values/text_strings.xml
@@ -110,6 +110,7 @@
Layout
Cellphone
Calculator
+ Simple
Sets layout of buttons
Haptic feedback
@@ -182,4 +183,8 @@
Please rate Calculator++ \non android.market,\n leave a comment or \ndiscuss application \non our forum
+ Angle units changed to \'%s\'!
+ Numeral base changed to \'%s\'!
+
+
\ No newline at end of file
diff --git a/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java b/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java
index 3c662f45..1d9952d3 100644
--- a/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java
+++ b/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java
@@ -19,10 +19,7 @@ import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.*;
-import android.widget.Button;
-import android.widget.EditText;
-import android.widget.LinearLayout;
-import android.widget.TextView;
+import android.widget.*;
import com.google.ads.AdView;
import jscl.AngleUnit;
import jscl.NumeralBase;
@@ -55,7 +52,6 @@ import org.solovyev.common.utils.history.HistoryAction;
import java.text.DecimalFormatSymbols;
import java.util.Locale;
-import java.util.Map;
public class CalculatorActivity extends Activity implements FontSizeAdjuster, SharedPreferences.OnSharedPreferenceChangeListener {
@@ -100,6 +96,22 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
other
}
+ public static enum Layout {
+ main_calculator(R.layout.main_calculator),
+ main_cellphone(R.layout.main_cellphone),
+ simple(R.layout.main_calculator);
+
+ private final int layoutId;
+
+ Layout(int layoutId) {
+ this.layoutId = layoutId;
+ }
+
+ public int getLayoutId() {
+ return layoutId;
+ }
+ }
+
public static class Preferences {
@NotNull
private static final String APP_VERSION_P_KEY = "application.version";
@@ -109,8 +121,13 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
private static final Preference appOpenedCounter = new IntegerPreference(APP_OPENED_COUNTER_P_KEY, APP_OPENED_COUNTER_P_DEFAULT);
private static final Preference feedbackWindowShown = new BooleanPreference(FEEDBACK_WINDOW_SHOWN_P_KEY, FEEDBACK_WINDOW_SHOWN_P_DEFAULT);
private static final Preference theme = StringPreference.newInstance(THEME_P_KEY, THEME_P_DEFAULT, Theme.class);
+ private static final Preference layout = StringPreference.newInstance(LAYOUT_P_KEY, LAYOUT_P_DEFAULT, Layout.class);
}
+ @NotNull
+ private static final String LAYOUT_P_KEY = "org.solovyev.android.calculator.CalculatorActivity_calc_layout";
+ private static final Layout LAYOUT_P_DEFAULT = Layout.main_calculator;
+
@NotNull
private static final String THEME_P_KEY = "org.solovyev.android.calculator.CalculatorActivity_calc_theme";
private static final Theme THEME_P_DEFAULT = Theme.metro_blue_theme;
@@ -143,7 +160,7 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
private Theme theme;
@NotNull
- private String layoutName;
+ private Layout layout;
@Nullable
private Vibrator vibrator;
@@ -267,9 +284,38 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
fixMargins(1, 1);
}
+ if (layout == Layout.simple) {
+ toggleButtonDirectionText(R.id.oneDigitButton, false, DragDirection.left, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(R.id.twoDigitButton, false, DragDirection.left, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(R.id.threeDigitButton, false, DragDirection.left, DragDirection.up, DragDirection.down);
+
+ toggleButtonDirectionText(R.id.sevenDigitButton, false, DragDirection.left, DragDirection.up, DragDirection.down);
+ toggleButtonDirectionText(R.id.eightDigitButton, false, DragDirection.left, DragDirection.up, DragDirection.down);
+
+ toggleButtonDirectionText(R.id.fourDigitButton, false, DragDirection.left, DragDirection.down);
+ toggleButtonDirectionText(R.id.fiveDigitButton, false, DragDirection.left, DragDirection.down);
+ toggleButtonDirectionText(R.id.sixDigitButton, false, DragDirection.left);
+
+ toggleButtonDirectionText(R.id.nineDigitButton, false, DragDirection.left);
+
+ toggleButtonDirectionText(R.id.multiplicationButton, false, DragDirection.left);
+ toggleButtonDirectionText(R.id.plusButton, false, DragDirection.down, DragDirection.up);
+
+ }
+
preferences.registerOnSharedPreferenceChangeListener(this);
}
+ private void toggleButtonDirectionText(int id, boolean showDirectionText, @NotNull DragDirection... dragDirections) {
+ final View v = findViewById(id);
+ if (v instanceof DirectionDragButton ) {
+ final DirectionDragButton button = (DirectionDragButton)v;
+ for (DragDirection dragDirection : dragDirections) {
+ button.showDirectionText(showDirectionText, dragDirection);
+ }
+ }
+ }
+
private void fixMargins(int marginLeft, int marginBottom) {
// sad but true
@@ -329,6 +375,8 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
CalculatorEngine.Preferences.angleUnit.putPreference(preferences, angleUnits);
+ Toast.makeText(CalculatorActivity.this, CalculatorActivity.this.getString(R.string.c_angle_units_changed_to, angleUnits.name()), Toast.LENGTH_LONG).show();
+
result = true;
} catch (IllegalArgumentException e) {
Log.d(this.getClass().getName(), "Unsupported angle units: " + directionText);
@@ -362,6 +410,8 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(CalculatorActivity.this);
CalculatorEngine.Preferences.numeralBase.putPreference(preferences, numeralBase);
+ Toast.makeText(CalculatorActivity.this, CalculatorActivity.this.getString(R.string.c_numeral_base_changed_to, numeralBase.name()), Toast.LENGTH_LONG).show();
+
result = true;
} catch (IllegalArgumentException e) {
Log.d(this.getClass().getName(), "Unsupported numeral base: " + directionText);
@@ -463,23 +513,16 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
private synchronized void setLayout(@NotNull SharedPreferences preferences) {
- final Map layouts = ResourceCache.instance.getNameToIdCache(R.layout.class);
-
- layoutName = preferences.getString(getString(R.string.p_calc_layout_key), getString(R.string.p_calc_layout));
-
- Integer layoutId = layouts.get(layoutName);
- if (layoutId == null) {
- Log.d(this.getClass().getName(), "No saved layout found => applying default layout: " + R.layout.main_calculator);
- layoutId = R.layout.main_calculator;
- } else {
- Log.d(this.getClass().getName(), "Saved layout found: " + layoutId);
+ try {
+ layout = Preferences.layout.getPreference(preferences);
+ } catch (IllegalArgumentException e) {
+ layout = LAYOUT_P_DEFAULT;
}
- setContentView(layoutId);
+ setContentView(layout.getLayoutId());
}
private synchronized void setTheme(@NotNull SharedPreferences preferences) {
-
try {
theme = Preferences.theme.getPreference(preferences);
} catch (IllegalArgumentException e) {
@@ -717,9 +760,9 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
- final String newLayoutName = preferences.getString(getString(R.string.p_calc_layout_key), getString(R.string.p_calc_layout));
+ final Layout newLayout = Preferences.layout.getPreference(preferences);
final Theme newTheme = Preferences.theme.getPreference(preferences);
- if (!theme.equals(newTheme) || !layoutName.equals(newLayoutName)) {
+ if (!theme.equals(newTheme) || !layout.equals(newLayout)) {
AndroidUtils.restartActivity(this);
}