| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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.appmenu; | 5 package org.chromium.chrome.browser.appmenu; |
| 6 | 6 |
| 7 import android.content.Context; | 7 import android.content.Context; |
| 8 import android.util.AttributeSet; | 8 import android.util.AttributeSet; |
| 9 import android.widget.ImageView; | 9 import android.widget.Checkable; |
| 10 |
| 11 import org.chromium.chrome.browser.widget.TintedImageView; |
| 10 | 12 |
| 11 /** | 13 /** |
| 12 * A menu icon that supports the checkable state. | 14 * A TintedImageView that supports the checkable state. |
| 13 */ | 15 */ |
| 14 public class AppMenuItemIcon extends ImageView { | 16 public class AppMenuItemIcon extends TintedImageView implements Checkable { |
| 15 private static final int[] CHECKED_STATE_SET = new int[] {android.R.attr.sta
te_checked}; | 17 private static final int[] CHECKED_STATE_SET = new int[] {android.R.attr.sta
te_checked}; |
| 16 private boolean mCheckedState; | 18 private boolean mCheckedState; |
| 17 | 19 |
| 18 public AppMenuItemIcon(Context context, AttributeSet attrs) { | 20 public AppMenuItemIcon(Context context, AttributeSet attrs) { |
| 19 super(context, attrs); | 21 super(context, attrs); |
| 20 } | 22 } |
| 21 | 23 |
| 22 /** | 24 @Override |
| 23 * Sets whether the item is checked and refreshes the View if necessary. | 25 public void setChecked(boolean state) { |
| 24 */ | |
| 25 protected void setChecked(boolean state) { | |
| 26 if (state == mCheckedState) return; | 26 if (state == mCheckedState) return; |
| 27 mCheckedState = state; | 27 mCheckedState = state; |
| 28 refreshDrawableState(); | 28 refreshDrawableState(); |
| 29 } | 29 } |
| 30 | 30 |
| 31 @Override | 31 @Override |
| 32 public void setPressed(boolean state) { | |
| 33 // We don't want to highlight the checkbox icon since the parent item is
already | |
| 34 // highlighted. | |
| 35 return; | |
| 36 } | |
| 37 | |
| 38 @Override | |
| 39 public int[] onCreateDrawableState(int extraSpace) { | 32 public int[] onCreateDrawableState(int extraSpace) { |
| 40 final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); | 33 final int[] drawableState = super.onCreateDrawableState(extraSpace + 1); |
| 41 if (mCheckedState) { | 34 if (mCheckedState) { |
| 42 mergeDrawableStates(drawableState, CHECKED_STATE_SET); | 35 mergeDrawableStates(drawableState, CHECKED_STATE_SET); |
| 43 } | 36 } |
| 44 return drawableState; | 37 return drawableState; |
| 45 } | 38 } |
| 39 |
| 40 @Override |
| 41 public boolean isChecked() { |
| 42 return mCheckedState; |
| 43 } |
| 44 |
| 45 @Override |
| 46 public void toggle() { |
| 47 setChecked(!mCheckedState); |
| 48 } |
| 46 } | 49 } |
| OLD | NEW |