summaryrefslogtreecommitdiffstats
path: root/src/com/cyanogenmod/trebuchet
diff options
context:
space:
mode:
authornebkat <nebkat@gmail.com>2011-12-18 16:19:25 +0000
committernebkat <nebkat@gmail.com>2011-12-22 17:30:45 +0000
commitd54460d3610844857920e14b8d076fc7b900d4ea (patch)
treefedc9e382ee50054ac4e80fcfbac61a7c614ea44 /src/com/cyanogenmod/trebuchet
parent8aefda97cc937b88b6ec290236e60c55a13f850f (diff)
downloadandroid_packages_apps_Trebuchet-d54460d3610844857920e14b8d076fc7b900d4ea.tar.gz
android_packages_apps_Trebuchet-d54460d3610844857920e14b8d076fc7b900d4ea.tar.bz2
android_packages_apps_Trebuchet-d54460d3610844857920e14b8d076fc7b900d4ea.zip
Preferences: Number of Homescreens + Default Screen
Change-Id: Id361d71c9fd0f0748fa6a48c6702178d366221b8
Diffstat (limited to 'src/com/cyanogenmod/trebuchet')
-rw-r--r--src/com/cyanogenmod/trebuchet/InstallShortcutReceiver.java2
-rw-r--r--src/com/cyanogenmod/trebuchet/Launcher.java4
-rw-r--r--src/com/cyanogenmod/trebuchet/LauncherModel.java10
-rw-r--r--src/com/cyanogenmod/trebuchet/Workspace.java46
-rw-r--r--src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java8
5 files changed, 46 insertions, 24 deletions
diff --git a/src/com/cyanogenmod/trebuchet/InstallShortcutReceiver.java b/src/com/cyanogenmod/trebuchet/InstallShortcutReceiver.java
index 9452db838..eab8ff6a0 100644
--- a/src/com/cyanogenmod/trebuchet/InstallShortcutReceiver.java
+++ b/src/com/cyanogenmod/trebuchet/InstallShortcutReceiver.java
@@ -44,7 +44,7 @@ public class InstallShortcutReceiver extends BroadcastReceiver {
if (!installShortcut(context, data, screen)) {
// The target screen is full, let's try the other screens
- for (int i = 0; i < Launcher.SCREEN_COUNT; i++) {
+ for (int i = 0; i < Launcher.MAX_SCREEN_COUNT; i++) {
if (i != screen && installShortcut(context, data, i)) break;
}
}
diff --git a/src/com/cyanogenmod/trebuchet/Launcher.java b/src/com/cyanogenmod/trebuchet/Launcher.java
index c713a6cbc..affc9dc0f 100644
--- a/src/com/cyanogenmod/trebuchet/Launcher.java
+++ b/src/com/cyanogenmod/trebuchet/Launcher.java
@@ -135,7 +135,7 @@ public final class Launcher extends Activity
static final String EXTRA_SHORTCUT_DUPLICATE = "duplicate";
- static final int SCREEN_COUNT = 5;
+ static final int MAX_SCREEN_COUNT = 7;
static final int DEFAULT_SCREEN = 2;
static final int DIALOG_CREATE_SHORTCUT = 1;
@@ -2931,7 +2931,7 @@ public final class Launcher extends Activity
if (mWorkspace != null) {
return mWorkspace.getCurrentPage();
} else {
- return SCREEN_COUNT / 2;
+ return DEFAULT_SCREEN;
}
}
diff --git a/src/com/cyanogenmod/trebuchet/LauncherModel.java b/src/com/cyanogenmod/trebuchet/LauncherModel.java
index 7e6b9863a..85c797802 100644
--- a/src/com/cyanogenmod/trebuchet/LauncherModel.java
+++ b/src/com/cyanogenmod/trebuchet/LauncherModel.java
@@ -926,13 +926,13 @@ public class LauncherModel extends BroadcastReceiver {
// We use the last index to refer to the hotseat and the screen as the rank, so
// test and update the occupied state accordingly
- if (occupied[Launcher.SCREEN_COUNT][item.screen][0] != null) {
+ if (occupied[Launcher.MAX_SCREEN_COUNT][item.screen][0] != null) {
Log.e(TAG, "Error loading shortcut into hotseat " + item
+ " into position (" + item.screen + ":" + item.cellX + "," + item.cellY
- + ") occupied by " + occupied[Launcher.SCREEN_COUNT][item.screen][0]);
+ + ") occupied by " + occupied[Launcher.MAX_SCREEN_COUNT][item.screen][0]);
return false;
} else {
- occupied[Launcher.SCREEN_COUNT][item.screen][0] = item;
+ occupied[Launcher.MAX_SCREEN_COUNT][item.screen][0] = item;
return true;
}
} else if (item.container != LauncherSettings.Favorites.CONTAINER_DESKTOP) {
@@ -986,7 +986,7 @@ public class LauncherModel extends BroadcastReceiver {
// Load workspace in reverse order to ensure that latest items are loaded first (and
// before any earlier duplicates)
final ItemInfo occupied[][][] =
- new ItemInfo[Launcher.SCREEN_COUNT + 1][mCellCountX + 1][mCellCountY + 1];
+ new ItemInfo[Launcher.MAX_SCREEN_COUNT + 1][mCellCountX + 1][mCellCountY + 1];
try {
final int idIndex = c.getColumnIndexOrThrow(LauncherSettings.Favorites._ID);
@@ -1194,7 +1194,7 @@ public class LauncherModel extends BroadcastReceiver {
Log.d(TAG, "workspace layout: ");
for (int y = 0; y < mCellCountY; y++) {
String line = "";
- for (int s = 0; s < Launcher.SCREEN_COUNT; s++) {
+ for (int s = 0; s < Launcher.MAX_SCREEN_COUNT; s++) {
if (s > 0) {
line += " | ";
}
diff --git a/src/com/cyanogenmod/trebuchet/Workspace.java b/src/com/cyanogenmod/trebuchet/Workspace.java
index 7f95f9682..2b6a58e60 100644
--- a/src/com/cyanogenmod/trebuchet/Workspace.java
+++ b/src/com/cyanogenmod/trebuchet/Workspace.java
@@ -56,6 +56,7 @@ import android.util.Log;
import android.util.Pair;
import android.view.Display;
import android.view.DragEvent;
+import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
@@ -117,8 +118,6 @@ public class Workspace extends SmoothPagedView
private IBinder mWindowToken;
private static final float WALLPAPER_SCREENS_SPAN = 2f;
- private int mDefaultPage;
-
/**
* CellInfo for the cell that is currently being dragged
*/
@@ -240,6 +239,8 @@ public class Workspace extends SmoothPagedView
private float mTransitionProgress;
// Preferences
+ private int mNumberHomescreens;
+ private int mDefaultHomescreen;
private boolean mShowSearchBar;
private boolean mResizeAnyWidget;
private boolean mShowScrollingIndicator;
@@ -310,13 +311,18 @@ public class Workspace extends SmoothPagedView
// if the value is manually specified, use that instead
cellCountX = a.getInt(R.styleable.Workspace_cellCountX, cellCountX);
cellCountY = a.getInt(R.styleable.Workspace_cellCountY, cellCountY);
- mDefaultPage = a.getInt(R.styleable.Workspace_defaultScreen, 1);
a.recycle();
LauncherModel.updateWorkspaceLayoutCells(cellCountX, cellCountY);
setHapticFeedbackEnabled(false);
// Preferences
+ mNumberHomescreens = PreferencesProvider.Interface.Homescreen.getNumberHomescreens(context);
+ mDefaultHomescreen = PreferencesProvider.Interface.Homescreen.getDefaultHomescreen(context,
+ mNumberHomescreens / 2);
+ if (mDefaultHomescreen >= mNumberHomescreens) {
+ mDefaultHomescreen = mNumberHomescreens / 2;
+ }
mShowSearchBar = PreferencesProvider.Interface.Homescreen.getShowSearchBar(context);
mResizeAnyWidget = PreferencesProvider.Interface.Homescreen.getResizeAnyWidget(context);
mShowScrollingIndicator = PreferencesProvider.Interface.Homescreen.getShowScrollingIndicator(context);
@@ -393,7 +399,7 @@ public class Workspace extends SmoothPagedView
*/
protected void initWorkspace() {
Context context = getContext();
- mCurrentPage = mDefaultPage;
+ mCurrentPage = mDefaultHomescreen;
Launcher.setScreen(mCurrentPage);
LauncherApplication app = (LauncherApplication)context.getApplicationContext();
mIconCache = app.getIconCache();
@@ -403,6 +409,12 @@ public class Workspace extends SmoothPagedView
final Resources res = getResources();
+ LayoutInflater inflater =
+ (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ for (int i = 0; i < mNumberHomescreens; i++) {
+ inflater.inflate(R.layout.workspace_screen, this);
+ }
+
try {
mBackground = res.getDrawable(R.drawable.apps_customize_bg);
} catch (Resources.NotFoundException e) {
@@ -1226,15 +1238,17 @@ public class Workspace extends SmoothPagedView
if (mOverScrollX < 0 || mOverScrollX > mMaxScrollX) {
int index = mOverScrollX < 0 ? 0 : getChildCount() - 1;
CellLayout cl = (CellLayout) getChildAt(index);
- float scrollProgress = getScrollProgress(screenScroll, cl, index);
- cl.setOverScrollAmount(Math.abs(scrollProgress), index == 0);
- float rotation = - WORKSPACE_OVERSCROLL_ROTATION * scrollProgress;
- cl.setCameraDistance(mDensity * CAMERA_DISTANCE);
- cl.setPivotX(cl.getMeasuredWidth() * (index == 0 ? 0.75f : 0.25f));
- cl.setPivotY(cl.getMeasuredHeight() * 0.5f);
- cl.setRotationY(rotation);
- cl.setOverscrollTransformsDirty(true);
- setFadeForOverScroll(Math.abs(scrollProgress));
+ if (getChildCount() > 1) {
+ float scrollProgress = getScrollProgress(screenScroll, cl, index);
+ cl.setOverScrollAmount(Math.abs(scrollProgress), index == 0);
+ float rotation = - WORKSPACE_OVERSCROLL_ROTATION * scrollProgress;
+ cl.setCameraDistance(mDensity * CAMERA_DISTANCE);
+ cl.setPivotX(cl.getMeasuredWidth() * (index == 0 ? 0.75f : 0.25f));
+ cl.setPivotY(cl.getMeasuredHeight() * 0.5f);
+ cl.setRotationY(rotation);
+ cl.setOverscrollTransformsDirty(true);
+ setFadeForOverScroll(Math.abs(scrollProgress));
+ }
} else {
if (mOverscrollFade != 0) {
setFadeForOverScroll(0);
@@ -3533,12 +3547,12 @@ public class Workspace extends SmoothPagedView
void moveToDefaultScreen(boolean animate) {
if (!isSmall()) {
if (animate) {
- snapToPage(mDefaultPage);
+ snapToPage(mDefaultHomescreen);
} else {
- setCurrentPage(mDefaultPage);
+ setCurrentPage(mDefaultHomescreen);
}
}
- getChildAt(mDefaultPage).requestFocus();
+ getChildAt(mDefaultHomescreen).requestFocus();
}
@Override
diff --git a/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java b/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java
index 9419e6c6d..1144be227 100644
--- a/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java
+++ b/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java
@@ -10,6 +10,14 @@ public final class PreferencesProvider {
public static class Interface {
public static class Homescreen {
+ public static int getNumberHomescreens(Context context) {
+ final SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_KEY, 0);
+ return preferences.getInt("ui_homescreen_screens", 5);
+ }
+ public static int getDefaultHomescreen(Context context, int def) {
+ final SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_KEY, 0);
+ return preferences.getInt("ui_homescreen_default_screen", def + 1) - 1;
+ }
public static boolean getShowSearchBar(Context context) {
final SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_KEY, 0);
return preferences.getBoolean("ui_homescreen_general_search", true);