summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntonin Fouques <totofouques@gmail.com>2012-10-17 22:09:08 +0200
committerGerrit Code Review <gerrit@review.cyanogenmod.com>2012-12-01 01:45:20 -0800
commit96c57eb86e38036eebdb498a3b97e7912527278f (patch)
tree6863e4a4befe23e75849af3725f3072396c3538a
parentf9b5a4d932742d41891d5ad814441a6b09f83395 (diff)
downloadandroid_packages_apps_Trebuchet-96c57eb86e38036eebdb498a3b97e7912527278f.zip
android_packages_apps_Trebuchet-96c57eb86e38036eebdb498a3b97e7912527278f.tar.gz
android_packages_apps_Trebuchet-96c57eb86e38036eebdb498a3b97e7912527278f.tar.bz2
Trebuchet : Add a pref to set hotseat icon's number
This adds a preference for the hotseat (Launcher main bar/dock) - Choose the number of icons on the hotseat - Choose the place of the applications drawer button by drag'n'drop - Translations in English + French This is usefull for big screen devices. You can set from 1 to 9 buttons on the hotseat. You can set the app button where you want by drag'n'drop. Default values are keeped unchanged so there is no pb with first screen tuto + no pb with default shortcuts. Demo video : https://www.dropbox.com/s/2wamj9yr1s3woxl/Trebuchet-hotseat-icons.mp4 Demo apk : https://www.dropbox.com/s/psqab2gyivcyo3d/CmoaToto%20Trebuchet.apk PatchSet 1 : initial commit PatchSet 2 : coding style PatchSet 3 : - Remove prefs for tablet - AllApps Button move by Drag'n'Drop (instead of pref) PatchSet 4 : searchbar & deletebar don't dis/appear while dragging AllApps button) PatchSet 5 : dropOnFlingToDeleteTarget disabled for AllApps button PatchSet 6 : - Fix shortcuts errors in database - Set docks pref disabled for large screen programmatically - Fix english strings/french trads Change-Id: I21f6a4610ed16c8780ccf6e2acffcf6e07511457
-rw-r--r--res/values-fr/strings.xml2
-rw-r--r--res/values/strings.xml2
-rw-r--r--res/xml/preferences.xml11
-rw-r--r--src/com/cyanogenmod/trebuchet/AllAppsButtonInfo.java35
-rw-r--r--src/com/cyanogenmod/trebuchet/DeleteDropTarget.java7
-rw-r--r--src/com/cyanogenmod/trebuchet/DragController.java10
-rw-r--r--src/com/cyanogenmod/trebuchet/Hotseat.java37
-rw-r--r--src/com/cyanogenmod/trebuchet/ItemInfo.java1
-rw-r--r--src/com/cyanogenmod/trebuchet/Launcher.java2
-rw-r--r--src/com/cyanogenmod/trebuchet/LauncherModel.java13
-rw-r--r--src/com/cyanogenmod/trebuchet/LauncherSettings.java5
-rw-r--r--src/com/cyanogenmod/trebuchet/SearchDropTargetBar.java10
-rw-r--r--src/com/cyanogenmod/trebuchet/Workspace.java23
-rw-r--r--src/com/cyanogenmod/trebuchet/preference/Preferences.java4
-rw-r--r--src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java14
15 files changed, 156 insertions, 20 deletions
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 241e1c2..961cee4 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -172,6 +172,8 @@
<!-- Dock -->
<string name="preferences_interface_dock_title">Barre de Dock</string>
+ <string name="preferences_interface_dock_size_title">Icônes du dock</string>
+ <string name="preferences_interface_dock_size_summary">Définir le nombre d\'icône du dock</string>
<!-- Icons -->
<string name="preferences_interface_icons_title">Icônes</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a866a0e..300364a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -345,6 +345,8 @@ s -->
<!-- Dock -->
<string name="preferences_interface_dock_title">Dock</string>
+ <string name="preferences_interface_dock_size_title">Dock icons</string>
+ <string name="preferences_interface_dock_size_summary">Choose the number of icons in the dock</string>
<!-- Icons -->
<string name="preferences_interface_icons_title">Icons</string>
diff --git a/res/xml/preferences.xml b/res/xml/preferences.xml
index 5ec6a95..3023f60 100644
--- a/res/xml/preferences.xml
+++ b/res/xml/preferences.xml
@@ -115,10 +115,15 @@
</PreferenceScreen>
<!-- Dock -->
- <!-- <PreferenceScreen android:key="ui_dock"
+ <PreferenceScreen android:key="ui_dock"
android:title="@string/preferences_interface_dock_title">
-
- </PreferenceScreen> -->
+ <com.cyanogenmod.trebuchet.preference.NumberPickerPreference android:key="ui_dock_hotseat_size"
+ android:title="@string/preferences_interface_dock_size_title"
+ android:summary="@string/preferences_interface_dock_size_summary"
+ android:defaultValue="@integer/hotseat_cell_count"
+ launcher:max="9"
+ launcher:min="1" />
+ </PreferenceScreen>
<!-- Icons -->
<!-- <PreferenceScreen android:key="ui_icons"
diff --git a/src/com/cyanogenmod/trebuchet/AllAppsButtonInfo.java b/src/com/cyanogenmod/trebuchet/AllAppsButtonInfo.java
new file mode 100644
index 0000000..b4ebe10
--- /dev/null
+++ b/src/com/cyanogenmod/trebuchet/AllAppsButtonInfo.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 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.
+ */
+
+package com.cyanogenmod.trebuchet;
+
+/**
+ * Represents the AllApps button in hotseat
+ */
+class AllAppsButtonInfo extends ItemInfo {
+
+ AllAppsButtonInfo() {
+ itemType = LauncherSettings.BaseLauncherColumns.ITEM_TYPE_ALLAPPS;
+ }
+
+ @Override
+ public String toString() {
+ return "AllAppsButtonInfo(id=" + this.id + " type=" + this.itemType
+ + " container=" + this.container + " screen=" + screen
+ + " cellX=" + cellX + " cellY=" + cellY + " spanX=" + spanX + " spanY=" + spanY
+ + " isGesture=" + isGesture + " dropPos=" + dropPos + ")";
+ }
+}
diff --git a/src/com/cyanogenmod/trebuchet/DeleteDropTarget.java b/src/com/cyanogenmod/trebuchet/DeleteDropTarget.java
index 2cc872a..c4bacfe 100644
--- a/src/com/cyanogenmod/trebuchet/DeleteDropTarget.java
+++ b/src/com/cyanogenmod/trebuchet/DeleteDropTarget.java
@@ -131,6 +131,9 @@ public class DeleteDropTarget extends ButtonDropTarget {
private boolean isWorkspaceFolder(DragSource source, Object info) {
return (source instanceof Workspace) && (info instanceof FolderInfo);
}
+ private boolean isAllAppsButton(Object info) {
+ return (info instanceof AllAppsButtonInfo);
+ }
private void setHoverColor() {
setTextColor(mHoverColor);
@@ -147,6 +150,10 @@ public class DeleteDropTarget extends ButtonDropTarget {
@Override
public void onDragStart(DragSource source, Object info, int dragAction) {
+ // If it's the AllApps button, from Hotseat, don't do anything.
+ if (isAllAppsButton(info)) {
+ return;
+ }
boolean isUninstall = false;
// If we are dragging an application from AppsCustomize, only show the uninstall control if we
diff --git a/src/com/cyanogenmod/trebuchet/DragController.java b/src/com/cyanogenmod/trebuchet/DragController.java
index cdb5060..ba41780 100644
--- a/src/com/cyanogenmod/trebuchet/DragController.java
+++ b/src/com/cyanogenmod/trebuchet/DragController.java
@@ -34,6 +34,7 @@ import android.view.ViewConfiguration;
import android.view.inputmethod.InputMethodManager;
import com.cyanogenmod.trebuchet.R;
+import com.cyanogenmod.trebuchet.DropTarget.DragObject;
import java.util.ArrayList;
@@ -442,7 +443,7 @@ public class DragController {
case MotionEvent.ACTION_UP:
mLastTouchUpTime = System.currentTimeMillis();
if (mDragging) {
- PointF vec = isFlingingToDelete(mDragObject.dragSource);
+ PointF vec = isFlingingToDelete(mDragObject);
if (vec != null) {
dropOnFlingToDeleteTarget(dragLayerX, dragLayerY, vec);
} else {
@@ -584,7 +585,7 @@ public class DragController {
mHandler.removeCallbacks(mScrollRunnable);
if (mDragging) {
- PointF vec = isFlingingToDelete(mDragObject.dragSource);
+ PointF vec = isFlingingToDelete(mDragObject);
if (vec != null) {
dropOnFlingToDeleteTarget(dragLayerX, dragLayerY, vec);
} else {
@@ -607,9 +608,10 @@ public class DragController {
*
* @return the vector at which the item was flung, or null if no fling was detected.
*/
- private PointF isFlingingToDelete(DragSource source) {
+ private PointF isFlingingToDelete(DragObject object) {
if (mFlingToDeleteDropTarget == null) return null;
- if (!source.supportsFlingToDelete()) return null;
+ if (!object.dragSource.supportsFlingToDelete()) return null;
+ if (object.dragInfo instanceof AllAppsButtonInfo) return null;
ViewConfiguration config = ViewConfiguration.get(mLauncher);
mVelocityTracker.computeCurrentVelocity(1000, config.getScaledMaximumFlingVelocity());
diff --git a/src/com/cyanogenmod/trebuchet/Hotseat.java b/src/com/cyanogenmod/trebuchet/Hotseat.java
index 7463d65..ce2e0fa 100644
--- a/src/com/cyanogenmod/trebuchet/Hotseat.java
+++ b/src/com/cyanogenmod/trebuchet/Hotseat.java
@@ -26,6 +26,8 @@ import android.view.View;
import android.widget.FrameLayout;
import com.cyanogenmod.trebuchet.R;
+import com.cyanogenmod.trebuchet.preference.Preferences;
+import com.cyanogenmod.trebuchet.preference.PreferencesProvider;
public class Hotseat extends FrameLayout {
@SuppressWarnings("unused")
@@ -55,11 +57,26 @@ public class Hotseat extends FrameLayout {
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.Hotseat, defStyle, 0);
- mCellCountX = a.getInt(R.styleable.Hotseat_cellCountX, -1);
- mCellCountY = a.getInt(R.styleable.Hotseat_cellCountY, -1);
- mAllAppsButtonRank = context.getResources().getInteger(R.integer.hotseat_all_apps_index);
+
+ int numberHotseatIcons = PreferencesProvider.Interface.Dock.getNumberHotseatIcons(context);
+ int defaultHotseatIcon = PreferencesProvider.Interface.Dock.getDefaultHotseatIcon(context,
+ context.getResources().getInteger(R.integer.hotseat_all_apps_index));
+ if (defaultHotseatIcon >= numberHotseatIcons) {
+ defaultHotseatIcon = numberHotseatIcons - 1;
+ PreferencesProvider.Interface.Dock.setDefaultHotseatIcon(context, defaultHotseatIcon);
+ }
+
mIsLandscape = context.getResources().getConfiguration().orientation ==
Configuration.ORIENTATION_LANDSCAPE;
+
+ if (mIsLandscape) {
+ mCellCountX = a.getInt(R.styleable.Hotseat_cellCountX, -1);
+ mCellCountY = numberHotseatIcons;
+ } else {
+ mCellCountX = numberHotseatIcons;
+ mCellCountY = a.getInt(R.styleable.Hotseat_cellCountY, -1);
+ }
+ mAllAppsButtonRank = defaultHotseatIcon;
}
public void setup(Launcher launcher) {
@@ -129,10 +146,24 @@ public class Hotseat extends FrameLayout {
}
});
+ allAppsButton.setOnLongClickListener(new View.OnLongClickListener() {
+ @Override
+ public boolean onLongClick(View v) {
+ if (mLauncher != null) {
+ return mLauncher.onLongClick(v);
+ }
+ return false;
+ }
+ });
+
// Note: We do this to ensure that the hotseat is always laid out in the orientation of
// the hotseat in order regardless of which orientation they were added
int x = getCellXFromOrder(mAllAppsButtonRank);
int y = getCellYFromOrder(mAllAppsButtonRank);
+ AllAppsButtonInfo allAppsButtonInfo = new AllAppsButtonInfo();
+ allAppsButtonInfo.cellX = x;
+ allAppsButtonInfo.cellY = y;
+ allAppsButton.setTag(allAppsButtonInfo);
CellLayout.LayoutParams lp = new CellLayout.LayoutParams(x,y,1,1);
lp.canReorder = false;
mContent.addViewToCellLayout(allAppsButton, -1, 0, lp, true);
diff --git a/src/com/cyanogenmod/trebuchet/ItemInfo.java b/src/com/cyanogenmod/trebuchet/ItemInfo.java
index c76108f..75d0578 100644
--- a/src/com/cyanogenmod/trebuchet/ItemInfo.java
+++ b/src/com/cyanogenmod/trebuchet/ItemInfo.java
@@ -39,6 +39,7 @@ class ItemInfo {
/**
* One of {@link LauncherSettings.Favorites#ITEM_TYPE_APPLICATION},
* {@link LauncherSettings.Favorites#ITEM_TYPE_SHORTCUT},
+ * {@link LauncherSettings.Favorites#ITEM_TYPE_ALLAPPS},
* {@link LauncherSettings.Favorites#ITEM_TYPE_FOLDER}, or
* {@link LauncherSettings.Favorites#ITEM_TYPE_APPWIDGET}.
*/
diff --git a/src/com/cyanogenmod/trebuchet/Launcher.java b/src/com/cyanogenmod/trebuchet/Launcher.java
index f32b11c..da1778a 100644
--- a/src/com/cyanogenmod/trebuchet/Launcher.java
+++ b/src/com/cyanogenmod/trebuchet/Launcher.java
@@ -2379,7 +2379,7 @@ public final class Launcher extends Activity
}
public boolean isAllAppsButtonRank(int rank) {
- return mHotseat.isAllAppsButtonRank(rank);
+ return (mHotseat != null) ? mHotseat.isAllAppsButtonRank(rank) : false;
}
// AllAppsView.Watcher
diff --git a/src/com/cyanogenmod/trebuchet/LauncherModel.java b/src/com/cyanogenmod/trebuchet/LauncherModel.java
index 6ada4de..e49c191 100644
--- a/src/com/cyanogenmod/trebuchet/LauncherModel.java
+++ b/src/com/cyanogenmod/trebuchet/LauncherModel.java
@@ -49,6 +49,7 @@ import android.util.Log;
import com.cyanogenmod.trebuchet.R;
import com.cyanogenmod.trebuchet.InstallWidgetReceiver.WidgetMimeTypeHandlerData;
+import com.cyanogenmod.trebuchet.preference.PreferencesProvider;
import java.lang.ref.WeakReference;
import java.net.URISyntaxException;
@@ -1059,13 +1060,15 @@ 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.MAX_SCREEN_COUNT][item.screen][0] != null) {
+ if (occupied[PreferencesProvider.Interface.Homescreen.getNumberHomescreens(mContext)]
+ [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.MAX_SCREEN_COUNT][item.screen][0]);
return false;
} else {
- occupied[Launcher.MAX_SCREEN_COUNT][item.screen][0] = item;
+ occupied[PreferencesProvider.Interface.Homescreen.getNumberHomescreens(mContext)]
+ [item.screen][0] = item;
return true;
}
} else if (item.container != LauncherSettings.Favorites.CONTAINER_DESKTOP) {
@@ -1114,8 +1117,10 @@ public class LauncherModel extends BroadcastReceiver {
sBgItemsIdMap.clear();
sBgDbIconCache.clear();
+ int numberHotseatIcons = PreferencesProvider.Interface.Dock.getNumberHotseatIcons(mContext);
final ItemInfo occupied[][][] =
- new ItemInfo[Launcher.MAX_SCREEN_COUNT + 1][mCellCountX + 1][mCellCountY + 1];
+ new ItemInfo[PreferencesProvider.Interface.Homescreen.getNumberHomescreens(mContext) + 1]
+ [Math.max(mCellCountX, numberHotseatIcons)][mCellCountY];
final ArrayList<Long> itemsToRemove = new ArrayList<Long>();
@@ -1208,6 +1213,8 @@ public class LauncherModel extends BroadcastReceiver {
// check & update map of what's occupied
if (!checkItemPlacement(occupied, info)) {
+ id = c.getLong(idIndex);
+ itemsToRemove.add(id);
break;
}
diff --git a/src/com/cyanogenmod/trebuchet/LauncherSettings.java b/src/com/cyanogenmod/trebuchet/LauncherSettings.java
index 361dd69..1cc1303 100644
--- a/src/com/cyanogenmod/trebuchet/LauncherSettings.java
+++ b/src/com/cyanogenmod/trebuchet/LauncherSettings.java
@@ -56,6 +56,11 @@ class LauncherSettings {
static final int ITEM_TYPE_SHORTCUT = 1;
/**
+ * The gesture is the All Apps button
+ */
+ static final int ITEM_TYPE_ALLAPPS = 5;
+
+ /**
* The icon type.
* <P>Type: INTEGER</P>
*/
diff --git a/src/com/cyanogenmod/trebuchet/SearchDropTargetBar.java b/src/com/cyanogenmod/trebuchet/SearchDropTargetBar.java
index 7811255..2a96517 100644
--- a/src/com/cyanogenmod/trebuchet/SearchDropTargetBar.java
+++ b/src/com/cyanogenmod/trebuchet/SearchDropTargetBar.java
@@ -188,11 +188,21 @@ public class SearchDropTargetBar extends FrameLayout implements DragController.D
return sTransitionOutDuration;
}
+ private boolean isAllAppsButton(Object info) {
+ return (info instanceof AllAppsButtonInfo);
+ }
+
/*
* DragController.DragListener implementation
*/
@Override
public void onDragStart(DragSource source, Object info, int dragAction) {
+ // If it's the AllApps button, from Hotseat, don't do anything.
+ if (isAllAppsButton(info)) {
+ deferOnDragEnd();
+ return;
+ }
+
// Animate out the QSB search bar, and animate in the drop target bar
prepareStartAnimation(mDropTargetBar);
mDropTargetBarAnim.start();
diff --git a/src/com/cyanogenmod/trebuchet/Workspace.java b/src/com/cyanogenmod/trebuchet/Workspace.java
index cfe7912..363e474 100644
--- a/src/com/cyanogenmod/trebuchet/Workspace.java
+++ b/src/com/cyanogenmod/trebuchet/Workspace.java
@@ -2394,8 +2394,17 @@ public class Workspace extends SmoothPagedView
}
}
- LauncherModel.moveItemInDatabase(mLauncher, info, container, screen, lp.cellX,
- lp.cellY);
+ // No_id check required as the AllApps button doesn't have an item info id
+ if (info.id != ItemInfo.NO_ID) {
+ LauncherModel.moveItemInDatabase(mLauncher, info, container, screen, lp.cellX,
+ lp.cellY);
+ } else if (info instanceof AllAppsButtonInfo) {
+ if (!LauncherApplication.isScreenLandscape(getContext())) {
+ PreferencesProvider.Interface.Dock.setDefaultHotseatIcon(getContext(), lp.cellX);
+ } else {
+ PreferencesProvider.Interface.Dock.setDefaultHotseatIcon(getContext(), lp.cellY);
+ }
+ }
} else {
// If we can't find a drop location, we return the item to its original position
CellLayout.LayoutParams lp = (CellLayout.LayoutParams) cell.getLayoutParams();
@@ -2845,6 +2854,10 @@ public class Workspace extends SmoothPagedView
return d.dragSource != this && isDragWidget(d);
}
+ private boolean isDragAllAppsButton(DragObject d) {
+ return (d.dragInfo instanceof AllAppsButtonInfo);
+ }
+
public void onDragOver(DragObject d) {
// Skip drag over events while we are dragging over side pages
if (mInScrollArea || mIsSwitchingState || mState == State.SMALL) return;
@@ -2888,7 +2901,7 @@ public class Workspace extends SmoothPagedView
// Test to see if we are over the hotseat otherwise just use the current page
if (mLauncher.getHotseat() != null && !isDragWidget(d)) {
mLauncher.getHotseat().getHitRect(r);
- if (r.contains(d.x, d.y)) {
+ if (r.contains(d.x, d.y) || isDragAllAppsButton(d)) {
layout = mLauncher.getHotseat().getLayout();
}
}
@@ -3494,8 +3507,8 @@ public class Workspace extends SmoothPagedView
for (int i = 0; i < count; i++) {
View v = cl.getShortcutsAndWidgets().getChildAt(i);
ItemInfo info = (ItemInfo) v.getTag();
- // Null check required as the AllApps button doesn't have an item info
- if (info != null) {
+ // No_id check required as the AllApps button doesn't have an item info id
+ if (info.id != ItemInfo.NO_ID) {
LauncherModel.modifyItemInDatabase(mLauncher, info, container, screen, info.cellX,
info.cellY, info.spanX, info.spanY);
}
diff --git a/src/com/cyanogenmod/trebuchet/preference/Preferences.java b/src/com/cyanogenmod/trebuchet/preference/Preferences.java
index 8f90c4f..a4e806f 100644
--- a/src/com/cyanogenmod/trebuchet/preference/Preferences.java
+++ b/src/com/cyanogenmod/trebuchet/preference/Preferences.java
@@ -22,6 +22,7 @@ import android.os.Bundle;
import android.preference.Preference;
import android.preference.PreferenceActivity;
+import com.cyanogenmod.trebuchet.LauncherApplication;
import com.cyanogenmod.trebuchet.R;
public class Preferences extends PreferenceActivity
@@ -35,6 +36,9 @@ public class Preferences extends PreferenceActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
+ if (LauncherApplication.isScreenLarge()) {
+ findPreference("ui_dock").setEnabled(false);
+ }
mPrefs = getSharedPreferences(PreferencesProvider.PREFERENCES_KEY,
Context.MODE_PRIVATE);
diff --git a/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java b/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java
index e12bf00..b4228c3 100644
--- a/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java
+++ b/src/com/cyanogenmod/trebuchet/preference/PreferencesProvider.java
@@ -20,6 +20,7 @@ import android.content.Context;
import android.content.SharedPreferences;
import com.cyanogenmod.trebuchet.LauncherApplication;
+import com.cyanogenmod.trebuchet.R;
import com.cyanogenmod.trebuchet.Workspace;
import com.cyanogenmod.trebuchet.AppsCustomizePagedView;
@@ -117,7 +118,18 @@ public final class PreferencesProvider {
}
public static class Dock {
-
+ public static int getNumberHotseatIcons(Context context) {
+ final SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_KEY, 0);
+ return preferences.getInt("ui_dock_hotseat_size", context.getResources().getInteger(R.integer.hotseat_cell_count));
+ }
+ public static int getDefaultHotseatIcon(Context context, int def) {
+ final SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_KEY, 0);
+ return preferences.getInt("ui_dock_hotseat_apps_index", def);
+ }
+ public static void setDefaultHotseatIcon(Context context, int val) {
+ final SharedPreferences preferences = context.getSharedPreferences(PREFERENCES_KEY, 0);
+ preferences.edit().putInt("ui_dock_hotseat_apps_index", val).apply();
+ }
}
public static class Icons {