Launcher cleanup and fixes.

- Removing unused hotseat assets
- Adding xhdpi assets from designer repo
- Decoupling dock divider and scroll bar to fix landscape divider issue
- Fixing issue where dock portals were being clipped

Change-Id: If3894a9a265e0272111e852857f9cfbf994ec050
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index af8d986..06713bd 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -282,7 +282,6 @@
                     Environment.getExternalStorageDirectory() + "/launcher");
         }
 
-        loadHotseats();
         checkForLocaleChange();
         setContentView(R.layout.launcher);
         setupViews();
@@ -368,7 +367,6 @@
             sLocaleConfiguration.mnc = mnc;
 
             mIconCache.flush();
-            loadHotseats();
 
             final LocaleConfiguration localeConfiguration = sLocaleConfiguration;
             new Thread("WriteLocaleConfiguration") {
@@ -458,141 +456,6 @@
         return Uri.parse(url);
     }
 
-    // Load the Intent templates from arrays.xml to populate the hotseats. For
-    // each Intent, if it resolves to a single app, use that as the launch
-    // intent & use that app's label as the contentDescription. Otherwise,
-    // retain the ResolveActivity so the user can pick an app.
-    private void loadHotseats() {
-        if (mHotseatConfig == null) {
-            mHotseatConfig = getResources().getStringArray(R.array.hotseats);
-            if (mHotseatConfig.length > 0) {
-                mHotseats = new Intent[mHotseatConfig.length];
-                mHotseatLabels = new CharSequence[mHotseatConfig.length];
-                mHotseatIcons = new Drawable[mHotseatConfig.length];
-            } else {
-                mHotseats = null;
-                mHotseatIcons = null;
-                mHotseatLabels = null;
-            }
-
-            TypedArray hotseatIconDrawables = getResources().obtainTypedArray(R.array.hotseat_icons);
-            for (int i=0; i<mHotseatConfig.length; i++) {
-                // load icon for this slot; currently unrelated to the actual activity
-                try {
-                    mHotseatIcons[i] = hotseatIconDrawables.getDrawable(i);
-                } catch (ArrayIndexOutOfBoundsException ex) {
-                    Log.w(TAG, "Missing hotseat_icons array item #" + i);
-                    mHotseatIcons[i] = null;
-                }
-            }
-            hotseatIconDrawables.recycle();
-        }
-
-        PackageManager pm = getPackageManager();
-        for (int i=0; i<mHotseatConfig.length; i++) {
-            Intent intent = null;
-            if (mHotseatConfig[i].equals("*BROWSER*")) {
-                // magic value meaning "launch user's default web browser"
-                // replace it with a generic web request so we can see if there is indeed a default
-                String defaultUri = getString(R.string.default_browser_url);
-                intent = new Intent(
-                        Intent.ACTION_VIEW,
-                        ((defaultUri != null)
-                            ? Uri.parse(defaultUri)
-                            : getDefaultBrowserUri())
-                    ).addCategory(Intent.CATEGORY_BROWSABLE);
-                // note: if the user launches this without a default set, she
-                // will always be taken to the default URL above; this is
-                // unavoidable as we must specify a valid URL in order for the
-                // chooser to appear, and once the user selects something, that
-                // URL is unavoidably sent to the chosen app.
-            } else {
-                try {
-                    intent = Intent.parseUri(mHotseatConfig[i], 0);
-                } catch (java.net.URISyntaxException ex) {
-                    Log.w(TAG, "Invalid hotseat intent: " + mHotseatConfig[i]);
-                    // bogus; leave intent=null
-                }
-            }
-
-            if (intent == null) {
-                mHotseats[i] = null;
-                mHotseatLabels[i] = getText(R.string.activity_not_found);
-                continue;
-            }
-
-            if (LOGD) {
-                Log.d(TAG, "loadHotseats: hotseat " + i
-                    + " initial intent=["
-                    + intent.toUri(Intent.URI_INTENT_SCHEME)
-                    + "]");
-            }
-
-            ResolveInfo bestMatch = pm.resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
-            List<ResolveInfo> allMatches = pm.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
-            if (LOGD) {
-                Log.d(TAG, "Best match for intent: " + bestMatch);
-                Log.d(TAG, "All matches: ");
-                for (ResolveInfo ri : allMatches) {
-                    Log.d(TAG, "  --> " + ri);
-                }
-            }
-            // did this resolve to a single app, or the resolver?
-            if (allMatches.size() == 0 || bestMatch == null) {
-                // can't find any activity to handle this. let's leave the
-                // intent as-is and let Launcher show a toast when it fails
-                // to launch.
-                mHotseats[i] = intent;
-
-                // set accessibility text to "Not installed"
-                mHotseatLabels[i] = getText(R.string.activity_not_found);
-            } else {
-                boolean found = false;
-                for (ResolveInfo ri : allMatches) {
-                    if (bestMatch.activityInfo.name.equals(ri.activityInfo.name)
-                        && bestMatch.activityInfo.applicationInfo.packageName
-                            .equals(ri.activityInfo.applicationInfo.packageName)) {
-                        found = true;
-                        break;
-                    }
-                }
-
-                if (!found) {
-                    if (LOGD) Log.d(TAG, "Multiple options, no default yet");
-                    // the bestMatch is probably the ResolveActivity, meaning the
-                    // user has not yet selected a default
-                    // so: we'll keep the original intent for now
-                    mHotseats[i] = intent;
-
-                    // set the accessibility text to "Select shortcut"
-                    mHotseatLabels[i] = getText(R.string.title_select_shortcut);
-                } else {
-                    // we have an app!
-                    // now reconstruct the intent to launch it through the front
-                    // door
-                    ComponentName com = new ComponentName(
-                        bestMatch.activityInfo.applicationInfo.packageName,
-                        bestMatch.activityInfo.name);
-                    mHotseats[i] = new Intent(Intent.ACTION_MAIN).setComponent(com);
-
-                    // load the app label for accessibility
-                    mHotseatLabels[i] = bestMatch.activityInfo.loadLabel(pm);
-                }
-            }
-
-            if (LOGD) {
-                Log.d(TAG, "loadHotseats: hotseat " + i
-                    + " final intent=["
-                    + ((mHotseats[i] == null)
-                        ? "null"
-                        : mHotseats[i].toUri(Intent.URI_INTENT_SCHEME))
-                    + "] label=[" + mHotseatLabels[i]
-                    + "]"
-                    );
-            }
-        }
-    }
-
     /**
      * Returns whether we should delay spring loaded mode -- for shortcuts and widgets that have
      * a configuration step, this allows the proper animations to run after other transitions.
@@ -2250,7 +2113,6 @@
                     if (!springLoaded && !LauncherApplication.isScreenLarge()) {
                         // Hide the workspace scrollbar
                         mWorkspace.hideScrollingIndicator(true);
-                        mWorkspace.hideScrollIndicatorTrack();
                     }
                 }
             });
@@ -2276,7 +2138,6 @@
                 if (!springLoaded && !LauncherApplication.isScreenLarge()) {
                     // Hide the workspace scrollbar
                     mWorkspace.hideScrollingIndicator(true);
-                    mWorkspace.hideScrollIndicatorTrack();
                 }
             }
         }
@@ -2334,7 +2195,6 @@
                 public void onAnimationStart(android.animation.Animator animation) {
                     if (!springLoaded && !LauncherApplication.isScreenLarge()) {
                         // Show the workspace scrollbar
-                        mWorkspace.showScrollIndicatorTrack();
                         mWorkspace.flashScrollingIndicator();
                     }
                 }
@@ -2356,8 +2216,7 @@
                 ((LauncherTransitionable) fromView).onLauncherTransitionEnd(null);
 
                 if (!springLoaded && !LauncherApplication.isScreenLarge()) {
-                    // Show the workspace scrollbar
-                    mWorkspace.showScrollIndicatorTrack();
+                    // Flash the workspace scrollbar
                     mWorkspace.flashScrollingIndicator();
                 }
             }