From a5ee6730d45a4c5f6ccbce4d6332881f5f15d9b6 Mon Sep 17 00:00:00 2001 From: Raj Yengisetty Date: Tue, 17 Jun 2014 15:23:41 -0700 Subject: Customizeable Dynamic Grid: - Presets - Comfortable (+0) - Cozy (+1) - Condensed (+2) - Custom option with min, max Reordering items in the settings pane for better organization Modifying Settings Layout for readability Change-Id: I5c926b6ca4b2ed73c263ef34eeb368caeb7af9b5 --- src/com/android/launcher3/CellLayout.java | 3 +- src/com/android/launcher3/DeviceProfile.java | 56 ++++ .../android/launcher3/DynamicGridSizeFragment.java | 331 +++++++++++++++++++++ src/com/android/launcher3/Launcher.java | 49 ++- .../android/launcher3/OverviewSettingsPanel.java | 19 +- .../list/SettingsPinnedHeaderAdapter.java | 36 +++ .../launcher3/settings/SettingsProvider.java | 3 + 7 files changed, 484 insertions(+), 13 deletions(-) create mode 100644 src/com/android/launcher3/DynamicGridSizeFragment.java (limited to 'src/com/android/launcher3') diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index da38a03e3..373617145 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -3162,7 +3162,8 @@ out: for (int i = x; i < x + spanX - 1 && x < xCount; i++) { if (x < mCountX && y < mCountY) { return mOccupied[x][y]; } else { - throw new RuntimeException("Position exceeds the bound of this CellLayout"); + Log.w(TAG, "Position exceeds the bound of this CellLayout"); + return false; } } diff --git a/src/com/android/launcher3/DeviceProfile.java b/src/com/android/launcher3/DeviceProfile.java index 28951db94..99819caf3 100644 --- a/src/com/android/launcher3/DeviceProfile.java +++ b/src/com/android/launcher3/DeviceProfile.java @@ -62,11 +62,45 @@ public class DeviceProfile { public void onAvailableSizeChanged(DeviceProfile grid); } + public final static int GRID_SIZE_MAX = 3; + public final static int GRID_SIZE_MIN = 2; + + public enum GridSize { + Comfortable(0), + Cozy(1), + Condensed(2), + Custom(3); + + private final int mValue; + private GridSize(int value) { + mValue = value; + } + + public int getValue() { + return mValue; + } + + public static GridSize getModeForValue(int value) { + switch (value) { + case 1: + return Cozy; + case 2: + return Condensed; + case 3: + return Custom; + default : + return Comfortable; + } + } + } + String name; float minWidthDps; float minHeightDps; float numRows; float numColumns; + int numRowsBase; + int numColumnsBase; float numHotseatIcons; private float iconSize; private float iconTextSize; @@ -191,12 +225,34 @@ public class DeviceProfile { points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numRows)); } numRows = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); + numRowsBase = (int) numRows; + int gridResize = SettingsProvider.getIntCustomDefault(context, + SettingsProvider.SETTINGS_UI_DYNAMIC_GRID_SIZE, 0); + if (GridSize.getModeForValue(gridResize) != GridSize.Custom) { + numRows += gridResize; + } else { + int iTempNumberOfRows = SettingsProvider.getIntCustomDefault(context, + SettingsProvider.SETTINGS_UI_HOMESCREEN_ROWS, (int)numRows); + if (iTempNumberOfRows > 0) { + numRows = iTempNumberOfRows; + } + } // Interpolate the columns points.clear(); for (DeviceProfile p : profiles) { points.add(new DeviceProfileQuery(p.minWidthDps, p.minHeightDps, p.numColumns)); } numColumns = Math.round(invDistWeightedInterpolate(minWidth, minHeight, points)); + numColumnsBase = (int) numColumns; + if (GridSize.getModeForValue(gridResize) != GridSize.Custom) { + numColumns += gridResize; + } else { + int iTempNumberOfColumns = SettingsProvider.getIntCustomDefault(context, + SettingsProvider.SETTINGS_UI_HOMESCREEN_COLUMNS, (int)numColumns); + if (iTempNumberOfColumns > 0) { + numColumns = iTempNumberOfColumns; + } + } // Interpolate the hotseat length points.clear(); for (DeviceProfile p : profiles) { diff --git a/src/com/android/launcher3/DynamicGridSizeFragment.java b/src/com/android/launcher3/DynamicGridSizeFragment.java new file mode 100644 index 000000000..2fda39f2a --- /dev/null +++ b/src/com/android/launcher3/DynamicGridSizeFragment.java @@ -0,0 +1,331 @@ +package com.android.launcher3; + +import android.animation.Animator; +import android.animation.ObjectAnimator; +import android.app.Dialog; +import android.app.Fragment; +import android.content.Context; +import android.content.DialogInterface; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.drawable.Drawable; +import android.os.Bundle; +import android.util.DisplayMetrics; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ArrayAdapter; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.LinearLayout; +import android.widget.ListView; +import android.widget.NumberPicker; +import android.widget.TextView; +import com.android.launcher3.settings.SettingsProvider; + +public class DynamicGridSizeFragment extends Fragment implements NumberPicker.OnValueChangeListener, Dialog.OnDismissListener{ + public static final String DYNAMIC_GRID_SIZE_FRAGMENT = "dynamicGridSizeFragment"; + public static final int MIN_DYNAMIC_GRID_ROWS = 2; + public static final int MIN_DYNAMIC_GRID_COLUMNS = 3; + ImageView mDynamicGridImage; + ListView mListView; + View mCurrentSelection; + GridSizeArrayAdapter mAdapter; + DeviceProfile.GridSize mCurrentSize; + + Dialog mDialog; + + int mCustomGridRows = 0; + int mCustomGridColumns = 0; + + View.OnClickListener mSettingsItemListener = new View.OnClickListener() { + + @Override + public void onClick(View v) { + mCurrentSize = DeviceProfile.GridSize + .getModeForValue((Integer) v.getTag()); + + setCleared(mCurrentSelection); + setSelected(v); + mCurrentSelection = v; + + if (mCurrentSize == DeviceProfile.GridSize.Custom) { + showNumberPicker(); + } + + ((GridSizeArrayAdapter) mListView.getAdapter()).notifyDataSetChanged(); + + mAdapter.notifyDataSetInvalidated(); + setCurrentImage(); + } + }; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + View v = inflater.inflate(R.layout.dynamic_grid_size_screen, container, false); + mDynamicGridImage = (ImageView) v.findViewById(R.id.dynamic_grid_size_image); + mDynamicGridImage.setBackground(getResources().getDrawable(R.drawable.grid)); + + LinearLayout titleLayout = (LinearLayout) v.findViewById(R.id.dynamic_grid_title); + titleLayout.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + setSize(); + } + }); + + mCurrentSize = DeviceProfile.GridSize.getModeForValue( + SettingsProvider.getIntCustomDefault(getActivity(), + SettingsProvider.SETTINGS_UI_DYNAMIC_GRID_SIZE, 0)); + + setCurrentImage(); + + mListView = (ListView) v.findViewById(R.id.dynamic_grid_list); + Resources res = getResources(); + String [] values = { + res.getString(R.string.grid_size_comfortable), + res.getString(R.string.grid_size_cozy), + res.getString(R.string.grid_size_condensed), + res.getString(R.string.grid_size_custom)}; + mAdapter = new GridSizeArrayAdapter(getActivity(), + R.layout.settings_pane_list_item, values); + mListView.setAdapter(mAdapter); + + return v; + } + + private void setCurrentImage() { + Drawable d = null; + boolean custom = false; + + switch (mCurrentSize) { + case Comfortable: + d = getResources().getDrawable(R.drawable.grid_comfortable); + break; + case Cozy: + d = getResources().getDrawable(R.drawable.grid_cozy); + break; + case Condensed: + d = getResources().getDrawable(R.drawable.grid_condensed); + break; + default: + + custom = true; + break; + } + + if (d != null && !custom) { + mDynamicGridImage.setImageBitmap(null); + mDynamicGridImage.setBackground(d); + } else if (custom) { + mDynamicGridImage.setBackground(null); + mDynamicGridImage.setImageBitmap(writeOnDrawable(R.drawable.grid)); + } + } + + public Bitmap writeOnDrawable(int drawableId){ + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + + int rows = mCustomGridRows == 0 ? (int) grid.numRows : mCustomGridRows; + int columns = mCustomGridColumns == 0 ? (int) grid.numColumns : mCustomGridColumns; + + String text = rows + " x " + columns; + + Bitmap bm = BitmapFactory.decodeResource(getResources(), + drawableId).copy(Bitmap.Config.ARGB_8888, true); + + Paint paint = new Paint(); + paint.setStyle(Paint.Style.FILL); + paint.setColor(Color.BLACK); + int px = getResources().getDimensionPixelOffset(R.dimen.grid_custom_text); + paint.setTextSize(px); + + Canvas canvas = new Canvas(bm); + + float canvasWidth = canvas.getWidth(); + float sentenceWidth = paint.measureText(text); + float startPositionX = (canvasWidth - sentenceWidth) / 2; + + canvas.drawText(text, startPositionX, bm.getHeight()/2, paint); + + return bm; + } + + @Override + public Animator onCreateAnimator(int transit, boolean enter, int nextAnim) { + if (enter) { + DisplayMetrics displaymetrics = new DisplayMetrics(); + getActivity().getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); + int width = displaymetrics.widthPixels; + final ObjectAnimator anim = ObjectAnimator.ofFloat(this, "translationX", width, 0); + + final View darkPanel = ((Launcher) getActivity()).getDarkPanel(); + darkPanel.setVisibility(View.VISIBLE); + ObjectAnimator anim2 = ObjectAnimator.ofFloat( + darkPanel , "alpha", 0.0f, 0.3f); + anim2.start(); + + anim.addListener(new Animator.AnimatorListener() { + @Override + public void onAnimationStart(Animator arg0) {} + @Override + public void onAnimationRepeat(Animator arg0) {} + @Override + public void onAnimationEnd(Animator arg0) { + darkPanel.setVisibility(View.GONE); + } + @Override + public void onAnimationCancel(Animator arg0) {} + }); + + return anim; + } else { + return super.onCreateAnimator(transit, enter, nextAnim); + } + } + + public void setSize() { + ((Launcher) getActivity()).setDynamicGridSize(mCurrentSize); + } + + private void setSelected(View v) { + v.setBackgroundColor(Color.WHITE); + TextView t = (TextView) v.findViewById(R.id.item_name); + t.setTextColor(getResources().getColor(R.color.settings_bg_color)); + } + + private void setCleared(View v) { + v.setBackgroundColor(getResources().getColor(R.color.settings_bg_color)); + TextView t = (TextView) v.findViewById(R.id.item_name); + t.setTextColor(Color.WHITE); + } + + private void showNumberPicker() { + mDialog = new Dialog(getActivity()); + mDialog.setTitle(getResources().getString(R.string.preferences_interface_homescreen_custom)); + mDialog.setContentView(R.layout.custom_grid_size_dialog); + + NumberPicker nPRows= (NumberPicker) mDialog.findViewById(R.id.custom_rows); + NumberPicker nPColumns = (NumberPicker) mDialog.findViewById(R.id.custom_columns); + + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + + int rows = grid.numRowsBase; + int columns = grid.numColumnsBase; + if (mCustomGridColumns == 0) { + mCustomGridColumns = (int) grid.numColumns; + } + if (mCustomGridRows == 0) { + mCustomGridRows = (int) grid.numRows; + } + + nPRows.setMinValue(Math.max(MIN_DYNAMIC_GRID_ROWS, rows - DeviceProfile.GRID_SIZE_MIN)); + nPRows.setMaxValue(rows + DeviceProfile.GRID_SIZE_MAX); + nPRows.setValue(mCustomGridRows); + nPRows.setWrapSelectorWheel(false); + nPRows.setOnValueChangedListener(this); + nPRows.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS); + + nPColumns.setMinValue(Math.max(MIN_DYNAMIC_GRID_COLUMNS, columns - DeviceProfile.GRID_SIZE_MIN)); + nPColumns.setMaxValue(columns + DeviceProfile.GRID_SIZE_MAX); + nPColumns.setValue(mCustomGridColumns); + nPColumns.setWrapSelectorWheel(false); + nPColumns.setOnValueChangedListener(this); + nPColumns.setDescendantFocusability(NumberPicker.FOCUS_BLOCK_DESCENDANTS); + + Button b = (Button) mDialog.findViewById(R.id.dialog_confirm_button); + b.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mDialog != null) { + mDialog.dismiss(); + } + } + }); + mDialog.setOnDismissListener(this); + mDialog.show(); + } + + @Override + public void onPause() { + super.onPause(); + if (mDialog != null) { + mDialog.dismiss(); + } + } + + @Override + public void onValueChange(NumberPicker picker, int oldVal, int newVal) { + if (picker.getId() == R.id.custom_rows) { + mCustomGridRows = newVal; + } else if (picker.getId() == R.id.custom_columns) { + mCustomGridColumns = newVal; + } + } + + @Override + public void onDismiss(DialogInterface dialog) { + SettingsProvider.putInt(getActivity(), + SettingsProvider.SETTINGS_UI_HOMESCREEN_ROWS, mCustomGridRows); + SettingsProvider.putInt(getActivity(), + SettingsProvider.SETTINGS_UI_HOMESCREEN_COLUMNS, mCustomGridColumns); + + mAdapter.notifyDataSetInvalidated(); + + setCurrentImage(); + } + + private class GridSizeArrayAdapter extends ArrayAdapter { + Context mContext; + String[] mTitles; + + public GridSizeArrayAdapter(Context context, int textViewResourceId, + String[] objects) { + super(context, textViewResourceId, objects); + + mContext = context; + mTitles = objects; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = (LayoutInflater) mContext + .getSystemService(Context.LAYOUT_INFLATER_SERVICE); + convertView = inflater.inflate(R.layout.settings_pane_list_item, + parent, false); + TextView textView = (TextView) convertView + .findViewById(R.id.item_name); + textView.setText(mTitles[position]); + // Set Selected State + if (position == mCurrentSize.getValue()) { + mCurrentSelection = convertView; + setSelected(mCurrentSelection); + } + + if (position == DeviceProfile.GridSize.Custom.getValue()) { + LauncherAppState app = LauncherAppState.getInstance(); + DeviceProfile grid = app.getDynamicGrid().getDeviceProfile(); + + String state = mTitles[position]; + int rows = SettingsProvider.getIntCustomDefault(getActivity(), + SettingsProvider.SETTINGS_UI_HOMESCREEN_ROWS, grid.numRowsBase); + int columns = SettingsProvider.getIntCustomDefault(getActivity(), + SettingsProvider.SETTINGS_UI_HOMESCREEN_COLUMNS, grid.numColumnsBase); + state += "(" + rows + "x" + columns + ")"; + + textView.setText(state); + } + + convertView.setOnClickListener(mSettingsItemListener); + convertView.setTag(position); + return convertView; + } + } +} \ No newline at end of file diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index a8f24ef38..a911e7a63 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -259,6 +259,7 @@ public class Launcher extends Activity private View mWeightWatcher; private TransitionEffectsFragment mTransitionEffectsFragment; + private DynamicGridSizeFragment mDynamicGridSizeFragment; private LauncherClings mLauncherClings; protected HiddenFolderFragment mHiddenFolderFragment; @@ -1160,6 +1161,12 @@ public class Launcher extends Activity if (f != null) { mTransitionEffectsFragment.setEffect(); } + f = getFragmentManager().findFragmentByTag( + DynamicGridSizeFragment.DYNAMIC_GRID_SIZE_FRAGMENT); + if (f != null) { + mDynamicGridSizeFragment.setSize(); + mWorkspace.hideOutlines(); + } Fragment f1 = getFragmentManager().findFragmentByTag( HiddenFolderFragment.HIDDEN_FOLDER_FRAGMENT); if (f1 != null && !mHiddenFolderAuth) { @@ -1271,6 +1278,38 @@ public class Launcher extends Activity popupMenu.show(); } + public void onClickDynamicGridSizeButton() { + FragmentManager fragmentManager = getFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + + mDynamicGridSizeFragment = new DynamicGridSizeFragment(); + fragmentTransaction.replace(R.id.launcher, mDynamicGridSizeFragment, + DynamicGridSizeFragment.DYNAMIC_GRID_SIZE_FRAGMENT); + fragmentTransaction.commit(); + } + + public void setDynamicGridSize(DeviceProfile.GridSize size) { + SettingsProvider.putInt(this, + SettingsProvider.SETTINGS_UI_DYNAMIC_GRID_SIZE, size.getValue()); + + updateDynamicGrid(); + + mOverviewSettingsPanel.notifyDataSetInvalidated(); + + FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); + fragmentTransaction + .setCustomAnimations(0, R.anim.exit_out_right); + fragmentTransaction + .remove(mDynamicGridSizeFragment).commit(); + + mDarkPanel.setVisibility(View.VISIBLE); + ObjectAnimator anim = ObjectAnimator.ofFloat( + mDarkPanel, "alpha", 0.3f, 0.0f); + anim.start(); + anim.addListener(mAnimatorListener); + + } + public void onClickTransitionEffectButton(View v, final boolean pageOrDrawer) { Bundle bundle = new Bundle(); bundle.putBoolean(TransitionEffectsFragment.PAGE_OR_DRAWER_SCROLL_SELECT, @@ -1278,7 +1317,6 @@ public class Launcher extends Activity FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); - mTransitionEffectsFragment = new TransitionEffectsFragment(); mTransitionEffectsFragment.setArguments(bundle); fragmentTransaction.setCustomAnimations(0, 0); @@ -1300,11 +1338,6 @@ public class Launcher extends Activity newTransitionEffect).commit(); TransitionEffect.setFromString(pagedView, newTransitionEffect); - // Reset Settings Changed - SharedPreferences.Editor editor = mSharedPrefs.edit(); - editor.putBoolean(SettingsProvider.SETTINGS_CHANGED, false); - editor.commit(); - mOverviewSettingsPanel.notifyDataSetInvalidated(); FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction(); @@ -2629,8 +2662,12 @@ public class Launcher extends Activity } else if (mWorkspace.isInOverviewMode()) { Fragment f = getFragmentManager().findFragmentByTag( TransitionEffectsFragment.TRANSITION_EFFECTS_FRAGMENT); + Fragment f2 = getFragmentManager().findFragmentByTag( + DynamicGridSizeFragment.DYNAMIC_GRID_SIZE_FRAGMENT); if (f != null) { mTransitionEffectsFragment.setEffect(); + } else if (f2 != null) { + mDynamicGridSizeFragment.setSize(); } else { mWorkspace.exitOverviewMode(true); } diff --git a/src/com/android/launcher3/OverviewSettingsPanel.java b/src/com/android/launcher3/OverviewSettingsPanel.java index 3cc41e1c6..4466c15de 100644 --- a/src/com/android/launcher3/OverviewSettingsPanel.java +++ b/src/com/android/launcher3/OverviewSettingsPanel.java @@ -40,7 +40,8 @@ public class OverviewSettingsPanel { Resources res = mLauncher.getResources(); String[] headers = new String[] { res.getString(R.string.home_screen_settings), - res.getString(R.string.drawer_settings)}; + res.getString(R.string.drawer_settings), + res.getString(R.string.app_settings)}; String[] values; if(mLauncher.isGelIntegrationSupported()) { @@ -48,16 +49,16 @@ public class OverviewSettingsPanel { res.getString(R.string.home_screen_search_text), res.getString(R.string.search_screen_left_text), res.getString(R.string.scroll_effect_text), - res.getString(R.string.larger_icons_text), res.getString(R.string.icon_labels), - res.getString(R.string.scrolling_wallpaper)}; + res.getString(R.string.scrolling_wallpaper), + res.getString(R.string.grid_size_text)}; } else { values = new String[]{ res.getString(R.string.home_screen_search_text), res.getString(R.string.scroll_effect_text), - res.getString(R.string.larger_icons_text), res.getString(R.string.icon_labels), - res.getString(R.string.scrolling_wallpaper)}; + res.getString(R.string.scrolling_wallpaper), + res.getString(R.string.grid_size_text)}; } mValues = values; @@ -65,17 +66,23 @@ public class OverviewSettingsPanel { String[] valuesDrawer = new String[] { res.getString(R.string.scroll_effect_text), res.getString(R.string.drawer_sorting_text), - res.getString(R.string.icon_labels), + res.getString(R.string.icon_labels)}; + + String[] valuesApp = new String[] { + res.getString(R.string.larger_icons_text), res.getString(R.string.protected_app_settings)}; + mSettingsAdapter = new SettingsPinnedHeaderAdapter(mLauncher); mSettingsAdapter.setHeaders(headers); mSettingsAdapter.addPartition(false, true); mSettingsAdapter.addPartition(false, true); + mSettingsAdapter.addPartition(false, true); mSettingsAdapter.mPinnedHeaderCount = headers.length; mSettingsAdapter.changeCursor(0, createCursor(headers[0], values)); mSettingsAdapter.changeCursor(1, createCursor(headers[1], valuesDrawer)); + mSettingsAdapter.changeCursor(2, createCursor(headers[2], valuesApp)); mListView.setAdapter(mSettingsAdapter); } diff --git a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java index a7c293152..dd1dc3b0a 100644 --- a/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java +++ b/src/com/android/launcher3/list/SettingsPinnedHeaderAdapter.java @@ -11,6 +11,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import android.widget.Toast; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.OverviewSettingsPanel; import com.android.launcher3.AppsCustomizePagedView; @@ -142,6 +143,8 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.string.setting_state_on) : res.getString( R.string.setting_state_off); ((TextView) v.findViewById(R.id.item_state)).setText(state); + } else if (title.equals(res.getString(R.string.grid_size_text))) { + updateDynamicGridSizeSettingsItem(v); } else { ((TextView) v.findViewById(R.id.item_state)).setText(""); } @@ -183,6 +186,34 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { ((TextView) v.findViewById(R.id.item_state)).setText(state); } + public void updateDynamicGridSizeSettingsItem(View v) { + DeviceProfile.GridSize gridSize = DeviceProfile.GridSize.getModeForValue( + SettingsProvider.getIntCustomDefault(mLauncher, + SettingsProvider.SETTINGS_UI_DYNAMIC_GRID_SIZE, 0)); + String state = ""; + + switch (gridSize) { + case Comfortable: + state = mLauncher.getResources().getString(R.string.grid_size_comfortable); + break; + case Cozy: + state = mLauncher.getResources().getString(R.string.grid_size_cozy); + break; + case Condensed: + state = mLauncher.getResources().getString(R.string.grid_size_condensed); + break; + case Custom: + state = mLauncher.getResources().getString(R.string.grid_size_custom); + int rows = SettingsProvider.getIntCustomDefault(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_ROWS, 0); + int columns = SettingsProvider.getIntCustomDefault(mLauncher, + SettingsProvider.SETTINGS_UI_HOMESCREEN_COLUMNS, 0); + state += "(" + rows + "x" + columns + ")"; + break; + } + ((TextView) v.findViewById(R.id.item_state)).setText(state); + } + private String mapEffectToValue(String effect) { final String[] titles = mLauncher.getResources().getStringArray( R.array.transition_effect_entries); @@ -253,6 +284,8 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { intent.setClassName(OverviewSettingsPanel.ANDROID_SETTINGS, OverviewSettingsPanel.ANDROID_PROTECTED_APPS); mLauncher.startActivity(intent); + } else if (value.equals(res.getString(R.string.protected_app_settings))) { + } else if (value.equals(res .getString(R.string.scrolling_wallpaper))) { onSettingsBooleanChanged( @@ -280,6 +313,9 @@ public class SettingsPinnedHeaderAdapter extends PinnedHeaderListAdapter { R.bool.preferences_interface_homescreen_search_screen_left_default); mLauncher.updateDynamicGrid(); } + } else if (value.equals(res + .getString(R.string.grid_size_text))) { + mLauncher.onClickDynamicGridSizeButton(); } View defaultHome = mLauncher.findViewById(R.id.default_home_screen_panel); diff --git a/src/com/android/launcher3/settings/SettingsProvider.java b/src/com/android/launcher3/settings/SettingsProvider.java index d7782b2e6..32329ab83 100644 --- a/src/com/android/launcher3/settings/SettingsProvider.java +++ b/src/com/android/launcher3/settings/SettingsProvider.java @@ -32,6 +32,9 @@ public final class SettingsProvider { public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_WALLPAPER_SCROLL = "ui_homescreen_scrolling_wallpaper_scroll"; public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_PAGE_OUTLINES = "ui_homescreen_scrolling_page_outlines"; public static final String SETTINGS_UI_HOMESCREEN_SCROLLING_FADE_ADJACENT = "ui_homescreen_scrolling_fade_adjacent"; + public static final String SETTINGS_UI_DYNAMIC_GRID_SIZE = "ui_dynamic_grid_size"; + public static final String SETTINGS_UI_HOMESCREEN_ROWS = "ui_homescreen_rows"; + public static final String SETTINGS_UI_HOMESCREEN_COLUMNS = "ui_homescreen_columns"; public static final String SETTINGS_UI_DRAWER_SCROLLING_TRANSITION_EFFECT = "ui_drawer_scrolling_transition_effect"; public static final String SETTINGS_UI_DRAWER_SCROLLING_FADE_ADJACENT = "ui_drawer_scrolling_fade_adjacent"; public static final String SETTINGS_UI_DRAWER_REMOVE_HIDDEN_APPS_SHORTCUTS = "ui_drawer_remove_hidden_apps_shortcuts"; -- cgit v1.2.3