diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2016-01-06 22:51:43 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2016-01-06 22:51:43 +0000 |
commit | f7a263c4370d1e45bb53653de2ef0fb70061ecd5 (patch) | |
tree | f6c7b84037ed0321c89217a9960e86a25e1a855a | |
parent | a6164c5c9b48f84c10f4db47d20e7bdeaa98812f (diff) | |
parent | 96a0963c4a05c6ef9b1fc9d76e6431c510d48e69 (diff) | |
download | android_packages_apps_Trebuchet-f7a263c4370d1e45bb53653de2ef0fb70061ecd5.tar.gz android_packages_apps_Trebuchet-f7a263c4370d1e45bb53653de2ef0fb70061ecd5.tar.bz2 android_packages_apps_Trebuchet-f7a263c4370d1e45bb53653de2ef0fb70061ecd5.zip |
Merge "Adding support for negative x and y in layout xml. Fixing default configurations for some screen sizes." into ub-launcher3-burnaby-polish
-rw-r--r-- | res/xml/default_workspace_3x3.xml | 88 | ||||
-rw-r--r-- | res/xml/default_workspace_4x4.xml | 6 | ||||
-rw-r--r-- | res/xml/default_workspace_5x5.xml | 6 | ||||
-rw-r--r-- | res/xml/default_workspace_5x6.xml | 6 | ||||
-rw-r--r-- | src/com/android/launcher3/AutoInstallsLayout.java | 36 | ||||
-rw-r--r-- | src/com/android/launcher3/CommonAppTypeParser.java | 2 | ||||
-rw-r--r-- | src/com/android/launcher3/DefaultLayoutParser.java | 5 | ||||
-rw-r--r-- | src/com/android/launcher3/InvariantDeviceProfile.java | 6 |
8 files changed, 129 insertions, 26 deletions
diff --git a/res/xml/default_workspace_3x3.xml b/res/xml/default_workspace_3x3.xml new file mode 100644 index 000000000..8d9940450 --- /dev/null +++ b/res/xml/default_workspace_3x3.xml @@ -0,0 +1,88 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- Copyright (C) 2015 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. +--> + +<favorites xmlns:launcher="http://schemas.android.com/apk/res-auto/com.android.launcher3"> + + <!-- Hotseat (We use the screen as the position of the item in the hotseat) --> + <!-- Messaging, [All Apps], Dialer --> + + <resolve + launcher:container="-101" + launcher:screen="0" + launcher:x="0" + launcher:y="0" > + <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MESSAGING;end" /> + <favorite launcher:uri="sms:" /> + <favorite launcher:uri="smsto:" /> + <favorite launcher:uri="mms:" /> + <favorite launcher:uri="mmsto:" /> + </resolve> + + <!-- All Apps --> + + <resolve + launcher:container="-101" + launcher:screen="2" + launcher:x="2" + launcher:y="0" > + <favorite launcher:uri="#Intent;action=android.intent.action.DIAL;end" /> + <favorite launcher:uri="tel:123" /> + <favorite launcher:uri="#Intent;action=android.intent.action.CALL_BUTTON;end" /> + </resolve> + + <!-- Bottom row --> + <resolve + launcher:screen="0" + launcher:x="0" + launcher:y="-1" > + <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" /> + <favorite launcher:uri="mailto:" /> + </resolve> + + <resolve + launcher:screen="0" + launcher:x="1" + launcher:y="-1" > + <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" /> + <favorite launcher:uri="#Intent;type=images/*;end" /> + </resolve> + + <resolve + launcher:screen="0" + launcher:x="2" + launcher:y="-1" > + <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MARKET;end" /> + <favorite launcher:uri="market://details?id=com.android.launcher" /> + </resolve> + + <!-- Second last row --> + <resolve + launcher:screen="0" + launcher:x="0" + launcher:y="-2" > + <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_BROWSER;end" /> + <favorite launcher:uri="http://www.example.com/" /> + </resolve> + + <resolve + launcher:screen="0" + launcher:x="2" + launcher:y="-2" > + <favorite launcher:uri="#Intent;action=android.media.action.STILL_IMAGE_CAMERA;end" /> + <favorite launcher:uri="#Intent;action=android.intent.action.CAMERA_BUTTON;end" /> + </resolve> + +</favorites> diff --git a/res/xml/default_workspace_4x4.xml b/res/xml/default_workspace_4x4.xml index 060a1f880..979a1b4c8 100644 --- a/res/xml/default_workspace_4x4.xml +++ b/res/xml/default_workspace_4x4.xml @@ -23,7 +23,7 @@ <resolve launcher:screen="0" launcher:x="0" - launcher:y="3" > + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" /> <favorite launcher:uri="mailto:" /> </resolve> @@ -31,7 +31,7 @@ <resolve launcher:screen="0" launcher:x="1" - launcher:y="3" > + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" /> <favorite launcher:uri="#Intent;type=images/*;end" /> </resolve> @@ -39,7 +39,7 @@ <resolve launcher:screen="0" launcher:x="3" - launcher:y="3" > + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MARKET;end" /> <favorite launcher:uri="market://details?id=com.android.launcher" /> </resolve> diff --git a/res/xml/default_workspace_5x5.xml b/res/xml/default_workspace_5x5.xml index 322661720..f9cc0e789 100644 --- a/res/xml/default_workspace_5x5.xml +++ b/res/xml/default_workspace_5x5.xml @@ -23,7 +23,7 @@ <resolve launcher:screen="0" launcher:x="0" - launcher:y="4" > + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_EMAIL;end" /> <favorite launcher:uri="mailto:" /> @@ -32,7 +32,7 @@ <resolve launcher:screen="0" launcher:x="1" - launcher:y="4" > + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_GALLERY;end" /> <favorite launcher:uri="#Intent;type=images/*;end" /> @@ -41,7 +41,7 @@ <resolve launcher:screen="0" launcher:x="4" - launcher:y="4" > + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MARKET;end" /> <favorite launcher:uri="market://details?id=com.android.launcher" /> </resolve> diff --git a/res/xml/default_workspace_5x6.xml b/res/xml/default_workspace_5x6.xml index bc236fb14..8493c265e 100644 --- a/res/xml/default_workspace_5x6.xml +++ b/res/xml/default_workspace_5x6.xml @@ -23,13 +23,13 @@ <favorite launcher:screen="0" launcher:x="0" - launcher:y="4" + launcher:y="-1" launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_CONTACTS;end" /> <resolve launcher:screen="0" - launcher:x="5" - launcher:y="4" > + launcher:x="-1" + launcher:y="-1" > <favorite launcher:uri="#Intent;action=android.intent.action.MAIN;category=android.intent.category.APP_MARKET;end" /> <favorite launcher:uri="market://details?id=com.android.launcher" /> </resolve> diff --git a/src/com/android/launcher3/AutoInstallsLayout.java b/src/com/android/launcher3/AutoInstallsLayout.java index 440e4e7b9..151048c7c 100644 --- a/src/com/android/launcher3/AutoInstallsLayout.java +++ b/src/com/android/launcher3/AutoInstallsLayout.java @@ -125,8 +125,12 @@ public class AutoInstallsLayout { private static final String ATTR_CLASS_NAME = "className"; private static final String ATTR_TITLE = "title"; private static final String ATTR_SCREEN = "screen"; + + // x and y can be specified as negative integers, in which case -1 represents the + // last row / column, -2 represents the second last, and so on. private static final String ATTR_X = "x"; private static final String ATTR_Y = "y"; + private static final String ATTR_SPAN_X = "spanX"; private static final String ATTR_SPAN_Y = "spanY"; private static final String ATTR_ICON = "icon"; @@ -154,6 +158,8 @@ public class AutoInstallsLayout { protected final int mLayoutId; private final int mHotseatAllAppsRank; + private final int mRowCount; + private final int mColumnCount; private final long[] mTemp = new long[2]; @Thunk final ContentValues mValues; @@ -164,13 +170,6 @@ public class AutoInstallsLayout { public AutoInstallsLayout(Context context, AppWidgetHost appWidgetHost, LayoutParserCallback callback, Resources res, int layoutId, String rootTag) { - this(context, appWidgetHost, callback, res, layoutId, rootTag, - LauncherAppState.getInstance().getInvariantDeviceProfile().hotseatAllAppsRank); - } - - public AutoInstallsLayout(Context context, AppWidgetHost appWidgetHost, - LayoutParserCallback callback, Resources res, - int layoutId, String rootTag, int hotseatAllAppsRank) { mContext = context; mAppWidgetHost = appWidgetHost; mCallback = callback; @@ -181,7 +180,11 @@ public class AutoInstallsLayout { mSourceRes = res; mLayoutId = layoutId; - mHotseatAllAppsRank = hotseatAllAppsRank; + + InvariantDeviceProfile idp = LauncherAppState.getInstance().getInvariantDeviceProfile(); + mHotseatAllAppsRank = idp.hotseatAllAppsRank; + mRowCount = idp.numRows; + mColumnCount = idp.numColumns; } /** @@ -261,8 +264,11 @@ public class AutoInstallsLayout { mValues.put(Favorites.CONTAINER, container); mValues.put(Favorites.SCREEN, screenId); - mValues.put(Favorites.CELLX, getAttributeValue(parser, ATTR_X)); - mValues.put(Favorites.CELLY, getAttributeValue(parser, ATTR_Y)); + + mValues.put(Favorites.CELLX, + convertToDistanceFromEnd(getAttributeValue(parser, ATTR_X), mColumnCount); + mValues.put(Favorites.CELLY, + convertToDistanceFromEnd(getAttributeValue(parser, ATTR_Y), mRowCount); TagParser tagParser = tagParserMap.get(parser.getName()); if (tagParser == null) { @@ -648,6 +654,16 @@ public class AutoInstallsLayout { } } + private static String convertToDistanceFromEnd(String value, int endValue) { + if (!TextUtils.isEmpty(value)) { + int x = Integer.parseInt(value); + if (x < 0) { + return Integer.toString(endValue + x); + } + } + return value; + } + /** * Return attribute value, attempting launcher-specific namespace first * before falling back to anonymous attribute. diff --git a/src/com/android/launcher3/CommonAppTypeParser.java b/src/com/android/launcher3/CommonAppTypeParser.java index 962b1e796..001e044f9 100644 --- a/src/com/android/launcher3/CommonAppTypeParser.java +++ b/src/com/android/launcher3/CommonAppTypeParser.java @@ -93,7 +93,7 @@ public class CommonAppTypeParser implements LayoutParserCallback { public MyLayoutParser() { super(CommonAppTypeParser.this.mContext, null, CommonAppTypeParser.this, - CommonAppTypeParser.this.mContext.getResources(), mResId, TAG_RESOLVE, 0); + CommonAppTypeParser.this.mContext.getResources(), mResId, TAG_RESOLVE); } @Override diff --git a/src/com/android/launcher3/DefaultLayoutParser.java b/src/com/android/launcher3/DefaultLayoutParser.java index 7b91c675b..2bba38006 100644 --- a/src/com/android/launcher3/DefaultLayoutParser.java +++ b/src/com/android/launcher3/DefaultLayoutParser.java @@ -48,9 +48,8 @@ public class DefaultLayoutParser extends AutoInstallsLayout { } public DefaultLayoutParser(Context context, AppWidgetHost appWidgetHost, - LayoutParserCallback callback, Resources sourceRes, int layoutId, String rootTag, - int hotseatAllAppsRank) { - super(context, appWidgetHost, callback, sourceRes, layoutId, rootTag, hotseatAllAppsRank); + LayoutParserCallback callback, Resources sourceRes, int layoutId, String rootTag) { + super(context, appWidgetHost, callback, sourceRes, layoutId, rootTag); } @Override diff --git a/src/com/android/launcher3/InvariantDeviceProfile.java b/src/com/android/launcher3/InvariantDeviceProfile.java index a91181d5e..b3a8bbc32 100644 --- a/src/com/android/launcher3/InvariantDeviceProfile.java +++ b/src/com/android/launcher3/InvariantDeviceProfile.java @@ -173,9 +173,9 @@ public class InvariantDeviceProfile { // width, height, #rows, #columns, #folder rows, #folder columns, // iconSize, iconTextSize, #hotseat, #hotseatIconSize, defaultLayoutId. predefinedDeviceProfiles.add(new InvariantDeviceProfile("Super Short Stubby", - 255, 300, 2, 3, 2, 3, 3, 48, 13, 3, 48, R.xml.default_workspace_4x4)); + 255, 300, 2, 3, 2, 3, 3, 48, 13, 3, 48, R.xml.default_workspace_3x3)); predefinedDeviceProfiles.add(new InvariantDeviceProfile("Shorter Stubby", - 255, 400, 3, 3, 3, 3, 3, 48, 13, 3, 48, R.xml.default_workspace_4x4)); + 255, 400, 3, 3, 3, 3, 3, 48, 13, 3, 48, R.xml.default_workspace_3x3)); predefinedDeviceProfiles.add(new InvariantDeviceProfile("Short Stubby", 275, 420, 3, 4, 3, 4, 4, 48, 13, 5, 48, R.xml.default_workspace_4x4)); predefinedDeviceProfiles.add(new InvariantDeviceProfile("Stubby", @@ -196,7 +196,7 @@ public class InvariantDeviceProfile { predefinedDeviceProfiles.add(new InvariantDeviceProfile("Nexus 10", 727, 1207, 5, 6, 4, 5, 4, 76, 14.4f, 7, 76, R.xml.default_workspace_5x6)); predefinedDeviceProfiles.add(new InvariantDeviceProfile("20-inch Tablet", - 1527, 2527, 7, 7, 6, 6, 4, 100, 20, 7, 72, R.xml.default_workspace_4x4)); + 1527, 2527, 7, 7, 6, 6, 4, 100, 20, 7, 72, R.xml.default_workspace_5x6)); return predefinedDeviceProfiles; } |