Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'android/3rd_party/HoloEverywhere/library/src/com/actionbarsherlock/internal/view/menu/HoloListMenuItemView.java')
-rw-r--r--android/3rd_party/HoloEverywhere/library/src/com/actionbarsherlock/internal/view/menu/HoloListMenuItemView.java259
1 files changed, 259 insertions, 0 deletions
diff --git a/android/3rd_party/HoloEverywhere/library/src/com/actionbarsherlock/internal/view/menu/HoloListMenuItemView.java b/android/3rd_party/HoloEverywhere/library/src/com/actionbarsherlock/internal/view/menu/HoloListMenuItemView.java
new file mode 100644
index 0000000000..2fa871e719
--- /dev/null
+++ b/android/3rd_party/HoloEverywhere/library/src/com/actionbarsherlock/internal/view/menu/HoloListMenuItemView.java
@@ -0,0 +1,259 @@
+
+package com.actionbarsherlock.internal.view.menu;
+
+import org.holoeverywhere.LayoutInflater;
+import org.holoeverywhere.R;
+import org.holoeverywhere.widget.LinearLayout;
+import org.holoeverywhere.widget.TextView;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.CheckBox;
+import android.widget.CompoundButton;
+import android.widget.ImageView;
+import android.widget.RadioButton;
+
+public class HoloListMenuItemView extends LinearLayout implements
+ MenuView.ItemView {
+ private Drawable mBackground;
+ private CheckBox mCheckBox;
+ private boolean mForceShowIcon;
+ private ImageView mIconView;
+ private LayoutInflater mInflater;
+ private MenuItemImpl mItemData;
+ private boolean mPreserveIconSpacing;
+ private RadioButton mRadioButton;
+ private TextView mShortcutView;
+ private int mTextAppearance;
+ private Context mTextAppearanceContext;
+ private TextView mTitleView;
+
+ public HoloListMenuItemView(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public HoloListMenuItemView(Context context, AttributeSet attrs,
+ int defStyle) {
+ super(context, attrs);
+ TypedArray a = context.obtainStyledAttributes(attrs,
+ R.styleable.MenuView, defStyle, 0);
+ mBackground = a.getDrawable(R.styleable.MenuView_dialogItemBackground);
+ mTextAppearance = a.getResourceId(
+ R.styleable.MenuView_dialogItemTextAppearance, -1);
+ mPreserveIconSpacing = a.getBoolean(
+ R.styleable.MenuView_android_preserveIconSpacing, false);
+ mTextAppearanceContext = context;
+ a.recycle();
+ }
+
+ private LayoutInflater getInflater() {
+ if (mInflater == null) {
+ mInflater = LayoutInflater.from(getContext());
+ }
+ return mInflater;
+ }
+
+ @Override
+ public MenuItemImpl getItemData() {
+ return mItemData;
+ }
+
+ @Override
+ public void initialize(MenuItemImpl itemData, int menuType) {
+ mItemData = itemData;
+ setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE);
+ setTitle(itemData.getTitleForItemView(this));
+ setCheckable(itemData.isCheckable());
+ setShortcut(itemData.shouldShowShortcut(), itemData.getShortcut());
+ setIcon(itemData.getIcon());
+ setEnabled(itemData.isEnabled());
+ }
+
+ private void insertCheckBox() {
+ LayoutInflater inflater = getInflater();
+ mCheckBox = (CheckBox) inflater.inflate(
+ R.layout.list_menu_item_checkbox, this, false);
+ addView(mCheckBox);
+ }
+
+ private void insertIconView() {
+ LayoutInflater inflater = getInflater();
+ mIconView = (ImageView) inflater.inflate(R.layout.list_menu_item_icon,
+ this, false);
+ addView(mIconView, 0);
+ }
+
+ private void insertRadioButton() {
+ LayoutInflater inflater = getInflater();
+ mRadioButton = (RadioButton) inflater.inflate(
+ R.layout.list_menu_item_radio, this, false);
+ addView(mRadioButton);
+ }
+
+ @SuppressWarnings("deprecation")
+ @Override
+ protected void onFinishInflate() {
+ super.onFinishInflate();
+ setBackgroundDrawable(mBackground);
+ mTitleView = (TextView) findViewById(R.id.title);
+ if (mTextAppearance != -1) {
+ mTitleView.setTextAppearance(mTextAppearanceContext,
+ mTextAppearance);
+ }
+ mShortcutView = (TextView) findViewById(R.id.shortcut);
+ }
+
+ @Override
+ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+ if (mIconView != null && mPreserveIconSpacing) {
+ // Enforce minimum icon spacing
+ ViewGroup.LayoutParams lp = getLayoutParams();
+ LayoutParams iconLp = (LayoutParams) mIconView.getLayoutParams();
+ if (lp.height > 0 && iconLp.width <= 0) {
+ iconLp.width = lp.height;
+ }
+ }
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+ }
+
+ @Override
+ public boolean prefersCondensedTitle() {
+ return false;
+ }
+
+ @Override
+ public void setCheckable(boolean checkable) {
+ if (!checkable && mRadioButton == null && mCheckBox == null) {
+ return;
+ }
+
+ // Depending on whether its exclusive check or not, the checkbox or
+ // radio button will be the one in use (and the other will be
+ // otherCompoundButton)
+ final CompoundButton compoundButton;
+ final CompoundButton otherCompoundButton;
+
+ if (mItemData.isExclusiveCheckable()) {
+ if (mRadioButton == null) {
+ insertRadioButton();
+ }
+ compoundButton = mRadioButton;
+ otherCompoundButton = mCheckBox;
+ } else {
+ if (mCheckBox == null) {
+ insertCheckBox();
+ }
+ compoundButton = mCheckBox;
+ otherCompoundButton = mRadioButton;
+ }
+
+ if (checkable) {
+ compoundButton.setChecked(mItemData.isChecked());
+
+ final int newVisibility = checkable ? View.VISIBLE : View.GONE;
+ if (compoundButton.getVisibility() != newVisibility) {
+ compoundButton.setVisibility(newVisibility);
+ }
+
+ // Make sure the other compound button isn't visible
+ if (otherCompoundButton != null
+ && otherCompoundButton.getVisibility() != View.GONE) {
+ otherCompoundButton.setVisibility(View.GONE);
+ }
+ } else {
+ if (mCheckBox != null) {
+ mCheckBox.setVisibility(View.GONE);
+ }
+ if (mRadioButton != null) {
+ mRadioButton.setVisibility(View.GONE);
+ }
+ }
+ }
+
+ @Override
+ public void setChecked(boolean checked) {
+ CompoundButton compoundButton;
+
+ if (mItemData.isExclusiveCheckable()) {
+ if (mRadioButton == null) {
+ insertRadioButton();
+ }
+ compoundButton = mRadioButton;
+ } else {
+ if (mCheckBox == null) {
+ insertCheckBox();
+ }
+ compoundButton = mCheckBox;
+ }
+
+ compoundButton.setChecked(checked);
+ }
+
+ public void setForceShowIcon(boolean forceShow) {
+ mPreserveIconSpacing = mForceShowIcon = forceShow;
+ }
+
+ @Override
+ public void setIcon(Drawable icon) {
+ final boolean showIcon = mItemData.shouldShowIcon() || mForceShowIcon;
+ if (!showIcon && !mPreserveIconSpacing) {
+ return;
+ }
+
+ if (mIconView == null && icon == null && !mPreserveIconSpacing) {
+ return;
+ }
+
+ if (mIconView == null) {
+ insertIconView();
+ }
+
+ if (icon != null || mPreserveIconSpacing) {
+ mIconView.setImageDrawable(showIcon ? icon : null);
+
+ if (mIconView.getVisibility() != View.VISIBLE) {
+ mIconView.setVisibility(View.VISIBLE);
+ }
+ } else {
+ mIconView.setVisibility(View.GONE);
+ }
+ }
+
+ @Override
+ public void setShortcut(boolean showShortcut, char shortcutKey) {
+ final int newVisibility = showShortcut
+ && mItemData.shouldShowShortcut() ? View.VISIBLE : View.GONE;
+
+ if (newVisibility == View.VISIBLE) {
+ mShortcutView.setText(mItemData.getShortcutLabel());
+ }
+
+ if (mShortcutView.getVisibility() != newVisibility) {
+ mShortcutView.setVisibility(newVisibility);
+ }
+ }
+
+ @Override
+ public void setTitle(CharSequence title) {
+ if (title != null) {
+ mTitleView.setText(title);
+
+ if (mTitleView.getVisibility() != View.VISIBLE) {
+ mTitleView.setVisibility(View.VISIBLE);
+ }
+ } else {
+ if (mTitleView.getVisibility() != View.GONE) {
+ mTitleView.setVisibility(View.GONE);
+ }
+ }
+ }
+
+ @Override
+ public boolean showsIcon() {
+ return mForceShowIcon;
+ }
+}