Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.chrome.browser.payments.ui; | 5 package org.chromium.chrome.browser.payments.ui; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.view.LayoutInflater; | 8 import android.view.LayoutInflater; |
| 9 import android.view.View; | 9 import android.view.View; |
| 10 import android.view.ViewGroup; | 10 import android.view.ViewGroup; |
| 11 import android.view.ViewGroup.LayoutParams; | 11 import android.widget.BaseAdapter; |
| 12 import android.widget.ImageView; | 12 import android.widget.ImageView; |
| 13 import android.widget.LinearLayout; | |
| 14 import android.widget.TextView; | 13 import android.widget.TextView; |
| 15 | 14 |
| 16 import org.chromium.base.ApiCompatibilityUtils; | |
| 17 import org.chromium.chrome.R; | 15 import org.chromium.chrome.R; |
| 16 import org.chromium.chrome.browser.widget.DynamicHeightGridView; | |
| 17 | |
| 18 import java.util.List; | |
| 18 | 19 |
| 19 /** | 20 /** |
| 20 * Helper class for creating a horizontal list of icons with a title. | 21 * Helper class for creating a horizontal list of icons with a title. |
| 21 */ | 22 */ |
| 22 class EditorIconsField { | 23 class EditorIconsField { |
| 23 private final View mLayout; | 24 private final View mLayout; |
| 24 | 25 |
| 25 /** | 26 /** |
| 26 * Builds a horizontal list of icons. | 27 * Builds a horizontal list of icons. |
| 27 * | 28 * |
| 28 * @param context The application context to use when creating widgets. | 29 * @param context The application context to use when creating widgets. |
| 29 * @param root The object that provides a set of LayoutParams values f or the view. | 30 * @param root The object that provides a set of LayoutParams values f or the view. |
| 30 * @param fieldModel The data model of the icon list. | 31 * @param fieldModel The data model of the icon list. |
| 31 */ | 32 */ |
| 32 public EditorIconsField(Context context, ViewGroup root, EditorFieldModel fi eldModel) { | 33 public EditorIconsField(Context context, ViewGroup root, EditorFieldModel fi eldModel) { |
| 33 assert fieldModel.getInputTypeHint() == EditorFieldModel.INPUT_TYPE_HINT _ICONS; | 34 assert fieldModel.getInputTypeHint() == EditorFieldModel.INPUT_TYPE_HINT _ICONS; |
| 34 | 35 |
| 35 mLayout = LayoutInflater.from(context).inflate( | 36 mLayout = LayoutInflater.from(context).inflate( |
| 36 R.layout.payment_request_editor_icons, root, false); | 37 R.layout.payment_request_editor_icons, root, false); |
| 37 | 38 |
| 38 ((TextView) mLayout.findViewById(R.id.label)).setText(fieldModel.getLabe l()); | 39 ((TextView) mLayout.findViewById(R.id.label)).setText(fieldModel.getLabe l()); |
| 39 | 40 |
| 40 LinearLayout container = (LinearLayout) mLayout.findViewById(R.id.icons_ container); | 41 DynamicHeightGridView container = |
|
gogerald1
2017/05/24 14:25:23
nit: iconsContainer
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 41 int size = | 42 (DynamicHeightGridView) mLayout.findViewById(R.id.icons_containe r); |
| 42 context.getResources().getDimensionPixelSize(R.dimen.payments_se ction_logo_width); | 43 container.setAdapter(new IconAdapter(context, fieldModel.getIconResource Ids(), |
| 43 int margin = context.getResources().getDimensionPixelSize( | 44 fieldModel.getIconDescriptionsForAccessibility())); |
| 44 R.dimen.payments_section_small_spacing); | |
| 45 LinearLayout.LayoutParams layoutParams = | |
| 46 new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutP arams.WRAP_CONTENT); | |
| 47 ApiCompatibilityUtils.setMarginEnd(layoutParams, margin); | |
| 48 for (int i = 0; i < fieldModel.getIconResourceIds().size(); i++) { | |
| 49 ImageView icon = new ImageView(context); | |
| 50 icon.setImageResource(fieldModel.getIconResourceIds().get(i)); | |
| 51 icon.setBackgroundResource(R.drawable.payments_ui_logo_bg); | |
| 52 icon.setContentDescription(context.getString( | |
| 53 fieldModel.getIconDescriptionsForAccessibility().get(i))); | |
| 54 icon.setAdjustViewBounds(true); | |
| 55 icon.setMaxWidth(size); | |
| 56 icon.setMaxHeight(size); | |
| 57 container.addView(icon, layoutParams); | |
| 58 } | |
| 59 } | 45 } |
| 60 | 46 |
| 61 /** @return The View containing everything. */ | 47 /** @return The View containing everything. */ |
| 62 public View getLayout() { | 48 public View getLayout() { |
| 63 return mLayout; | 49 return mLayout; |
| 64 } | 50 } |
| 51 | |
| 52 private static class IconAdapter extends BaseAdapter { | |
|
gogerald1
2017/05/24 14:25:23
gridview setAdapter accepts ListAdapter
https://d
Hwanseung Lee
2017/05/26 15:42:39
right, but BaseAdapter implement ListAdapter.
http
| |
| 53 private Context mContext; | |
| 54 private List<Integer> mIconResources; | |
|
gogerald1
2017/05/24 14:25:23
nit: mIconResourceIds
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 55 private List<Integer> mIconDescription; | |
|
gogerald1
2017/05/24 14:25:23
nit: mIconDescriptionIds
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 56 private int mIconSize; | |
| 57 | |
| 58 public IconAdapter( | |
|
gogerald1
2017/05/24 14:25:23
IconListAdapter?
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 59 Context context, List<Integer> iconResources, List<Integer> icon Description) { | |
| 60 mContext = context; | |
| 61 mIconResources = iconResources; | |
| 62 mIconDescription = iconDescription; | |
| 63 mIconSize = mContext.getResources().getDimensionPixelSize( | |
| 64 R.dimen.payments_section_logo_width); | |
|
gogerald1
2017/05/24 14:25:23
nit: assert mIconResourceIds.size() == mIconDescri
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 65 } | |
| 66 public int getCount() { | |
|
gogerald1
2017/05/24 14:25:23
one space line above and @Override
Hwanseung Lee
2017/05/26 15:42:40
Done.
| |
| 67 return mIconResources.size(); | |
| 68 } | |
| 69 public Object getItem(int position) { | |
|
gogerald1
2017/05/24 14:25:23
ditto
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 70 return mIconResources.get(position); | |
| 71 } | |
| 72 public long getItemId(int position) { | |
|
gogerald1
2017/05/24 14:25:23
ditto
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 73 return position; | |
| 74 } | |
| 75 public View getView(int position, View convertView, ViewGroup parent) { | |
|
gogerald1
2017/05/24 14:25:23
ditto
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 76 ImageView imageView; | |
|
gogerald1
2017/05/24 14:25:23
you can simplify this code like below.
ImageView
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 77 if (convertView == null) { | |
| 78 imageView = new ImageView(mContext); | |
| 79 } else { | |
| 80 imageView = (ImageView) convertView; | |
| 81 } | |
| 82 imageView.setImageResource(mIconResources.get(position)); | |
|
gogerald1
2017/05/24 14:25:23
setImageDrawable instead of setImageResource, http
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 83 imageView.setBackgroundResource(R.drawable.payments_ui_logo_bg); | |
|
gogerald1
2017/05/24 14:25:23
no need setBackgroundResource anymore,
Hwanseung Lee
2017/05/26 15:42:39
Done.
| |
| 84 imageView.setContentDescription(mContext.getString(mIconDescription. get(position))); | |
| 85 imageView.setAdjustViewBounds(true); | |
| 86 imageView.setMaxWidth(mIconSize); | |
| 87 imageView.setMaxHeight(mIconSize); | |
| 88 return imageView; | |
| 89 } | |
| 90 } | |
| 65 } | 91 } |
| OLD | NEW |