Launcherpublic final class Launcher extends android.app.Activity implements android.view.View.OnLongClickListener, View.OnClickListenerDefault launcher application. |
Fields Summary |
---|
static final String | LOG_TAG | static final boolean | LOGD | private static final boolean | PROFILE_STARTUP | private static final boolean | PROFILE_DRAWER | private static final boolean | PROFILE_ROTATE | private static final boolean | DEBUG_USER_INTERFACE | private static final int | WALLPAPER_SCREENS_SPAN | private static final int | MENU_GROUP_ADD | private static final int | MENU_ADD | private static final int | MENU_WALLPAPER_SETTINGS | private static final int | MENU_SEARCH | private static final int | MENU_NOTIFICATIONS | private static final int | MENU_SETTINGS | private static final int | REQUEST_CREATE_SHORTCUT | private static final int | REQUEST_CREATE_LIVE_FOLDER | private static final int | REQUEST_CREATE_APPWIDGET | private static final int | REQUEST_PICK_APPLICATION | private static final int | REQUEST_PICK_SHORTCUT | private static final int | REQUEST_PICK_LIVE_FOLDER | private static final int | REQUEST_PICK_APPWIDGET | static final String | EXTRA_SHORTCUT_DUPLICATE | static final String | EXTRA_CUSTOM_WIDGET | static final String | SEARCH_WIDGET | static final int | SCREEN_COUNT | static final int | DEFAULT_SCREN | static final int | NUMBER_CELLS_X | static final int | NUMBER_CELLS_Y | private static final int | DIALOG_CREATE_SHORTCUT | static final int | DIALOG_RENAME_FOLDER | private static final String | PREFERENCES | private static final String | KEY_LOCALE | private static final String | KEY_MCC | private static final String | KEY_MNC | private static final String | RUNTIME_STATE_CURRENT_SCREEN | private static final String | RUNTIME_STATE_ALL_APPS_FOLDER | private static final String | RUNTIME_STATE_USER_FOLDERS | private static final String | RUNTIME_STATE_PENDING_ADD_SCREEN | private static final String | RUNTIME_STATE_PENDING_ADD_CELL_X | private static final String | RUNTIME_STATE_PENDING_ADD_CELL_Y | private static final String | RUNTIME_STATE_PENDING_ADD_SPAN_X | private static final String | RUNTIME_STATE_PENDING_ADD_SPAN_Y | private static final String | RUNTIME_STATE_PENDING_ADD_COUNT_X | private static final String | RUNTIME_STATE_PENDING_ADD_COUNT_Y | private static final String | RUNTIME_STATE_PENDING_ADD_OCCUPIED_CELLS | private static final String | RUNTIME_STATE_PENDING_FOLDER_RENAME | private static final String | RUNTIME_STATE_PENDING_FOLDER_RENAME_ID | private static final LauncherModel | sModel | private static android.graphics.Bitmap | sWallpaper | private static final Object | sLock | private static int | sScreen | private static WallpaperIntentReceiver | sWallpaperReceiver | private final android.content.BroadcastReceiver | mApplicationsReceiver | private final android.database.ContentObserver | mObserver | private final android.database.ContentObserver | mAppWidgetResetObserver | private android.view.LayoutInflater | mInflater | private DragLayer | mDragLayer | private Workspace | mWorkspace | private android.appwidget.AppWidgetManager | mAppWidgetManager | private LauncherAppWidgetHost | mAppWidgetHost | static final int | APPWIDGET_HOST_ID | private CellLayout.CellInfo | mAddItemCellInfo | private CellLayout.CellInfo | mMenuAddInfo | private final int[] | mCellCoordinates | private FolderInfo | mFolderInfo | private android.widget.SlidingDrawer | mDrawer | private android.graphics.drawable.TransitionDrawable | mHandleIcon | private HandleView | mHandleView | private AllAppsGridView | mAllAppsGrid | private boolean | mDesktopLocked | private android.os.Bundle | mSavedState | private android.text.SpannableStringBuilder | mDefaultKeySsb | private boolean | mDestroyed | private boolean | mRestoring | private boolean | mWaitingForResult | private boolean | mLocaleChanged | private android.os.Bundle | mSavedInstanceState | private DesktopBinder | mBinder |
Methods Summary |
---|
private boolean | acceptFilter()
final InputMethodManager inputManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
return !inputManager.isFullscreenMode();
| void | addAppWidget(android.content.Intent data)
// TODO: catch bad widget exception when sent
int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
String customWidget = data.getStringExtra(EXTRA_CUSTOM_WIDGET);
if (SEARCH_WIDGET.equals(customWidget)) {
// We don't need this any more, since this isn't a real app widget.
mAppWidgetHost.deleteAppWidgetId(appWidgetId);
// add the search widget
addSearch();
} else {
AppWidgetProviderInfo appWidget = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
if (appWidget.configure != null) {
// Launch over to configure widget, if needed
Intent intent = new Intent(AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);
intent.setComponent(appWidget.configure);
intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
startActivityForResult(intent, REQUEST_CREATE_APPWIDGET);
} else {
// Otherwise just add it
onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data);
}
}
| void | addFolder(boolean insertAtFirst)
UserFolderInfo folderInfo = new UserFolderInfo();
folderInfo.title = getText(R.string.folder_name);
CellLayout.CellInfo cellInfo = mAddItemCellInfo;
cellInfo.screen = mWorkspace.getCurrentScreen();
if (!findSingleSlot(cellInfo)) return;
// Update the model
LauncherModel.addItemToDatabase(this, folderInfo, LauncherSettings.Favorites.CONTAINER_DESKTOP,
mWorkspace.getCurrentScreen(), cellInfo.cellX, cellInfo.cellY, false);
sModel.addDesktopItem(folderInfo);
sModel.addFolder(folderInfo);
// Create the view
FolderIcon newFolder = FolderIcon.fromXml(R.layout.folder_icon, this,
(ViewGroup) mWorkspace.getChildAt(mWorkspace.getCurrentScreen()), folderInfo);
mWorkspace.addInCurrentScreen(newFolder,
cellInfo.cellX, cellInfo.cellY, 1, 1, insertAtFirst);
| private void | addItems()
showAddDialog(mMenuAddInfo);
| void | addLiveFolder(android.content.Intent intent)
// Handle case where user selected "Folder"
String folderName = getResources().getString(R.string.group_folder);
String shortcutName = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
if (folderName != null && folderName.equals(shortcutName)) {
addFolder(!mDesktopLocked);
} else {
startActivityForResult(intent, REQUEST_CREATE_LIVE_FOLDER);
}
| static LiveFolderInfo | addLiveFolder(android.content.Context context, android.content.Intent data, CellLayout.CellInfo cellInfo, boolean notify)
Intent baseIntent = data.getParcelableExtra(LiveFolders.EXTRA_LIVE_FOLDER_BASE_INTENT);
String name = data.getStringExtra(LiveFolders.EXTRA_LIVE_FOLDER_NAME);
Drawable icon = null;
boolean filtered = false;
Intent.ShortcutIconResource iconResource = null;
Parcelable extra = data.getParcelableExtra(LiveFolders.EXTRA_LIVE_FOLDER_ICON);
if (extra != null && extra instanceof Intent.ShortcutIconResource) {
try {
iconResource = (Intent.ShortcutIconResource) extra;
final PackageManager packageManager = context.getPackageManager();
Resources resources = packageManager.getResourcesForApplication(
iconResource.packageName);
final int id = resources.getIdentifier(iconResource.resourceName, null, null);
icon = resources.getDrawable(id);
} catch (Exception e) {
w(LOG_TAG, "Could not load live folder icon: " + extra);
}
}
if (icon == null) {
icon = context.getResources().getDrawable(R.drawable.ic_launcher_folder);
}
final LiveFolderInfo info = new LiveFolderInfo();
info.icon = icon;
info.filtered = filtered;
info.title = name;
info.iconResource = iconResource;
info.uri = data.getData();
info.baseIntent = baseIntent;
info.displayMode = data.getIntExtra(LiveFolders.EXTRA_LIVE_FOLDER_DISPLAY_MODE,
LiveFolders.DISPLAY_MODE_GRID);
LauncherModel.addItemToDatabase(context, info, LauncherSettings.Favorites.CONTAINER_DESKTOP,
cellInfo.screen, cellInfo.cellX, cellInfo.cellY, notify);
sModel.addFolder(info);
return info;
| void | addSearch()
final Widget info = Widget.makeSearch();
final CellLayout.CellInfo cellInfo = mAddItemCellInfo;
final int[] xy = mCellCoordinates;
final int spanX = info.spanX;
final int spanY = info.spanY;
if (!findSlot(cellInfo, xy, spanX, spanY)) return;
sModel.addDesktopItem(info);
LauncherModel.addItemToDatabase(this, info, LauncherSettings.Favorites.CONTAINER_DESKTOP,
mWorkspace.getCurrentScreen(), xy[0], xy[1], false);
final View view = mInflater.inflate(info.layoutResource, null);
view.setTag(info);
mWorkspace.addInCurrentScreen(view, xy[0], xy[1], info.spanX, spanY);
| static ApplicationInfo | addShortcut(android.content.Context context, android.content.Intent data, CellLayout.CellInfo cellInfo, boolean notify)
Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT);
String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
Bitmap bitmap = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON);
Drawable icon = null;
boolean filtered = false;
boolean customIcon = false;
Intent.ShortcutIconResource iconResource = null;
if (bitmap != null) {
icon = new FastBitmapDrawable(Utilities.createBitmapThumbnail(bitmap, context));
filtered = true;
customIcon = true;
} else {
Parcelable extra = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE);
if (extra != null && extra instanceof Intent.ShortcutIconResource) {
try {
iconResource = (Intent.ShortcutIconResource) extra;
final PackageManager packageManager = context.getPackageManager();
Resources resources = packageManager.getResourcesForApplication(
iconResource.packageName);
final int id = resources.getIdentifier(iconResource.resourceName, null, null);
icon = resources.getDrawable(id);
} catch (Exception e) {
w(LOG_TAG, "Could not load shortcut icon: " + extra);
}
}
}
if (icon == null) {
icon = context.getPackageManager().getDefaultActivityIcon();
}
final ApplicationInfo info = new ApplicationInfo();
info.icon = icon;
info.filtered = filtered;
info.title = name;
info.intent = intent;
info.customIcon = customIcon;
info.iconResource = iconResource;
LauncherModel.addItemToDatabase(context, info, LauncherSettings.Favorites.CONTAINER_DESKTOP,
cellInfo.screen, cellInfo.cellX, cellInfo.cellY, notify);
return info;
| void | addShortcut(android.content.Intent intent)
// Handle case where user selected "Applications"
String applicationName = getResources().getString(R.string.group_applications);
String shortcutName = intent.getStringExtra(Intent.EXTRA_SHORTCUT_NAME);
if (applicationName != null && applicationName.equals(shortcutName)) {
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
startActivityForResult(pickIntent, REQUEST_PICK_APPLICATION);
} else {
startActivityForResult(intent, REQUEST_CREATE_SHORTCUT);
}
| private void | bindAppWidgets(com.android.launcher.Launcher$DesktopBinder binder, java.util.LinkedList appWidgets)
final Workspace workspace = mWorkspace;
final boolean desktopLocked = mDesktopLocked;
if (!appWidgets.isEmpty()) {
final LauncherAppWidgetInfo item = appWidgets.removeFirst();
final int appWidgetId = item.appWidgetId;
final AppWidgetProviderInfo appWidgetInfo =
mAppWidgetManager.getAppWidgetInfo(appWidgetId);
item.hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
if (LOGD) {
d(LOG_TAG, String.format("about to setAppWidget for id=%d, info=%s",
appWidgetId, appWidgetInfo));
}
item.hostView.setAppWidget(appWidgetId, appWidgetInfo);
item.hostView.setTag(item);
workspace.addInScreen(item.hostView, item.screen, item.cellX,
item.cellY, item.spanX, item.spanY, !desktopLocked);
workspace.requestLayout();
}
if (appWidgets.isEmpty()) {
if (PROFILE_ROTATE) {
android.os.Debug.stopMethodTracing();
}
} else {
binder.obtainMessage(DesktopBinder.MESSAGE_BIND_APPWIDGETS).sendToTarget();
}
| private void | bindDesktopItems()Refreshes the shortcuts shown on the workspace.
final ArrayList<ItemInfo> shortcuts = sModel.getDesktopItems();
final ArrayList<LauncherAppWidgetInfo> appWidgets = sModel.getDesktopAppWidgets();
final ApplicationsAdapter drawerAdapter = sModel.getApplicationsAdapter();
if (shortcuts == null || appWidgets == null || drawerAdapter == null) {
return;
}
mAllAppsGrid.setAdapter(drawerAdapter);
final Workspace workspace = mWorkspace;
int count = workspace.getChildCount();
for (int i = 0; i < count; i++) {
((ViewGroup) workspace.getChildAt(i)).removeAllViewsInLayout();
}
if (DEBUG_USER_INTERFACE) {
android.widget.Button finishButton = new android.widget.Button(this);
finishButton.setText("Finish");
workspace.addInScreen(finishButton, 1, 0, 0, 1, 1);
finishButton.setOnClickListener(new android.widget.Button.OnClickListener() {
public void onClick(View v) {
finish();
}
});
}
// Flag any old binder to terminate early
if (mBinder != null) {
mBinder.mTerminate = true;
}
mBinder = new DesktopBinder(this, shortcuts, appWidgets);
mBinder.startBindingItems();
| private void | bindItems(com.android.launcher.Launcher$DesktopBinder binder, java.util.ArrayList shortcuts, int start, int count)
final Workspace workspace = mWorkspace;
final boolean desktopLocked = mDesktopLocked;
final int end = Math.min(start + DesktopBinder.ITEMS_COUNT, count);
int i = start;
for ( ; i < end; i++) {
final ItemInfo item = shortcuts.get(i);
switch (item.itemType) {
case LauncherSettings.Favorites.ITEM_TYPE_APPLICATION:
case LauncherSettings.Favorites.ITEM_TYPE_SHORTCUT:
final View shortcut = createShortcut((ApplicationInfo) item);
workspace.addInScreen(shortcut, item.screen, item.cellX, item.cellY, 1, 1,
!desktopLocked);
break;
case LauncherSettings.Favorites.ITEM_TYPE_USER_FOLDER:
final FolderIcon newFolder = FolderIcon.fromXml(R.layout.folder_icon, this,
(ViewGroup) workspace.getChildAt(workspace.getCurrentScreen()),
(UserFolderInfo) item);
workspace.addInScreen(newFolder, item.screen, item.cellX, item.cellY, 1, 1,
!desktopLocked);
break;
case LauncherSettings.Favorites.ITEM_TYPE_LIVE_FOLDER:
final FolderIcon newLiveFolder = LiveFolderIcon.fromXml(
R.layout.live_folder_icon, this,
(ViewGroup) workspace.getChildAt(workspace.getCurrentScreen()),
(LiveFolderInfo) item);
workspace.addInScreen(newLiveFolder, item.screen, item.cellX, item.cellY, 1, 1,
!desktopLocked);
break;
case LauncherSettings.Favorites.ITEM_TYPE_WIDGET_SEARCH:
final int screen = workspace.getCurrentScreen();
final View view = mInflater.inflate(R.layout.widget_search,
(ViewGroup) workspace.getChildAt(screen), false);
final Widget widget = (Widget) item;
view.setTag(widget);
workspace.addWidget(view, widget, !desktopLocked);
break;
}
}
workspace.requestLayout();
if (end >= count) {
finishBindDesktopItems();
binder.startBindingAppWidgetsWhenIdle();
} else {
binder.obtainMessage(DesktopBinder.MESSAGE_BIND_ITEMS, i, count).sendToTarget();
}
| private void | checkForLocaleChange()
final SharedPreferences preferences = getSharedPreferences(PREFERENCES, MODE_PRIVATE);
final Configuration configuration = getResources().getConfiguration();
final String previousLocale = preferences.getString(KEY_LOCALE, null);
final String locale = configuration.locale.toString();
final int previousMcc = preferences.getInt(KEY_MCC, -1);
final int mcc = configuration.mcc;
final int previousMnc = preferences.getInt(KEY_MNC, -1);
final int mnc = configuration.mnc;
mLocaleChanged = !locale.equals(previousLocale) || mcc != previousMcc || mnc != previousMnc;
if (mLocaleChanged) {
final SharedPreferences.Editor editor = preferences.edit();
editor.putString(KEY_LOCALE, locale);
editor.putInt(KEY_MCC, mcc);
editor.putInt(KEY_MNC, mnc);
editor.commit();
}
| void | closeAllApplications()
mDrawer.close();
| private void | closeDrawer()
closeDrawer(true);
| private void | closeDrawer(boolean animated)
if (mDrawer.isOpened()) {
if (animated) {
mDrawer.animateClose();
} else {
mDrawer.close();
}
if (mDrawer.hasFocus()) {
mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
}
}
| private void | closeFolder()
Folder folder = mWorkspace.getOpenFolder();
if (folder != null) {
closeFolder(folder);
}
| void | closeFolder(Folder folder)
folder.getInfo().opened = false;
ViewGroup parent = (ViewGroup) folder.getParent();
if (parent != null) {
parent.removeView(folder);
}
folder.onClose();
| private void | completeAddAppWidget(android.content.Intent data, CellLayout.CellInfo cellInfo, boolean insertAtFirst)Add a widget to the workspace.
Bundle extras = data.getExtras();
int appWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
d(LOG_TAG, "dumping extras content="+extras.toString());
AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager.getAppWidgetInfo(appWidgetId);
// Calculate the grid spans needed to fit this widget
CellLayout layout = (CellLayout) mWorkspace.getChildAt(cellInfo.screen);
int[] spans = layout.rectToCell(appWidgetInfo.minWidth, appWidgetInfo.minHeight);
// Try finding open space on Launcher screen
final int[] xy = mCellCoordinates;
if (!findSlot(cellInfo, xy, spans[0], spans[1])) return;
// Build Launcher-specific widget info and save to database
LauncherAppWidgetInfo launcherInfo = new LauncherAppWidgetInfo(appWidgetId);
launcherInfo.spanX = spans[0];
launcherInfo.spanY = spans[1];
LauncherModel.addItemToDatabase(this, launcherInfo,
LauncherSettings.Favorites.CONTAINER_DESKTOP,
mWorkspace.getCurrentScreen(), xy[0], xy[1], false);
if (!mRestoring) {
sModel.addDesktopAppWidget(launcherInfo);
// Perform actual inflation because we're live
launcherInfo.hostView = mAppWidgetHost.createView(this, appWidgetId, appWidgetInfo);
launcherInfo.hostView.setAppWidget(appWidgetId, appWidgetInfo);
launcherInfo.hostView.setTag(launcherInfo);
mWorkspace.addInCurrentScreen(launcherInfo.hostView, xy[0], xy[1],
launcherInfo.spanX, launcherInfo.spanY, insertAtFirst);
} else if (sModel.isDesktopLoaded()) {
sModel.addDesktopAppWidget(launcherInfo);
}
| void | completeAddApplication(android.content.Context context, android.content.Intent data, CellLayout.CellInfo cellInfo, boolean insertAtFirst)Add an application shortcut to the workspace.
cellInfo.screen = mWorkspace.getCurrentScreen();
if (!findSingleSlot(cellInfo)) return;
// Find details for this application
ComponentName component = data.getComponent();
PackageManager packageManager = context.getPackageManager();
ActivityInfo activityInfo = null;
try {
activityInfo = packageManager.getActivityInfo(component, 0 /* no flags */);
} catch (NameNotFoundException e) {
Log.e(LOG_TAG, "Couldn't find ActivityInfo for selected application", e);
}
if (activityInfo != null) {
ApplicationInfo itemInfo = new ApplicationInfo();
itemInfo.title = activityInfo.loadLabel(packageManager);
if (itemInfo.title == null) {
itemInfo.title = activityInfo.name;
}
itemInfo.setActivity(component, Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
itemInfo.icon = activityInfo.loadIcon(packageManager);
itemInfo.container = ItemInfo.NO_ID;
mWorkspace.addApplicationShortcut(itemInfo, cellInfo, insertAtFirst);
}
| private void | completeAddLiveFolder(android.content.Intent data, CellLayout.CellInfo cellInfo, boolean insertAtFirst)
cellInfo.screen = mWorkspace.getCurrentScreen();
if (!findSingleSlot(cellInfo)) return;
final LiveFolderInfo info = addLiveFolder(this, data, cellInfo, false);
if (!mRestoring) {
sModel.addDesktopItem(info);
final View view = LiveFolderIcon.fromXml(R.layout.live_folder_icon, this,
(ViewGroup) mWorkspace.getChildAt(mWorkspace.getCurrentScreen()), info);
mWorkspace.addInCurrentScreen(view, cellInfo.cellX, cellInfo.cellY, 1, 1, insertAtFirst);
} else if (sModel.isDesktopLoaded()) {
sModel.addDesktopItem(info);
}
| private void | completeAddShortcut(android.content.Intent data, CellLayout.CellInfo cellInfo, boolean insertAtFirst)Add a shortcut to the workspace.
cellInfo.screen = mWorkspace.getCurrentScreen();
if (!findSingleSlot(cellInfo)) return;
final ApplicationInfo info = addShortcut(this, data, cellInfo, false);
if (!mRestoring) {
sModel.addDesktopItem(info);
final View view = createShortcut(info);
mWorkspace.addInCurrentScreen(view, cellInfo.cellX, cellInfo.cellY, 1, 1, insertAtFirst);
} else if (sModel.isDesktopLoaded()) {
sModel.addDesktopItem(info);
}
| android.view.View | createShortcut(ApplicationInfo info)Creates a view representing a shortcut.
return createShortcut(R.layout.application,
(ViewGroup) mWorkspace.getChildAt(mWorkspace.getCurrentScreen()), info);
| android.view.View | createShortcut(int layoutResId, android.view.ViewGroup parent, ApplicationInfo info)Creates a view representing a shortcut inflated from the specified resource.
TextView favorite = (TextView) mInflater.inflate(layoutResId, parent, false);
if (!info.filtered) {
info.icon = Utilities.createIconThumbnail(info.icon, this);
info.filtered = true;
}
favorite.setCompoundDrawablesWithIntrinsicBounds(null, info.icon, null, null);
favorite.setText(info.title);
favorite.setTag(info);
favorite.setOnClickListener(this);
return favorite;
| public boolean | dispatchKeyEvent(android.view.KeyEvent event)
if (event.getAction() == KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
mWorkspace.dispatchKeyEvent(event);
if (mDrawer.isOpened()) {
closeDrawer();
} else {
closeFolder();
}
return true;
case KeyEvent.KEYCODE_HOME:
return true;
}
}
return super.dispatchKeyEvent(event);
| private boolean | findSingleSlot(CellLayout.CellInfo cellInfo)
final int[] xy = new int[2];
if (findSlot(cellInfo, xy, 1, 1)) {
cellInfo.cellX = xy[0];
cellInfo.cellY = xy[1];
return true;
}
return false;
| private boolean | findSlot(CellLayout.CellInfo cellInfo, int[] xy, int spanX, int spanY)
if (!cellInfo.findCellForSpan(xy, spanX, spanY)) {
boolean[] occupied = mSavedState != null ?
mSavedState.getBooleanArray(RUNTIME_STATE_PENDING_ADD_OCCUPIED_CELLS) : null;
cellInfo = mWorkspace.findAllVacantCells(occupied);
if (!cellInfo.findCellForSpan(xy, spanX, spanY)) {
Toast.makeText(this, getString(R.string.out_of_space), Toast.LENGTH_SHORT).show();
return false;
}
}
return true;
| private void | finishBindDesktopItems()
if (mSavedState != null) {
if (!mWorkspace.hasFocus()) {
mWorkspace.getChildAt(mWorkspace.getCurrentScreen()).requestFocus();
}
final long[] userFolders = mSavedState.getLongArray(RUNTIME_STATE_USER_FOLDERS);
if (userFolders != null) {
for (long folderId : userFolders) {
final FolderInfo info = sModel.findFolderById(folderId);
if (info != null) {
openFolder(info);
}
}
final Folder openFolder = mWorkspace.getOpenFolder();
if (openFolder != null) {
openFolder.requestFocus();
}
}
final boolean allApps = mSavedState.getBoolean(RUNTIME_STATE_ALL_APPS_FOLDER, false);
if (allApps) {
mDrawer.open();
}
mSavedState = null;
}
if (mSavedInstanceState != null) {
super.onRestoreInstanceState(mSavedInstanceState);
mSavedInstanceState = null;
}
if (mDrawer.isOpened() && !mDrawer.hasFocus()) {
mDrawer.requestFocus();
}
mDesktopLocked = false;
mDrawer.unlock();
| public LauncherAppWidgetHost | getAppWidgetHost()
return mAppWidgetHost;
| android.widget.GridView | getApplicationsGrid()
return mAllAppsGrid;
| DragController | getDragController()
return mDragLayer;
| android.view.View | getDrawerHandle()
return mHandleView;
| static LauncherModel | getModel()
return sModel;
| static int | getScreen()
synchronized (sLock) {
return sScreen;
}
| Workspace | getWorkspace()
return mWorkspace;
| private void | handleFolderClick(FolderInfo folderInfo)
if (!folderInfo.opened) {
// Close any open folder
closeFolder();
// Open the requested folder
openFolder(folderInfo);
} else {
// Find the open folder...
Folder openFolder = mWorkspace.getFolderForTag(folderInfo);
int folderScreen;
if (openFolder != null) {
folderScreen = mWorkspace.getScreenForView(openFolder);
// .. and close it
closeFolder(openFolder);
if (folderScreen != mWorkspace.getCurrentScreen()) {
// Close any folder open on the current screen
closeFolder();
// Pull the folder onto this screen
openFolder(folderInfo);
}
}
}
| boolean | isDrawerDown()
return !mDrawer.isMoving() && !mDrawer.isOpened();
| boolean | isDrawerMoving()
return mDrawer.isMoving();
| boolean | isDrawerUp()
return mDrawer.isOpened() && !mDrawer.isMoving();
| boolean | isWorkspaceLocked()Returns true if the workspace is being loaded. When the workspace is loading,
no user interaction should be allowed to avoid any conflict.
return mDesktopLocked;
| private void | loadWallpaper()
// The first time the application is started, we load the wallpaper from
// the ApplicationContext
if (sWallpaper == null) {
final Drawable drawable = getWallpaper();
if (drawable instanceof BitmapDrawable) {
sWallpaper = ((BitmapDrawable) drawable).getBitmap();
} else {
throw new IllegalStateException("The wallpaper must be a BitmapDrawable.");
}
}
mWorkspace.loadWallpaper(sWallpaper);
| protected void | onActivityResult(int requestCode, int resultCode, android.content.Intent data)
// The pattern used here is that a user PICKs a specific application,
// which, depending on the target, might need to CREATE the actual target.
// For example, the user would PICK_SHORTCUT for "Music playlist", and we
// launch over to the Music app to actually CREATE_SHORTCUT.
if (resultCode == RESULT_OK && mAddItemCellInfo != null) {
switch (requestCode) {
case REQUEST_PICK_APPLICATION:
completeAddApplication(this, data, mAddItemCellInfo, !mDesktopLocked);
break;
case REQUEST_PICK_SHORTCUT:
addShortcut(data);
break;
case REQUEST_CREATE_SHORTCUT:
completeAddShortcut(data, mAddItemCellInfo, !mDesktopLocked);
break;
case REQUEST_PICK_LIVE_FOLDER:
addLiveFolder(data);
break;
case REQUEST_CREATE_LIVE_FOLDER:
completeAddLiveFolder(data, mAddItemCellInfo, !mDesktopLocked);
break;
case REQUEST_PICK_APPWIDGET:
addAppWidget(data);
break;
case REQUEST_CREATE_APPWIDGET:
completeAddAppWidget(data, mAddItemCellInfo, !mDesktopLocked);
break;
}
} else if (requestCode == REQUEST_PICK_APPWIDGET &&
resultCode == RESULT_CANCELED && data != null) {
// Clean up the appWidgetId if we canceled
int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);
if (appWidgetId != -1) {
mAppWidgetHost.deleteAppWidgetId(appWidgetId);
}
}
mWaitingForResult = false;
| private void | onAppWidgetReset()When reset, we handle by calling {@link AppWidgetHost#startListening()}
to make sure our callbacks are set correctly.
if (mAppWidgetHost != null) {
mAppWidgetHost.startListening();
}
| public void | onClick(android.view.View v)Launches the intent referred by the clicked shortcut.
Object tag = v.getTag();
if (tag instanceof ApplicationInfo) {
// Open shortcut
final Intent intent = ((ApplicationInfo) tag).intent;
startActivitySafely(intent);
} else if (tag instanceof FolderInfo) {
handleFolderClick((FolderInfo) tag);
}
| protected void | onCreate(android.os.Bundle savedInstanceState)
super.onCreate(savedInstanceState);
mInflater = getLayoutInflater();
mAppWidgetManager = AppWidgetManager.getInstance(this);
mAppWidgetHost = new LauncherAppWidgetHost(this, APPWIDGET_HOST_ID);
mAppWidgetHost.startListening();
if (PROFILE_STARTUP) {
android.os.Debug.startMethodTracing("/sdcard/launcher");
}
checkForLocaleChange();
setWallpaperDimension();
setContentView(R.layout.launcher);
setupViews();
registerIntentReceivers();
registerContentObservers();
mSavedState = savedInstanceState;
restoreState(mSavedState);
if (PROFILE_STARTUP) {
android.os.Debug.stopMethodTracing();
}
if (!mRestoring) {
startLoaders();
}
// For handling default keys
mDefaultKeySsb = new SpannableStringBuilder();
Selection.setSelection(mDefaultKeySsb, 0);
| protected android.app.Dialog | onCreateDialog(int id)
switch (id) {
case DIALOG_CREATE_SHORTCUT:
return new CreateShortcut().createDialog();
case DIALOG_RENAME_FOLDER:
return new RenameFolder().createDialog();
}
return super.onCreateDialog(id);
| public boolean | onCreateOptionsMenu(android.view.Menu menu)
if (mDesktopLocked) return false;
super.onCreateOptionsMenu(menu);
menu.add(MENU_GROUP_ADD, MENU_ADD, 0, R.string.menu_add)
.setIcon(android.R.drawable.ic_menu_add)
.setAlphabeticShortcut('A");
menu.add(0, MENU_WALLPAPER_SETTINGS, 0, R.string.menu_wallpaper)
.setIcon(android.R.drawable.ic_menu_gallery)
.setAlphabeticShortcut('W");
menu.add(0, MENU_SEARCH, 0, R.string.menu_search)
.setIcon(android.R.drawable.ic_search_category_default)
.setAlphabeticShortcut(SearchManager.MENU_KEY);
menu.add(0, MENU_NOTIFICATIONS, 0, R.string.menu_notifications)
.setIcon(com.android.internal.R.drawable.ic_menu_notifications)
.setAlphabeticShortcut('N");
final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
menu.add(0, MENU_SETTINGS, 0, R.string.menu_settings)
.setIcon(android.R.drawable.ic_menu_preferences).setAlphabeticShortcut('P")
.setIntent(settings);
return true;
| void | onDesktopItemsLoaded()
if (mDestroyed) return;
bindDesktopItems();
| public void | onDestroy()
mDestroyed = true;
super.onDestroy();
try {
mAppWidgetHost.stopListening();
} catch (NullPointerException ex) {
w(LOG_TAG, "problem while stopping AppWidgetHost during Launcher destruction", ex);
}
TextKeyListener.getInstance().release();
mAllAppsGrid.clearTextFilter();
mAllAppsGrid.setAdapter(null);
sModel.unbind();
sModel.abortLoaders();
getContentResolver().unregisterContentObserver(mObserver);
getContentResolver().unregisterContentObserver(mAppWidgetResetObserver);
unregisterReceiver(mApplicationsReceiver);
| private void | onFavoritesChanged()When the notification that favorites have changed is received, requests
a favorites list refresh.
mDesktopLocked = true;
mDrawer.lock();
sModel.loadUserItems(false, this, false, false);
| public boolean | onKeyDown(int keyCode, android.view.KeyEvent event)
boolean handled = super.onKeyDown(keyCode, event);
if (!handled && acceptFilter() && keyCode != KeyEvent.KEYCODE_ENTER) {
boolean gotKey = TextKeyListener.getInstance().onKeyDown(mWorkspace, mDefaultKeySsb,
keyCode, event);
if (gotKey && mDefaultKeySsb != null && mDefaultKeySsb.length() > 0) {
// something usable has been typed - dispatch it now.
final String str = mDefaultKeySsb.toString();
boolean isDialable = true;
final int count = str.length();
for (int i = 0; i < count; i++) {
if (!PhoneNumberUtils.isReallyDialable(str.charAt(i))) {
isDialable = false;
break;
}
}
Intent intent;
if (isDialable) {
intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", str, null));
} else {
intent = new Intent(Contacts.Intents.UI.FILTER_CONTACTS_ACTION);
intent.putExtra(Contacts.Intents.UI.FILTER_TEXT_EXTRA_KEY, str);
}
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
try {
startActivity(intent);
} catch (android.content.ActivityNotFoundException ex) {
// Oh well... no one knows how to filter/dial. Life goes on.
}
mDefaultKeySsb.clear();
mDefaultKeySsb.clearSpans();
Selection.setSelection(mDefaultKeySsb, 0);
return true;
}
}
return handled;
| public boolean | onLongClick(android.view.View v)
if (mDesktopLocked) {
return false;
}
if (!(v instanceof CellLayout)) {
v = (View) v.getParent();
}
CellLayout.CellInfo cellInfo = (CellLayout.CellInfo) v.getTag();
// This happens when long clicking an item with the dpad/trackball
if (cellInfo == null) {
return true;
}
if (mWorkspace.allowLongPress()) {
if (cellInfo.cell == null) {
if (cellInfo.valid) {
// User long pressed on empty space
mWorkspace.setAllowLongPress(false);
showAddDialog(cellInfo);
}
} else {
if (!(cellInfo.cell instanceof Folder)) {
// User long pressed on an item
mWorkspace.startDrag(cellInfo);
}
}
}
return true;
| protected void | onNewIntent(android.content.Intent intent)
super.onNewIntent(intent);
// Close the menu
if (Intent.ACTION_MAIN.equals(intent.getAction())) {
getWindow().closeAllPanels();
try {
dismissDialog(DIALOG_CREATE_SHORTCUT);
// Unlock the workspace if the dialog was showing
mWorkspace.unlock();
} catch (Exception e) {
// An exception is thrown if the dialog is not visible, which is fine
}
try {
dismissDialog(DIALOG_RENAME_FOLDER);
// Unlock the workspace if the dialog was showing
mWorkspace.unlock();
} catch (Exception e) {
// An exception is thrown if the dialog is not visible, which is fine
}
// If we are already in front we go back to the default screen,
// otherwise we don't
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) !=
Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) {
if (!mWorkspace.isDefaultScreenShowing()) {
mWorkspace.moveToDefaultScreen();
}
closeDrawer();
View v = getWindow().peekDecorView();
if (v != null && v.getWindowToken() != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(
INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
} else {
closeDrawer(false);
}
}
| public boolean | onOptionsItemSelected(android.view.MenuItem item)
switch (item.getItemId()) {
case MENU_ADD:
addItems();
return true;
case MENU_WALLPAPER_SETTINGS:
startWallpaper();
return true;
case MENU_SEARCH:
onSearchRequested();
return true;
case MENU_NOTIFICATIONS:
showNotifications();
return true;
}
return super.onOptionsItemSelected(item);
| protected void | onPause()
super.onPause();
closeDrawer(false);
| protected void | onPrepareDialog(int id, android.app.Dialog dialog)
switch (id) {
case DIALOG_CREATE_SHORTCUT:
mWorkspace.lock();
break;
case DIALOG_RENAME_FOLDER:
mWorkspace.lock();
EditText input = (EditText) dialog.findViewById(R.id.folder_name);
final CharSequence text = mFolderInfo.title;
input.setText(text);
input.setSelection(0, text.length());
break;
}
| public boolean | onPrepareOptionsMenu(android.view.Menu menu)
super.onPrepareOptionsMenu(menu);
mMenuAddInfo = mWorkspace.findAllVacantCells(null);
menu.setGroupEnabled(MENU_GROUP_ADD, mMenuAddInfo != null && mMenuAddInfo.valid);
return true;
| protected void | onRestoreInstanceState(android.os.Bundle savedInstanceState)
// Do not call super here
mSavedInstanceState = savedInstanceState;
| protected void | onResume()
super.onResume();
if (mRestoring) {
startLoaders();
}
| public java.lang.Object | onRetainNonConfigurationInstance()
// Flag any binder to stop early before switching
if (mBinder != null) {
mBinder.mTerminate = true;
}
if (PROFILE_ROTATE) {
android.os.Debug.startMethodTracing("/sdcard/launcher-rotate");
}
return null;
| protected void | onSaveInstanceState(android.os.Bundle outState)
outState.putInt(RUNTIME_STATE_CURRENT_SCREEN, mWorkspace.getCurrentScreen());
final ArrayList<Folder> folders = mWorkspace.getOpenFolders();
if (folders.size() > 0) {
final int count = folders.size();
long[] ids = new long[count];
for (int i = 0; i < count; i++) {
final FolderInfo info = folders.get(i).getInfo();
ids[i] = info.id;
}
outState.putLongArray(RUNTIME_STATE_USER_FOLDERS, ids);
} else {
super.onSaveInstanceState(outState);
}
if (mDrawer.isOpened()) {
outState.putBoolean(RUNTIME_STATE_ALL_APPS_FOLDER, true);
}
if (mAddItemCellInfo != null && mAddItemCellInfo.valid && mWaitingForResult) {
final CellLayout.CellInfo addItemCellInfo = mAddItemCellInfo;
final CellLayout layout = (CellLayout) mWorkspace.getChildAt(addItemCellInfo.screen);
outState.putInt(RUNTIME_STATE_PENDING_ADD_SCREEN, addItemCellInfo.screen);
outState.putInt(RUNTIME_STATE_PENDING_ADD_CELL_X, addItemCellInfo.cellX);
outState.putInt(RUNTIME_STATE_PENDING_ADD_CELL_Y, addItemCellInfo.cellY);
outState.putInt(RUNTIME_STATE_PENDING_ADD_SPAN_X, addItemCellInfo.spanX);
outState.putInt(RUNTIME_STATE_PENDING_ADD_SPAN_Y, addItemCellInfo.spanY);
outState.putInt(RUNTIME_STATE_PENDING_ADD_COUNT_X, layout.getCountX());
outState.putInt(RUNTIME_STATE_PENDING_ADD_COUNT_Y, layout.getCountY());
outState.putBooleanArray(RUNTIME_STATE_PENDING_ADD_OCCUPIED_CELLS,
layout.getOccupiedCells());
}
if (mFolderInfo != null && mWaitingForResult) {
outState.putBoolean(RUNTIME_STATE_PENDING_FOLDER_RENAME, true);
outState.putLong(RUNTIME_STATE_PENDING_FOLDER_RENAME_ID, mFolderInfo.id);
}
| public boolean | onSearchRequested()
if (mWorkspace.snapToSearch()) {
closeDrawer(true); // search widget: get drawer out of the way
return true;
} else {
return super.onSearchRequested(); // no search widget: use system search UI
}
| private void | openFolder(FolderInfo folderInfo)Opens the user fodler described by the specified tag. The opening of the folder
is animated relative to the specified View. If the View is null, no animation
is played.
Folder openFolder;
if (folderInfo instanceof UserFolderInfo) {
openFolder = UserFolder.fromXml(this);
} else if (folderInfo instanceof LiveFolderInfo) {
openFolder = com.android.launcher.LiveFolder.fromXml(this, folderInfo);
} else {
return;
}
openFolder.setDragger(mDragLayer);
openFolder.setLauncher(this);
openFolder.bind(folderInfo);
folderInfo.opened = true;
mWorkspace.addInScreen(openFolder, folderInfo.screen, 0, 0, 4, 4);
openFolder.onOpen();
| private void | registerContentObservers()Registers various content observers. The current implementation registers
only a favorites observer to keep track of the favorites applications.
ContentResolver resolver = getContentResolver();
resolver.registerContentObserver(LauncherSettings.Favorites.CONTENT_URI, true, mObserver);
resolver.registerContentObserver(LauncherProvider.CONTENT_APPWIDGET_RESET_URI, true, mAppWidgetResetObserver);
| private void | registerIntentReceivers()Registers various intent receivers. The current implementation registers
only a wallpaper intent receiver to let other applications change the
wallpaper.
if (sWallpaperReceiver == null) {
final Application application = getApplication();
sWallpaperReceiver = new WallpaperIntentReceiver(application, this);
IntentFilter filter = new IntentFilter(Intent.ACTION_WALLPAPER_CHANGED);
application.registerReceiver(sWallpaperReceiver, filter);
} else {
sWallpaperReceiver.setLauncher(this);
}
IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addDataScheme("package");
registerReceiver(mApplicationsReceiver, filter);
| private void | removeShortcutsForPackage(java.lang.String packageName)
if (packageName != null && packageName.length() > 0) {
mWorkspace.removeShortcutsForPackage(packageName);
}
| private void | restoreState(android.os.Bundle savedState)Restores the previous state, if it exists.
if (savedState == null) {
return;
}
final int currentScreen = savedState.getInt(RUNTIME_STATE_CURRENT_SCREEN, -1);
if (currentScreen > -1) {
mWorkspace.setCurrentScreen(currentScreen);
}
final int addScreen = savedState.getInt(RUNTIME_STATE_PENDING_ADD_SCREEN, -1);
if (addScreen > -1) {
mAddItemCellInfo = new CellLayout.CellInfo();
final CellLayout.CellInfo addItemCellInfo = mAddItemCellInfo;
addItemCellInfo.valid = true;
addItemCellInfo.screen = addScreen;
addItemCellInfo.cellX = savedState.getInt(RUNTIME_STATE_PENDING_ADD_CELL_X);
addItemCellInfo.cellY = savedState.getInt(RUNTIME_STATE_PENDING_ADD_CELL_Y);
addItemCellInfo.spanX = savedState.getInt(RUNTIME_STATE_PENDING_ADD_SPAN_X);
addItemCellInfo.spanY = savedState.getInt(RUNTIME_STATE_PENDING_ADD_SPAN_Y);
addItemCellInfo.findVacantCellsFromOccupied(
savedState.getBooleanArray(RUNTIME_STATE_PENDING_ADD_OCCUPIED_CELLS),
savedState.getInt(RUNTIME_STATE_PENDING_ADD_COUNT_X),
savedState.getInt(RUNTIME_STATE_PENDING_ADD_COUNT_Y));
mRestoring = true;
}
boolean renameFolder = savedState.getBoolean(RUNTIME_STATE_PENDING_FOLDER_RENAME, false);
if (renameFolder) {
long id = savedState.getLong(RUNTIME_STATE_PENDING_FOLDER_RENAME_ID);
mFolderInfo = sModel.getFolderById(this, id);
mRestoring = true;
}
| static void | setScreen(int screen)
synchronized (sLock) {
sScreen = screen;
}
| private void | setWallpaperDimension()
IBinder binder = ServiceManager.getService(WALLPAPER_SERVICE);
IWallpaperService wallpaperService = IWallpaperService.Stub.asInterface(binder);
Display display = getWindowManager().getDefaultDisplay();
boolean isPortrait = display.getWidth() < display.getHeight();
final int width = isPortrait ? display.getWidth() : display.getHeight();
final int height = isPortrait ? display.getHeight() : display.getWidth();
try {
wallpaperService.setDimensionHints(width * WALLPAPER_SCREENS_SPAN, height);
} catch (RemoteException e) {
// System is dead!
}
| private void | setupViews()Finds all the views we need and configure them properly.
mDragLayer = (DragLayer) findViewById(R.id.drag_layer);
final DragLayer dragLayer = mDragLayer;
mWorkspace = (Workspace) dragLayer.findViewById(R.id.workspace);
final Workspace workspace = mWorkspace;
mDrawer = (SlidingDrawer) dragLayer.findViewById(R.id.drawer);
final SlidingDrawer drawer = mDrawer;
mAllAppsGrid = (AllAppsGridView) drawer.getContent();
final AllAppsGridView grid = mAllAppsGrid;
final DeleteZone deleteZone = (DeleteZone) dragLayer.findViewById(R.id.delete_zone);
mHandleView = (HandleView) drawer.findViewById(R.id.all_apps);
mHandleView.setLauncher(this);
mHandleIcon = (TransitionDrawable) mHandleView.getDrawable();
mHandleIcon.setCrossFadeEnabled(true);
drawer.lock();
final DrawerManager drawerManager = new DrawerManager();
drawer.setOnDrawerOpenListener(drawerManager);
drawer.setOnDrawerCloseListener(drawerManager);
drawer.setOnDrawerScrollListener(drawerManager);
grid.setTextFilterEnabled(true);
grid.setDragger(dragLayer);
grid.setLauncher(this);
workspace.setOnLongClickListener(this);
workspace.setDragger(dragLayer);
workspace.setLauncher(this);
loadWallpaper();
deleteZone.setLauncher(this);
deleteZone.setDragController(dragLayer);
deleteZone.setHandle(mHandleView);
dragLayer.setIgnoredDropTarget(grid);
dragLayer.setDragScoller(workspace);
dragLayer.setDragListener(deleteZone);
| private void | showAddDialog(CellLayout.CellInfo cellInfo)
mAddItemCellInfo = cellInfo;
mWaitingForResult = true;
showDialog(DIALOG_CREATE_SHORTCUT);
| private void | showNotifications()
final StatusBarManager statusBar = (StatusBarManager) getSystemService(STATUS_BAR_SERVICE);
if (statusBar != null) {
statusBar.expand();
}
| void | showRenameDialog(FolderInfo info)
mFolderInfo = info;
mWaitingForResult = true;
showDialog(DIALOG_RENAME_FOLDER);
| public void | startActivityForResult(android.content.Intent intent, int requestCode)
mWaitingForResult = true;
super.startActivityForResult(intent, requestCode);
| void | startActivitySafely(android.content.Intent intent)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
try {
startActivity(intent);
} catch (ActivityNotFoundException e) {
Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
} catch (SecurityException e) {
Toast.makeText(this, R.string.activity_not_found, Toast.LENGTH_SHORT).show();
Log.e(LOG_TAG, "Launcher does not have the permission to launch " + intent +
". Make sure to create a MAIN intent-filter for the corresponding activity " +
"or use the exported attribute for this activity.", e);
}
| private void | startLoaders()
boolean loadApplications = sModel.loadApplications(true, this, mLocaleChanged);
sModel.loadUserItems(!mLocaleChanged, this, mLocaleChanged, loadApplications);
mRestoring = false;
| public void | startSearch(java.lang.String initialQuery, boolean selectInitialQuery, android.os.Bundle appSearchData, boolean globalSearch)
if (appSearchData == null) {
appSearchData = new Bundle();
appSearchData.putString(SearchManager.SOURCE, "launcher-search");
}
super.startSearch(initialQuery, selectInitialQuery, appSearchData, globalSearch);
| private void | startWallpaper()
final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);
startActivity(Intent.createChooser(pickWallpaper, getString(R.string.chooser_wallpaper)));
| private void | updateShortcutsForPackage(java.lang.String packageName)
if (packageName != null && packageName.length() > 0) {
mWorkspace.updateShortcutsForPackage(packageName);
}
|
|