diff options
author | James Kung <kingkung@google.com> | 2013-03-01 17:38:28 -0800 |
---|---|---|
committer | James Kung <kingkung@google.com> | 2013-03-01 18:00:51 -0800 |
commit | dddee2781386a459c0cb8579ef66866e1792e06c (patch) | |
tree | 931703d84b45d7201487746cc8724bc074e08b66 | |
parent | c4ac1ca55f0f59342beb87ccb401d0235f4bccf7 (diff) | |
download | android_frameworks_opt_colorpicker-dddee2781386a459c0cb8579ef66866e1792e06c.tar.gz android_frameworks_opt_colorpicker-dddee2781386a459c0cb8579ef66866e1792e06c.tar.bz2 android_frameworks_opt_colorpicker-dddee2781386a459c0cb8579ef66866e1792e06c.zip |
Replacing constructor with newInstance.
Bug: 8295327
Change-Id: I674da347c5ad316efd383e54490a084a2a883560
-rw-r--r-- | res/values/strings.xml | 1 | ||||
-rw-r--r-- | src/com/android/colorpicker/ColorPickerDialog.java | 126 |
2 files changed, 71 insertions, 56 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml index 1c833e7..bbb5dc0 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -16,5 +16,6 @@ <resources> <string name="app_name">Color Picker</string> + <string name="color_picker_default_title">Select a Color</string> </resources>
\ No newline at end of file diff --git a/src/com/android/colorpicker/ColorPickerDialog.java b/src/com/android/colorpicker/ColorPickerDialog.java index c389d1b..188c5c2 100644 --- a/src/com/android/colorpicker/ColorPickerDialog.java +++ b/src/com/android/colorpicker/ColorPickerDialog.java @@ -38,17 +38,18 @@ public class ColorPickerDialog extends DialogFragment implements OnColorSelected protected AlertDialog mAlertDialog; - private static final String KEY_COLORS = "colors"; - private static final String KEY_CURRENT_COLOR = "current_color"; - private static final String KEY_COLUMNS = "columns"; - private static final String KEY_SIZE = "size"; - - protected String mTitle; - protected int mTitleResId; - protected int[] mColors; + protected static final String KEY_TITLE_ID = "title_id"; + protected static final String KEY_COLORS = "colors"; + protected static final String KEY_SELECTED_COLOR = "selected_color"; + protected static final String KEY_COLUMNS = "columns"; + protected static final String KEY_SIZE = "size"; + + protected int mTitleResId = R.string.color_picker_default_title; + protected int[] mColors = null; protected int mSelectedColor; protected int mColumns; protected int mSize; + private ColorPickerPalette mPalette; private ProgressBar mProgress; @@ -58,13 +59,24 @@ public class ColorPickerDialog extends DialogFragment implements OnColorSelected // Empty constructor required for dialog fragments. } - public ColorPickerDialog(int titleResId, int[] colors, int selectedColor, + public static ColorPickerDialog newInstance(int titleResId, int[] colors, int selectedColor, int columns, int size) { - mTitleResId = titleResId; - mColors = colors; - mSelectedColor = selectedColor; - mColumns = columns; - mSize = size; + ColorPickerDialog ret = new ColorPickerDialog(); + ret.initialize(titleResId, colors, selectedColor, columns, size); + return ret; + } + + public void initialize(int titleResId, int[] colors, int selectedColor, int columns, int size) { + setArguments(titleResId, columns, size); + setColors(colors, selectedColor); + } + + public void setArguments(int titleResId, int columns, int size) { + Bundle bundle = new Bundle(); + bundle.putInt(KEY_TITLE_ID, titleResId); + bundle.putInt(KEY_COLUMNS, columns); + bundle.putInt(KEY_SIZE, size); + setArguments(bundle); } public void setOnColorSelectedListener(OnColorSelectedListener listener) { @@ -74,35 +86,34 @@ public class ColorPickerDialog extends DialogFragment implements OnColorSelected @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setRetainInstance(true); + + if (getArguments() != null) { + mTitleResId = getArguments().getInt(KEY_TITLE_ID); + mColumns = getArguments().getInt(KEY_COLUMNS); + mSize = getArguments().getInt(KEY_SIZE); + } + + if (savedInstanceState != null) { + mColors = savedInstanceState.getIntArray(KEY_COLORS); + mSelectedColor = (Integer) savedInstanceState.getSerializable(KEY_SELECTED_COLOR); + } } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { final Activity activity = getActivity(); - if (savedInstanceState != null) { - mColors = (int[]) savedInstanceState.getSerializable(KEY_COLORS); - mSelectedColor = savedInstanceState.getInt(KEY_CURRENT_COLOR); - mColumns = savedInstanceState.getInt(KEY_COLUMNS); - mSize = savedInstanceState.getInt(KEY_SIZE); - } - View view = LayoutInflater.from(getActivity()).inflate(R.layout.color_picker_dialog, null); mProgress = (ProgressBar) view.findViewById(android.R.id.progress); mPalette = (ColorPickerPalette) view.findViewById(R.id.color_picker); mPalette.init(mSize, mColumns, this); if (mColors != null) { - showPalette(); - } - - if (mTitle == null) { - mTitle = activity.getString(mTitleResId); + showPaletteView(); } mAlertDialog = new AlertDialog.Builder(activity) - .setTitle(mTitle) + .setTitle(mTitleResId) .setView(view) .create(); @@ -130,33 +141,46 @@ public class ColorPickerDialog extends DialogFragment implements OnColorSelected dismiss(); } - public void showPalette() { - mProgress.setVisibility(View.GONE); - mPalette.setVisibility(View.VISIBLE); - mPalette.drawPalette(mColors, mSelectedColor); + public void showPaletteView() { + if (mProgress != null && mPalette != null) { + mProgress.setVisibility(View.GONE); + refreshPalette(); + mPalette.setVisibility(View.VISIBLE); + } } - public void showProgress() { - mProgress.setVisibility(View.VISIBLE); - mPalette.setVisibility(View.GONE); + public void showProgressBarView() { + if (mProgress != null && mPalette != null) { + mProgress.setVisibility(View.VISIBLE); + mPalette.setVisibility(View.GONE); + } } - public void setColors(int[] colors) { - if (colors == null) { - return; + public void setColors(int[] colors, int selectedColor) { + if (mColors != colors || mSelectedColor != selectedColor) { + mColors = colors; + mSelectedColor = selectedColor; + refreshPalette(); } - mColors = colors; - showPalette(); } - public void setColors(int[] colors, int selectedColor) { - mSelectedColor = selectedColor; - setColors(colors); + public void setColors(int[] colors) { + if (mColors != colors) { + mColors = colors; + refreshPalette(); + } } public void setSelectedColor(int color) { if (mSelectedColor != color) { - setColors(mColors, color); + mSelectedColor = color; + refreshPalette(); + } + } + + private void refreshPalette() { + if (mPalette != null && mColors != null) { + mPalette.drawPalette(mColors, mSelectedColor); } } @@ -171,17 +195,7 @@ public class ColorPickerDialog extends DialogFragment implements OnColorSelected @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); - outState.putSerializable(KEY_COLORS, mColors); - outState.putInt(KEY_CURRENT_COLOR, mSelectedColor); - outState.putInt(KEY_COLUMNS, mColumns); - outState.putInt(KEY_SIZE, mSize); - } - - @Override - public void onDestroyView() { - if (getDialog() != null && getRetainInstance()) { - getDialog().setDismissMessage(null); - } - super.onDestroyView(); + outState.putIntArray(KEY_COLORS, mColors); + outState.putSerializable(KEY_SELECTED_COLOR, mSelectedColor); } } |