summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMike Cleron <mcleron@google.com>2009-11-05 17:17:42 -0800
committerMike Cleron <mcleron@google.com>2009-11-05 17:17:50 -0800
commit3a2b3f2be58843d26549fb0ec6c6533627c7cd19 (patch)
tree15d8e3949942c9b24e44fd270b9111a0c25b2838
parent2d8047699768b1487323ee4603f91268df490d60 (diff)
downloadandroid_packages_apps_Trebuchet-3a2b3f2be58843d26549fb0ec6c6533627c7cd19.tar.gz
android_packages_apps_Trebuchet-3a2b3f2be58843d26549fb0ec6c6533627c7cd19.tar.bz2
android_packages_apps_Trebuchet-3a2b3f2be58843d26549fb0ec6c6533627c7cd19.zip
If 3 screens are good 5 will be better
-rw-r--r--res/layout-land/launcher.xml7
-rw-r--r--res/layout-port/launcher.xml9
-rw-r--r--res/xml/default_workspace.xml14
-rw-r--r--src/com/android/launcher2/Launcher.java6
-rw-r--r--src/com/android/launcher2/LauncherProvider.java17
-rw-r--r--src/com/android/launcher2/Workspace.java44
6 files changed, 73 insertions, 24 deletions
diff --git a/res/layout-land/launcher.xml b/res/layout-land/launcher.xml
index 4f2709f6a..5ec7c6c17 100644
--- a/res/layout-land/launcher.xml
+++ b/res/layout-land/launcher.xml
@@ -39,12 +39,15 @@
android:id="@+id/workspace"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
-
- launcher:defaultScreen="1">
+ android:scrollbars="horizontal"
+ android:fadeScrollbars="true"
+ launcher:defaultScreen="2">
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />
+ <include android:id="@+id/cell4" layout="@layout/workspace_screen" />
+ <include android:id="@+id/cell5" layout="@layout/workspace_screen" />
</com.android.launcher2.Workspace>
diff --git a/res/layout-port/launcher.xml b/res/layout-port/launcher.xml
index 89b3b4306..d3069a178 100644
--- a/res/layout-port/launcher.xml
+++ b/res/layout-port/launcher.xml
@@ -40,13 +40,16 @@
android:id="@+id/workspace"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
-
- launcher:defaultScreen="1">
+ android:scrollbars="horizontal"
+ android:fadeScrollbars="true"
+ launcher:defaultScreen="2">
<include android:id="@+id/cell1" layout="@layout/workspace_screen" />
<include android:id="@+id/cell2" layout="@layout/workspace_screen" />
<include android:id="@+id/cell3" layout="@layout/workspace_screen" />
-
+ <include android:id="@+id/cell4" layout="@layout/workspace_screen" />
+ <include android:id="@+id/cell5" layout="@layout/workspace_screen" />
+
</com.android.launcher2.Workspace>
<com.android.launcher2.HandleView
diff --git a/res/xml/default_workspace.xml b/res/xml/default_workspace.xml
index 7937c3bd9..acb9ba933 100644
--- a/res/xml/default_workspace.xml
+++ b/res/xml/default_workspace.xml
@@ -17,49 +17,49 @@
<favorites xmlns:launcher="http://schemas.android.com/apk/res/com.android.launcher2">
<search
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="0"
launcher:y="0" />
<favorite
launcher:packageName="com.android.contacts"
launcher:className="com.android.contacts.DialtactsActivity"
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="0"
launcher:y="3" />
<favorite
launcher:packageName="com.android.contacts"
launcher:className="com.android.contacts.DialtactsContactsEntryActivity"
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="1"
launcher:y="3" />
<favorite
launcher:packageName="com.android.browser"
launcher:className="com.android.browser.BrowserActivity"
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="2"
launcher:y="3" />
<favorite
launcher:packageName="com.google.android.apps.maps"
launcher:className="com.google.android.maps.MapsActivity"
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="3"
launcher:y="3" />
<favorite
launcher:packageName="com.android.mms"
launcher:className="com.android.mms.ui.ConversationList"
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="0"
launcher:y="2" />
<favorite
launcher:packageName="com.android.vending"
launcher:className="com.android.vending.AssetBrowserActivity"
- launcher:screen="1"
+ launcher:screen="2"
launcher:x="3"
launcher:y="2" />
diff --git a/src/com/android/launcher2/Launcher.java b/src/com/android/launcher2/Launcher.java
index 1574be824..36d7da16e 100644
--- a/src/com/android/launcher2/Launcher.java
+++ b/src/com/android/launcher2/Launcher.java
@@ -108,8 +108,8 @@ public final class Launcher extends Activity
static final String EXTRA_CUSTOM_WIDGET = "custom_widget";
static final String SEARCH_WIDGET = "search_widget";
- static final int SCREEN_COUNT = 3;
- static final int DEFAULT_SCREN = 1;
+ static final int SCREEN_COUNT = 5;
+ static final int DEFAULT_SCREEN = 2;
static final int NUMBER_CELLS_X = 4;
static final int NUMBER_CELLS_Y = 4;
@@ -148,7 +148,7 @@ public final class Launcher extends Activity
static final int APPWIDGET_HOST_ID = 1024;
private static final Object sLock = new Object();
- private static int sScreen = DEFAULT_SCREN;
+ private static int sScreen = DEFAULT_SCREEN;
private LayoutInflater mInflater;
diff --git a/src/com/android/launcher2/LauncherProvider.java b/src/com/android/launcher2/LauncherProvider.java
index 9226c2253..942b4beac 100644
--- a/src/com/android/launcher2/LauncherProvider.java
+++ b/src/com/android/launcher2/LauncherProvider.java
@@ -58,7 +58,7 @@ public class LauncherProvider extends ContentProvider {
private static final String DATABASE_NAME = "launcher.db";
- private static final int DATABASE_VERSION = 4;
+ private static final int DATABASE_VERSION = 5;
static final String AUTHORITY = "com.android.launcher2.settings";
@@ -393,6 +393,21 @@ public class LauncherProvider extends ContentProvider {
}
}
+ if (version < 5) {
+ // We went from 3 to 5 screens. Move everything 1 to the right
+ db.beginTransaction();
+ try {
+ db.execSQL("UPDATE favorites SET screen=(screen + 1);");
+ db.setTransactionSuccessful();
+ version = 5;
+ } catch (SQLException ex) {
+ // Old version remains, which means we wipe old data
+ Log.e(LOG_TAG, ex.getMessage(), ex);
+ } finally {
+ db.endTransaction();
+ }
+ }
+
if (version != DATABASE_VERSION) {
Log.w(LOG_TAG, "Destroying all old data.");
db.execSQL("DROP TABLE IF EXISTS " + TABLE_FAVORITES);
diff --git a/src/com/android/launcher2/Workspace.java b/src/com/android/launcher2/Workspace.java
index a0391d33e..a14a11f20 100644
--- a/src/com/android/launcher2/Workspace.java
+++ b/src/com/android/launcher2/Workspace.java
@@ -543,6 +543,14 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
if (restore) {
canvas.restoreToCount(restoreCount);
}
+
+ onDrawScrollBars(canvas);
+ }
+
+ @Override
+ protected int computeHorizontalScrollRange() {
+ final int count = getChildCount();
+ return count == 0 ? getWidth() : (getChildAt(count - 1)).getRight();
}
private float mScale = 1.0f;
@@ -577,8 +585,11 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
getChildAt(i).measure(widthMeasureSpec, heightMeasureSpec);
}
+
if (mFirstLayout) {
+ setHorizontalScrollBarEnabled(false);
scrollTo(mCurrentScreen * width, 0);
+ setHorizontalScrollBarEnabled(true);
updateWallpaperOffset(width * (getChildCount() - 1));
mFirstLayout = false;
}
@@ -725,7 +736,7 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
if (xMoved) {
// Scroll if the user moved far enough along the X axis
mTouchState = TOUCH_STATE_SCROLLING;
- enableChildrenCache();
+ enableChildrenCache(mCurrentScreen - 1, mCurrentScreen + 1);
}
// Either way, cancel any pending longpress
if (mAllowLongPress) {
@@ -781,9 +792,20 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
return mTouchState != TOUCH_STATE_REST;
}
- void enableChildrenCache() {
+ void enableChildrenCache(int fromScreen, int toScreen) {
+ if (fromScreen > toScreen) {
+ int temp = fromScreen;
+ fromScreen = toScreen;
+ toScreen = fromScreen;
+ }
+
final int count = getChildCount();
- for (int i = 0; i < count; i++) {
+
+ fromScreen = Math.max(fromScreen, 0);
+ toScreen = Math.min(toScreen, count - 1);
+
+ for (int i = fromScreen; i <= toScreen; i++) {
+ // Log.d("TAG", "enablingChildrenCache: " + i);
final CellLayout layout = (CellLayout) getChildAt(i);
layout.setChildrenDrawnWithCacheEnabled(true);
layout.setChildrenDrawingCacheEnabled(true);
@@ -852,6 +874,8 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
scrollBy(Math.min(availableToScroll, deltaX), 0);
updateWallpaperOffset();
}
+ } else {
+ awakenScrollBars();
}
}
break;
@@ -895,22 +919,26 @@ public class Workspace extends ViewGroup implements DropTarget, DragSource, Drag
void snapToScreen(int whichScreen) {
if (!mScroller.isFinished()) return;
+ whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));
+
clearVacantCache();
- enableChildrenCache();
+ enableChildrenCache(mCurrentScreen, whichScreen);
- whichScreen = Math.max(0, Math.min(whichScreen, getChildCount() - 1));
- boolean changingScreens = whichScreen != mCurrentScreen;
+
+ final int screenDelta = Math.abs(whichScreen - mCurrentScreen);
mNextScreen = whichScreen;
View focusedChild = getFocusedChild();
- if (focusedChild != null && changingScreens && focusedChild == getChildAt(mCurrentScreen)) {
+ if (focusedChild != null && screenDelta != 0 && focusedChild == getChildAt(mCurrentScreen)) {
focusedChild.clearFocus();
}
final int newX = whichScreen * getWidth();
final int delta = newX - mScrollX;
- mScroller.startScroll(mScrollX, 0, delta, 0, Math.abs(delta) * 2);
+ final int duration = screenDelta * 300;
+ awakenScrollBars(duration);
+ mScroller.startScroll(mScrollX, 0, delta, 0, duration);
invalidate();
}