diff options
author | Nebojsa Cvetkovic <nebkat@gmail.com> | 2013-11-25 16:58:53 +0000 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2014-01-24 16:24:23 -0800 |
commit | 4fd7c82ec6cab6d160f72b0355f6c5fc399b1a43 (patch) | |
tree | 637afa03fb37b22d280ec6b22df5a47d278237cb /src/com/android/launcher3/Workspace.java | |
parent | 2af21d644dfdb5db0a0da751937566058c0cdfc4 (diff) | |
download | android_packages_apps_Trebuchet-4fd7c82ec6cab6d160f72b0355f6c5fc399b1a43.tar.gz android_packages_apps_Trebuchet-4fd7c82ec6cab6d160f72b0355f6c5fc399b1a43.tar.bz2 android_packages_apps_Trebuchet-4fd7c82ec6cab6d160f72b0355f6c5fc399b1a43.zip |
Workspace: Custom default screen
Change-Id: Ic90254f7758b9dbd4997a19474e455230355b772
Diffstat (limited to 'src/com/android/launcher3/Workspace.java')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 61 |
1 files changed, 48 insertions, 13 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index bea8c3057..05b530984 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -32,7 +32,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -117,8 +116,7 @@ public class Workspace extends SmoothPagedView private final WallpaperManager mWallpaperManager; private IBinder mWindowToken; - private int mOriginalDefaultPage; - private int mDefaultPage; + private long mDefaultScreenId; private ShortcutAndWidgetContainer mDragSourceInternal; private static boolean sAccessibilityEnabled; @@ -306,7 +304,7 @@ public class Workspace extends SmoothPagedView // With workspace, data is available straight from the get-go setDataIsReady(); - mShowSearchBar = SettingsProvider.getBoolean(SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, context, + mShowSearchBar = SettingsProvider.getBoolean(context, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, R.bool.preferences_interface_homescreen_search_default); mLauncher = (Launcher) context; @@ -323,7 +321,8 @@ public class Workspace extends SmoothPagedView res.getInteger(R.integer.config_workspaceOverviewShrinkPercentage) / 100.0f; mOverviewModePageOffset = res.getDimensionPixelSize(R.dimen.overview_mode_page_offset); mCameraDistance = res.getInteger(R.integer.config_cameraDistance); - mOriginalDefaultPage = mDefaultPage = a.getInt(R.styleable.Workspace_defaultScreen, 1); + mDefaultScreenId = SettingsProvider.getLongCustomDefault(context, + SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, -1); a.recycle(); setOnHierarchyChangeListener(this); @@ -409,7 +408,6 @@ public class Workspace extends SmoothPagedView */ protected void initWorkspace() { Context context = getContext(); - mCurrentPage = mDefaultPage; Launcher.setScreen(mCurrentPage); LauncherAppState app = LauncherAppState.getInstance(); DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); @@ -551,6 +549,13 @@ public class Workspace extends SmoothPagedView mWorkspaceScreens.put(screenId, newScreen); mScreenOrder.add(insertIndex, screenId); addView(newScreen, insertIndex); + + if (mDefaultScreenId == screenId) { + int defaultPage = getPageIndexForScreenId(screenId); + moveToScreen(defaultPage, false); + Launcher.setScreen(defaultPage); + } + return screenId; } @@ -566,9 +571,6 @@ public class Workspace extends SmoothPagedView addFullScreenPage(customScreen); - // Ensure that the current page and default page are maintained. - mDefaultPage = mOriginalDefaultPage + 1; - // Update the custom content hint mLauncher.updateCustomContentHintVisibility(); if (mRestorePage != INVALID_RESTORE_PAGE) { @@ -595,9 +597,6 @@ public class Workspace extends SmoothPagedView mCustomContentCallbacks = null; - // Ensure that the current page and default page are maintained. - mDefaultPage = mOriginalDefaultPage - 1; - // Update the custom content hint mLauncher.updateCustomContentHintVisibility(); if (mRestorePage != INVALID_RESTORE_PAGE) { @@ -1290,6 +1289,10 @@ public class Workspace extends SmoothPagedView public void computeScroll() { super.computeScroll(); mWallpaperOffset.syncWithScroll(); + + if (isInOverviewMode() && !isReordering(true)) { + updateDefaultScreenButton(); + } } void showOutlines() { @@ -1843,6 +1846,27 @@ public class Workspace extends SmoothPagedView return getChangeStateAnimation(state, animated, 0, -1); } + private void updateDefaultScreenButton() { + View overviewPanel = mLauncher.getOverviewPanel(); + if (overviewPanel != null) { + View defaultPageButton = overviewPanel.findViewById(R.id.default_screen_button); + defaultPageButton.setActivated( + getScreenIdForPageIndex(getPageNearestToCenterOfScreen()) == mDefaultScreenId); + } + } + + public void onClickDefaultScreenButton() { + if (!isInOverviewMode()) return; + + mDefaultScreenId = getScreenIdForPageIndex(getPageNearestToCenterOfScreen()); + + exitOverviewMode(getPageNearestToCenterOfScreen(), true); + + SettingsProvider.get(mLauncher).edit() + .putLong(SettingsProvider.SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID, mDefaultScreenId) + .commit(); + } + @Override protected void getOverviewModePages(int[] range) { int start = numCustomPages(); @@ -1857,6 +1881,10 @@ public class Workspace extends SmoothPagedView showOutlines(); // Reordering handles its own animations, disable the automatic ones. disableLayoutTransitions(); + + mLauncher.getOverviewPanel().animate() + .alpha(0f) + .start(); } protected void onEndReordering() { @@ -1874,6 +1902,13 @@ public class Workspace extends SmoothPagedView // Re-enable auto layout transitions for page deletion. enableLayoutTransitions(); + + // Show the default screen button + updateDefaultScreenButton(); + + mLauncher.getOverviewPanel().animate() + .alpha(1f) + .start(); } public boolean isInOverviewMode() { @@ -4439,7 +4474,7 @@ public class Workspace extends SmoothPagedView } void moveToDefaultScreen(boolean animate) { - moveToScreen(mDefaultPage, animate); + moveToScreen(getPageIndexForScreenId(mDefaultScreenId), animate); } void moveToCustomContentScreen(boolean animate) { |