diff options
Diffstat (limited to 'java')
21 files changed, 127 insertions, 68 deletions
diff --git a/java/res/values-sw600dp/config.xml b/java/res/values-sw600dp/config.xml index 4c73f3912..ade376a33 100644 --- a/java/res/values-sw600dp/config.xml +++ b/java/res/values-sw600dp/config.xml @@ -20,6 +20,7 @@ <resources> <bool name="config_enable_show_settings_key_option">true</bool> + <bool name="config_default_show_settings_key">true</bool> <bool name="config_enable_show_voice_key_option">false</bool> <bool name="config_enable_show_popup_on_keypress_option">false</bool> <bool name="config_enable_show_recorrection_option">false</bool> diff --git a/java/res/values-sw768dp/config.xml b/java/res/values-sw768dp/config.xml index 2dcf7b8fb..091d62e59 100644 --- a/java/res/values-sw768dp/config.xml +++ b/java/res/values-sw768dp/config.xml @@ -20,6 +20,7 @@ <resources> <bool name="config_enable_show_settings_key_option">false</bool> + <bool name="config_default_show_settings_key">true</bool> <bool name="config_enable_show_voice_key_option">false</bool> <bool name="config_enable_show_popup_on_keypress_option">false</bool> <bool name="config_enable_show_recorrection_option">false</bool> diff --git a/java/res/values/config.xml b/java/res/values/config.xml index ed7e0e5ab..731f63f34 100644 --- a/java/res/values/config.xml +++ b/java/res/values/config.xml @@ -20,6 +20,7 @@ <resources> <bool name="config_enable_show_settings_key_option">true</bool> + <bool name="config_default_show_settings_key">false</bool> <bool name="config_enable_show_voice_key_option">true</bool> <bool name="config_enable_show_popup_on_keypress_option">true</bool> <bool name="config_enable_show_recorrection_option">true</bool> diff --git a/java/res/values/donottranslate.xml b/java/res/values/donottranslate.xml index 7d6021ba1..0d18d907d 100644 --- a/java/res/values/donottranslate.xml +++ b/java/res/values/donottranslate.xml @@ -32,8 +32,11 @@ magic_space_swapping_symbols | magic_space_stripping_symbols | magic_space_neutral_symbols \ non_word_separator_symbols --> - <!-- Label for ALT modifier key. Must be short to fit on key! --> - <string name="label_alt_key">ALT</string> + <!-- Label for "switch to more symbol" modifier key. Must be short to fit on key! --> + <string name="label_to_more_symbol_key">= \\ <</string> + <!-- Label for "switch to more symbol" modifier key on tablets. Must be short to fit on key! --> + <string name="label_to_more_symbol_for_tablet_key">\\ ^ [ {</string> + <!-- Label for "Tab" key. Must be short to fit on key! --> <string name="label_tab_key">Tab</string> <!-- Label for "switch to phone numeric" key. Must be short to fit on key! --> diff --git a/java/res/xml-sw600dp/kbd_key_styles.xml b/java/res/xml-sw600dp/kbd_key_styles.xml index 5c693f419..05b683707 100644 --- a/java/res/xml-sw600dp/kbd_key_styles.xml +++ b/java/res/xml-sw600dp/kbd_key_styles.xml @@ -105,12 +105,17 @@ latin:keyLabelOption="fontNormal" latin:parentStyle="functionalKeyStyle" /> <key-style - latin:styleName="moreKeyStyle" + latin:styleName="toMoreSymbolKeyStyle" latin:code="@integer/key_shift" - latin:keyLabel="@string/label_more_key" + latin:keyLabel="@string/label_to_more_symbol_for_tablet_key" latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="backFromMoreSymbolKeyStyle" + latin:code="@integer/key_shift" + latin:keyLabel="@string/label_to_symbol_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="comKeyStyle" latin:keyLabel="@string/keylabel_for_popular_domain" diff --git a/java/res/xml-sw600dp/kbd_phone.xml b/java/res/xml-sw600dp/kbd_phone.xml index 7b584c142..0331389c1 100644 --- a/java/res/xml-sw600dp/kbd_phone.xml +++ b/java/res/xml-sw600dp/kbd_phone.xml @@ -76,7 +76,7 @@ </Row> <Row> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="toMoreSymbolKeyStyle" latin:keyWidth="11.0%p" /> <Key latin:keyLabel="(" diff --git a/java/res/xml-sw600dp/kbd_phone_shift.xml b/java/res/xml-sw600dp/kbd_phone_shift.xml index 483964526..2b6936dce 100644 --- a/java/res/xml-sw600dp/kbd_phone_shift.xml +++ b/java/res/xml-sw600dp/kbd_phone_shift.xml @@ -84,7 +84,7 @@ </Row> <Row> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyWidth="11.00%p" /> <Key latin:keyLabel="(" diff --git a/java/res/xml-sw600dp/kbd_rows_symbols.xml b/java/res/xml-sw600dp/kbd_rows_symbols.xml index 058c97efd..4f6a9bc31 100644 --- a/java/res/xml-sw600dp/kbd_rows_symbols.xml +++ b/java/res/xml-sw600dp/kbd_rows_symbols.xml @@ -100,7 +100,7 @@ latin:keyWidth="8.9%p" > <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="toMoreSymbolKeyStyle" latin:keyWidth="10.0%p" /> <Key latin:keyLabel="<" diff --git a/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml b/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml index ac4b93fa4..1dca8c47e 100644 --- a/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml +++ b/java/res/xml-sw600dp/kbd_rows_symbols_shift.xml @@ -101,7 +101,7 @@ latin:keyWidth="8.9%p" > <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyWidth="10.0%p" /> <Key latin:keyLabel="\\" /> diff --git a/java/res/xml-sw768dp/kbd_key_styles.xml b/java/res/xml-sw768dp/kbd_key_styles.xml index 6e4818dc2..1711c423f 100644 --- a/java/res/xml-sw768dp/kbd_key_styles.xml +++ b/java/res/xml-sw768dp/kbd_key_styles.xml @@ -87,12 +87,17 @@ latin:keyLabelOption="fontNormal" latin:parentStyle="functionalKeyStyle" /> <key-style - latin:styleName="moreKeyStyle" + latin:styleName="toMoreSymbolKeyStyle" latin:code="@integer/key_shift" - latin:keyLabel="@string/label_more_key" + latin:keyLabel="@string/label_to_more_symbol_for_tablet_key" latin:keyLabelOption="fontNormal" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="backFromMoreSymbolKeyStyle" + latin:code="@integer/key_shift" + latin:keyLabel="@string/label_to_symbol_key" + latin:keyLabelOption="fontNormal" + latin:parentStyle="functionalKeyStyle" /> <key-style latin:styleName="comKeyStyle" latin:keyLabel="@string/keylabel_for_popular_domain" diff --git a/java/res/xml-sw768dp/kbd_phone.xml b/java/res/xml-sw768dp/kbd_phone.xml index cf6790f79..e55b1841a 100644 --- a/java/res/xml-sw768dp/kbd_phone.xml +++ b/java/res/xml-sw768dp/kbd_phone.xml @@ -54,7 +54,7 @@ </Row> <Row> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="toMoreSymbolKeyStyle" latin:keyWidth="11.172%p" /> <Key latin:keyLabel="," diff --git a/java/res/xml-sw768dp/kbd_phone_shift.xml b/java/res/xml-sw768dp/kbd_phone_shift.xml index 7f6271628..646f0b867 100644 --- a/java/res/xml-sw768dp/kbd_phone_shift.xml +++ b/java/res/xml-sw768dp/kbd_phone_shift.xml @@ -58,7 +58,7 @@ </Row> <Row> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyWidth="11.172%p" /> <Key latin:keyLabel="," diff --git a/java/res/xml-sw768dp/kbd_rows_symbols.xml b/java/res/xml-sw768dp/kbd_rows_symbols.xml index 2a01fe298..66b9789ac 100644 --- a/java/res/xml-sw768dp/kbd_rows_symbols.xml +++ b/java/res/xml-sw768dp/kbd_rows_symbols.xml @@ -107,7 +107,7 @@ latin:keyWidth="8.047%p" > <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="toMoreSymbolKeyStyle" latin:keyWidth="13.829%p" /> <Key latin:keyLabel="<" @@ -146,7 +146,7 @@ latin:keyLabel="@string/keylabel_for_symbols_question" latin:popupCharacters="@string/alternates_for_symbols_question" /> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="toMoreSymbolKeyStyle" latin:keyXPos="-13.750%p" latin:keyWidth="fillBoth" /> </Row> diff --git a/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml b/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml index 5c120827f..1f43a0f91 100644 --- a/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml +++ b/java/res/xml-sw768dp/kbd_rows_symbols_shift.xml @@ -108,7 +108,7 @@ latin:keyWidth="8.047%p" > <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyWidth="13.829%p" /> <Key latin:keyLabel="\\" /> @@ -135,7 +135,7 @@ latin:keyStyle="nonPasswordSymbolKeyStyle" latin:keyLabel="¿" /> <Key - latin:keyStyle="moreKeyStyle" + latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyXPos="-13.750%p" latin:keyWidth="fillBoth" /> </Row> diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml index 22b2a1d20..5612251a5 100644 --- a/java/res/xml/kbd_key_styles.xml +++ b/java/res/xml/kbd_key_styles.xml @@ -206,11 +206,15 @@ latin:keyLabel="@string/label_to_alpha_key" latin:parentStyle="functionalKeyStyle" /> <key-style - latin:styleName="altKeyStyle" + latin:styleName="toMoreSymbolKeyStyle" latin:code="@integer/key_shift" - latin:keyLabel="@string/label_alt_key" - latin:parentStyle="functionalKeyStyle" - latin:isSticky="true" /> + latin:keyLabel="@string/label_to_more_symbol_key" + latin:parentStyle="functionalKeyStyle" /> + <key-style + latin:styleName="backFromMoreSymbolKeyStyle" + latin:code="@integer/key_shift" + latin:keyLabel="@string/label_to_symbol_key" + latin:parentStyle="functionalKeyStyle" /> <switch> <case latin:passwordInput="true" diff --git a/java/res/xml/kbd_rows_arabic.xml b/java/res/xml/kbd_rows_arabic.xml index e9de4ad0d..daa2a65ed 100644 --- a/java/res/xml/kbd_rows_arabic.xml +++ b/java/res/xml/kbd_rows_arabic.xml @@ -42,7 +42,7 @@ <Key latin:keyLabel="ف" latin:keyHintLabel="4" - latin:popupCharacters="\u06a4,4,٤" /> + latin:popupCharacters="4,٤,\u06a4" /> <Key latin:keyLabel="غ" latin:keyHintLabel="5" diff --git a/java/res/xml/kbd_rows_symbols.xml b/java/res/xml/kbd_rows_symbols.xml index a8eeb3b91..75e21a002 100644 --- a/java/res/xml/kbd_rows_symbols.xml +++ b/java/res/xml/kbd_rows_symbols.xml @@ -95,7 +95,7 @@ latin:keyWidth="10%p" > <Key - latin:keyStyle="altKeyStyle" + latin:keyStyle="toMoreSymbolKeyStyle" latin:keyWidth="15%p" latin:visualInsetsRight="1%p" /> <Key diff --git a/java/res/xml/kbd_rows_symbols_shift.xml b/java/res/xml/kbd_rows_symbols_shift.xml index 0706cbc78..d52341512 100644 --- a/java/res/xml/kbd_rows_symbols_shift.xml +++ b/java/res/xml/kbd_rows_symbols_shift.xml @@ -91,7 +91,7 @@ latin:keyWidth="10%p" > <Key - latin:keyStyle="altKeyStyle" + latin:keyStyle="backFromMoreSymbolKeyStyle" latin:keyWidth="15%p" latin:visualInsetsRight="1%p" /> <Key diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java index 41b577cf3..1c7599442 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryFileDumper.java @@ -20,8 +20,10 @@ import android.content.ContentResolver; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.content.res.Resources; +import android.database.Cursor; import android.net.Uri; import android.text.TextUtils; +import android.util.Log; import java.io.File; import java.io.FileInputStream; @@ -29,7 +31,8 @@ import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.util.Arrays; +import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Locale; @@ -43,6 +46,8 @@ public class BinaryDictionaryFileDumper { */ static final int FILE_READ_BUFFER_SIZE = 1024; + private static final String DICTIONARY_PROJECTION[] = { "id" }; + // Prevents this class to be accidentally instantiated. private BinaryDictionaryFileDumper() { } @@ -75,6 +80,7 @@ public class BinaryDictionaryFileDumper { /** * Return for a given locale the provider URI to query to get the dictionary. */ + // TODO: remove this public static Uri getProviderUri(Locale locale) { return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT) .authority(BinaryDictionary.DICTIONARY_PACK_AUTHORITY).appendPath( @@ -82,6 +88,40 @@ public class BinaryDictionaryFileDumper { } /** + * Return for a given locale or dictionary id the provider URI to get the dictionary. + */ + private static Uri getProviderUri(String path) { + return new Uri.Builder().scheme(ContentResolver.SCHEME_CONTENT) + .authority(BinaryDictionary.DICTIONARY_PACK_AUTHORITY).appendPath( + path).build(); + } + + /** + * Queries a content provider for the list of dictionaries for a specific locale + * available to copy into Latin IME. + */ + private static List<String> getDictIdList(final Locale locale, final Context context) { + final ContentResolver resolver = context.getContentResolver(); + final Uri dictionaryPackUri = getProviderUri(locale); + + final Cursor c = resolver.query(dictionaryPackUri, DICTIONARY_PROJECTION, null, null, null); + if (null == c) return Collections.<String>emptyList(); + if (c.getCount() <= 0 || !c.moveToFirst()) { + c.close(); + return Collections.<String>emptyList(); + } + + final List<String> list = new ArrayList<String>(); + do { + final String id = c.getString(0); + if (TextUtils.isEmpty(id)) continue; + list.add(id); + } while (c.moveToNext()); + c.close(); + return list; + } + + /** * Queries a content provider for dictionary data for some locale and returns the file addresses * * This will query a content provider for dictionary data for a given locale, and return @@ -95,20 +135,26 @@ public class BinaryDictionaryFileDumper { * @throw FileNotFoundException if the provider returns non-existent data. * @throw IOException if the provider-returned data could not be read. */ - public static List<AssetFileAddress> getDictSetFromContentProvider(Locale locale, - Context context) throws FileNotFoundException, IOException { + public static List<AssetFileAddress> getDictSetFromContentProvider(final Locale locale, + final Context context) throws FileNotFoundException, IOException { // TODO: check whether the dictionary is the same or not and if it is, return the cached // file. // TODO: This should be able to read a number of files from the dictionary pack, copy // them all and return them. final ContentResolver resolver = context.getContentResolver(); - final Uri dictionaryPackUri = getProviderUri(locale); - final AssetFileDescriptor afd = resolver.openAssetFileDescriptor(dictionaryPackUri, "r"); - if (null == afd) return null; - final String fileName = - copyFileTo(afd.createInputStream(), getCacheFileNameForLocale(locale, context)); - afd.close(); - return Arrays.asList(AssetFileAddress.makeFromFileName(fileName)); + final List<String> idList = getDictIdList(locale, context); + final List<AssetFileAddress> fileAddressList = new ArrayList<AssetFileAddress>(); + for (String id : idList) { + final Uri dictionaryPackUri = getProviderUri(id); + final AssetFileDescriptor afd = + resolver.openAssetFileDescriptor(dictionaryPackUri, "r"); + if (null == afd) continue; + final String fileName = + copyFileTo(afd.createInputStream(), getCacheFileNameForLocale(locale, context)); + afd.close(); + fileAddressList.add(AssetFileAddress.makeFromFileName(fileName)); + } + return fileAddressList; } /** diff --git a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java index 989a0e9a0..4b1c05adf 100644 --- a/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java +++ b/java/src/com/android/inputmethod/latin/BinaryDictionaryGetter.java @@ -63,9 +63,6 @@ class BinaryDictionaryGetter { * Returns a list of file addresses for a given locale, trying relevant methods in order. * * Tries to get binary dictionaries from various sources, in order: - * - Uses a private method of getting a private dictionaries, as implemented by the - * PrivateBinaryDictionaryGetter class. - * If that fails: * - Uses a content provider to get a public dictionary set, as per the protocol described * in BinaryDictionaryFileDumper. * If that fails: @@ -76,31 +73,23 @@ class BinaryDictionaryGetter { */ public static List<AssetFileAddress> getDictionaryFiles(Locale locale, Context context, int fallbackResId) { - // Try first to query a private package signed the same way for private files. - final List<AssetFileAddress> privateFiles = - PrivateBinaryDictionaryGetter.getDictionaryFiles(locale, context); - if (null != privateFiles) { - return privateFiles; - } else { - try { - // If that was no-go, try to find a publicly exported dictionary. - List<AssetFileAddress> listFromContentProvider = - BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context); - if (null != listFromContentProvider) { - return listFromContentProvider; - } - // If the list is null, fall through and return the fallback - } catch (FileNotFoundException e) { - Log.e(TAG, "Unable to create dictionary file from provider for locale " - + locale.toString() + ": falling back to internal dictionary"); - } catch (IOException e) { - Log.e(TAG, "Unable to read source data for locale " - + locale.toString() + ": falling back to internal dictionary"); + try { + List<AssetFileAddress> listFromContentProvider = + BinaryDictionaryFileDumper.getDictSetFromContentProvider(locale, context); + if (null != listFromContentProvider) { + return listFromContentProvider; } - final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId, - locale); - if (null == fallbackAsset) return null; - return Arrays.asList(fallbackAsset); + // If the list is null, fall through and return the fallback + } catch (FileNotFoundException e) { + Log.e(TAG, "Unable to create dictionary file from provider for locale " + + locale.toString() + ": falling back to internal dictionary"); + } catch (IOException e) { + Log.e(TAG, "Unable to read source data for locale " + + locale.toString() + ": falling back to internal dictionary"); } + final AssetFileAddress fallbackAsset = loadFallbackResource(context, fallbackResId, + locale); + if (null == fallbackAsset) return null; + return Arrays.asList(fallbackAsset); } } diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java index 35af91b0f..84751264a 100644 --- a/java/src/com/android/inputmethod/latin/Settings.java +++ b/java/src/com/android/inputmethod/latin/Settings.java @@ -176,7 +176,10 @@ public class Settings extends InputMethodSettingsActivity && isBigramPredictionEnabled(prefs, res); mAutoCorrectionThreshold = getAutoCorrectionThreshold(prefs, res); mUseContactsDict = prefs.getBoolean(Settings.PREF_KEY_USE_CONTACTS_DICT, true); - mShowSettingsKey = prefs.getBoolean(Settings.PREF_SHOW_SETTINGS_KEY, false); + final boolean defaultShowSettingsKey = res.getBoolean( + R.bool.config_default_show_settings_key); + mShowSettingsKey = prefs.getBoolean(Settings.PREF_SHOW_SETTINGS_KEY, + defaultShowSettingsKey); final String voiceModeMain = res.getString(R.string.voice_mode_main); final String voiceModeOff = res.getString(R.string.voice_mode_off); final String voiceMode = prefs.getString(PREF_VOICE_SETTINGS_KEY, voiceModeMain); @@ -301,7 +304,7 @@ public class Settings extends InputMethodSettingsActivity private ListPreference mVoicePreference; private CheckBoxPreference mShowSettingsKeyPreference; private ListPreference mShowCorrectionSuggestionsPreference; - private ListPreference mAutoCorrectionThreshold; + private ListPreference mAutoCorrectionThresholdPreference; private ListPreference mKeyPreviewPopupDismissDelay; // Suggestion: use bigrams to adjust scores of suggestions obtained from unigram dictionary private CheckBoxPreference mBigramSuggestion; @@ -318,7 +321,7 @@ public class Settings extends InputMethodSettingsActivity private void ensureConsistencyOfAutoCorrectionSettings() { final String autoCorrectionOff = getResources().getString( R.string.auto_correction_threshold_mode_index_off); - final String currentSetting = mAutoCorrectionThreshold.getValue(); + final String currentSetting = mAutoCorrectionThresholdPreference.getValue(); mBigramSuggestion.setEnabled(!currentSetting.equals(autoCorrectionOff)); mBigramPrediction.setEnabled(!currentSetting.equals(autoCorrectionOff)); } @@ -356,7 +359,8 @@ public class Settings extends InputMethodSettingsActivity mVoiceOn = !(prefs.getString(PREF_VOICE_SETTINGS_KEY, mVoiceModeOff) .equals(mVoiceModeOff)); - mAutoCorrectionThreshold = (ListPreference) findPreference(PREF_AUTO_CORRECTION_THRESHOLD); + mAutoCorrectionThresholdPreference = + (ListPreference) findPreference(PREF_AUTO_CORRECTION_THRESHOLD); mBigramSuggestion = (CheckBoxPreference) findPreference(PREF_BIGRAM_SUGGESTIONS); mBigramPrediction = (CheckBoxPreference) findPreference(PREF_BIGRAM_PREDICTIONS); mDebugSettingsPreference = findPreference(PREF_DEBUG_SETTINGS); |