Settings new dashboard - part 2
Introduce the new Dashboard (a grid like presentation of
Settings top categories) per UX specification.
- the Dashboard is composed of "categories" and in each of them
you have "tiles"
- implement a new layout for showing top categories
(DashboardContainerView). This layout basically acts like a
grid
- depending on the device configuration make the grid with 1
column in portrait / 2 colums in landscape (phones) OR 2 columns
in portrait and 3 in landscape (tablets)
- take care of Accounts adding and removing (as it changes the
number of tiles to show)
Also remove all the old code related to Headers
Change-Id: Ie29944132c1b4c3f7b073d5a7d4453b8f5ec19a7
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index d743b6f..8abe30d 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -19,6 +19,7 @@
import android.app.ActivityManager;
import android.app.AlertDialog;
import android.app.Dialog;
+import android.app.Fragment;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
@@ -655,4 +656,51 @@
return ((UserManager) context.getSystemService(Context.USER_SERVICE))
.getUsers().size() > 1;
}
+
+ /**
+ * Start a new instance of the activity, showing only the given fragment.
+ * When launched in this mode, the given preference fragment will be instantiated and fill the
+ * entire activity.
+ *
+ * @param context The context.
+ * @param fragmentName The name of the fragment to display.
+ * @param args Optional arguments to supply to the fragment.
+ * @param resultTo Option fragment that should receive the result of
+ * the activity launch.
+ * @param resultRequestCode If resultTo is non-null, this is the request
+ * code in which to report the result.
+ * @param title String to display for the title of this set of preferences.
+ */
+ public static void startWithFragment(Context context, String fragmentName, Bundle args,
+ Fragment resultTo, int resultRequestCode, CharSequence title) {
+ Intent intent = onBuildStartFragmentIntent(context, fragmentName, args, title);
+ if (resultTo == null) {
+ context.startActivity(intent);
+ } else {
+ resultTo.startActivityForResult(intent, resultRequestCode);
+ }
+ }
+
+ /**
+ * Build an Intent to launch a new activity showing the selected fragment.
+ * The implementation constructs an Intent that re-launches the current activity with the
+ * appropriate arguments to display the fragment.
+ *
+ * @param context The Context.
+ * @param fragmentName The name of the fragment to display.
+ * @param args Optional arguments to supply to the fragment.
+ * @param title Optional title to show for this item.
+ * @return Returns an Intent that can be launched to display the given
+ * fragment.
+ */
+ public static Intent onBuildStartFragmentIntent(Context context, String fragmentName,
+ Bundle args, CharSequence title) {
+ Intent intent = new Intent(Intent.ACTION_MAIN);
+ intent.setClass(context, SubSettings.class);
+ intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, fragmentName);
+ intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, args);
+ intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, title);
+ intent.putExtra(SettingsActivity.EXTRA_NO_HEADERS, true);
+ return intent;
+ }
}