diff --git a/calculatorpp/res/layout-land/main_cellphone.xml b/calculatorpp/res/layout-land/main_cellphone.xml
deleted file mode 100644
index 91fc9ba7..00000000
--- a/calculatorpp/res/layout-land/main_cellphone.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/calculatorpp/res/layout-land/main_first_pane.xml b/calculatorpp/res/layout-land/main_first_pane.xml
index fdc46780..6170d972 100644
--- a/calculatorpp/res/layout-land/main_first_pane.xml
+++ b/calculatorpp/res/layout-land/main_first_pane.xml
@@ -34,9 +34,10 @@
a:layout_weight="1"/>
+ a:layout_weight="4"
+ a:layout_margin="@dimen/display_margin_land"/>
-
-
-
-
+
+
+
+
\ No newline at end of file
diff --git a/calculatorpp/res/layout/main_cellphone.xml b/calculatorpp/res/layout/main_cellphone.xml
deleted file mode 100644
index 0e388917..00000000
--- a/calculatorpp/res/layout/main_cellphone.xml
+++ /dev/null
@@ -1,77 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/calculatorpp/res/values-ru/text_strings.xml b/calculatorpp/res/values-ru/text_strings.xml
index 89ba423a..925549dd 100644
--- a/calculatorpp/res/values-ru/text_strings.xml
+++ b/calculatorpp/res/values-ru/text_strings.xml
@@ -1,210 +1,228 @@
-
-
-
-
-
- Калькулятор++
- Калькулятор++ Free
- Кальк++
- Настройки
- Ошибка
- Результат скопирован в буфер!
- Настройки
- Помощь
- Переменные и константы
-
- Основные настройки
- Настройки вычислений
- Настройки внешнего вида
- Другие настройки
- Настройки кнопок
-
-
- Вниз
- Вверх
- Перезапуск
-
- назад
- вперёд
-
-
- вставить
- переменные
-
- Копировать
- Построить график
- График
-
- Подсветка выражений
- Округление результата
- Включает/выключает округление результата
- Результат в научной форме
- Если включено - результат будет всегда записан в научной форме (12.34E-12)
- Точность результата
- Максимальное время вычисления
- Если вычисления превысят установленный предел - калькулятор остановится с ошибкой
- Выход
- Добавить
- Отмена
- Сохранить
- Удалить
- Да
- Нет
- Подтверждение удаления
- Вы действительно хотите удалить переменную \'%s\'?
- Имя
- Значение
- Описание
- Создать переменную
- Редактировать переменную
-
- Значение должно либо оставаться пустым либо быть числом!
- Имя переменной не может быть зарезервированным системным именем!
- Переменная с таким именем уже существует!
- Имя переменной не валидно: им ядолжно начинаться с буквы, может содержать буквы, цифры и знак подчёркивания.
- Системная переменная не может быть изменена!
-
- Введите новое выражение
- Нажмите для копирования
- Продолжить
- История
- M
- История пуста!
- История
- Символ \'%s\' не допустим в названии переменной!
-
- Единицы измерения углов
- Градусы
- Радианы
- Грады
- Обороты
- Устанавливает единицы измерения углов.
-
- Системы счисления
- Устанавливает систему счисления для всех вводимых чисел.
- Десятичная
- Шестнадцатеричная
- Восьмиричная
- Бинарная
-
- Тема оформления
- Серая
- Фиолетовая
- Голубая
- Метро Синяя (По умолчанию)
- Метро Зелёная
- Метро Фиолетовая
- Точность результата(все вычисления производятся максимально точно)
- Включает/выключает подсветку синтаксиса в поле редактирования калькулятора
- Устанавливает тему оформления приложения
- Очистить историю
- Следующие константы не определены: {0}!
-
- Не использовать разделитель разрядов
- Апостроф (\')
- Пробел ( )
- Разделитель разрядов
- Устанавливает разделитель разрядов числа
- Знак произведения
- Устанавливает знак произведения
-
- Раскладка
- Научная (телефон)
- Научная
- Простая
- Устанавливает раскладку кнопок
-
- Отклик на нажатие
- Включает/выключает вибрацию по нажатию клавиши
-
- Маленькая
- Средняя
- Большая
-
- Длительность отклика
- Длительность вибрации по нажатию клавиши
-
- Невозможно создать пустую константу!
- Результат не допустим!
-
- График
- От
- До
-
- Длина свайпа для клавиш
- Устанавливает длину свайпа для клавиш которые поддерживают дополнительные действия по свайпу
-
- Комментарий
- Сохранено
- Не сохранено
- Выражение скопировано в буфер!
- Статус:
- Комментарий:
- Использовать
- Исп.
- Копировать выражение
- Копировать результат
- Значение
- Сохранено (см. вкладку \'Сохранённая история\')
- Комментарий
- Сохранить
- Изменить
- Изменить
- Сохранённая история
-
- История уже была сохранена!
- История должна быть сохранена перед редактированием!
- История успешно удалена!
- История успешно сохранена!
-
- Копировать описание
- Копировать значение
-
- Приветствие
- Спасибо за выбор Калькулятора++!\n\nКалькулятор++ - это мощный инструмент для проведения ежедневных расчётов.\n\nДля избавление от рекламы и поддержки проекта вы можете воспользоваться специальной опцией доступной из настроек приложения.\n\nПеред началом работы рекомендуется прочитать FAQ и подсказки для использования всех возможностей программы (нажмите Меню, затем Помощь)
-
- Показывать примечания к выпуску
- Определяет показывать или нет всплывающее окно с примечаниями к выпуску после обновления новой версии
-
- Устанавливает поведение по нажатию на кнопку Назад
- Использовать кнопку назад как назад по истории
-
- Информация о покупках будет обновлена с сервера
- Очистить информация о покупках
-
- Внимание
- Ошибка
- Биллинг не поддерживается: вы должны иметь Google Checkout аккаунт привязанный в вашему Google аккаунту и должны быть подключены к интернету.
-
- Поддержать проект
- И убрать рекламу
-
- Опция уже была куплена!
- Покупаем…
- Очищаем…
-
- Отзыв
- Вы используете Калькулятор++ некоторое время\n
- и для нас важно узнать ваше мнение о приложении.\n\n
- Пожалуйста, оцените Калькулятор++ \nна Google Play,\n оставьте комментарий или \nобсудите приложение \nна нашем форуме
-
-
- Хорошие новости - я только что выпустил новое приложение под Андроид под названием Заметки++.\n
- Если вы заинтересованы в быстром и удобном способе оставлять заметки пройдите по ссылке и попробуйте Заметки++!
-
-
- Единицы измерения углов изменены на \'%s\'!
- Система счисления изменена на \'%s\'!
- Перевод величин
-
- Перевести в…
-
- Перевести в hex
- Перевести в bin
- Перевести в dec
-
+
+
+
+
+
+ Калькулятор++
+ Калькулятор++ Free
+ Кальк++
+ Настройки
+ Ошибка
+ Результат скопирован в буфер!
+ Настройки
+ Помощь
+ Переменные и константы
+
+ Основные настройки
+ Настройки вычислений
+ Настройки внешнего вида
+ Другие настройки
+ Настройки кнопок
+
+
+ Вниз
+ Вверх
+ Перезапуск
+
+ назад
+ вперёд
+
+
+ вставить
+ переменные
+
+ Копировать
+ Построить график
+ График
+
+ Подсветка выражений
+ Округление результата
+ Включает/выключает округление результата
+ Результат в научной форме
+ Если включено - результат будет всегда записан в научной форме (12.34E-12)
+ Точность результата
+ Максимальное время вычисления
+ Если вычисления превысят установленный предел - калькулятор остановится с ошибкой
+ Выход
+ Добавить
+ Отмена
+ Сохранить
+ Удалить
+ Да
+ Нет
+ Подтверждение удаления
+ Вы действительно хотите удалить переменную \'%s\'?
+ Имя
+ Значение
+ Описание
+ Создать переменную
+ Редактировать переменную
+
+ Значение должно либо оставаться пустым либо быть числом!
+ Имя переменной не может быть зарезервированным системным именем!
+ Переменная с таким именем уже существует!
+ Имя переменной не валидно: им ядолжно начинаться с буквы, может содержать буквы, цифры и знак подчёркивания.
+ Системная переменная не может быть изменена!
+
+ Введите новое выражение
+ Нажмите для копирования
+ Продолжить
+ История
+ M
+ История пуста!
+ История
+ Символ \'%s\' не допустим в названии переменной!
+
+ Единицы измерения углов
+ Градусы
+ Радианы
+ Грады
+ Обороты
+ Устанавливает единицы измерения углов.
+
+ Системы счисления
+ Устанавливает систему счисления для всех вводимых чисел.
+ Десятичная
+ Шестнадцатеричная
+ Восьмиричная
+ Бинарная
+
+ Тема оформления
+ Серая
+ Фиолетовая
+ Голубая
+ Метро Синяя (По умолчанию)
+ Метро Зелёная
+ Метро Фиолетовая
+ Точность результата(все вычисления производятся максимально точно)
+ Включает/выключает подсветку синтаксиса в поле редактирования калькулятора
+ Устанавливает тему оформления приложения
+ Очистить историю
+ Следующие константы не определены: {0}!
+
+ Не использовать разделитель разрядов
+ Апостроф (\')
+ Пробел ( )
+ Разделитель разрядов
+ Устанавливает разделитель разрядов числа
+ Знак произведения
+ Устанавливает знак произведения
+
+ Раскладка
+ Научная (телефон)
+ Научная
+ Простая
+ Устанавливает раскладку кнопок
+
+ Отклик на нажатие
+ Включает/выключает вибрацию по нажатию клавиши
+
+ Маленькая
+ Средняя
+ Большая
+
+ Длительность отклика
+ Длительность вибрации по нажатию клавиши
+
+ Невозможно создать пустую константу!
+ Результат не допустим!
+
+ График
+ От
+ До
+
+ Длина свайпа для клавиш
+ Устанавливает длину свайпа для клавиш которые поддерживают дополнительные действия по свайпу
+
+ Комментарий
+ Сохранено
+ Не сохранено
+ Выражение скопировано в буфер!
+ Статус:
+ Комментарий:
+ Использовать
+ Исп.
+ Копировать выражение
+ Копировать результат
+ Значение
+ Сохранено (см. вкладку \'Сохранённая история\')
+ Комментарий
+ Сохранить
+ Изменить
+ Изменить
+ Сохранённая история
+
+ История уже была сохранена!
+ История должна быть сохранена перед редактированием!
+ История успешно удалена!
+ История успешно сохранена!
+
+ Копировать описание
+ Копировать значение
+
+ Приветствие
+ Спасибо за выбор Калькулятора++!\n\nКалькулятор++ - это мощный инструмент для проведения ежедневных расчётов.\n\nДля избавление от рекламы и поддержки проекта вы можете воспользоваться специальной опцией доступной из настроек приложения.\n\nПеред началом работы рекомендуется прочитать FAQ и подсказки для использования всех возможностей программы (нажмите Меню, затем Помощь)
+
+ Показывать примечания к выпуску
+ Определяет показывать или нет всплывающее окно с примечаниями к выпуску после обновления новой версии
+
+ Устанавливает поведение по нажатию на кнопку Назад
+ Использовать кнопку назад как назад по истории
+
+ Информация о покупках будет обновлена с сервера
+ Очистить информация о покупках
+
+ Внимание
+ Ошибка
+ Биллинг не поддерживается: вы должны иметь Google Checkout аккаунт привязанный в вашему Google аккаунту и должны быть подключены к интернету.
+
+ Поддержать проект
+ И убрать рекламу
+
+ Опция уже была куплена!
+ Покупаем…
+ Очищаем…
+
+ Отзыв
+ Вы используете Калькулятор++ некоторое время\n
+ и для нас важно узнать ваше мнение о приложении.\n\n
+ Пожалуйста, оцените Калькулятор++ \nна Google Play,\n оставьте комментарий или \nобсудите приложение \nна нашем форуме
+
+
+ Хорошие новости - я только что выпустил новое приложение под Андроид под названием Заметки++.\n
+ Если вы заинтересованы в быстром и удобном способе оставлять заметки пройдите по ссылке и попробуйте Заметки++!
+
+
+ Единицы измерения углов изменены на \'%s\'!
+ Система счисления изменена на \'%s\'!
+ Перевод величин
+
+ Перевести в…
+
+ Перевести в hex
+ Перевести в bin
+ Перевести в dec
+
+ Редактор
+ Результат
+ Другие
+ Производные/Интегралы
+ Калькулятор++ обнаружил ошибку…
+ Отчёт об ошибке в Калькуляторе++
+
+ К сожалению, Калькулятор++ был остановлен ошибкой.\n\n
+ Для того чтобы исправить, её нам необходима некоторая информация. Мы рекомендуем вам послать этот отчёт об ошибке (после нажатия кнопки \'Да\' вы увидите всю передаваемую информацию в новом окне).\n\n
+ Хотите лы вы послать отчёт об ошибке?
+
+ Настройки графика
+
+ Интерполировать график
+ Цвет вещественной части графика
+ Устанавливает цвет вещественной части графика
+ Цвет мнимой части графика
+ Устанавливает цвет мнимой части графика
\ No newline at end of file
diff --git a/calculatorpp/res/values/arrays.xml b/calculatorpp/res/values/arrays.xml
index e7b77d69..b1f687af 100644
--- a/calculatorpp/res/values/arrays.xml
+++ b/calculatorpp/res/values/arrays.xml
@@ -1,105 +1,103 @@
-
-
-
-
- - @string/p_default_theme
- - @string/p_violet_theme
- - @string/p_light_blue_theme
- - @string/p_metro_blue_theme
- - @string/p_metro_green_theme
- - @string/p_metro_purple_theme
-
-
- - default_theme
- - violet_theme
- - light_blue_theme
- - metro_blue_theme
- - metro_green_theme
- - metro_purple_theme
-
-
-
- - @string/p_grouping_separator_no
- - @string/p_grouping_separator_apostrophe
- - @string/p_grouping_separator_space
-
-
- - ""
- - \'
- - " "
-
-
-
- - "*"
- - "×"
- - "∙"
-
-
-
- - @string/p_layout_calculator
- - @string/p_layout_simple
- - @string/p_layout_cellphone
-
-
- - main_calculator
- - simple
- - main_cellphone
-
-
-
- - @string/p_calc_haptic_feedback_strength_short
- - @string/p_calc_haptic_feedback_strength_middle
- - @string/p_calc_haptic_feedback_strength_long
-
-
- - 30
- - 60
- - 100
-
-
-
- - @string/p_deg
- - @string/p_rad
- - @string/p_grad
- - @string/p_turns
-
-
- - deg
- - rad
- - grad
- - turns
-
-
-
- - @string/p_dec
- - @string/p_hex
- - @string/p_oct
- - @string/p_bin
-
-
- - dec
- - hex
- - oct
- - bin
-
-
-
- - White
- - Grey
- - Red
- - Blue
- - Green
-
-
- - white
- - grey
- - red
- - blue
- - green
-
-
+
+
+
+
+ - @string/p_default_theme
+ - @string/p_violet_theme
+ - @string/p_light_blue_theme
+ - @string/p_metro_blue_theme
+ - @string/p_metro_green_theme
+ - @string/p_metro_purple_theme
+
+
+ - default_theme
+ - violet_theme
+ - light_blue_theme
+ - metro_blue_theme
+ - metro_green_theme
+ - metro_purple_theme
+
+
+
+ - @string/p_grouping_separator_no
+ - @string/p_grouping_separator_apostrophe
+ - @string/p_grouping_separator_space
+
+
+ - ""
+ - \'
+ - " "
+
+
+
+ - "*"
+ - "×"
+ - "∙"
+
+
+
+ - @string/p_layout_calculator
+ - @string/p_layout_simple
+
+
+ - main_calculator
+ - simple
+
+
+
+ - @string/p_calc_haptic_feedback_strength_short
+ - @string/p_calc_haptic_feedback_strength_middle
+ - @string/p_calc_haptic_feedback_strength_long
+
+
+ - 30
+ - 60
+ - 100
+
+
+
+ - @string/p_deg
+ - @string/p_rad
+ - @string/p_grad
+ - @string/p_turns
+
+
+ - deg
+ - rad
+ - grad
+ - turns
+
+
+
+ - @string/p_dec
+ - @string/p_hex
+ - @string/p_oct
+ - @string/p_bin
+
+
+ - dec
+ - hex
+ - oct
+ - bin
+
+
+
+ - White
+ - Grey
+ - Red
+ - Blue
+ - Green
+
+
+ - white
+ - grey
+ - red
+ - blue
+ - green
+
+
\ No newline at end of file
diff --git a/calculatorpp/res/values/dimens.xml b/calculatorpp/res/values/dimens.xml
index 53bd110a..4d03c7c5 100644
--- a/calculatorpp/res/values/dimens.xml
+++ b/calculatorpp/res/values/dimens.xml
@@ -1,20 +1,21 @@
-
- 0.5dp
- 20sp
-
- 15sp
- 20sp
-
- 30dp
- 20dp
- 25sp
- 25sp
- 5dp
- 5dp
- 20sp
- 15sp
-
-
- 5dp
- 3dp
+
+ 20sp
+ 0.5dp
+ 2.5dp
+
+ 15sp
+ 20sp
+
+ 30dp
+ 20dp
+ 25sp
+ 25sp
+ 5dp
+ 5dp
+ 20sp
+ 15sp
+
+
+ 5dp
+ 3dp
\ No newline at end of file
diff --git a/calculatorpp/res/values/text_strings.xml b/calculatorpp/res/values/text_strings.xml
index 2f04e192..4d29b66f 100644
--- a/calculatorpp/res/values/text_strings.xml
+++ b/calculatorpp/res/values/text_strings.xml
@@ -225,5 +225,4 @@
Sets color of real part functions graph
Color of imaginary part of functions graph
Sets color of imaginary part functions graph
-
\ No newline at end of file
diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java
index 565800ca..81fc3623 100644
--- a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java
+++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivity.java
@@ -212,7 +212,7 @@ public class CalculatorActivity extends SherlockFragmentActivity implements Shar
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
final CalculatorPreferences.Gui.Layout newLayout = CalculatorPreferences.Gui.layout.getPreference(preferences);
- if ( newLayout.getLayoutId() != activityHelper.getLayoutId() ) {
+ if ( newLayout != activityHelper.getLayout() ) {
AndroidUtils.restartActivity(this);
}
diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelper.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelper.java
index 9292e445..0cbc2187 100644
--- a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelper.java
+++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelper.java
@@ -1,62 +1,65 @@
-package org.solovyev.android.calculator;
-
-import android.app.Activity;
-import android.os.Bundle;
-import android.support.v4.app.Fragment;
-import android.view.View;
-import com.actionbarsherlock.app.SherlockFragmentActivity;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.solovyev.android.calculator.about.CalculatorFragmentType;
-
-/**
- * User: serso
- * Date: 9/25/12
- * Time: 10:31 PM
- */
-public interface CalculatorActivityHelper {
-
- void onCreate(@NotNull SherlockFragmentActivity activity, @Nullable Bundle savedInstanceState);
- void onCreate(@NotNull Activity activity, @Nullable Bundle savedInstanceState);
-
- void onSaveInstanceState(@NotNull SherlockFragmentActivity activity, @NotNull Bundle outState);
- void onSaveInstanceState(@NotNull Activity activity, @NotNull Bundle outState);
-
- int getLayoutId();
-
- @NotNull
- CalculatorPreferences.Gui.Theme getTheme();
-
- void onResume(@NotNull SherlockFragmentActivity activity);
- void onResume(@NotNull Activity activity);
-
- void onPause(@NotNull Activity activity);
- void onPause(@NotNull SherlockFragmentActivity activity);
-
- void onDestroy(@NotNull SherlockFragmentActivity activity);
- void onDestroy(@NotNull Activity activity);
-
- void addTab(@NotNull SherlockFragmentActivity activity,
- @NotNull String tag,
- @NotNull Class extends Fragment> fragmentClass,
- @Nullable Bundle fragmentArgs,
- int captionResId,
- int parentViewId);
-
- void addTab(@NotNull SherlockFragmentActivity activity,
- @NotNull CalculatorFragmentType fragmentType,
- @Nullable Bundle fragmentArgs,
- int parentViewId);
-
- void setFragment(@NotNull SherlockFragmentActivity activity,
- @NotNull CalculatorFragmentType fragmentType,
- @Nullable Bundle fragmentArgs,
- int parentViewId);
-
-
- void logDebug(@NotNull String message);
-
- void processButtons(@NotNull Activity activity, @NotNull View root);
-
- void logError(@NotNull String message);
-}
+package org.solovyev.android.calculator;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.view.View;
+import com.actionbarsherlock.app.SherlockFragmentActivity;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.solovyev.android.calculator.about.CalculatorFragmentType;
+
+/**
+ * User: serso
+ * Date: 9/25/12
+ * Time: 10:31 PM
+ */
+public interface CalculatorActivityHelper {
+
+ void onCreate(@NotNull SherlockFragmentActivity activity, @Nullable Bundle savedInstanceState);
+ void onCreate(@NotNull Activity activity, @Nullable Bundle savedInstanceState);
+
+ void onSaveInstanceState(@NotNull SherlockFragmentActivity activity, @NotNull Bundle outState);
+ void onSaveInstanceState(@NotNull Activity activity, @NotNull Bundle outState);
+
+ int getLayoutId();
+
+ @NotNull
+ CalculatorPreferences.Gui.Theme getTheme();
+
+ @NotNull
+ CalculatorPreferences.Gui.Layout getLayout();
+
+ void onResume(@NotNull SherlockFragmentActivity activity);
+ void onResume(@NotNull Activity activity);
+
+ void onPause(@NotNull Activity activity);
+ void onPause(@NotNull SherlockFragmentActivity activity);
+
+ void onDestroy(@NotNull SherlockFragmentActivity activity);
+ void onDestroy(@NotNull Activity activity);
+
+ void addTab(@NotNull SherlockFragmentActivity activity,
+ @NotNull String tag,
+ @NotNull Class extends Fragment> fragmentClass,
+ @Nullable Bundle fragmentArgs,
+ int captionResId,
+ int parentViewId);
+
+ void addTab(@NotNull SherlockFragmentActivity activity,
+ @NotNull CalculatorFragmentType fragmentType,
+ @Nullable Bundle fragmentArgs,
+ int parentViewId);
+
+ void setFragment(@NotNull SherlockFragmentActivity activity,
+ @NotNull CalculatorFragmentType fragmentType,
+ @Nullable Bundle fragmentArgs,
+ int parentViewId);
+
+
+ void logDebug(@NotNull String message);
+
+ void processButtons(@NotNull Activity activity, @NotNull View root);
+
+ void logError(@NotNull String message);
+}
diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelperImpl.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelperImpl.java
index 5c2740a9..147ca071 100644
--- a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelperImpl.java
+++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorActivityHelperImpl.java
@@ -1,241 +1,252 @@
-package org.solovyev.android.calculator;
-
-import android.app.Activity;
-import android.content.SharedPreferences;
-import android.content.res.Configuration;
-import android.os.Bundle;
-import android.preference.PreferenceManager;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.util.Log;
-import android.view.View;
-import com.actionbarsherlock.app.ActionBar;
-import com.actionbarsherlock.app.SherlockFragmentActivity;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
-import org.solovyev.android.AndroidUtils;
-import org.solovyev.android.calculator.about.CalculatorFragmentType;
-import org.solovyev.android.sherlock.tabs.ActionBarFragmentTabListener;
-
-/**
- * User: serso
- * Date: 9/25/12
- * Time: 10:32 PM
- */
-public class CalculatorActivityHelperImpl extends AbstractCalculatorHelper implements CalculatorActivityHelper {
-
- /*
- **********************************************************************
- *
- * CONSTANTS
- *
- **********************************************************************
- */
-
- /*
- **********************************************************************
- *
- * FIELDS
- *
- **********************************************************************
- */
-
- private int layoutId;
-
- private boolean homeIcon = false;
-
- @NotNull
- private CalculatorPreferences.Gui.Theme theme;
-
- private int selectedNavigationIndex = 0;
-
- public CalculatorActivityHelperImpl(int layoutId, @NotNull String logTag) {
- super(logTag);
- this.layoutId = layoutId;
- }
-
- public CalculatorActivityHelperImpl(int layoutId, boolean homeIcon) {
- this.layoutId = layoutId;
- this.homeIcon = homeIcon;
- }
-
- @Override
- public void onCreate(@NotNull Activity activity, @Nullable Bundle savedInstanceState) {
- super.onCreate(activity);
-
- if (activity instanceof CalculatorEventListener) {
- CalculatorLocatorImpl.getInstance().getCalculator().addCalculatorEventListener((CalculatorEventListener) activity);
- }
-
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
-
- this.theme = CalculatorPreferences.Gui.getTheme(preferences);
- activity.setTheme(this.theme.getThemeId());
-
- activity.setContentView(layoutId);
-
- final View root = activity.findViewById(R.id.main_layout);
- if (root != null) {
- processButtons(activity, root);
- } else {
- Log.e(CalculatorActivityHelperImpl.class.getSimpleName(), "Root is null for " + activity.getClass().getName());
- }
- }
-
- @Override
- public void onCreate(@NotNull final SherlockFragmentActivity activity, @Nullable Bundle savedInstanceState) {
- this.onCreate((Activity) activity, savedInstanceState);
-
- final ActionBar actionBar = activity.getSupportActionBar();
- actionBar.setDisplayUseLogoEnabled(false);
- actionBar.setDisplayHomeAsUpEnabled(homeIcon);
- actionBar.setHomeButtonEnabled(false);
- actionBar.setDisplayShowHomeEnabled(true);
-
- toggleTitle(activity, true);
-
- actionBar.setIcon(R.drawable.icon_action_bar);
- actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
- }
-
- private void toggleTitle(@NotNull SherlockFragmentActivity activity, boolean showTitle) {
- final ActionBar actionBar = activity.getSupportActionBar();
-
- if (activity instanceof CalculatorActivity) {
- if (AndroidUtils.getScreenOrientation(activity) == Configuration.ORIENTATION_PORTRAIT) {
- actionBar.setDisplayShowTitleEnabled(true);
- } else {
- actionBar.setDisplayShowTitleEnabled(false);
- }
- } else {
- actionBar.setDisplayShowTitleEnabled(showTitle);
- }
- }
-
- public void restoreSavedTab(@NotNull SherlockFragmentActivity activity) {
- final ActionBar actionBar = activity.getSupportActionBar();
- if (selectedNavigationIndex >= 0 && selectedNavigationIndex < actionBar.getTabCount()) {
- actionBar.setSelectedNavigationItem(selectedNavigationIndex);
- }
- }
-
- @Override
- public void onSaveInstanceState(@NotNull SherlockFragmentActivity activity, @NotNull Bundle outState) {
- onSaveInstanceState((Activity) activity, outState);
- }
-
- @Override
- public void onSaveInstanceState(@NotNull Activity activity, @NotNull Bundle outState) {
- }
-
- @Override
- public void onResume(@NotNull Activity activity) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
-
- final CalculatorPreferences.Gui.Theme newTheme = CalculatorPreferences.Gui.theme.getPreference(preferences);
- if (!theme.equals(newTheme)) {
- AndroidUtils.restartActivity(activity);
- }
- }
-
- @Override
- public void onPause(@NotNull Activity activity) {
- }
-
- @Override
- public void onPause(@NotNull SherlockFragmentActivity activity) {
- onPause((Activity) activity);
-
- final int selectedNavigationIndex = activity.getSupportActionBar().getSelectedNavigationIndex();
- if (selectedNavigationIndex >= 0) {
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- final SharedPreferences.Editor editor = preferences.edit();
- editor.putInt(getSavedTabPreferenceName(activity), selectedNavigationIndex);
- editor.commit();
- }
-
- }
-
- @NotNull
- private String getSavedTabPreferenceName(@NotNull Activity activity) {
- return "tab_" + activity.getClass().getSimpleName();
- }
-
- @Override
- public void onDestroy(@NotNull Activity activity) {
- super.onDestroy(activity);
-
- if (activity instanceof CalculatorEventListener) {
- CalculatorLocatorImpl.getInstance().getCalculator().removeCalculatorEventListener((CalculatorEventListener) activity);
- }
- }
-
- @Override
- public void onDestroy(@NotNull SherlockFragmentActivity activity) {
- this.onDestroy((Activity) activity);
- }
-
- @Override
- public void addTab(@NotNull SherlockFragmentActivity activity,
- @NotNull String tag,
- @NotNull Class extends Fragment> fragmentClass,
- @Nullable Bundle fragmentArgs,
- int captionResId,
- int parentViewId) {
- final ActionBar actionBar = activity.getSupportActionBar();
-
- final ActionBar.Tab tab = actionBar.newTab();
- tab.setTag(tag);
- tab.setText(captionResId);
-
- final ActionBarFragmentTabListener listener = new ActionBarFragmentTabListener(activity, tag, fragmentClass, fragmentArgs, parentViewId);
- tab.setTabListener(listener);
- actionBar.addTab(tab);
- }
-
- @Override
- public void addTab(@NotNull SherlockFragmentActivity activity, @NotNull CalculatorFragmentType fragmentType, @Nullable Bundle fragmentArgs, int parentViewId) {
- addTab(activity, fragmentType.getFragmentTag(), fragmentType.getFragmentClass(), fragmentArgs, fragmentType.getDefaultTitleResId(), parentViewId);
- }
-
- @Override
- public void setFragment(@NotNull SherlockFragmentActivity activity, @NotNull CalculatorFragmentType fragmentType, @Nullable Bundle fragmentArgs, int parentViewId) {
- final FragmentManager fm = activity.getSupportFragmentManager();
-
- Fragment fragment = fm.findFragmentByTag(fragmentType.getFragmentTag());
- if (fragment == null) {
- fragment = Fragment.instantiate(activity, fragmentType.getFragmentClass().getName(), fragmentArgs);
- final FragmentTransaction ft = fm.beginTransaction();
- ft.add(parentViewId, fragment, fragmentType.getFragmentTag());
- ft.commit();
- } else {
- if ( fragment.isDetached() ) {
- final FragmentTransaction ft = fm.beginTransaction();
- ft.attach(fragment);
- ft.commit();
- }
-
- }
- }
-
- @Override
- public int getLayoutId() {
- return layoutId;
- }
-
- @Override
- @NotNull
- public CalculatorPreferences.Gui.Theme getTheme() {
- return theme;
- }
-
- @Override
- public void onResume(@NotNull SherlockFragmentActivity activity) {
- onResume((Activity) activity);
-
- final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
- selectedNavigationIndex = preferences.getInt(getSavedTabPreferenceName(activity), -1);
- restoreSavedTab(activity);
- }
-}
+package org.solovyev.android.calculator;
+
+import android.app.Activity;
+import android.content.SharedPreferences;
+import android.content.res.Configuration;
+import android.os.Bundle;
+import android.preference.PreferenceManager;
+import android.support.v4.app.Fragment;
+import android.support.v4.app.FragmentManager;
+import android.support.v4.app.FragmentTransaction;
+import android.util.Log;
+import android.view.View;
+import com.actionbarsherlock.app.ActionBar;
+import com.actionbarsherlock.app.SherlockFragmentActivity;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.solovyev.android.AndroidUtils;
+import org.solovyev.android.calculator.about.CalculatorFragmentType;
+import org.solovyev.android.sherlock.tabs.ActionBarFragmentTabListener;
+
+/**
+ * User: serso
+ * Date: 9/25/12
+ * Time: 10:32 PM
+ */
+public class CalculatorActivityHelperImpl extends AbstractCalculatorHelper implements CalculatorActivityHelper {
+
+ /*
+ **********************************************************************
+ *
+ * CONSTANTS
+ *
+ **********************************************************************
+ */
+
+ /*
+ **********************************************************************
+ *
+ * FIELDS
+ *
+ **********************************************************************
+ */
+
+ private int layoutId;
+
+ private boolean homeIcon = false;
+
+ @NotNull
+ private CalculatorPreferences.Gui.Theme theme;
+
+ @NotNull
+ private CalculatorPreferences.Gui.Layout layout;
+
+ private int selectedNavigationIndex = 0;
+
+ public CalculatorActivityHelperImpl(int layoutId, @NotNull String logTag) {
+ super(logTag);
+ this.layoutId = layoutId;
+ }
+
+ public CalculatorActivityHelperImpl(int layoutId, boolean homeIcon) {
+ this.layoutId = layoutId;
+ this.homeIcon = homeIcon;
+ }
+
+ @Override
+ public void onCreate(@NotNull Activity activity, @Nullable Bundle savedInstanceState) {
+ super.onCreate(activity);
+
+ if (activity instanceof CalculatorEventListener) {
+ CalculatorLocatorImpl.getInstance().getCalculator().addCalculatorEventListener((CalculatorEventListener) activity);
+ }
+
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+
+ this.theme = CalculatorPreferences.Gui.getTheme(preferences);
+ activity.setTheme(this.theme.getThemeId());
+
+ this.layout = CalculatorPreferences.Gui.getLayout(preferences);
+
+ activity.setContentView(layoutId);
+
+ final View root = activity.findViewById(R.id.main_layout);
+ if (root != null) {
+ processButtons(activity, root);
+ } else {
+ Log.e(CalculatorActivityHelperImpl.class.getSimpleName(), "Root is null for " + activity.getClass().getName());
+ }
+ }
+
+ @Override
+ public void onCreate(@NotNull final SherlockFragmentActivity activity, @Nullable Bundle savedInstanceState) {
+ this.onCreate((Activity) activity, savedInstanceState);
+
+ final ActionBar actionBar = activity.getSupportActionBar();
+ actionBar.setDisplayUseLogoEnabled(false);
+ actionBar.setDisplayHomeAsUpEnabled(homeIcon);
+ actionBar.setHomeButtonEnabled(false);
+ actionBar.setDisplayShowHomeEnabled(true);
+
+ toggleTitle(activity, true);
+
+ actionBar.setIcon(R.drawable.icon_action_bar);
+ actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+ }
+
+ private void toggleTitle(@NotNull SherlockFragmentActivity activity, boolean showTitle) {
+ final ActionBar actionBar = activity.getSupportActionBar();
+
+ if (activity instanceof CalculatorActivity) {
+ if (AndroidUtils.getScreenOrientation(activity) == Configuration.ORIENTATION_PORTRAIT) {
+ actionBar.setDisplayShowTitleEnabled(true);
+ } else {
+ actionBar.setDisplayShowTitleEnabled(false);
+ }
+ } else {
+ actionBar.setDisplayShowTitleEnabled(showTitle);
+ }
+ }
+
+ public void restoreSavedTab(@NotNull SherlockFragmentActivity activity) {
+ final ActionBar actionBar = activity.getSupportActionBar();
+ if (selectedNavigationIndex >= 0 && selectedNavigationIndex < actionBar.getTabCount()) {
+ actionBar.setSelectedNavigationItem(selectedNavigationIndex);
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState(@NotNull SherlockFragmentActivity activity, @NotNull Bundle outState) {
+ onSaveInstanceState((Activity) activity, outState);
+ }
+
+ @Override
+ public void onSaveInstanceState(@NotNull Activity activity, @NotNull Bundle outState) {
+ }
+
+ @Override
+ public void onResume(@NotNull Activity activity) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+
+ final CalculatorPreferences.Gui.Theme newTheme = CalculatorPreferences.Gui.theme.getPreference(preferences);
+ if (!theme.equals(newTheme)) {
+ AndroidUtils.restartActivity(activity);
+ }
+ }
+
+ @Override
+ public void onPause(@NotNull Activity activity) {
+ }
+
+ @Override
+ public void onPause(@NotNull SherlockFragmentActivity activity) {
+ onPause((Activity) activity);
+
+ final int selectedNavigationIndex = activity.getSupportActionBar().getSelectedNavigationIndex();
+ if (selectedNavigationIndex >= 0) {
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ final SharedPreferences.Editor editor = preferences.edit();
+ editor.putInt(getSavedTabPreferenceName(activity), selectedNavigationIndex);
+ editor.commit();
+ }
+
+ }
+
+ @NotNull
+ private String getSavedTabPreferenceName(@NotNull Activity activity) {
+ return "tab_" + activity.getClass().getSimpleName();
+ }
+
+ @Override
+ public void onDestroy(@NotNull Activity activity) {
+ super.onDestroy(activity);
+
+ if (activity instanceof CalculatorEventListener) {
+ CalculatorLocatorImpl.getInstance().getCalculator().removeCalculatorEventListener((CalculatorEventListener) activity);
+ }
+ }
+
+ @Override
+ public void onDestroy(@NotNull SherlockFragmentActivity activity) {
+ this.onDestroy((Activity) activity);
+ }
+
+ @Override
+ public void addTab(@NotNull SherlockFragmentActivity activity,
+ @NotNull String tag,
+ @NotNull Class extends Fragment> fragmentClass,
+ @Nullable Bundle fragmentArgs,
+ int captionResId,
+ int parentViewId) {
+ final ActionBar actionBar = activity.getSupportActionBar();
+
+ final ActionBar.Tab tab = actionBar.newTab();
+ tab.setTag(tag);
+ tab.setText(captionResId);
+
+ final ActionBarFragmentTabListener listener = new ActionBarFragmentTabListener(activity, tag, fragmentClass, fragmentArgs, parentViewId);
+ tab.setTabListener(listener);
+ actionBar.addTab(tab);
+ }
+
+ @Override
+ public void addTab(@NotNull SherlockFragmentActivity activity, @NotNull CalculatorFragmentType fragmentType, @Nullable Bundle fragmentArgs, int parentViewId) {
+ addTab(activity, fragmentType.getFragmentTag(), fragmentType.getFragmentClass(), fragmentArgs, fragmentType.getDefaultTitleResId(), parentViewId);
+ }
+
+ @Override
+ public void setFragment(@NotNull SherlockFragmentActivity activity, @NotNull CalculatorFragmentType fragmentType, @Nullable Bundle fragmentArgs, int parentViewId) {
+ final FragmentManager fm = activity.getSupportFragmentManager();
+
+ Fragment fragment = fm.findFragmentByTag(fragmentType.getFragmentTag());
+ if (fragment == null) {
+ fragment = Fragment.instantiate(activity, fragmentType.getFragmentClass().getName(), fragmentArgs);
+ final FragmentTransaction ft = fm.beginTransaction();
+ ft.add(parentViewId, fragment, fragmentType.getFragmentTag());
+ ft.commit();
+ } else {
+ if ( fragment.isDetached() ) {
+ final FragmentTransaction ft = fm.beginTransaction();
+ ft.attach(fragment);
+ ft.commit();
+ }
+
+ }
+ }
+
+ @Override
+ public int getLayoutId() {
+ return layoutId;
+ }
+
+ @Override
+ @NotNull
+ public CalculatorPreferences.Gui.Theme getTheme() {
+ return theme;
+ }
+
+ @Override
+ @NotNull
+ public CalculatorPreferences.Gui.Layout getLayout() {
+ return layout;
+ }
+
+ @Override
+ public void onResume(@NotNull SherlockFragmentActivity activity) {
+ onResume((Activity) activity);
+
+ final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(activity);
+ selectedNavigationIndex = preferences.getInt(getSavedTabPreferenceName(activity), -1);
+ restoreSavedTab(activity);
+ }
+}
diff --git a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
index 070e7fb2..be06d36c 100644
--- a/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
+++ b/calculatorpp/src/main/java/org/solovyev/android/calculator/CalculatorPreferences.java
@@ -45,6 +45,11 @@ public final class CalculatorPreferences {
return theme.getPreferenceNoError(preferences);
}
+ @NotNull
+ public static Layout getLayout(@NotNull SharedPreferences preferences) {
+ return layout.getPreferenceNoError(preferences);
+ }
+
public static enum Theme {
default_theme(ThemeType.other, R.style.default_theme),
@@ -83,7 +88,11 @@ public final class CalculatorPreferences {
public static enum Layout {
main_calculator(R.layout.main_calculator),
- main_cellphone(R.layout.main_cellphone),
+
+ // not used anymore
+ @Deprecated
+ main_cellphone(R.layout.main_calculator),
+
simple(R.layout.main_calculator);
private final int layoutId;
@@ -139,6 +148,9 @@ public final class CalculatorPreferences {
applyDefaultPreference(preferences, Gui.theme);
applyDefaultPreference(preferences, Gui.layout);
+ if ( Gui.layout.getPreference(preferences) == Gui.Layout.main_cellphone ) {
+ Gui.layout.putDefault(preferences);
+ }
applyDefaultPreference(preferences, Gui.feedbackWindowShown);
applyDefaultPreference(preferences, Gui.notesppAnnounceShown);
applyDefaultPreference(preferences, Gui.showReleaseNotes);
@@ -146,8 +158,6 @@ public final class CalculatorPreferences {
applyDefaultPreference(preferences, Gui.showEqualsButton);
applyDefaultPreference(preferences, Gui.autoOrientation);
applyDefaultPreference(preferences, Gui.hideNumeralBaseDigits);
- applyDefaultPreference(preferences, Gui.theme);
- applyDefaultPreference(preferences, Gui.theme);
applyDefaultPreference(preferences, Graph.interpolate);
applyDefaultPreference(preferences, Graph.lineColorImag);