From 9b6997e91be66742c687d985f9b29b184b8bf30c Mon Sep 17 00:00:00 2001 From: serso Date: Tue, 9 Oct 2012 18:24:53 +0400 Subject: [PATCH] translations + preferences --- .../res/layout-land/main_cellphone.xml | 113 ---- .../res/layout-land/main_first_pane.xml | 5 +- calculatorpp/res/layout/calc_display.xml | 32 +- calculatorpp/res/layout/main_cellphone.xml | 77 --- calculatorpp/res/values-ru/text_strings.xml | 436 ++++++++-------- calculatorpp/res/values/arrays.xml | 206 ++++---- calculatorpp/res/values/dimens.xml | 39 +- calculatorpp/res/values/text_strings.xml | 1 - .../calculator/CalculatorActivity.java | 2 +- .../calculator/CalculatorActivityHelper.java | 127 ++--- .../CalculatorActivityHelperImpl.java | 493 +++++++++--------- .../calculator/CalculatorPreferences.java | 16 +- 12 files changed, 699 insertions(+), 848 deletions(-) delete mode 100644 calculatorpp/res/layout-land/main_cellphone.xml delete mode 100644 calculatorpp/res/layout/main_cellphone.xml 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 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 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 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 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);