diff options
-rw-r--r-- | res/layout/custom_workspace_cling.xml | 30 | ||||
-rw-r--r-- | res/values/dimens.xml | 3 | ||||
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/launcher2/Launcher.java | 14 | ||||
-rw-r--r-- | src/com/android/launcher2/LauncherProvider.java | 11 |
5 files changed, 58 insertions, 2 deletions
diff --git a/res/layout/custom_workspace_cling.xml b/res/layout/custom_workspace_cling.xml new file mode 100644 index 0000000..5bdc587 --- /dev/null +++ b/res/layout/custom_workspace_cling.xml @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2012 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. +--> +<!-- dummy layout, to be replaced in overlays --> +<com.android.launcher2.Cling + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher" + launcher:drawIdentifier="workspace_custom"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textSize="20dp" + android:textColor="@android:color/holo_blue_light" + android:text="@string/dummy_custom_cling_error_message" + android:gravity="left" + android:layout_gravity="bottom|left" + /> +</com.android.launcher2.Cling> diff --git a/res/values/dimens.xml b/res/values/dimens.xml index d497c2d..628884f 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -22,6 +22,9 @@ <dimen name="cling_text_block_offset_x">0dp</dimen> <dimen name="cling_text_block_offset_y">0dp</dimen> <dimen name="reveal_radius">48dp</dimen> + <!-- entries for custom clings, will be set in overlays --> + <add-resource type="dimen" name="custom_cling_margin_top" /> + <add-resource type="dimen" name="custom_cling_margin_right" /> <!-- Workspace --> <!-- qsb_bar_height_inset represents qsb_bar_height minus the padding diff --git a/res/values/strings.xml b/res/values/strings.xml index 4aee339..0ea12c4 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -244,6 +244,8 @@ s --> <string name="folder_cling_create_folder">To make a new folder on your Home screen, stack one app on top of another.</string> <!-- The text on the button to dismiss a cling [CHAR_LIMIT=none] --> <string name="cling_dismiss">OK</string> + <!-- Error message on dummy custom cling layout [DO NOT TRANSLATE] --> + <string name="dummy_custom_cling_error_message">Error: custom workspace layout passed in but custom cling was not overwritten</string> <add-resource type="string" name="default_folder_name" /> <!-- Folder accessibility --> diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java index e31df56..5ff8a93 100644 --- a/src/com/android/launcher2/Launcher.java +++ b/src/com/android/launcher2/Launcher.java @@ -3732,6 +3732,20 @@ public final class Launcher extends Activity if (isClingsEnabled() && !mSharedPrefs.getBoolean(Cling.WORKSPACE_CLING_DISMISSED_KEY, false) && !skipCustomClingIfNoAccounts() ) { + // If we're not using the default workspace layout, replace workspace cling + // with a custom workspace cling (usually specified in an overlay) + // For now, only do this on tablets + if (mSharedPrefs.getInt(LauncherProvider.DEFAULT_WORKSPACE_RESOURCE_ID, 0) != 0 && + LauncherApplication.isScreenLarge()) { + // Use a custom cling + View cling = findViewById(R.id.workspace_cling); + ViewGroup clingParent = (ViewGroup) cling.getParent(); + int clingIndex = clingParent.indexOfChild(cling); + clingParent.removeViewAt(clingIndex); + View customCling = mInflater.inflate(R.layout.custom_workspace_cling, clingParent, false); + clingParent.addView(customCling, clingIndex); + customCling.setId(R.id.workspace_cling); + } initCling(R.id.workspace_cling, null, false, 0); } else { removeCling(R.id.workspace_cling); diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java index 74cf7a4..8097ac9 100644 --- a/src/com/android/launcher2/LauncherProvider.java +++ b/src/com/android/launcher2/LauncherProvider.java @@ -74,6 +74,8 @@ public class LauncherProvider extends ContentProvider { static final String PARAMETER_NOTIFY = "notify"; static final String DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED = "DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED"; + static final String DEFAULT_WORKSPACE_RESOURCE_ID = + "DEFAULT_WORKSPACE_RESOURCE_ID"; private static final String ACTION_APPWIDGET_DEFAULT_WORKSPACE_CONFIGURE = "com.android.launcher.action.APPWIDGET_DEFAULT_WORKSPACE_CONFIGURE"; @@ -206,18 +208,23 @@ public class LauncherProvider extends ContentProvider { /** * @param workspaceResId that can be 0 to use default or non-zero for specific resource */ - synchronized public void loadDefaultFavoritesIfNecessary(int workspaceResId) { + synchronized public void loadDefaultFavoritesIfNecessary(int origWorkspaceResId) { String spKey = LauncherApplication.getSharedPreferencesKey(); SharedPreferences sp = getContext().getSharedPreferences(spKey, Context.MODE_PRIVATE); if (sp.getBoolean(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED, false)) { + int workspaceResId = origWorkspaceResId; + // Use default workspace resource if none provided if (workspaceResId == 0) { - workspaceResId = R.xml.default_workspace; + workspaceResId = sp.getInt(DEFAULT_WORKSPACE_RESOURCE_ID, R.xml.default_workspace); } // Populate favorites table with initial favorites SharedPreferences.Editor editor = sp.edit(); editor.remove(DB_CREATED_BUT_DEFAULT_WORKSPACE_NOT_LOADED); + if (origWorkspaceResId != 0) { + editor.putInt(DEFAULT_WORKSPACE_RESOURCE_ID, origWorkspaceResId); + } mOpenHelper.loadFavorites(mOpenHelper.getWritableDatabase(), workspaceResId); editor.commit(); } |