Fix issue where clings didn't appear after set up wizard (issue 13077829)

-> Also removed the db-created as a criteria for showing the clings
   (this was a bit problematic in some cases and going forward)
-> Instead, we use database upgrade as a signal to not show the clings.
   This is used instead of the above criteria (to prevent old users from
   seeing the migration cling and losing their data.)
-> Stripped some old code related to custom clings that's no longer used.

Change-Id: Ib5e5285e5ddbc60e69eb998ee9fd092ae879150d
diff --git a/src/com/android/launcher3/LauncherClings.java b/src/com/android/launcher3/LauncherClings.java
index 9d2778c..894f64d 100644
--- a/src/com/android/launcher3/LauncherClings.java
+++ b/src/com/android/launcher3/LauncherClings.java
@@ -41,7 +41,6 @@
     private static final String FOLDER_CLING_DISMISSED_KEY = "cling_gel.folder.dismissed";
 
     private static final boolean DISABLE_CLINGS = false;
-    private static final boolean DISABLE_CUSTOM_CLINGS = true;
 
     private static final int SHOW_CLING_DURATION = 250;
     private static final int DISMISS_CLING_DURATION = 200;
@@ -196,8 +195,7 @@
         SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
         return areClingsEnabled() &&
             !sharedPrefs.getBoolean(FIRST_RUN_CLING_DISMISSED_KEY, false) &&
-            !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false) &&
-            LauncherAppState.getLauncherProvider().wasNewDbCreated();
+            !sharedPrefs.getBoolean(MIGRATION_CLING_DISMISSED_KEY, false);
     }
 
     public void removeFirstRunAndMigrationClings() {
@@ -213,24 +211,6 @@
      */
     public void showFirstRunCling() {
         if (!skipCustomClingIfNoAccounts()) {
-            SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
-            // If we're not using the default workspace layout, replace workspace cling
-            // with a custom workspace cling (usually specified in an overlay)
-            // For now, only do this on tablets
-            if (!DISABLE_CUSTOM_CLINGS) {
-                if (sharedPrefs.getInt(LauncherProvider.DEFAULT_WORKSPACE_RESOURCE_ID, 0) != 0 &&
-                        mLauncher.getResources().getBoolean(R.bool.config_useCustomClings)) {
-                    // Use a custom cling
-                    View cling = mLauncher.findViewById(R.id.workspace_cling);
-                    ViewGroup clingParent = (ViewGroup) cling.getParent();
-                    int clingIndex = clingParent.indexOfChild(cling);
-                    clingParent.removeViewAt(clingIndex);
-                    View customCling = mInflater.inflate(R.layout.custom_workspace_cling,
-                            clingParent, false);
-                    clingParent.addView(customCling, clingIndex);
-                    customCling.setId(R.id.workspace_cling);
-                }
-            }
             Cling cling = (Cling) mLauncher.findViewById(R.id.first_run_cling);
             if (cling != null) {
                 String sbHintStr = mLauncher.getFirstRunClingSearchBarHint();
@@ -292,6 +272,7 @@
             removeCling(R.id.workspace_cling);
         }
     }
+
     public Cling showFoldersCling() {
         SharedPreferences sharedPrefs = mLauncher.getSharedPrefs();
         // Enable the clings only if they have not been dismissed before
@@ -314,6 +295,14 @@
         }
     }
 
+    public static void synchonouslyMarkFirstRunClingDismissed(Context ctx) {
+        SharedPreferences prefs = ctx.getSharedPreferences(
+                LauncherAppState.getSharedPreferencesKey(),Context.MODE_PRIVATE);
+        SharedPreferences.Editor editor = prefs.edit();
+        editor.putBoolean(LauncherClings.FIRST_RUN_CLING_DISMISSED_KEY, true);
+        editor.commit();
+    }
+
     /** Removes the cling outright from the DragLayer */
     private void removeCling(int id) {
         final View cling = mLauncher.findViewById(id);
@@ -453,4 +442,4 @@
         dismissCling(cling, null, FOLDER_CLING_DISMISSED_KEY,
                 DISMISS_CLING_DURATION, true);
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java
index a69f423..b952729 100644
--- a/src/com/android/launcher3/LauncherProvider.java
+++ b/src/com/android/launcher3/LauncherProvider.java
@@ -71,7 +71,7 @@
 
     private static final String DATABASE_NAME = "launcher.db";
 
-    private static final int DATABASE_VERSION = 16;
+    private static final int DATABASE_VERSION = 17;
 
     static final String OLD_AUTHORITY = "com.android.launcher2.settings";
     static final String AUTHORITY = ProviderConfig.AUTHORITY;
@@ -769,6 +769,16 @@
                 }
             }
 
+            if (version < 17) {
+                // We use the db version upgrade here to identify users who may not have seen
+                // clings yet (because they weren't available), but for whom the clings are now
+                // available (tablet users). Because one of the possible cling flows (migration)
+                // is very destructive (wipes out workspaces), we want to prevent this from showing
+                // until clear data. We do so by marking that the clings have been shown.
+                LauncherClings.synchonouslyMarkFirstRunClingDismissed(mContext);
+                version = 17;
+            }
+
             if (version != DATABASE_VERSION) {
                 Log.w(TAG, "Destroying all old data.");
                 db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES);