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 | |
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
-rw-r--r-- | res/drawable-hdpi/ic_default_screen.png | bin | 0 -> 18144 bytes | |||
-rw-r--r-- | res/drawable-hdpi/ic_default_screen_pressed.png | bin | 0 -> 18857 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_default_screen.png | bin | 0 -> 17779 bytes | |||
-rw-r--r-- | res/drawable-mdpi/ic_default_screen_pressed.png | bin | 0 -> 18202 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_default_screen.png | bin | 0 -> 18388 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/ic_default_screen_pressed.png | bin | 0 -> 19556 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/ic_default_screen.png | bin | 0 -> 19024 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/ic_default_screen_pressed.png | bin | 0 -> 21488 bytes | |||
-rw-r--r-- | res/drawable/default_screen_button.xml | 22 | ||||
-rw-r--r-- | res/layout/overview_panel.xml | 93 | ||||
-rw-r--r-- | res/values/cm_strings.xml | 3 | ||||
-rw-r--r-- | res/values/dimens.xml | 1 | ||||
-rw-r--r-- | src/com/android/launcher3/DynamicGrid.java | 4 | ||||
-rw-r--r-- | src/com/android/launcher3/Launcher.java | 12 | ||||
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 61 | ||||
-rw-r--r-- | src/com/android/launcher3/settings/SettingsProvider.java | 43 |
16 files changed, 163 insertions, 76 deletions
diff --git a/res/drawable-hdpi/ic_default_screen.png b/res/drawable-hdpi/ic_default_screen.png Binary files differnew file mode 100644 index 000000000..832fdef35 --- /dev/null +++ b/res/drawable-hdpi/ic_default_screen.png diff --git a/res/drawable-hdpi/ic_default_screen_pressed.png b/res/drawable-hdpi/ic_default_screen_pressed.png Binary files differnew file mode 100644 index 000000000..2975c6152 --- /dev/null +++ b/res/drawable-hdpi/ic_default_screen_pressed.png diff --git a/res/drawable-mdpi/ic_default_screen.png b/res/drawable-mdpi/ic_default_screen.png Binary files differnew file mode 100644 index 000000000..431b16841 --- /dev/null +++ b/res/drawable-mdpi/ic_default_screen.png diff --git a/res/drawable-mdpi/ic_default_screen_pressed.png b/res/drawable-mdpi/ic_default_screen_pressed.png Binary files differnew file mode 100644 index 000000000..361f023f8 --- /dev/null +++ b/res/drawable-mdpi/ic_default_screen_pressed.png diff --git a/res/drawable-xhdpi/ic_default_screen.png b/res/drawable-xhdpi/ic_default_screen.png Binary files differnew file mode 100644 index 000000000..da1e3a883 --- /dev/null +++ b/res/drawable-xhdpi/ic_default_screen.png diff --git a/res/drawable-xhdpi/ic_default_screen_pressed.png b/res/drawable-xhdpi/ic_default_screen_pressed.png Binary files differnew file mode 100644 index 000000000..b8dc28c0c --- /dev/null +++ b/res/drawable-xhdpi/ic_default_screen_pressed.png diff --git a/res/drawable-xxhdpi/ic_default_screen.png b/res/drawable-xxhdpi/ic_default_screen.png Binary files differnew file mode 100644 index 000000000..4577ad2b5 --- /dev/null +++ b/res/drawable-xxhdpi/ic_default_screen.png diff --git a/res/drawable-xxhdpi/ic_default_screen_pressed.png b/res/drawable-xxhdpi/ic_default_screen_pressed.png Binary files differnew file mode 100644 index 000000000..cf9cd10e2 --- /dev/null +++ b/res/drawable-xxhdpi/ic_default_screen_pressed.png diff --git a/res/drawable/default_screen_button.xml b/res/drawable/default_screen_button.xml new file mode 100644 index 000000000..5194ad8de --- /dev/null +++ b/res/drawable/default_screen_button.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2011 The Android Open Source Project + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> + +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:state_focused="true" android:drawable="@drawable/ic_default_screen_pressed" /> + <item android:state_pressed="true" android:drawable="@drawable/ic_default_screen_pressed" /> + <item android:state_activated="true" android:drawable="@drawable/ic_default_screen_pressed" /> + <item android:drawable="@drawable/ic_default_screen" /> +</selector> diff --git a/res/layout/overview_panel.xml b/res/layout/overview_panel.xml index e36004c4b..46e6e07e2 100644 --- a/res/layout/overview_panel.xml +++ b/res/layout/overview_panel.xml @@ -13,51 +13,70 @@ See the License for the specific language governing permissions and limitations under the License. --> -<LinearLayout +<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:orientation="horizontal" - android:layout_gravity="center_horizontal|bottom" - android:paddingBottom="@dimen/overview_panel_bottom_padding"> - + android:layout_width="match_parent" + android:layout_height="match_parent"> <TextView - android:id="@+id/wallpaper_button" + android:id="@+id/default_screen_button" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/wallpaper_button_text" + android:layout_gravity="center_horizontal|top" + android:paddingTop="@dimen/overview_panel_top_padding" + android:text="@string/default_screen_button_text" android:drawablePadding="4dp" - android:drawableTop="@drawable/wallpaper_button" + android:drawableTop="@drawable/default_screen_button" android:gravity="center_horizontal" android:fontFamily="sans-serif-condensed" android:textAllCaps="true" android:textSize="12sp" /> - <Space - android:layout_width="@dimen/overview_panel_buttonSpacing" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/widget_button" - android:layout_width="wrap_content" - android:layout_height="wrap_content" - android:text="@string/widget_button_text" - android:drawablePadding="4dp" - android:gravity="center_horizontal" - android:drawableTop="@drawable/widget_button" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp"/> - <Space - android:layout_width="@dimen/overview_panel_buttonSpacing" - android:layout_height="wrap_content"/> - <TextView - android:id="@+id/settings_button" + + <LinearLayout + xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="@string/settings_button_text" - android:drawablePadding="4dp" - android:gravity="center_horizontal" - android:drawableTop="@drawable/setting_button" - android:fontFamily="sans-serif-condensed" - android:textAllCaps="true" - android:textSize="12sp" /> -</LinearLayout> + android:orientation="horizontal" + android:layout_gravity="center_horizontal|bottom" + android:paddingBottom="@dimen/overview_panel_bottom_padding"> + + <TextView + android:id="@+id/wallpaper_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/wallpaper_button_text" + android:drawablePadding="4dp" + android:drawableTop="@drawable/wallpaper_button" + android:gravity="center_horizontal" + android:fontFamily="sans-serif-condensed" + android:textAllCaps="true" + android:textSize="12sp" /> + <Space + android:layout_width="@dimen/overview_panel_buttonSpacing" + android:layout_height="wrap_content"/> + <TextView + android:id="@+id/widget_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/widget_button_text" + android:drawablePadding="4dp" + android:gravity="center_horizontal" + android:drawableTop="@drawable/widget_button" + android:fontFamily="sans-serif-condensed" + android:textAllCaps="true" + android:textSize="12sp"/> + <Space + android:layout_width="@dimen/overview_panel_buttonSpacing" + android:layout_height="wrap_content"/> + <TextView + android:id="@+id/settings_button" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/settings_button_text" + android:drawablePadding="4dp" + android:gravity="center_horizontal" + android:drawableTop="@drawable/setting_button" + android:fontFamily="sans-serif-condensed" + android:textAllCaps="true" + android:textSize="12sp" /> + </LinearLayout> +</FrameLayout> diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml index 320567826..131acc9e8 100644 --- a/res/values/cm_strings.xml +++ b/res/values/cm_strings.xml @@ -5,6 +5,9 @@ <!-- App version --> <string name="application_version" translatable="false">0.1</string> + <!-- Text for default screen button --> + <string name="default_screen_button_text">Default Screen</string> + <!-- Settings --> <string name="preferences_title">Settings</string> <!-- UI --> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index b4b2367c7..8176c8192 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -41,6 +41,7 @@ <dimen name="workspace_max_gap">16dp</dimen> <dimen name="workspace_overscroll_drawable_padding">0dp</dimen> <dimen name="workspace_spring_loaded_page_spacing">15dp</dimen> + <dimen name="overview_panel_top_padding">20dp</dimen> <dimen name="overview_panel_bottom_padding">50dp</dimen> <dimen name="overview_panel_buttonSpacing">60dp</dimen> <dimen name="overview_mode_page_offset">130dp</dimen> diff --git a/src/com/android/launcher3/DynamicGrid.java b/src/com/android/launcher3/DynamicGrid.java index 57ddb3939..a6a143c1e 100644 --- a/src/com/android/launcher3/DynamicGrid.java +++ b/src/com/android/launcher3/DynamicGrid.java @@ -184,8 +184,8 @@ class DeviceProfile { updateFromConfiguration(resources, wPx, hPx, awPx, ahPx); // Search Bar - searchBarVisible = SettingsProvider.getBoolean(SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, - resources.getBoolean(R.bool.preferences_interface_homescreen_search_default)); + searchBarVisible = SettingsProvider.getBoolean(context, SettingsProvider.SETTINGS_UI_HOMESCREEN_SEARCH, + R.bool.preferences_interface_homescreen_search_default); searchBarSpaceMaxWidthPx = resources.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_max_width); searchBarHeightPx = resources.getDimensionPixelSize(R.dimen.dynamic_grid_search_bar_height); searchBarSpaceWidthPx = Math.min(searchBarSpaceMaxWidthPx, widthPx); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 1df137d1d..310ecfd64 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -380,9 +380,6 @@ public class Launcher extends Activity super.onCreate(savedInstanceState); - // Load all settings - SettingsProvider.load(this); - LauncherAppState.setApplicationContext(getApplicationContext()); LauncherAppState app = LauncherAppState.getInstance(); @@ -1196,6 +1193,15 @@ public class Launcher extends Activity } }); settingsButton.setOnTouchListener(getHapticFeedbackTouchListener()); + + View defaultScreenButton = findViewById(R.id.default_screen_button); + defaultScreenButton.setOnClickListener(new OnClickListener() { + @Override + public void onClick(View arg0) { + mWorkspace.onClickDefaultScreenButton(); + } + }); + defaultScreenButton.setOnTouchListener(getHapticFeedbackTouchListener()); mOverviewPanel.setAlpha(0f); // Setup the workspace 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) { diff --git a/src/com/android/launcher3/settings/SettingsProvider.java b/src/com/android/launcher3/settings/SettingsProvider.java index fdf2757df..96da0e0a6 100644 --- a/src/com/android/launcher3/settings/SettingsProvider.java +++ b/src/com/android/launcher3/settings/SettingsProvider.java @@ -19,46 +19,47 @@ package com.android.launcher3.settings; import android.content.Context; import android.content.SharedPreferences; -import java.util.Map; - public final class SettingsProvider { public static final String SETTINGS_KEY = "com.android.launcher3_preferences"; public static final String SETTINGS_CHANGED = "settings_changed"; + public static final String SETTINGS_UI_HOMESCREEN_DEFAULT_SCREEN_ID = "ui_homescreen_default_screen_id"; public static final String SETTINGS_UI_HOMESCREEN_SEARCH = "ui_homescreen_search"; - private static Map<String, ?> sKeyValues; + public static SharedPreferences get(Context context) { + return context.getSharedPreferences(SETTINGS_KEY, 0); + } + + public static int getIntCustomDefault(Context context, String key, int def) { + return get(context).getInt(key, def); + } - public static void load(Context context) { - SharedPreferences preferences = context.getSharedPreferences(SETTINGS_KEY, 0); - sKeyValues = preferences.getAll(); + public static int getInt(Context context, String key, int resource) { + return getIntCustomDefault(context, key, context.getResources().getInteger(resource)); } - public static int getInt(String key, int def) { - return sKeyValues.containsKey(key) && sKeyValues.get(key) instanceof Integer ? - (Integer) sKeyValues.get(key) : def; + public static long getLongCustomDefault(Context context, String key, long def) { + return get(context).getLong(key, def); } - public static int getInt(String key, Context context, int resource) { - return getInt(key, context.getResources().getInteger(resource)); + public static long getLong(Context context, String key, int resource) { + return getLongCustomDefault(context, key, context.getResources().getInteger(resource)); } - public static boolean getBoolean(String key, boolean def) { - return sKeyValues.containsKey(key) && sKeyValues.get(key) instanceof Boolean ? - (Boolean) sKeyValues.get(key) : def; + public static boolean getBooleanCustomDefault(Context context, String key, boolean def) { + return get(context).getBoolean(key, def); } - public static boolean getBoolean(String key, Context context, int resource) { - return getBoolean(key, context.getResources().getBoolean(resource)); + public static boolean getBoolean(Context context, String key, int resource) { + return getBooleanCustomDefault(context, key, context.getResources().getBoolean(resource)); } - public static String getString(String key, String def) { - return sKeyValues.containsKey(key) && sKeyValues.get(key) instanceof String ? - (String) sKeyValues.get(key) : def; + public static String getStringCustomDefault(Context context, String key, String def) { + return get(context).getString(key, def); } - public static String getString(String key, Context context, int resource) { - return getString(key, context.getResources().getString(resource)); + public static String getString(Context context, String key, int resource) { + return getStringCustomDefault(context, key, context.getResources().getString(resource)); } } |