Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: ui/android/java/src/org/chromium/ui/ColorSuggestionListAdapter.java

Issue 23026006: Add support for color input datalist on Android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 package org.chromium.ui;
6
7 import android.content.Context;
8 import android.graphics.drawable.GradientDrawable;
9 import android.graphics.drawable.LayerDrawable;
10 import android.graphics.drawable.StateListDrawable;
11 import android.view.LayoutInflater;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.BaseAdapter;
15 import android.widget.GridView;
16
17 import java.util.ArrayList;
18
19 public class ColorSuggestionListAdapter extends BaseAdapter implements View.OnCl ickListener {
newt (away) 2013/10/09 06:07:03 javadoc for all public classes and methods (except
keishi 2013/10/15 16:44:02 Done.
20 private Context mContext;
21 private ColorSuggestion[] mSuggestions;
22 private OnColorSuggestionClickListener mListener;
23
24 ColorSuggestionListAdapter(Context context, ColorSuggestion[] suggestions) {
25 super();
newt (away) 2013/10/09 06:07:03 BaseAdapter doesn't define a constructor, so this
keishi 2013/10/15 16:44:02 Done.
26 mContext = context;
27 mSuggestions = suggestions;
28 }
29
30 public void setOnColorSuggestionClickListener(OnColorSuggestionClickListener listener) {
31 mListener = listener;
32 }
33
34 private void setupColorButton(View button, int index) {
newt (away) 2013/10/09 06:07:03 "setup" -> "setUp"
keishi 2013/10/15 16:44:02 Done.
35 if (index >= mSuggestions.length) {
36 button.setTag(new Integer(-1));
newt (away) 2013/10/09 06:07:03 I'd just set the tag to null
keishi 2013/10/15 16:44:02 Done.
37 button.setEnabled(false);
38 button.setContentDescription(null);
39 button.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY _NO);
newt (away) 2013/10/09 06:07:03 View.IMPORTANT_FOR_ACCESSIBILITY_NO was added in A
keishi 2013/10/15 16:44:02 Done.
40 return;
41 }
42 button.setTag(new Integer(index));
newt (away) 2013/10/09 06:07:03 why not just set the tag to the ColorSuggestion?
keishi 2013/10/15 16:44:02 Done.
43 button.setEnabled(true);
44 ColorSuggestion suggestion = mSuggestions[index];
45 StateListDrawable background = (StateListDrawable) button.getBackground( );
46 LayerDrawable layers = (LayerDrawable) background.getCurrent();
47 GradientDrawable swatch =
48 (GradientDrawable) layers.findDrawableByLayerId(R.id.color_butto n_swatch);
49 swatch.setColor(suggestion.mColor);
50 String description = suggestion.mLabel;
51 if (description.isEmpty()) {
newt (away) 2013/10/09 06:07:03 can you be sure that description is never null? if
keishi 2013/10/15 16:44:02 Done.
52 description = String.format("#%06X", (0xFFFFFF & suggestion.mColor)) ;
53 }
54 button.setContentDescription(description);
55 button.setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES );
56 button.setOnClickListener(this);
57 }
58
59 @Override
60 public void onClick(View v) {
61 if (mListener == null)
newt (away) 2013/10/09 06:07:03 need curly braces for if-else in Java, unless it's
keishi 2013/10/15 16:44:02 Done.
62 return;
63 Integer index = (Integer) v.getTag();
newt (away) 2013/10/09 06:07:03 it's probably good to safeguard against null tags
keishi 2013/10/15 16:44:02 Done.
64 if (index < 0)
65 return;
66 mListener.onColorSuggestionClick(mSuggestions[index]);
67 }
68
69 @Override
70 public View getView(int position, View convertView, ViewGroup parent) {
71 View layout = convertView;
72 if (convertView == null) {
newt (away) 2013/10/09 06:07:03 Ideally, we'd be able to configure the number of c
keishi 2013/10/15 16:44:02 I tried color_buttom.xml but the attributes like l
73 LayoutInflater inflater =
newt (away) 2013/10/09 06:07:03 easier: LayoutInflater inflater = LayoutInflater.f
keishi 2013/10/15 16:44:02 Done.
74 (LayoutInflater) mContext.getSystemService(Context.LAYOUT_IN FLATER_SERVICE);
75 layout = inflater.inflate(R.layout.color_button_row, null);
76 }
77 setupColorButton(layout.findViewById(R.id.color_button_1), position * 4) ;
78 setupColorButton(layout.findViewById(R.id.color_button_2), position * 4 + 1);
79 setupColorButton(layout.findViewById(R.id.color_button_3), position * 4 + 2);
80 setupColorButton(layout.findViewById(R.id.color_button_4), position * 4 + 3);
81 return layout;
82 }
83
84 @Override
85 public long getItemId(int position) {
86 return position;
87 }
88
89 @Override
90 public Object getItem(int position) {
91 return mSuggestions[position * 4];
newt (away) 2013/10/09 06:07:03 I'd prefer returning null here -- that makes it cl
keishi 2013/10/15 16:44:02 Done.
92 }
93
94 @Override
95 public int getCount() {
96 return (int) Math.ceil(mSuggestions.length / 4d);
newt (away) 2013/10/09 06:07:03 return (mSuggestions.length + 3) / 4;
keishi 2013/10/15 16:44:02 Done.
97 }
98 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698