From 1e5374e98b2707aecd774f495350a74be55ec5dc Mon Sep 17 00:00:00 2001
From: Amith Yamasani <yamasani@google.com>
Date: Wed, 17 Mar 2010 15:36:23 -0700
Subject: [PATCH] Remove popup for extension keyboard in landscape. bug:
 2519903

Also add a summary text in the input language list for languages with
a dictionary so that users don't feel cheated when they pick a language
that doesn't happen to have a dictionary. Remove greek as it isn't an
extension of the QWERTY keyboard.
---
 .../latin/InputLanguageSelection.java         | 26 ++++++++++++++++++-
 .../inputmethod/latin/LatinKeyboardView.java  |  5 ++++
 .../android/inputmethod/latin/Suggest.java    |  2 +-
 3 files changed, 31 insertions(+), 2 deletions(-)

diff --git a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
index b1ddb2175c..b5a11010be 100644
--- a/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
+++ b/java/src/com/android/inputmethod/latin/InputLanguageSelection.java
@@ -23,6 +23,8 @@ import java.util.Locale;
 
 import android.content.SharedPreferences;
 import android.content.SharedPreferences.Editor;
+import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.os.Bundle;
 import android.preference.CheckBoxPreference;
 import android.preference.PreferenceActivity;
@@ -35,7 +37,7 @@ public class InputLanguageSelection extends PreferenceActivity {
     private String mSelectedLanguages;
     private ArrayList<Loc> mAvailableLanguages = new ArrayList<Loc>();
     private static final String[] BLACKLIST_LANGUAGES = {
-        "ko", "ja", "zh"
+        "ko", "ja", "zh", "el"
     };
 
     private static class Loc implements Comparable {
@@ -75,6 +77,9 @@ public class InputLanguageSelection extends PreferenceActivity {
             pref.setTitle(LanguageSwitcher.toTitleCase(locale.getDisplayName(locale)));
             boolean checked = isLocaleIn(locale, languageList);
             pref.setChecked(checked);
+            if (hasDictionary(locale)) {
+                pref.setSummary(R.string.has_dictionary);
+            }
             parent.addPreference(pref);
         }
     }
@@ -92,6 +97,25 @@ public class InputLanguageSelection extends PreferenceActivity {
         return false;
     }
 
+    private boolean hasDictionary(Locale locale) {
+        Resources res = getResources();
+        Configuration conf = res.getConfiguration();
+        Locale saveLocale = conf.locale;
+        boolean haveDictionary = false;
+        conf.locale = locale;
+        res.updateConfiguration(conf, res.getDisplayMetrics());
+        BinaryDictionary bd = new BinaryDictionary(this, R.raw.main);
+        // Is the dictionary larger than a placeholder? Arbitrarily chose a lower limit of
+        // 4000-5000 words, whereas the LARGE_DICTIONARY is about 20000+ words.
+        if (bd.getSize() > Suggest.LARGE_DICTIONARY_THRESHOLD / 4) {
+            haveDictionary = true;
+        }
+        bd.close();
+        conf.locale = saveLocale;
+        res.updateConfiguration(conf, res.getDisplayMetrics());
+        return haveDictionary;
+    }
+
     private String get5Code(Locale locale) {
         String country = locale.getCountry();
         return locale.getLanguage()
diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
index 2686a93c66..7ce1e4e654 100644
--- a/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/latin/LatinKeyboardView.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.latin;
 import java.util.List;
 
 import android.content.Context;
+import android.content.res.Configuration;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.inputmethodservice.Keyboard;
@@ -178,6 +179,10 @@ public class LatinKeyboardView extends KeyboardView {
             Keyboard keyboard;
             mExtension.setKeyboard(keyboard = new LatinKeyboard(getContext(),
                     ((LatinKeyboard) getKeyboard()).getExtension()));
+            if (getContext().getResources().getConfiguration().orientation
+                    == Configuration.ORIENTATION_LANDSCAPE) {
+                mExtension.setPreviewEnabled(false);
+            }
             mExtensionPopup.setContentView(mExtension);
             mExtensionPopup.setWidth(getWidth());
             mExtensionPopup.setHeight(keyboard.getHeight());
diff --git a/java/src/com/android/inputmethod/latin/Suggest.java b/java/src/com/android/inputmethod/latin/Suggest.java
index 712b9cf371..b44717d0aa 100755
--- a/java/src/com/android/inputmethod/latin/Suggest.java
+++ b/java/src/com/android/inputmethod/latin/Suggest.java
@@ -39,7 +39,7 @@ public class Suggest implements Dictionary.WordCallback {
     public static final int CORRECTION_BASIC = 1;
     public static final int CORRECTION_FULL = 2;
 
-    private static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
+    static final int LARGE_DICTIONARY_THRESHOLD = 200 * 1000;
 
     private BinaryDictionary mMainDict;
 
-- 
GitLab