translations + preferences

This commit is contained in:
serso 2012-10-09 18:24:53 +04:00
parent 5d6ea3d58e
commit 9b6997e91b
12 changed files with 699 additions and 848 deletions

View File

@ -1,113 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
a:layout_width="fill_parent"
a:layout_height="fill_parent"
a:id="@+id/main_layout"
a:orientation="vertical"
a:layout_gravity="center"
a:background="#ff000000">
<include layout="@layout/calc_editor"/>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<org.solovyev.android.view.drag.DirectionDragButton xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
a:id="@+id/leftButton"
c:textUp="◀◀"
a:text="◀"
c:directionTextScale="0.5"
style="?controlButtonStyle"
a:onClick="moveLeftButtonClickHandler"
a:layout_width="0dp"
a:layout_height="fill_parent"
a:layout_weight="1"/>
<org.solovyev.android.view.ColorButton xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
a:id="@+id/eraseButton"
a:drawableTop="@drawable/kb_delete"
style="?controlImageButtonStyle"
a:onClick="eraseButtonClickHandler"
a:layout_width="0dp"
a:layout_height="fill_parent"
a:layout_weight="1"/>
<include layout="@layout/calc_display"
a:layout_width="0dp"
a:layout_height="fill_parent"
a:layout_weight="4"/>
<org.solovyev.android.calculator.view.NumeralBasesButton xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
a:id="@+id/clearButton"
c:textUp="dec"
a:text="@string/c_clear"
c:textDown="bin"
c:textLeft="hex"
a:textStyle="bold"
style="?controlImageButtonStyle"
a:onClick="clearButtonClickHandler"
a:layout_width="0dp"
a:layout_height="fill_parent"
a:layout_weight="1"/>
<org.solovyev.android.view.drag.DirectionDragButton xmlns:a="http://schemas.android.com/apk/res/android"
xmlns:c="http://schemas.android.com/apk/res/org.solovyev.android.calculator"
a:id="@+id/rightButton"
c:textUp="▶▶"
a:text="▶"
c:directionTextScale="0.5"
style="?controlButtonStyle"
a:onClick="moveRightButtonClickHandler"
a:layout_width="0dp"
a:layout_height="fill_parent"
a:layout_weight="1"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_vars_button"/>
<include layout="@layout/calc_copy_button"/>
<include layout="@layout/calc_one_digit_button"/>
<include layout="@layout/calc_two_digit_button"/>
<include layout="@layout/calc_three_digit_button"/>
<include layout="@layout/calc_multiplication_button"/>
<include layout="@layout/calc_division_button"/>
<include layout="@layout/calc_equals_button"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_functions_button"/>
<include layout="@layout/calc_paste_button"/>
<include layout="@layout/calc_four_digit_button"/>
<include layout="@layout/calc_five_digit_button"/>
<include layout="@layout/calc_six_digit_button"/>
<include layout="@layout/calc_plus_button"/>
<include layout="@layout/calc_subtraction_button"/>
<include layout="@layout/calc_round_brackets_button"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_operators_button"/>
<include layout="@layout/calc_donate_button"/>
<include layout="@layout/calc_seven_digit_button"/>
<include layout="@layout/calc_eight_digit_button"/>
<include layout="@layout/calc_nine_digit_button"/>
<include layout="@layout/calc_zero_digit_button"/>
<include layout="@layout/calc_dot_button"/>
<include layout="@layout/calc_history_button"/>
</LinearLayout>
</LinearLayout>

View File

@ -34,9 +34,10 @@
a:layout_weight="1"/>
<LinearLayout a:id="@+id/displayContainer"
a:layout_weight="4"
a:layout_height="match_parent"
a:layout_width="0dp"
a:layout_height="match_parent"/>
a:layout_weight="4"
a:layout_margin="@dimen/display_margin_land"/>
<include layout="@layout/calc_clear_button"
a:layout_margin="@dimen/button_margin"

View File

@ -1,17 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
<org.solovyev.android.calculator.AndroidCalculatorDisplayView
xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@+id/calculatorDisplay"
style="@style/display_style"
a:padding="@dimen/editor_padding"
a:inputType="textMultiLine"
a:maxLines="3"
a:scrollHorizontally="false"
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
<org.solovyev.android.calculator.AndroidCalculatorDisplayView
xmlns:a="http://schemas.android.com/apk/res/android"
a:id="@+id/calculatorDisplay"
style="@style/display_style"
a:padding="@dimen/display_padding"
a:inputType="textMultiLine"
a:maxLines="3"
a:scrollHorizontally="false"
a:scrollbars="none"/>

View File

@ -1,77 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:a="http://schemas.android.com/apk/res/android"
a:layout_width="fill_parent"
a:layout_height="fill_parent"
a:id="@+id/main_layout"
a:orientation="vertical"
a:layout_gravity="center"
a:background="#ff000000">
<include layout="@layout/calc_editor"/>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_equals_button"
a:layout_weight="1"
a:layout_width="0dp"
a:layout_height="fill_parent"/>
<include layout="@layout/calc_display"
a:layout_weight="4"
a:layout_width="0dp"
a:layout_height="fill_parent"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_one_digit_button"/>
<include layout="@layout/calc_two_digit_button"/>
<include layout="@layout/calc_three_digit_button"/>
<include layout="@layout/calc_multiplication_button"/>
<include layout="@layout/calc_clear_button"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_four_digit_button"/>
<include layout="@layout/calc_five_digit_button"/>
<include layout="@layout/calc_six_digit_button"/>
<include layout="@layout/calc_division_button"/>
<include layout="@layout/calc_erase_button"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_seven_digit_button"/>
<include layout="@layout/calc_eight_digit_button"/>
<include layout="@layout/calc_nine_digit_button"/>
<include layout="@layout/calc_plus_button"/>
<include layout="@layout/calc_copy_button"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_round_brackets_button"/>
<include layout="@layout/calc_zero_digit_button"/>
<include layout="@layout/calc_dot_button"/>
<include layout="@layout/calc_subtraction_button"/>
<include layout="@layout/calc_paste_button"/>
</LinearLayout>
<LinearLayout a:layout_weight="1" a:layout_width="fill_parent" a:layout_height="0dp">
<include layout="@layout/calc_left_button"/>
<include layout="@layout/calc_right_button"/>
<include layout="@layout/calc_vars_button"/>
<include layout="@layout/calc_functions_button"/>
<include layout="@layout/calc_history_button"/>
</LinearLayout>
</LinearLayout>

View File

@ -1,210 +1,228 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
<resources>
<string name="c_app_name">Калькулятор++</string>
<string name="c_app_name_free">Калькулятор++ Free</string>
<string name="c_app_icon_name">Кальк++</string>
<string name="c_app_settings">Настройки</string>
<string name="c_syntax_error">Ошибка</string>
<string name="c_result_copied">Результат скопирован в буфер!</string>
<string name="c_settings">Настройки</string>
<string name="c_help">Помощь</string>
<string name="c_vars_and_constants">Переменные и константы</string>
<!--PREFERENCE ACTIVITY-->
<string name="c_prefs_main_category">Основные настройки</string>
<string name="c_prefs_calculations_category">Настройки вычислений</string>
<string name="c_prefs_appearance_category">Настройки внешнего вида</string>
<string name="c_prefs_other_category">Другие настройки</string>
<string name="c_prefs_drag_button_category">Настройки кнопок</string>
<string name="c_down">Вниз</string>
<string name="c_up">Вверх</string>
<string name="c_restart">Перезапуск</string>
<string name="c_undo">назад</string>
<string name="c_redo">вперёд</string>
<string name="c_paste">вставить</string>
<string name="c_vars">переменные</string>
<string name="c_copy">Копировать</string>
<string name="c_plot">Построить график</string>
<string name="c_graph">График</string>
<string name="c_calc_color_display_title">Подсветка выражений</string>
<string name="c_calc_round_result_title">Округление результата</string>
<string name="c_calc_round_result_summary">Включает/выключает округление результата</string>
<string name="c_calc_science_notation_title">Результат в научной форме</string>
<string name="c_calc_science_notation_summary">Если включено - результат будет всегда записан в научной форме (12.34E-12)</string>
<string name="p_calc_result_precision_title">Точность результата</string>
<string name="p_calc_max_calculation_time_title">Максимальное время вычисления</string>
<string name="p_calc_max_calculation_time_summary">Если вычисления превысят установленный предел - калькулятор остановится с ошибкой</string>
<string name="c_exit">Выход</string>
<string name="c_add">Добавить</string>
<string name="c_cancel">Отмена</string>
<string name="c_save">Сохранить</string>
<string name="c_remove">Удалить</string>
<string name="c_yes">Да</string>
<string name="c_no">Нет</string>
<string name="c_var_removal_confirmation">Подтверждение удаления</string>
<string name="c_var_removal_confirmation_question">Вы действительно хотите удалить переменную \'%s\'?</string>
<string name="c_var_name">Имя</string>
<string name="c_var_value">Значение</string>
<string name="c_var_description">Описание</string>
<string name="c_var_create_var">Создать переменную</string>
<string name="c_var_edit_var">Редактировать переменную</string>
<string name="c_value.is.not.a.number">Значение должно либо оставаться пустым либо быть числом!</string>
<string name="c_var.name.clashes">Имя переменной не может быть зарезервированным системным именем!</string>
<string name="c_var.already.exists">Переменная с таким именем уже существует!</string>
<string name="c_name.is.not.valid">Имя переменной не валидно: им ядолжно начинаться с буквы, может содержать буквы, цифры и знак подчёркивания.</string>
<string name="c_sys.var.cannot.be.changed">Системная переменная не может быть изменена!</string>
<string name="c_calc_editor_hint">Введите новое выражение</string>
<string name="c_press_to_copy">Нажмите для копирования</string>
<string name="c_continue">Продолжить</string>
<string name="c_history">История</string>
<string name="c_history_button">M</string>
<string name="c_history_is_empty">История пуста!</string>
<string name="c_app_history">История</string>
<string name="c_char_is_not_accepted">Символ \'%s\' не допустим в названии переменной!</string>
<string name="c_calc_angle_units">Единицы измерения углов</string>
<string name="p_deg">Градусы</string>
<string name="p_rad">Радианы</string>
<string name="p_grad">Грады</string>
<string name="p_turns">Обороты</string>
<string name="c_angle_units_summary">Устанавливает единицы измерения углов.</string>
<string name="c_calc_numeral_bases">Системы счисления</string>
<string name="c_numeral_bases_summary">Устанавливает систему счисления для всех вводимых чисел.</string>
<string name="p_dec">Десятичная</string>
<string name="p_hex">Шестнадцатеричная</string>
<string name="p_oct">Восьмиричная</string>
<string name="p_bin">Бинарная</string>
<string name="c_calc_theme">Тема оформления</string>
<string name="p_default_theme">Серая</string>
<string name="p_violet_theme">Фиолетовая</string>
<string name="p_light_blue_theme">Голубая</string>
<string name="p_metro_blue_theme">Метро Синяя (По умолчанию)</string>
<string name="p_metro_green_theme">Метро Зелёная</string>
<string name="p_metro_purple_theme">Метро Фиолетовая</string>
<string name="c_calc_result_precision_summary">Точность результата(все вычисления производятся максимально точно)</string>
<string name="c_calc_color_display_summary">Включает/выключает подсветку синтаксиса в поле редактирования калькулятора</string>
<string name="c_calc_theme_summary">Устанавливает тему оформления приложения</string>
<string name="c_clear_history">Очистить историю</string>
<string name="c_simplify_instead_of_numeric">Следующие константы не определены: {0}!</string>
<string name="p_grouping_separator_no">Не использовать разделитель разрядов</string>
<string name="p_grouping_separator_apostrophe">Апостроф (\')</string>
<string name="p_grouping_separator_space">Пробел ( )</string>
<string name="c_calc_grouping_separator">Разделитель разрядов</string>
<string name="c_calc_grouping_separator_summary">Устанавливает разделитель разрядов числа</string>
<string name="c_calc_multiplication_sign">Знак произведения</string>
<string name="c_calc_multiplication_sign_summary">Устанавливает знак произведения</string>
<string name="c_calc_layout">Раскладка</string>
<string name="p_layout_cellphone">Научная (телефон)</string>
<string name="p_layout_calculator">Научная</string>
<string name="p_layout_simple">Простая</string>
<string name="c_calc_layout_summary">Устанавливает раскладку кнопок</string>
<string name="c_calc_haptic_feedback_title">Отклик на нажатие</string>
<string name="c_calc_haptic_feedback_summary">Включает/выключает вибрацию по нажатию клавиши</string>
<string name="p_calc_haptic_feedback_strength_short">Маленькая</string>
<string name="p_calc_haptic_feedback_strength_middle">Средняя</string>
<string name="p_calc_haptic_feedback_strength_long">Большая</string>
<string name="p_calc_haptic_feedback_duration_title">Длительность отклика</string>
<string name="p_calc_haptic_feedback_duration_summary">Длительность вибрации по нажатию клавиши</string>
<string name="c_empty_var_error">Невозможно создать пустую константу!</string>
<string name="c_not_valid_result">Результат не допустим!</string>
<string name="c_plot_graph">График</string>
<string name="c_min_x_value">От</string>
<string name="c_max_x_value">До</string>
<string name="c_swipe_distance">Длина свайпа для клавиш</string>
<string name="c_swipe_distance_summary">Устанавливает длину свайпа для клавиш которые поддерживают дополнительные действия по свайпу</string>
<string name="c_comment">Комментарий</string>
<string name="c_history_item_saved">Сохранено</string>
<string name="c_history_item_not_saved">Не сохранено</string>
<string name="c_expression_copied">Выражение скопировано в буфер!</string>
<string name="c_history_item_status">Статус: </string>
<string name="c_history_item_comment">Комментарий: </string>
<string name="c_use">Использовать</string>
<string name="c_use_short">Исп.</string>
<string name="c_copy_expression">Копировать выражение</string>
<string name="c_copy_result">Копировать результат</string>
<string name="c_history_expression">Значение</string>
<string name="c_history_item_already_saved">Сохранено (см. вкладку \'Сохранённая история\')</string>
<string name="c_history_comment">Комментарий</string>
<string name="c_save_history">Сохранить</string>
<string name="c_edit_history">Изменить</string>
<string name="c_edit">Изменить</string>
<string name="c_saved_history">Сохранённая история</string>
<string name="c_history_already_saved">История уже была сохранена!</string>
<string name="c_history_must_be_saved">История должна быть сохранена перед редактированием!</string>
<string name="c_history_was_removed">История успешно удалена!</string>
<string name="c_history_saved">История успешно сохранена!</string>
<string name="c_copy_description">Копировать описание</string>
<string name="c_copy_value">Копировать значение</string>
<string name="c_first_start_text_title">Приветствие</string>
<string name="c_first_start_text">Спасибо за выбор Калькулятора++!\n\nКалькулятор++ - это мощный инструмент для проведения ежедневных расчётов.\n\nДля избавление от рекламы и поддержки проекта вы можете воспользоваться специальной опцией доступной из настроек приложения.\n\nПеред началом работы рекомендуется прочитать FAQ и подсказки для использования всех возможностей программы (нажмите Меню, затем Помощь)</string>
<string name="c_calc_show_release_notes_title">Показывать примечания к выпуску</string>
<string name="c_calc_show_release_notes_summary">Определяет показывать или нет всплывающее окно с примечаниями к выпуску после обновления новой версии</string>
<string name="c_calc_use_back_button_as_prev_summary">Устанавливает поведение по нажатию на кнопку Назад</string>
<string name="c_calc_use_back_button_as_prev_title">Использовать кнопку назад как назад по истории</string>
<string name="c_clear_billing_info_summary">Информация о покупках будет обновлена с сервера</string>
<string name="c_clear_billing_info_title">Очистить информация о покупках</string>
<string name="c_warning">Внимание</string>
<string name="c_error">Ошибка</string>
<string name="c_billing_error">Биллинг не поддерживается: вы должны иметь Google Checkout аккаунт привязанный в вашему Google аккаунту и должны быть подключены к интернету.</string>
<string name="c_calc_ad_free_title">Поддержать проект</string>
<string name="c_calc_ad_free_summary">И убрать рекламу</string>
<string name="c_calc_already_purchased">Опция уже была куплена!</string>
<string name="c_calc_purchasing">Покупаем…</string>
<string name="c_calc_clearing">Очищаем…</string>
<string name="c_feedback_title">Отзыв</string>
<string name="c_feedback_text">Вы используете Калькулятор++ некоторое время\n
и для нас важно узнать ваше мнение о приложении.\n\n
Пожалуйста, оцените Калькулятор++ \nна <a href="https://market.android.com/details?id=org.solovyev.android.calculator">Google Play</a>,\n оставьте комментарий или \nобсудите приложение \nна нашем <a href="http://calculatorpp.com/forum/">форуме</a>
</string>
<string name="c_notespp_announce_text">Хорошие новости - я только что выпустил новое приложение под Андроид под названием <a href="https://play.google.com/store/apps/details?id=org.solovyev.android.notes">Заметки++</a>.\n
Если вы заинтересованы в быстром и удобном способе оставлять заметки пройдите по <a href="https://play.google.com/store/apps/details?id=org.solovyev.android.notes">ссылке</a> и попробуйте Заметки++!
</string>
<string name="c_angle_units_changed_to">Единицы измерения углов изменены на \'%s\'!</string>
<string name="c_numeral_base_changed_to">Система счисления изменена на \'%s\'!</string>
<string name="c_conversion_tool">Перевод величин</string>
<string name="c_convert">Перевести в…</string>
<string name="convert_to_hex">Перевести в hex</string>
<string name="convert_to_bin">Перевести в bin</string>
<string name="convert_to_dec">Перевести в dec</string>
<?xml version="1.0" encoding="utf-8"?>
<!--
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
<resources>
<string name="c_app_name">Калькулятор++</string>
<string name="c_app_name_free">Калькулятор++ Free</string>
<string name="c_app_icon_name">Кальк++</string>
<string name="c_app_settings">Настройки</string>
<string name="c_syntax_error">Ошибка</string>
<string name="c_result_copied">Результат скопирован в буфер!</string>
<string name="c_settings">Настройки</string>
<string name="c_help">Помощь</string>
<string name="c_vars_and_constants">Переменные и константы</string>
<!--PREFERENCE ACTIVITY-->
<string name="c_prefs_main_category">Основные настройки</string>
<string name="c_prefs_calculations_category">Настройки вычислений</string>
<string name="c_prefs_appearance_category">Настройки внешнего вида</string>
<string name="c_prefs_other_category">Другие настройки</string>
<string name="c_prefs_drag_button_category">Настройки кнопок</string>
<string name="c_down">Вниз</string>
<string name="c_up">Вверх</string>
<string name="c_restart">Перезапуск</string>
<string name="c_undo">назад</string>
<string name="c_redo">вперёд</string>
<string name="c_paste">вставить</string>
<string name="c_vars">переменные</string>
<string name="c_copy">Копировать</string>
<string name="c_plot">Построить график</string>
<string name="c_graph">График</string>
<string name="c_calc_color_display_title">Подсветка выражений</string>
<string name="c_calc_round_result_title">Округление результата</string>
<string name="c_calc_round_result_summary">Включает/выключает округление результата</string>
<string name="c_calc_science_notation_title">Результат в научной форме</string>
<string name="c_calc_science_notation_summary">Если включено - результат будет всегда записан в научной форме (12.34E-12)</string>
<string name="p_calc_result_precision_title">Точность результата</string>
<string name="p_calc_max_calculation_time_title">Максимальное время вычисления</string>
<string name="p_calc_max_calculation_time_summary">Если вычисления превысят установленный предел - калькулятор остановится с ошибкой</string>
<string name="c_exit">Выход</string>
<string name="c_add">Добавить</string>
<string name="c_cancel">Отмена</string>
<string name="c_save">Сохранить</string>
<string name="c_remove">Удалить</string>
<string name="c_yes">Да</string>
<string name="c_no">Нет</string>
<string name="c_var_removal_confirmation">Подтверждение удаления</string>
<string name="c_var_removal_confirmation_question">Вы действительно хотите удалить переменную \'%s\'?</string>
<string name="c_var_name">Имя</string>
<string name="c_var_value">Значение</string>
<string name="c_var_description">Описание</string>
<string name="c_var_create_var">Создать переменную</string>
<string name="c_var_edit_var">Редактировать переменную</string>
<string name="c_value.is.not.a.number">Значение должно либо оставаться пустым либо быть числом!</string>
<string name="c_var.name.clashes">Имя переменной не может быть зарезервированным системным именем!</string>
<string name="c_var.already.exists">Переменная с таким именем уже существует!</string>
<string name="c_name.is.not.valid">Имя переменной не валидно: им ядолжно начинаться с буквы, может содержать буквы, цифры и знак подчёркивания.</string>
<string name="c_sys.var.cannot.be.changed">Системная переменная не может быть изменена!</string>
<string name="c_calc_editor_hint">Введите новое выражение</string>
<string name="c_press_to_copy">Нажмите для копирования</string>
<string name="c_continue">Продолжить</string>
<string name="c_history">История</string>
<string name="c_history_button">M</string>
<string name="c_history_is_empty">История пуста!</string>
<string name="c_app_history">История</string>
<string name="c_char_is_not_accepted">Символ \'%s\' не допустим в названии переменной!</string>
<string name="c_calc_angle_units">Единицы измерения углов</string>
<string name="p_deg">Градусы</string>
<string name="p_rad">Радианы</string>
<string name="p_grad">Грады</string>
<string name="p_turns">Обороты</string>
<string name="c_angle_units_summary">Устанавливает единицы измерения углов.</string>
<string name="c_calc_numeral_bases">Системы счисления</string>
<string name="c_numeral_bases_summary">Устанавливает систему счисления для всех вводимых чисел.</string>
<string name="p_dec">Десятичная</string>
<string name="p_hex">Шестнадцатеричная</string>
<string name="p_oct">Восьмиричная</string>
<string name="p_bin">Бинарная</string>
<string name="c_calc_theme">Тема оформления</string>
<string name="p_default_theme">Серая</string>
<string name="p_violet_theme">Фиолетовая</string>
<string name="p_light_blue_theme">Голубая</string>
<string name="p_metro_blue_theme">Метро Синяя (По умолчанию)</string>
<string name="p_metro_green_theme">Метро Зелёная</string>
<string name="p_metro_purple_theme">Метро Фиолетовая</string>
<string name="c_calc_result_precision_summary">Точность результата(все вычисления производятся максимально точно)</string>
<string name="c_calc_color_display_summary">Включает/выключает подсветку синтаксиса в поле редактирования калькулятора</string>
<string name="c_calc_theme_summary">Устанавливает тему оформления приложения</string>
<string name="c_clear_history">Очистить историю</string>
<string name="c_simplify_instead_of_numeric">Следующие константы не определены: {0}!</string>
<string name="p_grouping_separator_no">Не использовать разделитель разрядов</string>
<string name="p_grouping_separator_apostrophe">Апостроф (\')</string>
<string name="p_grouping_separator_space">Пробел ( )</string>
<string name="c_calc_grouping_separator">Разделитель разрядов</string>
<string name="c_calc_grouping_separator_summary">Устанавливает разделитель разрядов числа</string>
<string name="c_calc_multiplication_sign">Знак произведения</string>
<string name="c_calc_multiplication_sign_summary">Устанавливает знак произведения</string>
<string name="c_calc_layout">Раскладка</string>
<string name="p_layout_cellphone">Научная (телефон)</string>
<string name="p_layout_calculator">Научная</string>
<string name="p_layout_simple">Простая</string>
<string name="c_calc_layout_summary">Устанавливает раскладку кнопок</string>
<string name="c_calc_haptic_feedback_title">Отклик на нажатие</string>
<string name="c_calc_haptic_feedback_summary">Включает/выключает вибрацию по нажатию клавиши</string>
<string name="p_calc_haptic_feedback_strength_short">Маленькая</string>
<string name="p_calc_haptic_feedback_strength_middle">Средняя</string>
<string name="p_calc_haptic_feedback_strength_long">Большая</string>
<string name="p_calc_haptic_feedback_duration_title">Длительность отклика</string>
<string name="p_calc_haptic_feedback_duration_summary">Длительность вибрации по нажатию клавиши</string>
<string name="c_empty_var_error">Невозможно создать пустую константу!</string>
<string name="c_not_valid_result">Результат не допустим!</string>
<string name="c_plot_graph">График</string>
<string name="c_min_x_value">От</string>
<string name="c_max_x_value">До</string>
<string name="c_swipe_distance">Длина свайпа для клавиш</string>
<string name="c_swipe_distance_summary">Устанавливает длину свайпа для клавиш которые поддерживают дополнительные действия по свайпу</string>
<string name="c_comment">Комментарий</string>
<string name="c_history_item_saved">Сохранено</string>
<string name="c_history_item_not_saved">Не сохранено</string>
<string name="c_expression_copied">Выражение скопировано в буфер!</string>
<string name="c_history_item_status">Статус: </string>
<string name="c_history_item_comment">Комментарий: </string>
<string name="c_use">Использовать</string>
<string name="c_use_short">Исп.</string>
<string name="c_copy_expression">Копировать выражение</string>
<string name="c_copy_result">Копировать результат</string>
<string name="c_history_expression">Значение</string>
<string name="c_history_item_already_saved">Сохранено (см. вкладку \'Сохранённая история\')</string>
<string name="c_history_comment">Комментарий</string>
<string name="c_save_history">Сохранить</string>
<string name="c_edit_history">Изменить</string>
<string name="c_edit">Изменить</string>
<string name="c_saved_history">Сохранённая история</string>
<string name="c_history_already_saved">История уже была сохранена!</string>
<string name="c_history_must_be_saved">История должна быть сохранена перед редактированием!</string>
<string name="c_history_was_removed">История успешно удалена!</string>
<string name="c_history_saved">История успешно сохранена!</string>
<string name="c_copy_description">Копировать описание</string>
<string name="c_copy_value">Копировать значение</string>
<string name="c_first_start_text_title">Приветствие</string>
<string name="c_first_start_text">Спасибо за выбор Калькулятора++!\n\nКалькулятор++ - это мощный инструмент для проведения ежедневных расчётов.\n\nДля избавление от рекламы и поддержки проекта вы можете воспользоваться специальной опцией доступной из настроек приложения.\n\nПеред началом работы рекомендуется прочитать FAQ и подсказки для использования всех возможностей программы (нажмите Меню, затем Помощь)</string>
<string name="c_calc_show_release_notes_title">Показывать примечания к выпуску</string>
<string name="c_calc_show_release_notes_summary">Определяет показывать или нет всплывающее окно с примечаниями к выпуску после обновления новой версии</string>
<string name="c_calc_use_back_button_as_prev_summary">Устанавливает поведение по нажатию на кнопку Назад</string>
<string name="c_calc_use_back_button_as_prev_title">Использовать кнопку назад как назад по истории</string>
<string name="c_clear_billing_info_summary">Информация о покупках будет обновлена с сервера</string>
<string name="c_clear_billing_info_title">Очистить информация о покупках</string>
<string name="c_warning">Внимание</string>
<string name="c_error">Ошибка</string>
<string name="c_billing_error">Биллинг не поддерживается: вы должны иметь Google Checkout аккаунт привязанный в вашему Google аккаунту и должны быть подключены к интернету.</string>
<string name="c_calc_ad_free_title">Поддержать проект</string>
<string name="c_calc_ad_free_summary">И убрать рекламу</string>
<string name="c_calc_already_purchased">Опция уже была куплена!</string>
<string name="c_calc_purchasing">Покупаем…</string>
<string name="c_calc_clearing">Очищаем…</string>
<string name="c_feedback_title">Отзыв</string>
<string name="c_feedback_text">Вы используете Калькулятор++ некоторое время\n
и для нас важно узнать ваше мнение о приложении.\n\n
Пожалуйста, оцените Калькулятор++ \nна <a href="https://market.android.com/details?id=org.solovyev.android.calculator">Google Play</a>,\n оставьте комментарий или \nобсудите приложение \nна нашем <a href="http://calculatorpp.com/forum/">форуме</a>
</string>
<string name="c_notespp_announce_text">Хорошие новости - я только что выпустил новое приложение под Андроид под названием <a href="https://play.google.com/store/apps/details?id=org.solovyev.android.notes">Заметки++</a>.\n
Если вы заинтересованы в быстром и удобном способе оставлять заметки пройдите по <a href="https://play.google.com/store/apps/details?id=org.solovyev.android.notes">ссылке</a> и попробуйте Заметки++!
</string>
<string name="c_angle_units_changed_to">Единицы измерения углов изменены на \'%s\'!</string>
<string name="c_numeral_base_changed_to">Система счисления изменена на \'%s\'!</string>
<string name="c_conversion_tool">Перевод величин</string>
<string name="c_convert">Перевести в…</string>
<string name="convert_to_hex">Перевести в hex</string>
<string name="convert_to_bin">Перевести в bin</string>
<string name="convert_to_dec">Перевести в dec</string>
<string name="editor">Редактор</string>
<string name="result">Результат</string>
<string name="other">Другие</string>
<string name="derivatives">Производные/Интегралы</string>
<string name="crashed">Калькулятор++ обнаружил ошибку…</string>
<string name="crash_dialog_title">Отчёт об ошибке в Калькуляторе++</string>
<string name="crash_dialog_text">
К сожалению, Калькулятор++ был остановлен ошибкой.\n\n
Для того чтобы исправить, её нам необходима некоторая информация. Мы рекомендуем вам послать этот отчёт об ошибке (после нажатия кнопки \'Да\' вы увидите всю передаваемую информацию в новом окне).\n\n
Хотите лы вы послать отчёт об ошибке?
</string>
<string name="prefs_graph_scren_title">Настройки графика</string>
<string name="prefs_graph_interpolate_function">Интерполировать график</string>
<string name="prefs_graph_real_color_title">Цвет вещественной части графика</string>
<string name="prefs_graph_real_color_summary">Устанавливает цвет вещественной части графика</string>
<string name="prefs_graph_imag_color_title">Цвет мнимой части графика</string>
<string name="prefs_graph_imag_color_summary">Устанавливает цвет мнимой части графика</string>
</resources>

View File

@ -1,105 +1,103 @@
<!--
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
<resources>
<string-array name="p_theme_names">
<item>@string/p_default_theme</item>
<item>@string/p_violet_theme</item>
<item>@string/p_light_blue_theme</item>
<item>@string/p_metro_blue_theme</item>
<item>@string/p_metro_green_theme</item>
<item>@string/p_metro_purple_theme</item>
</string-array>
<string-array name="p_theme_values">
<item>default_theme</item>
<item>violet_theme</item>
<item>light_blue_theme</item>
<item>metro_blue_theme</item>
<item>metro_green_theme</item>
<item>metro_purple_theme</item>
</string-array>
<string-array name="p_grouping_separator_names">
<item>@string/p_grouping_separator_no</item>
<item>@string/p_grouping_separator_apostrophe</item>
<item>@string/p_grouping_separator_space</item>
</string-array>
<string-array name="p_grouping_separator_values">
<item>""</item>
<item>\'</item>
<item>" "</item>
</string-array>
<string-array name="p_multiplication_sign_values">
<item>"*"</item>
<item>"×"</item>
<item>"∙"</item>
</string-array>
<string-array name="p_layout_names">
<item>@string/p_layout_calculator</item>
<item>@string/p_layout_simple</item>
<item>@string/p_layout_cellphone</item>
</string-array>
<string-array name="p_layout_values">
<item>main_calculator</item>
<item>simple</item>
<item>main_cellphone</item>
</string-array>
<string-array name="p_calc_haptic_feedback_duration_names">
<item>@string/p_calc_haptic_feedback_strength_short</item>
<item>@string/p_calc_haptic_feedback_strength_middle</item>
<item>@string/p_calc_haptic_feedback_strength_long</item>
</string-array>
<string-array name="p_calc_haptic_feedback_duration_values">
<item>30</item>
<item>60</item>
<item>100</item>
</string-array>
<string-array name="p_angle_units_names">
<item>@string/p_deg</item>
<item>@string/p_rad</item>
<item>@string/p_grad</item>
<item>@string/p_turns</item>
</string-array>
<string-array name="p_angle_units">
<item>deg</item>
<item>rad</item>
<item>grad</item>
<item>turns</item>
</string-array>
<string-array name="p_numeral_bases_names">
<item>@string/p_dec</item>
<item>@string/p_hex</item>
<item>@string/p_oct</item>
<item>@string/p_bin</item>
</string-array>
<string-array name="p_numeral_bases">
<item>dec</item>
<item>hex</item>
<item>oct</item>
<item>bin</item>
</string-array>
<string-array name="graph_line_color_names">
<item>White</item>
<item>Grey</item>
<item>Red</item>
<item>Blue</item>
<item>Green</item>
</string-array>
<string-array name="graph_line_color_values">
<item>white</item>
<item>grey</item>
<item>red</item>
<item>blue</item>
<item>green</item>
</string-array>
<!--
~ Copyright (c) 2009-2011. Created by serso aka se.solovyev.
~ For more information, please, contact se.solovyev@gmail.com
~ or visit http://se.solovyev.org
-->
<resources>
<string-array name="p_theme_names">
<item>@string/p_default_theme</item>
<item>@string/p_violet_theme</item>
<item>@string/p_light_blue_theme</item>
<item>@string/p_metro_blue_theme</item>
<item>@string/p_metro_green_theme</item>
<item>@string/p_metro_purple_theme</item>
</string-array>
<string-array name="p_theme_values">
<item>default_theme</item>
<item>violet_theme</item>
<item>light_blue_theme</item>
<item>metro_blue_theme</item>
<item>metro_green_theme</item>
<item>metro_purple_theme</item>
</string-array>
<string-array name="p_grouping_separator_names">
<item>@string/p_grouping_separator_no</item>
<item>@string/p_grouping_separator_apostrophe</item>
<item>@string/p_grouping_separator_space</item>
</string-array>
<string-array name="p_grouping_separator_values">
<item>""</item>
<item>\'</item>
<item>" "</item>
</string-array>
<string-array name="p_multiplication_sign_values">
<item>"*"</item>
<item>"×"</item>
<item>"∙"</item>
</string-array>
<string-array name="p_layout_names">
<item>@string/p_layout_calculator</item>
<item>@string/p_layout_simple</item>
</string-array>
<string-array name="p_layout_values">
<item>main_calculator</item>
<item>simple</item>
</string-array>
<string-array name="p_calc_haptic_feedback_duration_names">
<item>@string/p_calc_haptic_feedback_strength_short</item>
<item>@string/p_calc_haptic_feedback_strength_middle</item>
<item>@string/p_calc_haptic_feedback_strength_long</item>
</string-array>
<string-array name="p_calc_haptic_feedback_duration_values">
<item>30</item>
<item>60</item>
<item>100</item>
</string-array>
<string-array name="p_angle_units_names">
<item>@string/p_deg</item>
<item>@string/p_rad</item>
<item>@string/p_grad</item>
<item>@string/p_turns</item>
</string-array>
<string-array name="p_angle_units">
<item>deg</item>
<item>rad</item>
<item>grad</item>
<item>turns</item>
</string-array>
<string-array name="p_numeral_bases_names">
<item>@string/p_dec</item>
<item>@string/p_hex</item>
<item>@string/p_oct</item>
<item>@string/p_bin</item>
</string-array>
<string-array name="p_numeral_bases">
<item>dec</item>
<item>hex</item>
<item>oct</item>
<item>bin</item>
</string-array>
<string-array name="graph_line_color_names">
<item>White</item>
<item>Grey</item>
<item>Red</item>
<item>Blue</item>
<item>Green</item>
</string-array>
<string-array name="graph_line_color_values">
<item>white</item>
<item>grey</item>
<item>red</item>
<item>blue</item>
<item>green</item>
</string-array>
</resources>

View File

@ -1,20 +1,21 @@
<resources>
<dimen name="button_margin">0.5dp</dimen>
<dimen name="text_size">20sp</dimen>
<dimen name="fragment_text_size">15sp</dimen>
<dimen name="fragment_title_text_size">20sp</dimen>
<dimen name="keyboard_button_text_size">30dp</dimen>
<dimen name="button_text_size">20dp</dimen>
<dimen name="display_text_size">25sp</dimen>
<dimen name="editor_text_size">25sp</dimen>
<dimen name="pane_margin">5dp</dimen>
<dimen name="pane_padding">5dp</dimen>
<dimen name="math_entity_text_size">20sp</dimen>
<dimen name="math_entity_description_text_size">15sp</dimen>
<!--only for not multipane-->
<dimen name="editor_padding">5dp</dimen>
<dimen name="display_padding">3dp</dimen>
<resources>
<dimen name="text_size">20sp</dimen>
<dimen name="button_margin">0.5dp</dimen>
<dimen name="display_margin_land">2.5dp</dimen>
<dimen name="fragment_text_size">15sp</dimen>
<dimen name="fragment_title_text_size">20sp</dimen>
<dimen name="keyboard_button_text_size">30dp</dimen>
<dimen name="button_text_size">20dp</dimen>
<dimen name="display_text_size">25sp</dimen>
<dimen name="editor_text_size">25sp</dimen>
<dimen name="pane_margin">5dp</dimen>
<dimen name="pane_padding">5dp</dimen>
<dimen name="math_entity_text_size">20sp</dimen>
<dimen name="math_entity_description_text_size">15sp</dimen>
<!--only for not multipane-->
<dimen name="editor_padding">5dp</dimen>
<dimen name="display_padding">3dp</dimen>
</resources>

View File

@ -225,5 +225,4 @@
<string name="prefs_graph_real_color_summary">Sets color of real part functions graph</string>
<string name="prefs_graph_imag_color_title">Color of imaginary part of functions graph</string>
<string name="prefs_graph_imag_color_summary">Sets color of imaginary part functions graph</string>
</resources>

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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);