Make input language selection settings work

This change also tweaks the padding of candidate strip for phone.

Change-Id: Iefe4dfeb7015e11d5b2d1566121f719d60b1377e
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 504e007..7f00cdb 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -51,7 +51,7 @@
     <dimen name="candidate_strip_fading_edge_length">63dip</dimen>
     <dimen name="candidate_strip_padding">0dip</dimen>
     <dimen name="candidate_min_width">0.3in</dimen>
-    <dimen name="candidate_padding">0dip</dimen>
+    <dimen name="candidate_padding">6dip</dimen>
     <dimen name="candidate_text_size">18dip</dimen>
     <dimen name="spacebar_vertical_correction">4dip</dimen>
     <!-- If the screen height in landscape is larger than the below value, then the keyboard
diff --git a/java/res/xml/prefs.xml b/java/res/xml/prefs.xml
index 3b20298..9c780cb 100644
--- a/java/res/xml/prefs.xml
+++ b/java/res/xml/prefs.xml
@@ -70,15 +70,10 @@
             android:defaultValue="@string/voice_mode_main"
             />
 
-    <!-- TODO: Filter subtypes by IME in SubtypeEnabler -->
-    <!-- TODO: Maybe use this only for phone? -->
     <PreferenceScreen
             android:key="subtype_settings"
             android:title="@string/language_selection_title"
-            android:summary="@string/language_selection_summary">
-        <intent
-                android:action="android.settings.INPUT_METHOD_AND_SUBTYPE_ENABLER"/>
-    </PreferenceScreen>
+            android:summary="@string/language_selection_summary" />
 
     <PreferenceCategory
             android:title="@string/prediction_category"
diff --git a/java/src/com/android/inputmethod/latin/Settings.java b/java/src/com/android/inputmethod/latin/Settings.java
index 3f604a3..4a8b34c 100644
--- a/java/src/com/android/inputmethod/latin/Settings.java
+++ b/java/src/com/android/inputmethod/latin/Settings.java
@@ -23,13 +23,17 @@
 import android.app.Dialog;
 import android.app.backup.BackupManager;
 import android.content.DialogInterface;
+import android.content.Intent;
 import android.content.SharedPreferences;
 import android.os.Bundle;
 import android.os.Vibrator;
 import android.preference.CheckBoxPreference;
 import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
 import android.preference.PreferenceActivity;
 import android.preference.PreferenceGroup;
+import android.preference.PreferenceScreen;
 import android.speech.SpeechRecognizer;
 import android.text.AutoText;
 import android.text.TextUtils;
@@ -41,7 +45,7 @@
 
 public class Settings extends PreferenceActivity
         implements SharedPreferences.OnSharedPreferenceChangeListener,
-        DialogInterface.OnDismissListener {
+        DialogInterface.OnDismissListener, OnPreferenceClickListener {
     private static final String TAG = "Settings";
 
     public static final String PREF_VIBRATE_ON = "vibrate_on";
@@ -64,6 +68,7 @@
     // Dialog ids
     private static final int VOICE_INPUT_CONFIRM_DIALOG = 0;
 
+    private PreferenceScreen mInputLanguageSelection;
     private CheckBoxPreference mQuickFixes;
     private ListPreference mVoicePreference;
     private ListPreference mSettingsKeyPreference;
@@ -84,10 +89,13 @@
         final String currentSetting = mAutoCorrectionThreshold.getValue();
         mBigramSuggestion.setEnabled(!currentSetting.equals(autoCorrectionOff));
     }
+
     @Override
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
         addPreferencesFromResource(R.xml.prefs);
+        mInputLanguageSelection = (PreferenceScreen) findPreference(PREF_SUBTYPES);
+        mInputLanguageSelection.setOnPreferenceClickListener(this);
         mQuickFixes = (CheckBoxPreference) findPreference(PREF_QUICK_FIXES);
         mVoicePreference = (ListPreference) findPreference(PREF_VOICE_SETTINGS_KEY);
         mSettingsKeyPreference = (ListPreference) findPreference(PREF_SETTINGS_KEY);
@@ -169,6 +177,21 @@
         updateSettingsKeySummary();
     }
 
+    @Override
+    public boolean onPreferenceClick(Preference pref) {
+        if (pref == mInputLanguageSelection) {
+            final String action;
+            if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) {
+                action = "android.settings.INPUT_METHOD_AND_SUBTYPE_ENABLER";
+            } else {
+                action = "com.android.inputmethod.latin.INPUT_LANGUAGE_SELECTION";
+            }
+            startActivity(new Intent(action));
+            return true;
+        }
+        return false;
+    }
+
     private void updateSettingsKeySummary() {
         mSettingsKeyPreference.setSummary(
                 getResources().getStringArray(R.array.settings_key_modes)