aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin
diff options
context:
space:
mode:
Diffstat (limited to 'java/src/com/android/inputmethod/latin')
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitator.java4
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java8
-rw-r--r--java/src/com/android/inputmethod/latin/DictionaryStats.java55
-rw-r--r--java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java27
-rw-r--r--java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java19
-rw-r--r--java/src/com/android/inputmethod/latin/settings/SettingsFragment.java16
6 files changed, 69 insertions, 60 deletions
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
index 6b49f9aa6..d5dff10db 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitator.java
@@ -17,7 +17,6 @@
package com.android.inputmethod.latin;
import android.content.Context;
-import android.util.Pair;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.Keyboard;
@@ -28,6 +27,7 @@ import com.android.inputmethod.latin.utils.SuggestionResults;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -172,5 +172,5 @@ public interface DictionaryFacilitator {
void dumpDictionaryForDebug(final String dictName);
- ArrayList<Pair<String, DictionaryStats>> getStatsOfEnabledSubDicts();
+ @Nonnull List<DictionaryStats> getDictionaryStats(final Context context);
}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
index e5d770aee..9ce92da9e 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryFacilitatorImpl.java
@@ -19,7 +19,6 @@ package com.android.inputmethod.latin;
import android.content.Context;
import android.text.TextUtils;
import android.util.Log;
-import android.util.Pair;
import com.android.inputmethod.annotations.UsedForTesting;
import com.android.inputmethod.keyboard.Keyboard;
@@ -39,6 +38,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
+import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
@@ -644,12 +644,12 @@ public class DictionaryFacilitatorImpl implements DictionaryFacilitator {
}
@Override
- public ArrayList<Pair<String, DictionaryStats>> getStatsOfEnabledSubDicts() {
- final ArrayList<Pair<String, DictionaryStats>> statsOfEnabledSubDicts = new ArrayList<>();
+ @Nonnull public List<DictionaryStats> getDictionaryStats(final Context context) {
+ final ArrayList<DictionaryStats> statsOfEnabledSubDicts = new ArrayList<>();
for (final String dictType : DYNAMIC_DICTIONARY_TYPES) {
final ExpandableBinaryDictionary dictionary = mDictionaryGroup.getSubDict(dictType);
if (dictionary == null) continue;
- statsOfEnabledSubDicts.add(new Pair<>(dictType, dictionary.getDictionaryStats()));
+ statsOfEnabledSubDicts.add(dictionary.getDictionaryStats());
}
return statsOfEnabledSubDicts;
}
diff --git a/java/src/com/android/inputmethod/latin/DictionaryStats.java b/java/src/com/android/inputmethod/latin/DictionaryStats.java
index 5dd39d3d6..a6b37aa8f 100644
--- a/java/src/com/android/inputmethod/latin/DictionaryStats.java
+++ b/java/src/com/android/inputmethod/latin/DictionaryStats.java
@@ -17,6 +17,7 @@
package com.android.inputmethod.latin;
import java.io.File;
+import java.math.BigDecimal;
import java.util.Locale;
public class DictionaryStats {
@@ -26,18 +27,54 @@ public class DictionaryStats {
public final String mDictName;
public final String mDictFilePath;
public final long mDictFileSize;
-
- public final int mUnigramCount;
- public final int mNgramCount;
- // TODO: Add more members.
+ public final int mContentVersion;
public DictionaryStats(final Locale locale, final String dictName, final File dictFile,
- final int unigramCount, final int ngramCount) {
+ final int contentVersion) {
mLocale = locale;
mDictName = dictName;
- mDictFilePath = dictFile.getAbsolutePath();
- mDictFileSize = dictFile.length();
- mUnigramCount = unigramCount;
- mNgramCount = ngramCount;
+ mDictFilePath = (dictFile == null) ? null : dictFile.getName();
+ mDictFileSize = (dictFile == null || !dictFile.exists()) ? 0 : dictFile.length();
+ mContentVersion = contentVersion;
+ }
+
+ public String getFileSizeString() {
+ if (mDictFileSize == 0) {
+ return "0";
+ }
+ BigDecimal bytes = new BigDecimal(mDictFileSize);
+ BigDecimal kb = bytes.divide(new BigDecimal(1024), 2, BigDecimal.ROUND_HALF_UP);
+ if (kb.longValue() == 0) {
+ return bytes.toString() + " bytes";
+ }
+ BigDecimal mb = kb.divide(new BigDecimal(1024), 2, BigDecimal.ROUND_HALF_UP);
+ if (mb.longValue() == 0) {
+ return kb.toString() + " kb";
+ }
+ return mb.toString() + " Mb";
+ }
+
+ @Override
+ public String toString() {
+ final StringBuilder builder = new StringBuilder(mDictName);
+ if (mDictName.equals(Dictionary.TYPE_MAIN)) {
+ builder.append(" (");
+ builder.append(mContentVersion);
+ builder.append(")");
+ }
+ builder.append(": ");
+ builder.append(mDictFilePath);
+ builder.append(" / ");
+ builder.append(getFileSizeString());
+ return builder.toString();
+ }
+
+ public static String toString(final Iterable<DictionaryStats> stats) {
+ final StringBuilder builder = new StringBuilder("LM Stats");
+ for (DictionaryStats stat : stats) {
+ builder.append("\n ");
+ builder.append(stat.toString());
+ }
+ return builder.toString();
}
}
diff --git a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
index 80daedd50..1ef7061fb 100644
--- a/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
+++ b/java/src/com/android/inputmethod/latin/ExpandableBinaryDictionary.java
@@ -646,16 +646,6 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
});
}
- static int parseEntryCount(final String entryCountStr) {
- int entryCount;
- try {
- entryCount = Integer.parseInt(entryCountStr);
- } catch (final NumberFormatException e) {
- entryCount = DictionaryStats.NOT_AN_ENTRY_COUNT;
- }
- return entryCount;
- }
-
public DictionaryStats getDictionaryStats() {
reloadDictionaryIfRequired();
final String dictName = mDictName;
@@ -664,22 +654,7 @@ abstract public class ExpandableBinaryDictionary extends Dictionary {
asyncExecuteTaskWithLock(mLock.readLock(), new Runnable() {
@Override
public void run() {
- final BinaryDictionary binaryDictionary = getBinaryDictionary();
- if (binaryDictionary == null) {
- result.set(new DictionaryStats(mLocale, dictName, dictFile,
- DictionaryStats.NOT_AN_ENTRY_COUNT,
- DictionaryStats.NOT_AN_ENTRY_COUNT));
- return;
- }
- final int unigramCount = parseEntryCount(
- binaryDictionary.getPropertyForGettingStats(
- BinaryDictionary.MAX_UNIGRAM_COUNT_QUERY));
- // TODO: Get dedicated entry counts for bigram, trigram, and so on.
- final int ngramCount = parseEntryCount(binaryDictionary.getPropertyForGettingStats(
- BinaryDictionary.MAX_BIGRAM_COUNT_QUERY));
- // TODO: Get more information from dictionary.
- result.set(new DictionaryStats(mLocale, dictName, dictFile, unigramCount,
- ngramCount));
+ result.set(new DictionaryStats(mLocale, dictName, dictFile, 0));
}
});
return result.get(null /* defaultValue */, TIMEOUT_FOR_READ_OPS_IN_MILLISECONDS);
diff --git a/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java
index f7c5f6760..62834cd2a 100644
--- a/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/CorrectionSettingsFragment.java
@@ -49,7 +49,7 @@ import java.util.TreeSet;
*/
public final class CorrectionSettingsFragment extends SubScreenFragment {
private static final boolean DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS = false;
- private static final boolean USE_INTERNAL_PERSONAL_DICTIONARY_SETTIGS =
+ private static final boolean USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS =
DBG_USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS
|| Build.VERSION.SDK_INT <= Build.VERSION_CODES.JELLY_BEAN_MR2;
@@ -61,8 +61,6 @@ public final class CorrectionSettingsFragment extends SubScreenFragment {
final Context context = getActivity();
final PackageManager pm = context.getPackageManager();
- ensureConsistencyOfAutoCorrectionSettings();
-
final Preference dictionaryLink = findPreference(Settings.PREF_CONFIGURE_DICTIONARIES_KEY);
final Intent intent = dictionaryLink.getIntent();
intent.setClassName(context.getPackageName(), DictionarySettingsActivity.class.getName());
@@ -74,7 +72,7 @@ public final class CorrectionSettingsFragment extends SubScreenFragment {
final Preference editPersonalDictionary =
findPreference(Settings.PREF_EDIT_PERSONAL_DICTIONARY);
final Intent editPersonalDictionaryIntent = editPersonalDictionary.getIntent();
- final ResolveInfo ri = USE_INTERNAL_PERSONAL_DICTIONARY_SETTIGS ? null
+ final ResolveInfo ri = USE_INTERNAL_PERSONAL_DICTIONARY_SETTINGS ? null
: pm.resolveActivity(
editPersonalDictionaryIntent, PackageManager.MATCH_DEFAULT_ONLY);
if (ri == null) {
@@ -82,19 +80,6 @@ public final class CorrectionSettingsFragment extends SubScreenFragment {
}
}
- @Override
- public void onSharedPreferenceChanged(final SharedPreferences prefs, final String key) {
- ensureConsistencyOfAutoCorrectionSettings();
- }
-
- private void ensureConsistencyOfAutoCorrectionSettings() {
- final TwoStatePreference autoCorrectionPref = (TwoStatePreference)
- findPreference(Settings.PREF_AUTO_CORRECTION);
- if (!autoCorrectionPref.isChecked()) {
- setPreferenceEnabled(Settings.PREF_BIGRAM_PREDICTIONS, false);
- }
- }
-
private void overwriteUserDictionaryPreference(final Preference userDictionaryPreference) {
final Activity activity = getActivity();
final TreeSet<String> localeList = UserDictionaryList.getUserDictionaryLocalesSet(activity);
diff --git a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
index b98c53af4..f5455e3db 100644
--- a/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
+++ b/java/src/com/android/inputmethod/latin/settings/SettingsFragment.java
@@ -16,10 +16,12 @@
package com.android.inputmethod.latin.settings;
+import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceScreen;
+import android.provider.Settings.Secure;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
@@ -68,13 +70,23 @@ public final class SettingsFragment extends InputMethodSettingsFragment {
@Override
public boolean onOptionsItemSelected(final MenuItem item) {
+ final Activity activity = getActivity();
+ final int setupStatus = Secure.getInt(
+ activity.getContentResolver(),
+ "user_setup_complete",
+ 0 /* default */);
+ if (setupStatus == 0) {
+ // If setup is not complete, it's not safe to launch Help or other activities
+ // because they might go to the Play Store. See b/19866981.
+ return true;
+ }
final int itemId = item.getItemId();
if (itemId == MENU_HELP_AND_FEEDBACK) {
- FeedbackUtils.showHelpAndFeedbackForm(getActivity());
+ FeedbackUtils.showHelpAndFeedbackForm(activity);
return true;
}
if (itemId == MENU_ABOUT) {
- final Intent aboutIntent = FeedbackUtils.getAboutKeyboardIntent(getActivity());
+ final Intent aboutIntent = FeedbackUtils.getAboutKeyboardIntent(activity);
if (aboutIntent != null) {
startActivity(aboutIntent);
return true;