new version + language added + refactor
This commit is contained in:
parent
ca7d84151b
commit
780d278fda
@ -3,8 +3,8 @@
|
|||||||
<manifest xmlns:a="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:a="http://schemas.android.com/apk/res/android"
|
||||||
package="org.solovyev.android.calculator"
|
package="org.solovyev.android.calculator"
|
||||||
a:installLocation="auto"
|
a:installLocation="auto"
|
||||||
a:versionCode="16"
|
a:versionCode="17"
|
||||||
a:versionName="1.1.16">
|
a:versionName="1.2.17">
|
||||||
|
|
||||||
<uses-permission a:name="android.permission.VIBRATE"/>
|
<uses-permission a:name="android.permission.VIBRATE"/>
|
||||||
|
|
||||||
|
303
res/values-es/strings.xml
Normal file
303
res/values-es/strings.xml
Normal file
@ -0,0 +1,303 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string name="c_app_name">Calculadora++</string>
|
||||||
|
<string name="c_app_icon_name">Calc++</string>
|
||||||
|
<string name="c_app_settings">Configuración</string>
|
||||||
|
<string name="c_syntax_error">Error</string>
|
||||||
|
<string name="c_result_copied">Resultado copiado al Portapapeles!</string>
|
||||||
|
<string name="c_settings">Configuración</string>
|
||||||
|
<string name="c_help">Ayuda</string>
|
||||||
|
<string name="c_about">Acerca de</string>
|
||||||
|
<string name="c_vars_and_constants">Variables y Constantes</string>
|
||||||
|
<!--PREFERENCE ACTIVITY-->
|
||||||
|
<string name="c_prefs_main_category">Ajustes principales</string>
|
||||||
|
<string name="c_prefs_calculations_category">Ajustes de Cálculo</string>
|
||||||
|
<string name="c_prefs_appearance_category">Ajustes de apariencia</string>
|
||||||
|
<string name="c_prefs_drag_button_category">Configuración del deslizamiento de los botones</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="c_prefs_drag_button_calibration">Calibración del deslizamiento de los botones</string>
|
||||||
|
<string name="c_prefs_drag_button_calibration_summary">Permite calibrar el comportamiento del deslizamiento de los botones</string>
|
||||||
|
<string name="c_down">Abajo</string>
|
||||||
|
<string name="c_up">Arriba</string>
|
||||||
|
<string name="c_restart">Reiniciar</string>
|
||||||
|
|
||||||
|
|
||||||
|
<string name="c_about_content" formatted="false">Copyright (c) 2009-2011\n\n<b>Creado por serso aka se.solovyev</b>\n\n
|
||||||
|
Este programa es Open Source:\n
|
||||||
|
Todo el código fuente puede encontrarse en\n
|
||||||
|
<a href="https://github.com/serso/android_calculator">http://github.com</a>\n\n
|
||||||
|
Para más información, por favor,\n
|
||||||
|
contacte con el autor al mail\n
|
||||||
|
<a href="mailto:se.solovyev@gmail.com">se.solovyev@gmail.com</a>\n
|
||||||
|
o visite\n
|
||||||
|
<a href="http://se.solovyev.org">http://se.solovyev.org</a>\n\n
|
||||||
|
Si desea apoyar el proyecto,\n
|
||||||
|
puede hacer una donación vía\n
|
||||||
|
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=se%2esolovyev%40gmail%2ecom&lc=RU&item_name=Android%20Calculator&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted">\n
|
||||||
|
http://paypal.com
|
||||||
|
</a>\n\n
|
||||||
|
Si le gusta la aplicación\n
|
||||||
|
valórela con 5 estrellas en\n
|
||||||
|
<a href="https://market.android.com/details?id=org.solovyev.android.calculator">android.market</a>\n\n
|
||||||
|
Gracias a las personas que han traducido Calculadora++ a los diferentes idiomas:\n
|
||||||
|
Español - Jordi Luna\n
|
||||||
|
Italiano - Gabriele Ravanetti\n\n
|
||||||
|
Esta aplicación utiliza las siguiente librerías Open Source:\n
|
||||||
|
<a href="http://simple.sourceforge.net">Simple (XML serialization)</a>\n
|
||||||
|
<a href="http://meditorworld.appspot.com/meditor.txt">JSCL</a>\n
|
||||||
|
<a href="http://www.achartengine.org/">AChartEngine</a>
|
||||||
|
</string>
|
||||||
|
|
||||||
|
<string name="c_undo">deshacer</string>
|
||||||
|
<string name="c_redo">rehacer</string>
|
||||||
|
<string name="c_clear">C</string>
|
||||||
|
<string name="c_erase">borrar</string>
|
||||||
|
<string name="c_paste">pegar</string>
|
||||||
|
<string name="c_vars">vars</string>
|
||||||
|
<string name="c_calc_color_display_title">Resaltar expresiones</string>
|
||||||
|
<string name="c_calc_round_result_title">Redondear resultado</string>
|
||||||
|
<string name="c_calc_round_result_summary">Activar redondeo del resultado</string>
|
||||||
|
<string name="p_calc_result_precision_title">Precisión del resultado</string>
|
||||||
|
<string name="c_exit">Salir</string>
|
||||||
|
<string name="c_add">Añadir</string>
|
||||||
|
<string name="c_cancel">Cancelar</string>
|
||||||
|
<string name="c_save">Grabar</string>
|
||||||
|
<string name="c_remove">Borrar</string>
|
||||||
|
<string name="c_yes">Si</string>
|
||||||
|
<string name="c_no">No</string>
|
||||||
|
<string name="c_var_removal_confirmation">Confirmación de Borrado</string>
|
||||||
|
<string name="c_var_removal_confirmation_question">¿Realmente desea borrar la variable \'%s\'?</string>
|
||||||
|
<string name="c_var_name">Nombre</string>
|
||||||
|
<string name="c_var_value">Valor</string>
|
||||||
|
<string name="c_var_description">Descripción</string>
|
||||||
|
<string name="c_var_create_var">Crear variable</string>
|
||||||
|
<string name="c_var_edit_var">Editar variable</string>
|
||||||
|
<string name="c_value.is.not.a.number">¡El valor debe ser numérico o estar vacío!</string>
|
||||||
|
<string name="c_var.name.clashes">La variable name entra en conflicto con la función name!</string>
|
||||||
|
<string name="c_var.already.exists">¡Ya existe una variable con el mismo nombre!</string>
|
||||||
|
<string name="c_name.is.not.valid">El nombre de la Constante no es válido: el nombre debe comenzar con una letra,puede contener letras, dígitos y líneas.</string>
|
||||||
|
<string name="c_sys.var.cannot.be.changed">¡Una Variable de Sistema no puede ser cambiada!</string>
|
||||||
|
<string name="c_pi_description">Ratio de la circunferencia del círculo a su diámetro</string>
|
||||||
|
<string name="c_e_description">Número real único como el valor de la derivada (pendiente de la línea tangente) de la función f(x) = e^x en el punto x = 0 es igual a 1</string>
|
||||||
|
<string name="c_i_description">Unidad imaginaria, definida como i^2 = −1</string>
|
||||||
|
<string name="c_c_description">Velocidad de la luz en vacío, m·s^-1</string>
|
||||||
|
<string name="c_g_description">La constante gravitatoria es una constante física empírica consistente en el cálculo de la atracción gravitatoria entre objetos con masa, m^3·kg^−1·s^−2</string>
|
||||||
|
<string name="c_h_description">Constante física que refleja los tamaños de energía cuántica en mecánica cuántica, J·s</string>
|
||||||
|
<string name="c_h_reduced_description">Constante Planck reducida, J·s</string>
|
||||||
|
<string name="c_nan_description">No es un número</string>
|
||||||
|
<string name="c_infinity_description">Infinito</string>
|
||||||
|
<string name="c_calc_editor_hint">Introducir nuevo cálculo</string>
|
||||||
|
<string name="c_press_to_copy">Pulsar para copiar</string>
|
||||||
|
<string name="c_continue">Continuar</string>
|
||||||
|
<string name="c_donate">Donar</string>
|
||||||
|
<string name="c_donate_text" formatted="false">Puede dar las gracias por mail al autor de este programa\n\n
|
||||||
|
<a href="mailto:se.solovyev@gmail.com">se.solovyev@gmail.com</a>\n\n
|
||||||
|
donar dinero a través de\n\n
|
||||||
|
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=se%2esolovyev%40gmail%2ecom&lc=RU&item_name=Android%20Calculator&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted">
|
||||||
|
http://paypal.com
|
||||||
|
</a>\n\n
|
||||||
|
o evaluar el programa con 5 estrellas en\n\n
|
||||||
|
<a href="https://market.android.com/details?id=org.solovyev.android.calculator">android.market</a>\n
|
||||||
|
</string>
|
||||||
|
<string name="c_history">Historial</string>
|
||||||
|
<string name="c_history_button">M</string>
|
||||||
|
<string name="c_history_is_empty">¡El Historial está vacío!</string>
|
||||||
|
<string name="c_app_history">Historial</string>
|
||||||
|
<string name="c_char_is_not_accepted">El caracter \'%s\' no es aceptado en la variable name!</string>
|
||||||
|
<string name="c_calc_angle_units">Unidades de Ángulos</string>
|
||||||
|
<string name="p_deg">Grados</string>
|
||||||
|
<string name="p_rad">Radianes</string>
|
||||||
|
<string name="p_grad">Gradianes</string>
|
||||||
|
<string name="p_turns">Vueltas</string>
|
||||||
|
<string name="c_angle_units_summary">Define la unidad para ángulos predeterminada.</string>
|
||||||
|
<string name="c_calc_theme">Tema</string>
|
||||||
|
<string name="p_default_theme">Predeterminado</string>
|
||||||
|
<string name="p_violet_theme">Violeta</string>
|
||||||
|
<string name="p_light_blue_theme">Azul claro</string>
|
||||||
|
<string name="c_calc_result_precision_summary">Precisión del resultado (todos los cálculos se realizar con la máxima precisión a pesar del valor de esta opción)</string>
|
||||||
|
<string name="c_calc_color_display_summary">Ajustar colores y estilo en el editor de la calculadora</string>
|
||||||
|
<string name="c_calc_theme_summary">Establecer el tema para la Calculadora</string>
|
||||||
|
<string name="c_clear_history">Limpiar historial</string>
|
||||||
|
<string name="c_simplify_instead_of_numeric">Las constantes siguientes no están definidas: {0}!</string>
|
||||||
|
<string name="p_grouping_separator_no">No usar separador de Grupos</string>
|
||||||
|
<string name="p_grouping_separator_apostrophe">Apóstrofe (\')</string>
|
||||||
|
<string name="p_grouping_separator_space">Espacio ( )</string>
|
||||||
|
<string name="c_calc_grouping_separator">Separador de Grupos</string>
|
||||||
|
<string name="c_calc_grouping_separator_summary">Establecer el separador de Grupos</string>
|
||||||
|
<string name="c_calc_layout">Plantilla</string>
|
||||||
|
<string name="p_layout_cellphone">Teléfono</string>
|
||||||
|
<string name="p_layout_calculator">Calculadora</string>
|
||||||
|
<string name="c_calc_layout_summary">Establecer la plantilla de los botones</string>
|
||||||
|
<string name="c_calc_haptic_feedback_title">Configurar vibración</string>
|
||||||
|
<string name="c_calc_haptic_feedback_summary">Vibrar al pulsar un botón</string>
|
||||||
|
<string name="p_calc_haptic_feedback_strength_short">Corto</string>
|
||||||
|
<string name="p_calc_haptic_feedback_strength_middle">Medio</string>
|
||||||
|
<string name="p_calc_haptic_feedback_strength_long">Largo</string>
|
||||||
|
<string name="p_calc_haptic_feedback_duration_title">Duración de la vibración</string>
|
||||||
|
<string name="p_calc_haptic_feedback_duration_summary">Duración de la vibración al pulsar un butón</string>
|
||||||
|
<string name="c_functions">Funciones</string>
|
||||||
|
<string name="c_fun_description_sin">Función trigonométrica seno.</string>
|
||||||
|
<string name="c_fun_description_cos">Función trigonométrica coseno.</string>
|
||||||
|
<string name="c_fun_description_tan">Función trigonométrica tangente.</string>
|
||||||
|
<string name="c_fun_description_cot">Función trigonométrica cotangente.</string>
|
||||||
|
<string name="c_fun_description_asin">Arcseno - El inverso de la función seno.</string>
|
||||||
|
<string name="c_fun_description_acos">Arccoseno - El inverso de la función coseno.</string>
|
||||||
|
<string name="c_fun_description_atan">Arctangente - El inverso de la función tangente.</string>
|
||||||
|
<string name="c_fun_description_acot">Arccotangente - El inverso de la función cotangente.</string>
|
||||||
|
<string name="c_fun_description_ln">Logaritmo neperiano - logaritmo de base e.</string>
|
||||||
|
<string name="c_fun_description_lg">Decadic logaritmo - logaritmo de base 10.</string>
|
||||||
|
<string name="c_fun_description_exp">Función exponencial.</string>
|
||||||
|
<string name="c_fun_description_sqrt">Función Raíz cuadrado.</string>
|
||||||
|
<string name="c_fun_description_cubic">Función Raíz cuadrada.</string>
|
||||||
|
<string name="c_fun_description_abs">Función que devuelve el valor absoluto de un argumento.</string>
|
||||||
|
<string name="c_fun_description_sgn">Función que devuelve el signo de un argumento: -1 si el argumento es menor que 0, 0 si es igual a 0, 1 si es mayor que 0.</string>
|
||||||
|
<string name="c_fun_description_eq">Función Igual - Devuelve 1 si dos argumentos son iguales, 0 si no lo son.</string>
|
||||||
|
<string name="c_fun_description_le">Función Menor o igual - Devuelve 1 si dos argumentos son iguales o el primero es menor que el segundo, 0 si el primero es mayor.</string>
|
||||||
|
<string name="c_fun_description_ge">Función Mayor o igual - Devuelve 1 si dos argumentos son iguales o si el primero es mayor que el segundo, 0 si el primero es menor.</string>
|
||||||
|
<string name="c_fun_description_ne">Función Distinto - Devuelve 1 si dos argumentos no son iguales, 0 si son idénticos.</string>
|
||||||
|
<string name="c_fun_description_lt">Función Menor - Devuelve 1 si el primer argumento es menor que el segundo, 0 si no lo es.</string>
|
||||||
|
<string name="c_fun_description_gt">Función Mayor - Devuelve 1 si el primer argumento es mayor que el segundo, 0 si no lo es.</string>
|
||||||
|
<string name="c_fun_description_rad">Convierte grados a radianes: d - grados, m - minutos (por defecto = 0), s - segundos (por defecto = 0).</string>
|
||||||
|
<string name="c_fun_description_dms">Convierte grados de notación DMS a notación decimal: d - grados, m - minutos (por defecto = 0), s - segundos (por defecto = 0).</string>
|
||||||
|
<string name="c_fun_description_deg">Convierte radianes a grados.</string>
|
||||||
|
<string name="c_empty_var_error">No se puede crear una constante vacía!</string>
|
||||||
|
<string name="c_not_valid_result">El resultado actual no es válido!</string>
|
||||||
|
<string name="c_operators">Operadores</string>
|
||||||
|
<string name="c_op_description_mod">El módulo operación encuentra el resto de la división de \'x\' por \'y\'.</string>
|
||||||
|
<string name="c_op_description_sum">Función Suma \'f(i)\', iterativamente a través de \'i\' desde \'from\' hasta \'to\'.</string>
|
||||||
|
<string name="c_op_description_product">Devuelve el producto de las funciones \'f(i)\', iterativamente a través de \'i\' desde \'from\' hasta \'to\'.</string>
|
||||||
|
<string name="c_op_description_derivative">Devuelve el derivado de orden \'order\' (por defecto = 1) de funciones \'f(x)\' por \'x\' variable y calcula en el punto \'x_point\' (por defecto = el mismo que \'x\').</string>
|
||||||
|
<string name="c_op_description_integral">Devuelve la integral de la función \'f(x)\' por \'x\' variable.</string>
|
||||||
|
<string name="c_op_description_integral_ab">Función integral \'f(x)\' por \'x\' variable desde \'a\' hasta \'b\'.</string>
|
||||||
|
<string name="c_pf_description_factorial">Devuelve el factorial de la expresión antes.</string>
|
||||||
|
<string name="c_pf_description_percent" formatted="false">Devuelve el valor porcentaje de la expresión antes.\n
|
||||||
|
Ejemplos:\n
|
||||||
|
100 + 50% = 150\n
|
||||||
|
100 * 50% = 50\n
|
||||||
|
100 + 100 * 50% * 50% = 125\n
|
||||||
|
</string>
|
||||||
|
<string name="c_pf_description_degree">Convierte Grados a Radianes.\n
|
||||||
|
Ejemplos:\n
|
||||||
|
268° = 4.67748\n
|
||||||
|
30.21° = 0.52726\n
|
||||||
|
</string>
|
||||||
|
<string name="c_faq">FAQ</string>
|
||||||
|
<string name="c_hints">Consejos</string>
|
||||||
|
<string name="c_screens">Pantallas</string>
|
||||||
|
<string name="c_faq_content" formatted="false">
|
||||||
|
<b>¿Como puedo utilizar las funciones indicadas en las esquinas superior e inferior derechas de los botones?</b>\n\n
|
||||||
|
|
||||||
|
Mantenga pulsado el botón y deslícelo ligeramente hacia arriba o abajo. En función del valor mostrado en el\n
|
||||||
|
botón se realizará la acción deseada.\n\n
|
||||||
|
|
||||||
|
<b>¿Como puedo conmutar entre Radianes y Grados?</b>\n\n
|
||||||
|
|
||||||
|
Para conmutar entre las diferentes unidades de ángulo, puede ajustar la opción preferida en la configuración de\n
|
||||||
|
la aplicación\n
|
||||||
|
o bién utilizar el conmutador ubicado en el botón 6\n
|
||||||
|
(el valor actual está resaltado en color amarillo).\n
|
||||||
|
También puede utilizar las funciones deg() y rad() y el operador ° para convertir grados a radianes y viceversa.\n\n
|
||||||
|
|
||||||
|
<b>Ejemplos:</b>\n
|
||||||
|
268° = 4.67748\n
|
||||||
|
30.21° = 0.52726\n
|
||||||
|
rad(30, 21, 0) = 0.52726\n
|
||||||
|
deg(4.67748) = 268\n\n
|
||||||
|
|
||||||
|
<b>¿Soporta C+ %?</b>\n\n
|
||||||
|
|
||||||
|
Si, la función % puede encontrarse en la esquina superior derecha del botón / .\n\n
|
||||||
|
|
||||||
|
<b>Ejemplos:</b>\n\n
|
||||||
|
|
||||||
|
100 + 50% = 150\n
|
||||||
|
100 * 50% = 50\n
|
||||||
|
100 + 100 * 50% * 50% = 125\n
|
||||||
|
100 + (100 * 50% * (25 + 25)% + 100%) = 150\n\n
|
||||||
|
|
||||||
|
<b>Nota:</b>\n\n
|
||||||
|
|
||||||
|
100 + (20 + 20)% = 140,\n
|
||||||
|
<b>pero</b>\n
|
||||||
|
100+ (20% + 20%) = 124.0\n
|
||||||
|
100 + 50% ^ 2 = 2600,\n
|
||||||
|
<b>pero</b>\n
|
||||||
|
100 + 50 ^ 2% = 101.08\n\n
|
||||||
|
|
||||||
|
<b>¿Soporta C+ cálculos fraccionarios?</b>\n\n
|
||||||
|
|
||||||
|
Si, puede teclear la expresión fraccionaria en el editor y utilizar ≡ (en la esquina superior derecha del botón\n
|
||||||
|
= ). También puede utilizar ≡ para simplificar la expresión.\n\n
|
||||||
|
|
||||||
|
<b>Ejemplos:</b>\n\n
|
||||||
|
|
||||||
|
2/3 + 5/9 ≡ 11/9\n
|
||||||
|
2/9 + 3/123 ≡ 91/369\n
|
||||||
|
(6 - t) ^ 3 ≡ 216 - 108t + 18t ^ 2 - t ^ 3\n\n
|
||||||
|
|
||||||
|
<b>¿Soporta C+ cálculos complejos?</b>\n\n
|
||||||
|
|
||||||
|
Si, simplemente introduzca la expresión compleja (utilizando i o √(-1) como número imaginario).\n\n
|
||||||
|
|
||||||
|
<b>Ejemplos:</b>\n\n
|
||||||
|
|
||||||
|
(2i + 1) ^ = -3 + 4i\n
|
||||||
|
e ^ i = 0.5403 + 0.84147i\n\n
|
||||||
|
|
||||||
|
<b>¿Puede C+ dibujar gráficas de las funciones?</b>\n\n
|
||||||
|
|
||||||
|
No, actualmente C+ no puede dibujar gráficas.\n\n
|
||||||
|
|
||||||
|
<b>¿Soporta C+ cálculos matriciales?</b>\n\n
|
||||||
|
|
||||||
|
No, no los soporta.\n\n
|
||||||
|
|
||||||
|
<b>¿Porqué obtengo 1.76732452452345E-17 en lugar de 0?</b>\n\n
|
||||||
|
|
||||||
|
Compruebe la opción \'Redondear resultado\' en la configuración de la aplicación - debe activarla.\n
|
||||||
|
</string>
|
||||||
|
<string name="c_hints_content">1. Puede omitir signos de multiplicación innecesarios (en lugar de 3*t o t*sin(π*t)simplemente escriba 3t o tsin(πt))\n\n
|
||||||
|
|
||||||
|
2. Utilice ≡ (en la esquina superior derecha del botón = ) para simplificar la expresión\n\n
|
||||||
|
|
||||||
|
3. Haga clic en el resultado para copiarlo al portapapeles\n\n
|
||||||
|
|
||||||
|
4. Raravez deberá utilizar el botón = ya que el resultado se va calculando automáticamente conforme introduce las funciones\n\n
|
||||||
|
|
||||||
|
5. Añada constantes para los valores usados habitualmente (incluso puede grabar expresiones)\n\n
|
||||||
|
|
||||||
|
6. Utilice las variables ubicadas en los botones 4 y 5\n\n
|
||||||
|
|
||||||
|
</string>
|
||||||
|
<string name="c_screens_content">1.
|
||||||
|
<b>Pantalla principal:</b>
|
||||||
|
Se muestra al inicio de la aplicación. Puede llegar a ella desde otra pantalla pulsando el botón Atrás.\n\n
|
||||||
|
|
||||||
|
2.
|
||||||
|
<b>Pantalla de Variables y Constantes:</b>
|
||||||
|
contiene una lista de las constantes disponibles. Puede añadir más constantes y variables haciendo clic en el
|
||||||
|
botón Añadir. Un Clic corto en variable/constante la inserta en el editor, Clic largo - abre la ventana del
|
||||||
|
editor de variables. Puede llegar a ella desde la pantalla principal pulsando el botón π,… .\n\n
|
||||||
|
|
||||||
|
3.
|
||||||
|
<b>Pantalla de Funciones:</b>
|
||||||
|
contiene una lista de todas las funciones disponibles. Un Clic corto en la función la inserta en el editor.
|
||||||
|
Puede llegar a ella desde la pantalla principal pulsando el botón f(x).\n\n
|
||||||
|
|
||||||
|
4.
|
||||||
|
<b>Pantalla de Operadores:</b>
|
||||||
|
contiene una lista de todos los operadores disponibles. Un Clic corto en el operador lo inserta en el editor.
|
||||||
|
Puede llegar a él desde la pantalla principal pulsando el botón ∂,… .\n\n
|
||||||
|
|
||||||
|
5.
|
||||||
|
<b>Pantalla de Historial:</b>
|
||||||
|
contiene una lista de todas las acciones realizadas por el usuario. Un Clic corto en el elemento Historial lo
|
||||||
|
inserta en el editor. Puede llegar a él desde la pantalla principal pulsando el botón M .\n\n
|
||||||
|
|
||||||
|
6.
|
||||||
|
<b>Pantalla de Configuración:</b>
|
||||||
|
contiene los ajustes de la aplicación. Puede llegar a él desde la pantalla principal seleccionando la opción
|
||||||
|
Configuración del menú.\n\n
|
||||||
|
</string>
|
||||||
|
</resources>
|
@ -43,7 +43,6 @@
|
|||||||
|
|
||||||
<string name="c_undo">annulla</string>
|
<string name="c_undo">annulla</string>
|
||||||
<string name="c_redo">rifai</string>
|
<string name="c_redo">rifai</string>
|
||||||
<string name="c_clear">CE</string>
|
|
||||||
<string name="c_erase">cancella</string>
|
<string name="c_erase">cancella</string>
|
||||||
<string name="c_paste">incolla</string>
|
<string name="c_paste">incolla</string>
|
||||||
<string name="c_vars">vars</string>
|
<string name="c_vars">vars</string>
|
||||||
@ -255,7 +254,7 @@ Controlla l\'opzione \'Arrotonda risultato\' nelle impostazioni dell\'applicazio
|
|||||||
2. Utilizza = (nell\'angolo in alto a destra del pulsante = ) per semplificare l\'espressione\n\n
|
2. Utilizza = (nell\'angolo in alto a destra del pulsante = ) per semplificare l\'espressione\n\n
|
||||||
3. Basta fare click sul risultato per copiarlo negli appunti\n\n
|
3. Basta fare click sul risultato per copiarlo negli appunti\n\n
|
||||||
4. Usa raramente il pulsante = - il risultato è calcolato in tempo reale\n\n
|
4. Usa raramente il pulsante = - il risultato è calcolato in tempo reale\n\n
|
||||||
4. Aggiungi costanti per i valori usati spesso (è possibile salvare anche le espressioni)\n\n
|
5. Aggiungi costanti per i valori usati spesso (è possibile salvare anche le espressioni)\n\n
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<string name="c_screens_content">
|
<string name="c_screens_content">
|
||||||
|
@ -29,7 +29,8 @@
|
|||||||
Если вы хотите поддержать проект материально\nвы можете сделать это через \n<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=se%2esolovyev%40gmail%2ecom&lc=RU&item_name=Android%20Calculator&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted">http://paypal.com</a>\n\n
|
Если вы хотите поддержать проект материально\nвы можете сделать это через \n<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=se%2esolovyev%40gmail%2ecom&lc=RU&item_name=Android%20Calculator&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted">http://paypal.com</a>\n\n
|
||||||
Если вам понравилось приложение -\nпоставьте 5 звёздочек в\n<a href="https://market.android.com/details?id=org.solovyev.android.calculator">андроид.маркете</a>\n\n
|
Если вам понравилось приложение -\nпоставьте 5 звёздочек в\n<a href="https://market.android.com/details?id=org.solovyev.android.calculator">андроид.маркете</a>\n\n
|
||||||
Спасибо тем, кто переводил Калькулятор++:\n
|
Спасибо тем, кто переводил Калькулятор++:\n
|
||||||
на итальянский - Gabriele Ravanetti\n\n
|
на итальянский - Gabriele Ravanetti\n
|
||||||
|
на испанский - Jordi Luna\т\n
|
||||||
Это приложение использует следующие открытые библиотеки:\n
|
Это приложение использует следующие открытые библиотеки:\n
|
||||||
<a href="http://simple.sourceforge.net">Simple (XML serialization)</a>\n
|
<a href="http://simple.sourceforge.net">Simple (XML serialization)</a>\n
|
||||||
<a href="http://meditorworld.appspot.com/meditor.txt">JSCL</a>\n
|
<a href="http://meditorworld.appspot.com/meditor.txt">JSCL</a>\n
|
||||||
@ -104,7 +105,7 @@
|
|||||||
<string name="p_turns">Обороты</string>
|
<string name="p_turns">Обороты</string>
|
||||||
<string name="c_angle_units_summary">Устанавливает единицы измерения углов.</string>
|
<string name="c_angle_units_summary">Устанавливает единицы измерения углов.</string>
|
||||||
|
|
||||||
<string name="c_calc_numeral_bases">Системы счичления</string>
|
<string name="c_calc_numeral_bases">Системы счисления</string>
|
||||||
<string name="c_numeral_bases_summary">Устанавливает систему счисления для всех вводимых чисел.</string>
|
<string name="c_numeral_bases_summary">Устанавливает систему счисления для всех вводимых чисел.</string>
|
||||||
<string name="p_dec">Десятичная</string>
|
<string name="p_dec">Десятичная</string>
|
||||||
<string name="p_hex">Шестнадцатеричная</string>
|
<string name="p_hex">Шестнадцатеричная</string>
|
||||||
@ -264,8 +265,8 @@ e ^ i = 0.5403 + 0.84147i\n
|
|||||||
2. Используйте ≡ (в верхнем правом углу кнопки =) для упрощения выражения.\n\n
|
2. Используйте ≡ (в верхнем правом углу кнопки =) для упрощения выражения.\n\n
|
||||||
3. Нажмите на результат для того, чтобы скопировать его в буфер обмена.\n\n
|
3. Нажмите на результат для того, чтобы скопировать его в буфер обмена.\n\n
|
||||||
4. Используйте кнопку = реже - результат вычисляется на лету.\n\n
|
4. Используйте кнопку = реже - результат вычисляется на лету.\n\n
|
||||||
4. Создайте константы для часто используемых значений (таким образом вы можете даже сохранять выражения).
|
5. Создайте константы для часто используемых значений (таким образом вы можете даже сохранять выражения).
|
||||||
5. Используйте переменные расположенные на 4 и 5 клавише.\n\n
|
6. Используйте переменные расположенные на 4 и 5 клавише.\n\n
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<string name="c_screens_content">
|
<string name="c_screens_content">
|
||||||
|
@ -30,7 +30,8 @@
|
|||||||
If you want to support the project\nyou can donate money via\n<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=se%2esolovyev%40gmail%2ecom&lc=RU&item_name=Android%20Calculator&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted">http://paypal.com</a>\n\n
|
If you want to support the project\nyou can donate money via\n<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=se%2esolovyev%40gmail%2ecom&lc=RU&item_name=Android%20Calculator&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donateCC_LG%2egif%3aNonHosted">http://paypal.com</a>\n\n
|
||||||
If you like the application\nrank it with 5 stars in\n<a href="https://market.android.com/details?id=org.solovyev.android.calculator">android.market</a>\n\n
|
If you like the application\nrank it with 5 stars in\n<a href="https://market.android.com/details?id=org.solovyev.android.calculator">android.market</a>\n\n
|
||||||
Thanks to people who translate Calculator++ in different languages:\n
|
Thanks to people who translate Calculator++ in different languages:\n
|
||||||
Italian - Gabriele Ravanetti\n\n
|
Italian - Gabriele Ravanetti\n
|
||||||
|
Spanish - Jordi Luna\n\n
|
||||||
This application uses next open source libraries:\n
|
This application uses next open source libraries:\n
|
||||||
<a href="http://simple.sourceforge.net">Simple (XML serialization)</a>\n
|
<a href="http://simple.sourceforge.net">Simple (XML serialization)</a>\n
|
||||||
<a href="http://meditorworld.appspot.com/meditor.txt">JSCL</a>\n
|
<a href="http://meditorworld.appspot.com/meditor.txt">JSCL</a>\n
|
||||||
@ -39,7 +40,7 @@
|
|||||||
|
|
||||||
<string name="c_undo">undo</string>
|
<string name="c_undo">undo</string>
|
||||||
<string name="c_redo">redo</string>
|
<string name="c_redo">redo</string>
|
||||||
<string name="c_clear">CE</string>
|
<string name="c_clear">C</string>
|
||||||
<string name="c_erase">clear</string>
|
<string name="c_erase">clear</string>
|
||||||
<string name="c_paste">paste</string>
|
<string name="c_paste">paste</string>
|
||||||
<string name="c_vars">vars</string>
|
<string name="c_vars">vars</string>
|
||||||
@ -267,8 +268,8 @@ Check the \'Round result\' preference in application settings - it should be tur
|
|||||||
2. Use ≡ (in the top right corner of = button) to simplify expression\n\n
|
2. Use ≡ (in the top right corner of = button) to simplify expression\n\n
|
||||||
3. Just click on the result to copy it to the clipboard\n\n
|
3. Just click on the result to copy it to the clipboard\n\n
|
||||||
4. Use = button seldom - result is calculating on the fly\n\n
|
4. Use = button seldom - result is calculating on the fly\n\n
|
||||||
4. Add constants for often used values (you can even save expressions)\n\n
|
5. Add constants for often used values (you can even save expressions)\n\n
|
||||||
5. Use variables located on 4 and 5 buttons\n\n
|
6. Use variables located on 4 and 5 buttons\n\n
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
<string name="c_screens_content">
|
<string name="c_screens_content">
|
||||||
|
@ -30,7 +30,6 @@ import org.solovyev.android.calculator.model.CalculatorEngine;
|
|||||||
import org.solovyev.android.view.FontSizeAdjuster;
|
import org.solovyev.android.view.FontSizeAdjuster;
|
||||||
import org.solovyev.android.view.prefs.ResourceCache;
|
import org.solovyev.android.view.prefs.ResourceCache;
|
||||||
import org.solovyev.android.view.widgets.*;
|
import org.solovyev.android.view.widgets.*;
|
||||||
import org.solovyev.common.BooleanMapper;
|
|
||||||
import org.solovyev.common.utils.Announcer;
|
import org.solovyev.common.utils.Announcer;
|
||||||
import org.solovyev.common.utils.Point2d;
|
import org.solovyev.common.utils.Point2d;
|
||||||
import org.solovyev.common.utils.history.HistoryAction;
|
import org.solovyev.common.utils.history.HistoryAction;
|
||||||
@ -288,7 +287,7 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
|
|||||||
|
|
||||||
|
|
||||||
private synchronized void setLayout(@NotNull SharedPreferences preferences) {
|
private synchronized void setLayout(@NotNull SharedPreferences preferences) {
|
||||||
final Map<String, Integer> layouts = RClassUtils.getCache(R.layout.class);
|
final Map<String, Integer> layouts = ResourceCache.instance.getNameToIdCache(R.layout.class);
|
||||||
|
|
||||||
layoutName = preferences.getString(getString(R.string.p_calc_layout_key), getString(R.string.p_calc_layout));
|
layoutName = preferences.getString(getString(R.string.p_calc_layout_key), getString(R.string.p_calc_layout));
|
||||||
|
|
||||||
@ -304,7 +303,7 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
|
|||||||
}
|
}
|
||||||
|
|
||||||
private synchronized void setTheme(@NotNull SharedPreferences preferences) {
|
private synchronized void setTheme(@NotNull SharedPreferences preferences) {
|
||||||
final Map<String, Integer> styles = RClassUtils.getCache(R.style.class);
|
final Map<String, Integer> styles = ResourceCache.instance.getNameToIdCache(R.style.class);
|
||||||
|
|
||||||
themeName = preferences.getString(getString(R.string.p_calc_theme_key), getString(R.string.p_calc_theme));
|
themeName = preferences.getString(getString(R.string.p_calc_theme_key), getString(R.string.p_calc_theme));
|
||||||
|
|
||||||
@ -553,9 +552,5 @@ public class CalculatorActivity extends Activity implements FontSizeAdjuster, Sh
|
|||||||
CalculatorEngine.instance.reset(this, preferences);
|
CalculatorEngine.instance.reset(this, preferences);
|
||||||
this.calculatorModel.evaluate();
|
this.calculatorModel.evaluate();
|
||||||
}
|
}
|
||||||
|
|
||||||
final Boolean colorExpressionsInBracketsDefault = new BooleanMapper().parseValue(this.getString(R.string.p_calc_color_display));
|
|
||||||
assert colorExpressionsInBracketsDefault != null;
|
|
||||||
this.calculatorModel.getEditor().setHighlightText(preferences.getBoolean(this.getString(R.string.p_calc_color_display_key), colorExpressionsInBracketsDefault));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -6,6 +6,7 @@
|
|||||||
package org.solovyev.android.calculator;
|
package org.solovyev.android.calculator;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.SharedPreferences;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
@ -22,7 +23,10 @@ import org.solovyev.android.calculator.model.TextProcessor;
|
|||||||
* Date: 9/17/11
|
* Date: 9/17/11
|
||||||
* Time: 12:25 AM
|
* Time: 12:25 AM
|
||||||
*/
|
*/
|
||||||
public class CalculatorEditor extends EditText {
|
public class CalculatorEditor extends EditText implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
|
private static final String CALC_COLOR_DISPLAY_KEY = "org.solovyev.android.calculator.CalculatorModel_color_display";
|
||||||
|
private static final boolean CALC_COLOR_DISPLAY_DEFAULT = true;
|
||||||
|
|
||||||
private boolean highlightText = true;
|
private boolean highlightText = true;
|
||||||
|
|
||||||
@ -104,4 +108,15 @@ public class CalculatorEditor extends EditText {
|
|||||||
this.highlightText = highlightText;
|
this.highlightText = highlightText;
|
||||||
redraw();
|
redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSharedPreferenceChanged(SharedPreferences preferences, String key) {
|
||||||
|
if (CALC_COLOR_DISPLAY_KEY.equals(key)) {
|
||||||
|
this.setHighlightText(preferences.getBoolean(CALC_COLOR_DISPLAY_KEY, CALC_COLOR_DISPLAY_DEFAULT));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void init(@NotNull SharedPreferences preferences) {
|
||||||
|
onSharedPreferenceChanged(preferences, CALC_COLOR_DISPLAY_KEY);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,6 @@ import org.solovyev.android.calculator.model.CalculatorParseException;
|
|||||||
import org.solovyev.android.calculator.model.Var;
|
import org.solovyev.android.calculator.model.Var;
|
||||||
import org.solovyev.android.view.CursorControl;
|
import org.solovyev.android.view.CursorControl;
|
||||||
import org.solovyev.android.view.HistoryControl;
|
import org.solovyev.android.view.HistoryControl;
|
||||||
import org.solovyev.common.BooleanMapper;
|
|
||||||
import org.solovyev.common.msg.Message;
|
import org.solovyev.common.msg.Message;
|
||||||
import org.solovyev.common.utils.CollectionsUtils;
|
import org.solovyev.common.utils.CollectionsUtils;
|
||||||
import org.solovyev.common.utils.MutableObject;
|
import org.solovyev.common.utils.MutableObject;
|
||||||
@ -66,10 +65,8 @@ public enum CalculatorModel implements CursorControl, HistoryControl<CalculatorH
|
|||||||
this.calculatorEngine = calculator;
|
this.calculatorEngine = calculator;
|
||||||
|
|
||||||
this.editor = (CalculatorEditor) activity.findViewById(R.id.calculatorEditor);
|
this.editor = (CalculatorEditor) activity.findViewById(R.id.calculatorEditor);
|
||||||
|
this.editor.init(preferences);
|
||||||
final Boolean colorExpressionsInBracketsDefault = new BooleanMapper().parseValue(activity.getString(R.string.p_calc_color_display));
|
preferences.registerOnSharedPreferenceChangeListener(editor);
|
||||||
assert colorExpressionsInBracketsDefault != null;
|
|
||||||
this.editor.setHighlightText(preferences.getBoolean(activity.getString(R.string.p_calc_color_display_key), colorExpressionsInBracketsDefault));
|
|
||||||
|
|
||||||
this.display = (CalculatorDisplay) activity.findViewById(R.id.calculatorDisplay);
|
this.display = (CalculatorDisplay) activity.findViewById(R.id.calculatorDisplay);
|
||||||
this.display.setOnClickListener(new CalculatorDisplayOnClickListener(activity));
|
this.display.setOnClickListener(new CalculatorDisplayOnClickListener(activity));
|
||||||
@ -384,11 +381,6 @@ public enum CalculatorModel implements CursorControl, HistoryControl<CalculatorH
|
|||||||
return CalculatorDisplayHistoryState.newInstance(display);
|
return CalculatorDisplayHistoryState.newInstance(display);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public CalculatorEditor getEditor() {
|
|
||||||
return editor;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public CalculatorDisplay getDisplay() {
|
public CalculatorDisplay getDisplay() {
|
||||||
return display;
|
return display;
|
||||||
|
@ -1,55 +0,0 @@
|
|||||||
/*
|
|
||||||
* 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
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.solovyev.android.calculator;
|
|
||||||
|
|
||||||
import android.util.Log;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.lang.reflect.Modifier;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* User: serso
|
|
||||||
* Date: 10/30/11
|
|
||||||
* Time: 1:11 AM
|
|
||||||
*/
|
|
||||||
public class RClassUtils {
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private final static Map<Class<?>, Map<String, Integer>> caches = new HashMap<Class<?>, Map<String, Integer>>(3);
|
|
||||||
|
|
||||||
// not intended for instantiation
|
|
||||||
private RClassUtils() {
|
|
||||||
throw new AssertionError();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public static Map<String, Integer> getCache(@NotNull Class<?> clazz) {
|
|
||||||
Map<String, Integer> result = caches.get(clazz);
|
|
||||||
|
|
||||||
if (result == null) {
|
|
||||||
result = new HashMap<String, Integer>();
|
|
||||||
|
|
||||||
for (Field field : clazz.getDeclaredFields()) {
|
|
||||||
int modifiers = field.getModifiers();
|
|
||||||
if (Modifier.isFinal(modifiers) && Modifier.isStatic(modifiers)) {
|
|
||||||
try {
|
|
||||||
result.put(field.getName(), field.getInt(R.style.class));
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
Log.e(CalculatorActivity.class.getName(), e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
caches.put(clazz, result);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
|
@ -9,8 +9,7 @@ package org.solovyev.android.calculator.model;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.solovyev.android.calculator.R;
|
import org.solovyev.android.view.prefs.ResourceCache;
|
||||||
import org.solovyev.android.calculator.RClassUtils;
|
|
||||||
import org.solovyev.common.definitions.IBuilder;
|
import org.solovyev.common.definitions.IBuilder;
|
||||||
import org.solovyev.common.math.MathEntity;
|
import org.solovyev.common.math.MathEntity;
|
||||||
import org.solovyev.common.math.MathRegistry;
|
import org.solovyev.common.math.MathRegistry;
|
||||||
@ -42,27 +41,17 @@ public abstract class AndroidMathRegistryImpl<T extends MathEntity> implements A
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public String getDescription(@NotNull Context context, @NotNull String name) {
|
public String getDescription(@NotNull Context context, @NotNull String name) {
|
||||||
final String result;
|
final String stringName;
|
||||||
|
|
||||||
final Map<String, Integer> stringsCache = RClassUtils.getCache(R.string.class);
|
|
||||||
|
|
||||||
final Integer stringId;
|
|
||||||
|
|
||||||
final Map<String, String> substitutes = getSubstitutes();
|
final Map<String, String> substitutes = getSubstitutes();
|
||||||
final String substitute = substitutes.get(name);
|
final String substitute = substitutes.get(name);
|
||||||
if (substitute == null) {
|
if (substitute == null) {
|
||||||
stringId = stringsCache.get(prefix + name);
|
stringName = prefix + name;
|
||||||
} else {
|
} else {
|
||||||
stringId = stringsCache.get(prefix + substitute);
|
stringName = prefix + substitute;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stringId != null) {
|
return ResourceCache.instance.getCaption(stringName);
|
||||||
result = context.getString(stringId);
|
|
||||||
} else {
|
|
||||||
result = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
@ -30,6 +30,9 @@ public enum ResourceCache {
|
|||||||
|
|
||||||
instance;
|
instance;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private static final Locale DEFAULT_LOCALE = Locale.ENGLISH;
|
||||||
|
|
||||||
// ids of drag buttons in R.class
|
// ids of drag buttons in R.class
|
||||||
private List<Integer> dragButtonIds = null;
|
private List<Integer> dragButtonIds = null;
|
||||||
|
|
||||||
@ -44,6 +47,9 @@ public enum ResourceCache {
|
|||||||
|
|
||||||
private Context context;
|
private Context context;
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private final NameToIdCache nameToIdCache = new NameToIdCache();
|
||||||
|
|
||||||
public List<Integer> getDragButtonIds() {
|
public List<Integer> getDragButtonIds() {
|
||||||
return dragButtonIds;
|
return dragButtonIds;
|
||||||
}
|
}
|
||||||
@ -54,7 +60,8 @@ public enum ResourceCache {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Method load captions for default locale using android R class
|
* Method load captions for default locale using android R class
|
||||||
* @param context STATIC CONTEXT
|
*
|
||||||
|
* @param context STATIC CONTEXT
|
||||||
* @param resourceClass class of captions in android (SUBCLASS of R class)
|
* @param resourceClass class of captions in android (SUBCLASS of R class)
|
||||||
*/
|
*/
|
||||||
public void initCaptions(@NotNull Context context, @NotNull Class<?> resourceClass) {
|
public void initCaptions(@NotNull Context context, @NotNull Class<?> resourceClass) {
|
||||||
@ -63,9 +70,10 @@ public enum ResourceCache {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Method load captions for specified locale using android R class
|
* Method load captions for specified locale using android R class
|
||||||
* @param context STATIC CONTEXT
|
*
|
||||||
|
* @param context STATIC CONTEXT
|
||||||
* @param resourceClass class of captions in android (SUBCLASS of R class)
|
* @param resourceClass class of captions in android (SUBCLASS of R class)
|
||||||
* @param locale language to be used for translation
|
* @param locale language to be used for translation
|
||||||
*/
|
*/
|
||||||
public void initCaptions(@NotNull Context context, @NotNull Class<?> resourceClass, @NotNull Locale locale) {
|
public void initCaptions(@NotNull Context context, @NotNull Class<?> resourceClass, @NotNull Locale locale) {
|
||||||
assert this.resourceClass == null || this.resourceClass.equals(resourceClass);
|
assert this.resourceClass == null || this.resourceClass.equals(resourceClass);
|
||||||
@ -84,6 +92,8 @@ public enum ResourceCache {
|
|||||||
captionsByLanguage.put(field.getName(), context.getString(captionId));
|
captionsByLanguage.put(field.getName(), context.getString(captionId));
|
||||||
} catch (IllegalAccessException e) {
|
} catch (IllegalAccessException e) {
|
||||||
Log.e(ResourceCache.class.getName(), e.getMessage());
|
Log.e(ResourceCache.class.getName(), e.getMessage());
|
||||||
|
} catch (Resources.NotFoundException e) {
|
||||||
|
Log.e(ResourceCache.class.getName(), "Caption with name " + field.getName() + " was not found for " + locale.getLanguage() + " language: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,15 +117,15 @@ public enum ResourceCache {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param captionId id of caption to be translated
|
* @param captionId id of caption to be translated
|
||||||
* @param locale language to be used for translation
|
* @param locale language to be used for translation
|
||||||
* @return translation by caption id in specified language, null if no translation in specified language present
|
* @return translation by caption id in specified language, null if no translation in specified language present
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public String getCaption(@NotNull String captionId, @NotNull final Locale locale) {
|
public String getCaption(@NotNull String captionId, @NotNull final Locale locale) {
|
||||||
Map<String, String> captionsByLanguage = captions.get(locale.getLanguage());
|
Map<String, String> captionsByLanguage = captions.get(locale.getLanguage());
|
||||||
if (captionsByLanguage != null) {
|
if (captionsByLanguage != null) {
|
||||||
return captionsByLanguage.get(captionId);
|
return getCaption(captionsByLanguage, captionId, locale);
|
||||||
} else {
|
} else {
|
||||||
assert resourceClass != null && context != null;
|
assert resourceClass != null && context != null;
|
||||||
|
|
||||||
@ -123,13 +133,22 @@ public enum ResourceCache {
|
|||||||
|
|
||||||
captionsByLanguage = captions.get(locale.getLanguage());
|
captionsByLanguage = captions.get(locale.getLanguage());
|
||||||
if (captionsByLanguage != null) {
|
if (captionsByLanguage != null) {
|
||||||
return captionsByLanguage.get(captionId);
|
return getCaption(captionsByLanguage, captionId, locale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private String getCaption(@NotNull Map<String, String> captionsByLanguage, @NotNull String captionId, @NotNull Locale locale) {
|
||||||
|
String result = captionsByLanguage.get(captionId);
|
||||||
|
if (result == null && !locale.getLanguage().equals(DEFAULT_LOCALE.getLanguage())) {
|
||||||
|
result = getCaption(captionId, DEFAULT_LOCALE);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public void init(@NotNull Class<?> resourceClass, @NotNull Activity activity) {
|
public void init(@NotNull Class<?> resourceClass, @NotNull Activity activity) {
|
||||||
dragButtonIds = new ArrayList<Integer>();
|
dragButtonIds = new ArrayList<Integer>();
|
||||||
buttonIds = new ArrayList<Integer>();
|
buttonIds = new ArrayList<Integer>();
|
||||||
@ -152,4 +171,44 @@ public enum ResourceCache {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public Map<String, Integer> getNameToIdCache(@NotNull Class<?> clazz) {
|
||||||
|
return this.nameToIdCache.getCache(clazz);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static class NameToIdCache {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
private final Map<Class<?>, Map<String, Integer>> caches = new HashMap<Class<?>, Map<String, Integer>>(3);
|
||||||
|
|
||||||
|
// not intended for instantiation
|
||||||
|
private NameToIdCache() {
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public Map<String, Integer> getCache(@NotNull Class<?> clazz) {
|
||||||
|
Map<String, Integer> result = caches.get(clazz);
|
||||||
|
|
||||||
|
if (result == null) {
|
||||||
|
result = new HashMap<String, Integer>();
|
||||||
|
|
||||||
|
for (Field field : clazz.getDeclaredFields()) {
|
||||||
|
int modifiers = field.getModifiers();
|
||||||
|
if (Modifier.isFinal(modifiers) && Modifier.isStatic(modifiers)) {
|
||||||
|
try {
|
||||||
|
result.put(field.getName(), field.getInt(clazz));
|
||||||
|
} catch (IllegalAccessException e) {
|
||||||
|
Log.e(CalculatorActivity.class.getName(), e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
caches.put(clazz, result);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -89,9 +89,10 @@ public class ColorButton extends Button {
|
|||||||
feedbackPaint.setStyle(Style.STROKE);
|
feedbackPaint.setStyle(Style.STROKE);
|
||||||
feedbackPaint.setStrokeWidth(2);
|
feedbackPaint.setStrokeWidth(2);
|
||||||
|
|
||||||
|
|
||||||
if (CollectionsUtils.contains(getText().toString(), Arrays.asList("+", "-", "/", "×"))) {
|
if (CollectionsUtils.contains(getText().toString(), Arrays.asList("+", "-", "/", "×"))) {
|
||||||
getPaint().setColor(resources.getColor(R.color.button_operator_text_color));
|
getPaint().setColor(resources.getColor(R.color.button_operator_text_color));
|
||||||
} else if (getText().toString().equals("CE")) {
|
} else if (getText().toString().equals("C")) {
|
||||||
getPaint().setColor(resources.getColor(R.color.button_ce_text_color));
|
getPaint().setColor(resources.getColor(R.color.button_ce_text_color));
|
||||||
} else {
|
} else {
|
||||||
getPaint().setColor(resources.getColor(R.color.button_text_color));
|
getPaint().setColor(resources.getColor(R.color.button_text_color));
|
||||||
|
Loading…
Reference in New Issue
Block a user