diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 14:04:32 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 14:04:32 -0800 |
commit | 38a75b2d89230a9c5b985bf2d5a142ad7ee910e7 (patch) | |
tree | ddbf0fb42445915d6573a41d09eb01035c6a60a1 /src/com/android/launcher/Launcher.java | |
parent | b28e1b7d95a4a9aeae54dcac6d1a24fa612ab918 (diff) | |
download | android_packages_apps_Trebuchet-38a75b2d89230a9c5b985bf2d5a142ad7ee910e7.tar.gz android_packages_apps_Trebuchet-38a75b2d89230a9c5b985bf2d5a142ad7ee910e7.tar.bz2 android_packages_apps_Trebuchet-38a75b2d89230a9c5b985bf2d5a142ad7ee910e7.zip |
auto import from //depot/cupcake/@132589
Diffstat (limited to 'src/com/android/launcher/Launcher.java')
-rw-r--r-- | src/com/android/launcher/Launcher.java | 170 |
1 files changed, 48 insertions, 122 deletions
diff --git a/src/com/android/launcher/Launcher.java b/src/com/android/launcher/Launcher.java index e88e55ebf..58fcd5a28 100644 --- a/src/com/android/launcher/Launcher.java +++ b/src/com/android/launcher/Launcher.java @@ -40,7 +40,6 @@ import android.database.ContentObserver; import android.gadget.GadgetProviderInfo; import android.gadget.GadgetManager; import android.graphics.Bitmap; -import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.TransitionDrawable; @@ -87,7 +86,6 @@ import java.util.ArrayList; */ public final class Launcher extends Activity implements View.OnClickListener, OnLongClickListener { static final String LOG_TAG = "Launcher"; - static final boolean LOGD = false; private static final boolean PROFILE_STARTUP = false; private static final boolean DEBUG_USER_INTERFACE = false; @@ -171,7 +169,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On private GadgetManager mGadgetManager; private LauncherGadgetHost mGadgetHost; - static final int GADGET_HOST_ID = 1024; + private static final int GADGET_HOST_ID = 1024; private CellLayout.CellInfo mAddItemCellInfo; private CellLayout.CellInfo mMenuAddInfo; @@ -193,8 +191,6 @@ public final class Launcher extends Activity implements View.OnClickListener, On private boolean mWaitingForResult; private boolean mLocaleChanged; - private Bundle mSavedInstanceState; - @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -205,6 +201,8 @@ public final class Launcher extends Activity implements View.OnClickListener, On mGadgetHost = new LauncherGadgetHost(this, GADGET_HOST_ID); mGadgetHost.startListening(); + // TODO: figure out if this is first launch and correctly clear GadgetHost database + if (PROFILE_STARTUP) { android.os.Debug.startMethodTracing("/sdcard/launcher"); } @@ -357,11 +355,15 @@ public final class Launcher extends Activity implements View.OnClickListener, On } return handled; } - private boolean acceptFilter() { + final Configuration configuration = getResources().getConfiguration(); + final boolean keyboardShowing = configuration.keyboardHidden != + Configuration.KEYBOARDHIDDEN_YES; + final boolean hasKeyboard = configuration.keyboard != Configuration.KEYBOARD_NOKEYS; final InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - return !inputManager.isFullscreenMode(); + return (hasKeyboard && keyboardShowing) || + (!hasKeyboard && !inputManager.isFullscreenMode()); } @Override @@ -631,7 +633,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On mWorkspace.getCurrentScreen(), xy[0], xy[1], false); if (!mRestoring) { - sModel.addDesktopGadget(launcherInfo); + sModel.addDesktopItem(launcherInfo); // Perform actual inflation because we're live launcherInfo.hostView = mGadgetHost.createView(this, gadgetId, gadgetInfo); @@ -642,7 +644,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On mWorkspace.addInCurrentScreen(launcherInfo.hostView, xy[0], xy[1], launcherInfo.spanX, launcherInfo.spanY, insertAtFirst); } else if (sModel.isDesktopLoaded()) { - sModel.addDesktopGadget(launcherInfo); + sModel.addDesktopItem(launcherInfo); } } @@ -744,12 +746,6 @@ public final class Launcher extends Activity implements View.OnClickListener, On } @Override - protected void onRestoreInstanceState(Bundle savedInstanceState) { - // Do not call super here - mSavedInstanceState = savedInstanceState; - } - - @Override protected void onSaveInstanceState(Bundle outState) { outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getCurrentScreen()); @@ -797,11 +793,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On super.onDestroy(); - try { - mGadgetHost.stopListening(); - } catch (NullPointerException ex) { - Log.w(LOG_TAG, "problem while stopping GadgetHost during Launcher destruction", ex); - } + mGadgetHost.stopListening(); TextKeyListener.getInstance().release(); @@ -1164,8 +1156,8 @@ public final class Launcher extends Activity implements View.OnClickListener, On void onDesktopItemsLoaded() { if (mDestroyed) return; - mAllAppsGrid.setAdapter(Launcher.getModel().getApplicationsAdapter()); bindDesktopItems(); + mAllAppsGrid.setAdapter(Launcher.getModel().getApplicationsAdapter()); } /** @@ -1173,8 +1165,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On */ private void bindDesktopItems() { final ArrayList<ItemInfo> shortcuts = sModel.getDesktopItems(); - final ArrayList<LauncherGadgetInfo> gadgets = sModel.getDesktopGadgets(); - if (shortcuts == null || gadgets == null) { + if (shortcuts == null) { return; } @@ -1196,17 +1187,19 @@ public final class Launcher extends Activity implements View.OnClickListener, On }); } - final DesktopBinder binder = new DesktopBinder(this, shortcuts, gadgets); - binder.startBindingItems(); + count = shortcuts.size(); + + final DesktopItemsBinder binder = new DesktopItemsBinder(this, shortcuts); + binder.obtainMessage(DesktopItemsBinder.MESSAGE_BIND_ITEMS, 0, count).sendToTarget(); } - private void bindItems(Launcher.DesktopBinder binder, + private void bindItems(Launcher.DesktopItemsBinder binder, ArrayList<ItemInfo> shortcuts, int start, int count) { final Workspace workspace = mWorkspace; final boolean desktopLocked = mDesktopLocked; - final int end = Math.min(start + DesktopBinder.ITEMS_COUNT, count); + final int end = Math.min(start + DesktopItemsBinder.ITEMS_COUNT, count); int i = start; for ( ; i < end; i++) { @@ -1233,6 +1226,21 @@ public final class Launcher extends Activity implements View.OnClickListener, On workspace.addInScreen(newLiveFolder, item.screen, item.cellX, item.cellY, 1, 1, !desktopLocked); break; + case LauncherSettings.Favorites.ITEM_TYPE_GADGET: + final LauncherGadgetInfo launcherInfo = (LauncherGadgetInfo) item; + + final int gadgetId = launcherInfo.gadgetId; + GadgetProviderInfo gadgetInfo = mGadgetManager.getGadgetInfo(gadgetId); + launcherInfo.hostView = mGadgetHost.createView(this, gadgetId, gadgetInfo); + + Log.d(LOG_TAG, "about to setGadget for id="+gadgetId+", info="+gadgetInfo); + launcherInfo.hostView.setGadget(gadgetId, gadgetInfo); + launcherInfo.hostView.setTag(launcherInfo); + + workspace.addInScreen(launcherInfo.hostView, item.screen, item.cellX, + item.cellY, item.spanX, item.spanY, !desktopLocked); + + break; case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH: final int screen = workspace.getCurrentScreen(); final View view = mInflater.inflate(R.layout.widget_search, @@ -1250,17 +1258,14 @@ public final class Launcher extends Activity implements View.OnClickListener, On if (end >= count) { finishBindDesktopItems(); - binder.startBindingGadgets(); } else { - binder.obtainMessage(DesktopBinder.MESSAGE_BIND_ITEMS, i, count).sendToTarget(); + binder.obtainMessage(DesktopItemsBinder.MESSAGE_BIND_ITEMS, i, count).sendToTarget(); } } private void finishBindDesktopItems() { if (mSavedState != null) { - if (!mWorkspace.hasFocus()) { - mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus(); - } + mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus(); final long[] userFolders = mSavedState.getLongArray(RUNTIME_STATE_USER_FOLDERS); if (userFolders != null) { @@ -1273,67 +1278,24 @@ public final class Launcher extends Activity implements View.OnClickListener, On final Folder openFolder = mWorkspace.getOpenFolder(); if (openFolder != null) { openFolder.requestFocus(); + } else { + mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus(); } } final boolean allApps = mSavedState.getBoolean(RUNTIME_STATE_ALL_APPS_FOLDER, false); if (allApps) { mDrawer.open(); + mDrawer.requestFocus(); } mSavedState = null; } - if (mSavedInstanceState != null) { - super.onRestoreInstanceState(mSavedInstanceState); - mSavedInstanceState = null; - } - - if (mDrawer.isOpened() && !mDrawer.hasFocus()) { - mDrawer.requestFocus(); - } - mDesktopLocked = false; mDrawer.unlock(); } - private void bindGadgets(Launcher.DesktopBinder binder, - ArrayList<LauncherGadgetInfo> gadgets, int start, int count) { - - final Workspace workspace = mWorkspace; - final boolean desktopLocked = mDesktopLocked; - - final int end = Math.min(start + DesktopBinder.GADGETS_COUNT, count); - int i = start; - - for ( ; i < end; i++) { - final LauncherGadgetInfo item = gadgets.get(i); - - final int gadgetId = item.gadgetId; - final GadgetProviderInfo gadgetInfo = mGadgetManager.getGadgetInfo(gadgetId); - item.hostView = mGadgetHost.createView(this, gadgetId, gadgetInfo); - - if (LOGD) Log.d(LOG_TAG, String.format("about to setGadget for id=%d, info=%s", gadgetId, gadgetInfo)); - - item.hostView.setGadget(gadgetId, gadgetInfo); - item.hostView.setTag(item); - - workspace.addInScreen(item.hostView, item.screen, item.cellX, - item.cellY, item.spanX, item.spanY, !desktopLocked); - } - - workspace.requestLayout(); - - if (end >= count) { - finishBindDesktopGadgets(); - } else { - binder.obtainMessage(DesktopBinder.MESSAGE_BIND_GADGETS, i, count).sendToTarget(); - } - } - - private void finishBindDesktopGadgets() { - } - DragController getDragController() { return mDragLayer; } @@ -1457,7 +1419,7 @@ public final class Launcher extends Activity implements View.OnClickListener, On // This happens when long clicking an item with the dpad/trackball if (cellInfo == null) { - return true; + return false; } if (mWorkspace.allowLongPress()) { @@ -1488,10 +1450,6 @@ public final class Launcher extends Activity implements View.OnClickListener, On return !mDrawer.isMoving() && !mDrawer.isOpened(); } - boolean isDrawerUp() { - return mDrawer.isOpened() && !mDrawer.isMoving(); - } - Workspace getWorkspace() { return mWorkspace; } @@ -1808,16 +1766,6 @@ public final class Launcher extends Activity implements View.OnClickListener, On public void onDrawerOpened() { if (!mOpen) { mHandleIcon.reverseTransition(150); - final Rect bounds = mWorkspace.mDrawerBounds; - - View view = mAllAppsGrid; - view.getDrawingRect(bounds); - - while (view != mDragLayer) { - bounds.offset(view.getLeft(), view.getTop()); - view = (View) view.getParent(); - } - mOpen = true; } } @@ -1825,63 +1773,41 @@ public final class Launcher extends Activity implements View.OnClickListener, On public void onDrawerClosed() { if (mOpen) { mHandleIcon.reverseTransition(150); - mWorkspace.mDrawerBounds.setEmpty(); mOpen = false; } mAllAppsGrid.setSelection(0); mAllAppsGrid.clearTextFilter(); + mWorkspace.clearChildrenCache(); } public void onScrollStarted() { + mWorkspace.enableChildrenCache(); } public void onScrollEnded() { } } - private static class DesktopBinder extends Handler { + private static class DesktopItemsBinder extends Handler { static final int MESSAGE_BIND_ITEMS = 0x1; - static final int MESSAGE_BIND_GADGETS = 0x2; // Number of items to bind in every pass static final int ITEMS_COUNT = 6; - static final int GADGETS_COUNT = 1; private final ArrayList<ItemInfo> mShortcuts; - private final ArrayList<LauncherGadgetInfo> mGadgets; private final WeakReference<Launcher> mLauncher; - DesktopBinder(Launcher launcher, ArrayList<ItemInfo> shortcuts, - ArrayList<LauncherGadgetInfo> gadgets) { - + DesktopItemsBinder(Launcher launcher, ArrayList<ItemInfo> shortcuts) { mLauncher = new WeakReference<Launcher>(launcher); mShortcuts = shortcuts; - mGadgets = gadgets; - } - - public void startBindingItems() { - obtainMessage(MESSAGE_BIND_ITEMS, 0, mShortcuts.size()).sendToTarget(); } - public void startBindingGadgets() { - obtainMessage(MESSAGE_BIND_GADGETS, 0, mGadgets.size()).sendToTarget(); - } - @Override public void handleMessage(Message msg) { - Launcher launcher = mLauncher.get(); - if (launcher == null) { - return; - } - switch (msg.what) { - case MESSAGE_BIND_ITEMS: { - launcher.bindItems(this, mShortcuts, msg.arg1, msg.arg2); - break; - } - case MESSAGE_BIND_GADGETS: { - launcher.bindGadgets(this, mGadgets, msg.arg1, msg.arg2); + case MESSAGE_BIND_ITEMS: + Launcher launcher = mLauncher.get(); + if (launcher != null) launcher.bindItems(this, mShortcuts, msg.arg1, msg.arg2); break; - } } } } |