diff options
author | Michael Jurka <mikejurka@google.com> | 2010-11-29 18:22:45 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-11-29 18:22:45 -0800 |
commit | 016dca2030ea18d9f909654ff53b9eff86ac233b (patch) | |
tree | 0dccfe82211da7d1b2f39eb27cdcb8a200714e90 /src | |
parent | 8d006d5e144ae33e509ea42e0b9760ef6c5bc884 (diff) | |
parent | 4ef207ba1c200099d64a232c164b7ebfae48635e (diff) | |
download | packages_apps_trebuchet-016dca2030ea18d9f909654ff53b9eff86ac233b.zip packages_apps_trebuchet-016dca2030ea18d9f909654ff53b9eff86ac233b.tar.gz packages_apps_trebuchet-016dca2030ea18d9f909654ff53b9eff86ac233b.tar.bz2 |
Merge "Caching external icons in LauncherModel"
Diffstat (limited to 'src')
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 46 |
1 files changed, 42 insertions, 4 deletions
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index 2a2d364..1a486d7 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -259,6 +259,11 @@ public final class Launcher extends Activity private HashMap<View, AppWidgetProviderInfo> mWidgetsToAdvance = new HashMap<View, AppWidgetProviderInfo>(); + // External icons saved in case of resource changes, orientation, etc. + private static Drawable sGlobalSearchIcon; + private static Drawable sVoiceSearchIcon; + private static Drawable sAppMarketIcon; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -374,6 +379,19 @@ public final class Launcher extends Activity IntentFilter filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); registerReceiver(mCloseSystemDialogsReceiver, filter); + + // If we have a saved version of these external icons, we load them up immediately + if (LauncherApplication.isScreenXLarge()) { + if (sGlobalSearchIcon != null) { + updateGlobalSearchIcon(sGlobalSearchIcon); + } + if (sVoiceSearchIcon != null) { + updateVoiceSearchIcon(sVoiceSearchIcon); + } + if (sAppMarketIcon != null) { + updateAppMarketIcon(sAppMarketIcon); + } + } } private void checkForLocaleChange() { @@ -2880,7 +2898,8 @@ public final class Launcher extends Activity showWorkspace(true, layout); } - private void updateButtonWithIconFromExternalActivity( + // if successful in getting icon, return it; otherwise, set button to use default drawable + private Drawable updateButtonWithIconFromExternalActivity( int buttonId, ComponentName activityName, int fallbackDrawableId) { ImageView button = (ImageView) findViewById(buttonId); Drawable toolbarIcon = null; @@ -2902,18 +2921,25 @@ public final class Launcher extends Activity // If we were unable to find the icon via the meta-data, use a generic one if (toolbarIcon == null) { button.setImageResource(fallbackDrawableId); + return null; } else { button.setImageDrawable(toolbarIcon); + return toolbarIcon; } } + private void updateButtonWithDrawable(int buttonId, Drawable d) { + ImageView button = (ImageView) findViewById(buttonId); + button.setImageDrawable(d); + } + private void updateGlobalSearchIcon() { if (LauncherApplication.isScreenXLarge()) { final SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); ComponentName activityName = searchManager.getGlobalSearchActivity(); if (activityName != null) { - updateButtonWithIconFromExternalActivity( + sGlobalSearchIcon = updateButtonWithIconFromExternalActivity( R.id.search_button, activityName, R.drawable.search_button_generic); } else { findViewById(R.id.search_button).setVisibility(View.GONE); @@ -2921,12 +2947,16 @@ public final class Launcher extends Activity } } + private void updateGlobalSearchIcon(Drawable d) { + updateButtonWithDrawable(R.id.search_button, d); + } + private void updateVoiceSearchIcon() { if (LauncherApplication.isScreenXLarge()) { Intent intent = new Intent(RecognizerIntent.ACTION_WEB_SEARCH); ComponentName activityName = intent.resolveActivity(getPackageManager()); if (activityName != null) { - updateButtonWithIconFromExternalActivity( + sVoiceSearchIcon = updateButtonWithIconFromExternalActivity( R.id.voice_button, activityName, R.drawable.ic_voice_search); } else { findViewById(R.id.voice_button).setVisibility(View.GONE); @@ -2934,6 +2964,10 @@ public final class Launcher extends Activity } } + private void updateVoiceSearchIcon(Drawable d) { + updateButtonWithDrawable(R.id.voice_button, d); + } + /** * Sets the app market icon (shown when all apps is visible on x-large screens) */ @@ -2945,12 +2979,16 @@ public final class Launcher extends Activity ComponentName activityName = intent.resolveActivity(getPackageManager()); if (activityName != null) { mAppMarketIntent = intent; - updateButtonWithIconFromExternalActivity( + sAppMarketIcon = updateButtonWithIconFromExternalActivity( R.id.market_button, activityName, R.drawable.app_market_generic); } } } + private void updateAppMarketIcon(Drawable d) { + updateButtonWithDrawable(R.id.market_button, d); + } + /** * Displays the shortcut creation dialog and launches, if necessary, the * appropriate activity. |