From 9c4de1e5f7151f79d7b32abd7e015f05de783ee7 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Fri, 20 Dec 2013 16:43:15 +0900
Subject: [PATCH] Use config_screen_metrics resource in BogusMoveEventDetector

Change-Id: I6b957b43c6dd7ce4f639e46d248179662c1ee669
---
 .../res/values-sw430dp/config-screen-metrics.xml |  9 ++-------
 .../res/values-sw600dp/config-screen-metrics.xml |  9 ++-------
 .../res/values-sw768dp/config-screen-metrics.xml |  9 ++-------
 java/res/values/config-screen-metrics.xml        |  9 ++-------
 .../internal/BogusMoveEventDetector.java         | 16 ++++++++--------
 .../com/android/inputmethod/latin/Constants.java |  9 +++++++++
 6 files changed, 25 insertions(+), 36 deletions(-)

diff --git a/java/res/values-sw430dp/config-screen-metrics.xml b/java/res/values-sw430dp/config-screen-metrics.xml
index 1205aaa1e1..bc1c964af5 100644
--- a/java/res/values-sw430dp/config-screen-metrics.xml
+++ b/java/res/values-sw430dp/config-screen-metrics.xml
@@ -19,11 +19,6 @@
 -->
 
 <resources>
-    <!--  Screen metrics for logging.
-            0 = "small phone screen"
-            1 = "large phone screen"
-            2 = "large tablet screen"
-            3 = "small tablet screen"
-    -->
-    <integer name="log_screen_metrics">1</integer>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_LARGE_PHONE}. -->
+    <integer name="config_screen_metrics">1</integer>
 </resources>
diff --git a/java/res/values-sw600dp/config-screen-metrics.xml b/java/res/values-sw600dp/config-screen-metrics.xml
index e939c068fe..d16c9253f1 100644
--- a/java/res/values-sw600dp/config-screen-metrics.xml
+++ b/java/res/values-sw600dp/config-screen-metrics.xml
@@ -19,11 +19,6 @@
 -->
 
 <resources>
-    <!--  Screen metrics for logging.
-            0 = "small phone screen"
-            1 = "large phone screen"
-            2 = "large tablet screen"
-            3 = "small tablet screen"
-    -->
-    <integer name="log_screen_metrics">3</integer>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_SMALL_TABLET}. -->
+    <integer name="config_screen_metrics">3</integer>
 </resources>
diff --git a/java/res/values-sw768dp/config-screen-metrics.xml b/java/res/values-sw768dp/config-screen-metrics.xml
index c555cbb9f0..7769ad80db 100644
--- a/java/res/values-sw768dp/config-screen-metrics.xml
+++ b/java/res/values-sw768dp/config-screen-metrics.xml
@@ -19,11 +19,6 @@
 -->
 
 <resources>
-    <!--  Screen metrics for logging.
-            0 = "small phone screen"
-            1 = "large phone screen"
-            2 = "large tablet screen"
-            3 = "small tablet screen"
-    -->
-    <integer name="log_screen_metrics">2</integer>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_LARGE_TABLET}. -->
+    <integer name="config_screen_metrics">2</integer>
 </resources>
diff --git a/java/res/values/config-screen-metrics.xml b/java/res/values/config-screen-metrics.xml
index 7b9870602d..99629944af 100644
--- a/java/res/values/config-screen-metrics.xml
+++ b/java/res/values/config-screen-metrics.xml
@@ -19,11 +19,6 @@
 -->
 
 <resources>
-    <!--  Screen metrics for logging.
-            0 = "small phone screen"
-            1 = "large phone screen"
-            2 = "large tablet screen"
-            3 = "small tablet screen"
-    -->
-    <integer name="log_screen_metrics">0</integer>
+    <!-- Must be aligned with {@link Constants#SCREEN_METRICS_SMALL_PHONE}. -->
+    <integer name="config_screen_metrics">0</integer>
 </resources>
diff --git a/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java b/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java
index ab052ddd8e..e0589fc976 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/BogusMoveEventDetector.java
@@ -20,7 +20,9 @@ import android.content.res.Resources;
 import android.util.DisplayMetrics;
 import android.util.Log;
 
+import com.android.inputmethod.latin.Constants;
 import com.android.inputmethod.latin.LatinImeLogger;
+import com.android.inputmethod.latin.R;
 
 // This hack is applied to certain classes of tablets.
 public final class BogusMoveEventDetector {
@@ -32,9 +34,6 @@ public final class BogusMoveEventDetector {
     private static final float BOGUS_MOVE_ACCUMULATED_DISTANCE_THRESHOLD = 0.53f;
     private static final float BOGUS_MOVE_RADIUS_THRESHOLD = 1.14f;
 
-    private static final int SMALL_TABLET_SMALLEST_WIDTH = 600; // dp
-    private static final int LARGE_TABLET_SMALLEST_WIDTH = 768; // dp
-
     private static boolean sNeedsProximateBogusDownMoveUpEventHack;
 
     public static void init(final Resources res) {
@@ -43,16 +42,17 @@ public final class BogusMoveEventDetector {
         // Though it seems odd to use screen density as criteria of the quality of the touch
         // screen, the small table that has a less density screen than hdpi most likely has been
         // made with the touch screen that needs the hack.
-        final int sw = res.getConfiguration().smallestScreenWidthDp;
-        final boolean isLargeTablet = (sw >= LARGE_TABLET_SMALLEST_WIDTH);
-        final boolean isSmallTablet =
-                (sw >= SMALL_TABLET_SMALLEST_WIDTH && sw < LARGE_TABLET_SMALLEST_WIDTH);
+        final int screenMetrics = res.getInteger(R.integer.config_screen_metrics);
+        final boolean isLargeTablet = (screenMetrics == Constants.SCREEN_METRICS_LARGE_TABLET);
+        final boolean isSmallTablet = (screenMetrics == Constants.SCREEN_METRICS_SMALL_TABLET);
         final int densityDpi = res.getDisplayMetrics().densityDpi;
         final boolean hasLowDensityScreen = (densityDpi < DisplayMetrics.DENSITY_HIGH);
         final boolean needsTheHack = isLargeTablet || (isSmallTablet && hasLowDensityScreen);
         if (DEBUG_MODE) {
+            final int sw = res.getConfiguration().smallestScreenWidthDp;
             Log.d(TAG, "needsProximateBogusDownMoveUpEventHack=" + needsTheHack
-                    + " smallestScreenWidthDp=" + sw + " densityDpi=" + densityDpi);
+                    + " smallestScreenWidthDp=" + sw + " densityDpi=" + densityDpi
+                    + " screenMetrics=" + screenMetrics);
         }
         sNeedsProximateBogusDownMoveUpEventHack = needsTheHack;
     }
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index 494adea42b..fbd6ef4e92 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -248,6 +248,15 @@ public final class Constants {
 
     public static final int MAX_INT_BIT_COUNT = 32;
 
+    /**
+     * Screen metrics (a.k.a. Device form factor) constants of
+     * {@link R.integer#config_screen_metrics}.
+     */
+    public static final int SCREEN_METRICS_SMALL_PHONE = 0;
+    public static final int SCREEN_METRICS_LARGE_PHONE = 1;
+    public static final int SCREEN_METRICS_LARGE_TABLET = 2;
+    public static final int SCREEN_METRICS_SMALL_TABLET = 3;
+
     private Constants() {
         // This utility class is not publicly instantiable.
     }
-- 
GitLab