From a8bd025d35bdbc2986c192e32468170a2bed365a Mon Sep 17 00:00:00 2001 From: Sanket Padawe Date: Mon, 17 Nov 2014 10:43:37 -0800 Subject: [PATCH] Adding icons to sim color selection in settings UI. Adding icons to sim color selection of sim settings UI. Bug: 18380838 Change-Id: I98f07721aa234ff58a64a0c694206b085385bdec --- res/layout/multi_sim_dialog.xml | 30 +++--- res/layout/select_account_list_item.xml | 3 +- res/layout/settings_color_picker_item.xml | 47 ++++++++++ res/values/dimens.xml | 7 +- src/com/android/settings/sim/SimSettings.java | 93 +++++++++++++++++-- 5 files changed, 154 insertions(+), 26 deletions(-) create mode 100644 res/layout/settings_color_picker_item.xml diff --git a/res/layout/multi_sim_dialog.xml b/res/layout/multi_sim_dialog.xml index c373edde113..b17b86e3b8d 100644 --- a/res/layout/multi_sim_dialog.xml +++ b/res/layout/multi_sim_dialog.xml @@ -21,7 +21,6 @@ + android:paddingStart="@dimen/sim_content_padding" + android:text="@string/sim_editor_name" /> + android:maxLength="@integer/sim_name_length" + android:textColor="@android:color/black" + style="?android:attr/textAppearanceMedium" /> @@ -58,16 +58,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/sim_dialog_margin_top" - android:paddingStart="@dimen/sim_label_padding" - android:text="@string/color_title" - style="?android:attr/textAppearanceMedium" /> + android:paddingStart="@dimen/sim_content_padding" + android:text="@string/color_title" /> + android:paddingStart="@dimen/sim_content_padding" /> @@ -80,14 +78,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/sim_dialog_margin_top" - android:paddingStart="@dimen/sim_label_padding" + android:paddingStart="@dimen/sim_content_padding" android:text="@string/sim_editor_carrier" /> @@ -103,14 +101,14 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="@dimen/sim_dialog_margin_top" - android:paddingStart="@dimen/sim_label_padding" + android:paddingStart="@dimen/sim_content_padding" android:text="@string/sim_editor_number" /> diff --git a/res/layout/select_account_list_item.xml b/res/layout/select_account_list_item.xml index 55484b14fcb..3587e55b0b6 100644 --- a/res/layout/select_account_list_item.xml +++ b/res/layout/select_account_list_item.xml @@ -19,8 +19,7 @@ android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?android:attr/selectableItemBackground" - android:padding="4dp" > + android:background="?android:attr/selectableItemBackground" > + + + + + + + + \ No newline at end of file diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 407684579ed..4c4dbdae016 100755 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -205,7 +205,7 @@ 8dip 16dip - 12dip + 24dip 32 @@ -227,4 +227,9 @@ 1px + + 16dp + 4dp + 156dp + diff --git a/src/com/android/settings/sim/SimSettings.java b/src/com/android/settings/sim/SimSettings.java index 6de0cc10f2a..2320380e3bb 100644 --- a/src/com/android/settings/sim/SimSettings.java +++ b/src/com/android/settings/sim/SimSettings.java @@ -22,7 +22,10 @@ import android.content.ContentUris; import android.content.DialogInterface; import android.content.res.Resources; import android.database.Cursor; +import android.graphics.Paint; import android.graphics.drawable.BitmapDrawable; +import android.graphics.drawable.ShapeDrawable; +import android.graphics.drawable.shapes.OvalShape; import android.net.Uri; import android.os.Bundle; import android.preference.Preference; @@ -415,8 +418,10 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable private class SimPreference extends Preference{ private SubscriptionInfo mSubInfoRecord; private int mSlotId; - private int[] tintArr; + private int[] mTintArr; Context mContext; + private String[] mColorStrings; + private int mTintSelectorPos; public SimPreference(Context context, SubscriptionInfo subInfoRecord, int slotId) { super(context); @@ -426,7 +431,9 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable mSlotId = slotId; setKey("sim" + mSlotId); update(); - tintArr = context.getResources().getIntArray(com.android.internal.R.array.sim_colors); + mTintArr = context.getResources().getIntArray(com.android.internal.R.array.sim_colors); + mColorStrings = context.getResources().getStringArray(R.array.color_picker); + mTintSelectorPos = 0; } public void update() { @@ -467,14 +474,15 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable nameText.setText(mSubInfoRecord.getDisplayName()); final Spinner tintSpinner = (Spinner) dialogLayout.findViewById(R.id.spinner); - ArrayAdapter adapter = ArrayAdapter.createFromResource(getContext(), - R.array.color_picker, android.R.layout.simple_spinner_item); + SelectColorAdapter adapter = new SelectColorAdapter(getContext(), + R.layout.settings_color_picker_item, mColorStrings); adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); tintSpinner.setAdapter(adapter); - for (int i = 0; i < tintArr.length; i++) { - if (tintArr[i] == mSubInfoRecord.getIconTint()) { + for (int i = 0; i < mTintArr.length; i++) { + if (mTintArr[i] == mSubInfoRecord.getIconTint()) { tintSpinner.setSelection(i); + mTintSelectorPos = i; break; } } @@ -484,6 +492,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable public void onItemSelected(AdapterView parent, View view, int pos, long id){ tintSpinner.setSelection(pos); + mTintSelectorPos = pos; } @Override @@ -519,7 +528,7 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable final int tintSelected = tintSpinner.getSelectedItemPosition(); int subscriptionId = mSubInfoRecord.getSubscriptionId(); - int tint = tintArr[tintSelected]; + int tint = mTintArr[tintSelected]; mSubInfoRecord.setIconTint(tint); SubscriptionManager.setIconTint(tint, subscriptionId); Utils.findRecordBySubId(subscriptionId).setIconTint(tint); @@ -538,6 +547,76 @@ public class SimSettings extends RestrictedSettingsFragment implements Indexable builder.create().show(); } + + private class SelectColorAdapter extends ArrayAdapter { + private Context mContext; + private int mResId; + + public SelectColorAdapter( + Context context, int resource, String[] arr) { + super(context, resource, arr); + mContext = context; + mResId = resource; + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + LayoutInflater inflater = (LayoutInflater) + mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + + View rowView; + final ViewHolder holder; + Resources res = getResources(); + int iconSize = res.getDimensionPixelSize(R.dimen.color_swatch_size); + int strokeWidth = res.getDimensionPixelSize(R.dimen.color_swatch_stroke_width); + + if (convertView == null) { + // Cache views for faster scrolling + rowView = inflater.inflate(mResId, null); + holder = new ViewHolder(); + ShapeDrawable drawable = new ShapeDrawable(new OvalShape()); + drawable.setIntrinsicHeight(iconSize); + drawable.setIntrinsicWidth(iconSize); + drawable.getPaint().setStrokeWidth(strokeWidth); + holder.label = (TextView) rowView.findViewById(R.id.color_text); + holder.icon = (ImageView) rowView.findViewById(R.id.color_icon); + holder.swatch = drawable; + rowView.setTag(holder); + } else { + rowView = convertView; + holder = (ViewHolder) rowView.getTag(); + } + + holder.label.setText(getItem(position)); + holder.swatch.getPaint().setColor(mTintArr[position]); + holder.swatch.getPaint().setStyle(Paint.Style.FILL_AND_STROKE); + holder.icon.setVisibility(View.VISIBLE); + holder.icon.setImageDrawable(holder.swatch); + return rowView; + } + + @Override + public View getDropDownView(int position, View convertView, ViewGroup parent) { + View rowView = getView(position, convertView, parent); + final ViewHolder holder = (ViewHolder) rowView.getTag(); + + if (mTintSelectorPos == position) { + holder.swatch.getPaint().setStyle(Paint.Style.FILL_AND_STROKE); + } else { + holder.swatch.getPaint().setStyle(Paint.Style.STROKE); + } + holder.icon.setVisibility(View.VISIBLE); + return rowView; + } + + private class ViewHolder { + TextView label; + ImageView icon; + ShapeDrawable swatch; + } + } + + } /**