diff --git a/res/layout/dashboard_category.xml b/res/layout/dashboard_category.xml
index 9109440431e..e79f8d512e0 100644
--- a/res/layout/dashboard_category.xml
+++ b/res/layout/dashboard_category.xml
@@ -15,15 +15,14 @@
-->
+ android:id="@+id/category"
+ android:layout_width="match_parent"
+ android:layout_height="@dimen/dashboard_category_height"
+ android:paddingStart="@dimen/dashboard_category_padding_start"
+ android:paddingEnd="@dimen/dashboard_category_padding_end"
+ android:orientation="vertical"
+ android:paddingBottom="8dip"
+ android:background="@color/card_background" >
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:paddingStart="@dimen/dashboard_category_title_margin_start"
+ android:singleLine="true"
+ android:ellipsize="marquee"
+ android:gravity="center_vertical"
+ android:textAppearance="@style/TextAppearance.CategoryTitle"
+ android:textAlignment="viewStart"
+ />
diff --git a/res/layout/dashboard_tile.xml b/res/layout/dashboard_tile.xml
index cc237eebdf9..cd7c8ee08b0 100644
--- a/res/layout/dashboard_tile.xml
+++ b/res/layout/dashboard_tile.xml
@@ -21,8 +21,7 @@
android:gravity="center_vertical"
android:minHeight="@dimen/dashboard_tile_minimum_height"
android:clickable="true"
- android:background="@drawable/selectable_card"
- android:elevation="@dimen/dashboard_category_elevation" >
+ android:background="@drawable/selectable_card" >
+ android:background="@drawable/selectable_card">
+
+
+
+
+
+
+
+
+
diff --git a/res/layout/suggestion_tile.xml b/res/layout/suggestion_tile.xml
new file mode 100644
index 00000000000..0b5e65244d4
--- /dev/null
+++ b/res/layout/suggestion_tile.xml
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 539dc058eba..79655e4f06d 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -103,8 +103,8 @@
2dp
-
- 48dp
+
+ 48dp
16dp
@@ -119,6 +119,8 @@
16dp
32dp
+ 16dp
+
16dp
16dp
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e7442ed5d90..cf8acead719 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -6767,4 +6767,10 @@
Background data is only available via Wi-Fi. This may affect some apps or services when Wi-Fi is not available.
+
+ Suggestions (%1$d)
+
+
+ Remove
+
diff --git a/res/xml/suggestion_ordering.xml b/res/xml/suggestion_ordering.xml
new file mode 100644
index 00000000000..339b195bc1f
--- /dev/null
+++ b/res/xml/suggestion_ordering.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 4d9e2f0ae70..ba975a2c2e7 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -50,7 +50,6 @@ import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.SearchView;
-import com.android.internal.logging.MetricsLogger;
import com.android.internal.util.ArrayUtils;
import com.android.settings.Settings.WifiSettingsActivity;
import com.android.settings.accessibility.AccessibilitySettings;
@@ -111,7 +110,7 @@ import com.android.settings.wifi.SavedAccessPointsWifiSettings;
import com.android.settings.wifi.WifiSettings;
import com.android.settings.wifi.p2p.WifiP2pSettings;
import com.android.settingslib.drawer.DashboardCategory;
-import com.android.settingslib.drawer.DashboardTile;
+import com.android.settingslib.drawer.Tile;
import com.android.settingslib.drawer.SettingsDrawerActivity;
import java.util.ArrayList;
@@ -199,6 +198,8 @@ public class SettingsActivity extends SettingsDrawerActivity
private static final String EMPTY_QUERY = "";
+ private static final int REQUEST_SUGGESTION = 42;
+
private String mFragmentClass;
private CharSequence mInitialTitle;
@@ -365,6 +366,7 @@ public class SettingsActivity extends SettingsDrawerActivity
private int mHomeActivitiesCount = 1;
private Intent mResultIntentData;
+ private ComponentName mCurrentSuggestion;
public SwitchBar getSwitchBar() {
return mSwitchBar;
@@ -1031,7 +1033,7 @@ public class SettingsActivity extends SettingsDrawerActivity
// When on restricted users, disable all extra categories (but only the settings ones).
List categories = getDashboardCategories();
for (DashboardCategory category : categories) {
- for (DashboardTile tile : category.tiles) {
+ for (Tile tile : category.tiles) {
ComponentName component = tile.intent.getComponent();
if (packageName.equals(component)&& !ArrayUtils.contains(
SETTINGS_FOR_RESTRICTED, component.getClassName())) {
@@ -1146,7 +1148,7 @@ public class SettingsActivity extends SettingsDrawerActivity
}
@Override
- protected void onTileClicked(DashboardTile tile) {
+ protected void onTileClicked(Tile tile) {
if (mIsShowingDashboard) {
// If on dashboard, don't finish so the back comes back to here.
openTile(tile);
@@ -1200,4 +1202,20 @@ public class SettingsActivity extends SettingsDrawerActivity
public void setResultIntentData(Intent resultIntentData) {
mResultIntentData = resultIntentData;
}
+
+ public void startSuggestion(Intent intent) {
+ mCurrentSuggestion = intent.getComponent();
+ startActivityForResult(intent, REQUEST_SUGGESTION);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == REQUEST_SUGGESTION && mCurrentSuggestion != null
+ && resultCode != RESULT_CANCELED) {
+ getPackageManager().setComponentEnabledSetting(mCurrentSuggestion,
+ PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
+ }
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+
}
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index a53d8b615ae..b564a277534 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -16,10 +16,14 @@
package com.android.settings.dashboard;
import android.content.Context;
+import android.content.pm.PackageManager;
+import android.support.v7.widget.PopupMenu;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.TypedValue;
+import android.view.ContextThemeWrapper;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
@@ -30,14 +34,21 @@ import com.android.settings.SettingsActivity;
import com.android.settings.dashboard.conditional.Condition;
import com.android.settings.dashboard.conditional.ConditionAdapterUtils;
import com.android.settingslib.drawer.DashboardCategory;
-import com.android.settingslib.drawer.DashboardTile;
+import com.android.settingslib.drawer.Tile;
import java.util.ArrayList;
import java.util.List;
-public class DashboardAdapter extends RecyclerView.Adapter implements View.OnClickListener {
+public class DashboardAdapter extends RecyclerView.Adapter
+ implements View.OnClickListener {
public static final String TAG = "DashboardAdapter";
+ private static int SUGGESTION_MODE_DEFAULT = 0;
+ private static int SUGGESTION_MODE_COLLAPSED = 1;
+ private static int SUGGESTION_MODE_EXPANDED = 2;
+
+ private static final int DEFAULT_SUGGESTION_COUNT = 2;
+
private final List