Merge "Changing incall ui label to the already translated "Phone"" into klp-dev
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 7ba4997..398c90e 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -501,9 +501,7 @@
     }
 
     private void hideDialpadAndSearchUi() {
-        if (getInSearchUi()) {
-            exitSearchUi();
-        }
+        mSearchView.setText(null);
         hideDialpadFragment(false, true);
     }
 
diff --git a/src/com/android/dialer/database/DialerDatabaseHelper.java b/src/com/android/dialer/database/DialerDatabaseHelper.java
index 2fa561f..e9d7735 100644
--- a/src/com/android/dialer/database/DialerDatabaseHelper.java
+++ b/src/com/android/dialer/database/DialerDatabaseHelper.java
@@ -71,7 +71,7 @@
      *   0-98   KeyLimePie
      * </pre>
      */
-    public static final int DATABASE_VERSION = 3;
+    public static final int DATABASE_VERSION = 4;
     public static final String DATABASE_NAME = "dialer.db";
 
     /**
@@ -337,6 +337,11 @@
      */
     @Override
     public void onCreate(SQLiteDatabase db) {
+        setupTables(db);
+    }
+
+    private void setupTables(SQLiteDatabase db) {
+        dropTables(db);
         db.execSQL("CREATE TABLE " + Tables.SMARTDIAL_TABLE + " (" +
                 SmartDialDbColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," +
                 SmartDialDbColumns.DATA_ID + " INTEGER, " +
@@ -369,6 +374,12 @@
         resetSmartDialLastUpdatedTime();
     }
 
+    public void dropTables(SQLiteDatabase db) {
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE);
+        db.execSQL("DROP TABLE IF EXISTS " + Tables.PROPERTIES);
+    }
+
     @Override
     public void onUpgrade(SQLiteDatabase db, int oldNumber, int newNumber) {
         // Disregard the old version and new versions provided by SQLiteOpenHelper, we will read
@@ -382,21 +393,11 @@
             Log.e(TAG, "Malformed database version..recreating database");
         }
 
-        if (oldVersion < 2) {
-            db.execSQL("DROP TABLE IF EXISTS " + Tables.PREFIX_TABLE);
-            db.execSQL("DROP TABLE IF EXISTS " + Tables.SMARTDIAL_TABLE);
-            onCreate(db);
+        if (oldVersion < 4) {
+            setupTables(db);
             return;
         }
 
-        if (oldVersion < 3) {
-            db.execSQL("CREATE TABLE " + Tables.PROPERTIES + " (" +
-                    PropertiesColumns.PROPERTY_KEY + " TEXT PRIMARY KEY, " +
-                    PropertiesColumns.PROPERTY_VALUE + " TEXT " +
-                    ");");
-            oldVersion = 3;
-        }
-
         if (oldVersion != DATABASE_VERSION) {
             throw new IllegalStateException(
                     "error upgrading the database to version " + DATABASE_VERSION);
@@ -447,7 +448,7 @@
     }
 
     public int getPropertyAsInt(SQLiteDatabase db, String key, int defaultValue) {
-        final String stored = getProperty(db, DATABASE_VERSION_PROPERTY, "");
+        final String stored = getProperty(db, key, "");
         try {
             return Integer.parseInt(stored);
         } catch (NumberFormatException e) {
diff --git a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
index 263794f..1c6ffde 100644
--- a/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
+++ b/src/com/android/dialer/list/PhoneFavoritesTileAdapter.java
@@ -121,6 +121,15 @@
 
     private static final int PIN_LIMIT = 20;
 
+    /**
+     * The soft limit on how many contact tiles to show.
+     * NOTE This soft limit would not restrict the number of starred contacts to show, rather
+     * 1. If the count of starred contacts is less than this limit, show 20 tiles total.
+     * 2. If the count of starred contacts is more than or equal to this limit,
+     * show all starred tiles and no frequents.
+     */
+    private static final int TILES_SOFT_LIMIT = 20;
+
     final Comparator<ContactEntry> mContactEntryComparator = new Comparator<ContactEntry>() {
         @Override
         public int compare(ContactEntry lhs, ContactEntry rhs) {
@@ -254,6 +263,9 @@
 
         final Object dummy = new Object();
 
+        // Track the length of {@link #mContactEntries} and compare to {@link #TILES_SOFT_LIMIT}.
+        int counter = 0;
+
         while (cursor.moveToNext()) {
 
             final int starred = cursor.getInt(mStarredIndex);
@@ -261,6 +273,8 @@
 
             if (starred > 0) {
                 id = cursor.getLong(mIdIndex);
+            } else if (counter >= TILES_SOFT_LIMIT) {
+                break;
             } else {
                 // The contact id for frequent contacts is stored in the .contact_id field rather
                 // than the _id field
@@ -305,6 +319,8 @@
 
             contact.pinned = pinned;
             mContactEntries.add(contact);
+
+            counter++;
         }
 
         mAwaitingRemove = false;
diff --git a/src/com/android/dialer/list/SmartDialSearchFragment.java b/src/com/android/dialer/list/SmartDialSearchFragment.java
index e3882ca..a163f5d 100644
--- a/src/com/android/dialer/list/SmartDialSearchFragment.java
+++ b/src/com/android/dialer/list/SmartDialSearchFragment.java
@@ -48,10 +48,8 @@
     public Loader<Cursor> onCreateLoader(int id, Bundle args) {
         // Smart dialing does not support Directory Load, falls back to normal search instead.
         if (id == getDirectoryLoaderId()) {
-            Log.v(TAG, "Directory load");
             return super.onCreateLoader(id, args);
         } else {
-            Log.v(TAG, "Creating loader");
             final SmartDialNumberListAdapter adapter = (SmartDialNumberListAdapter) getAdapter();
             SmartDialCursorLoader loader = new SmartDialCursorLoader(super.getContext());
             adapter.configureLoader(loader);