ADD week 5
This commit is contained in:
		| @@ -0,0 +1,588 @@ | ||||
| package androidx.appcompat.widget; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.content.Intent; | ||||
| import android.content.pm.PackageManager; | ||||
| import android.content.pm.ResolveInfo; | ||||
| import android.content.res.Resources; | ||||
| import android.content.res.TypedArray; | ||||
| import android.database.DataSetObserver; | ||||
| import android.graphics.drawable.ColorDrawable; | ||||
| import android.graphics.drawable.Drawable; | ||||
| import android.util.AttributeSet; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.view.ViewTreeObserver; | ||||
| import android.view.accessibility.AccessibilityNodeInfo; | ||||
| import android.widget.AdapterView; | ||||
| import android.widget.BaseAdapter; | ||||
| import android.widget.FrameLayout; | ||||
| import android.widget.ImageView; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.PopupWindow; | ||||
| import android.widget.TextView; | ||||
| import androidx.appcompat.R; | ||||
| import androidx.appcompat.view.menu.ShowableListMenu; | ||||
| import androidx.appcompat.widget.ActivityChooserModel; | ||||
| import androidx.constraintlayout.core.widgets.analyzer.BasicMeasure; | ||||
| import androidx.core.view.ActionProvider; | ||||
| import androidx.core.view.ViewCompat; | ||||
| import androidx.core.view.accessibility.AccessibilityNodeInfoCompat; | ||||
|  | ||||
| /* loaded from: classes.dex */ | ||||
| public class ActivityChooserView extends ViewGroup implements ActivityChooserModel.ActivityChooserModelClient { | ||||
|     private final View mActivityChooserContent; | ||||
|     private final Drawable mActivityChooserContentBackground; | ||||
|     final ActivityChooserViewAdapter mAdapter; | ||||
|     private final Callbacks mCallbacks; | ||||
|     private int mDefaultActionButtonContentDescription; | ||||
|     final FrameLayout mDefaultActivityButton; | ||||
|     private final ImageView mDefaultActivityButtonImage; | ||||
|     final FrameLayout mExpandActivityOverflowButton; | ||||
|     private final ImageView mExpandActivityOverflowButtonImage; | ||||
|     int mInitialActivityCount; | ||||
|     private boolean mIsAttachedToWindow; | ||||
|     boolean mIsSelectingDefaultActivity; | ||||
|     private final int mListPopupMaxWidth; | ||||
|     private ListPopupWindow mListPopupWindow; | ||||
|     final DataSetObserver mModelDataSetObserver; | ||||
|     PopupWindow.OnDismissListener mOnDismissListener; | ||||
|     private final ViewTreeObserver.OnGlobalLayoutListener mOnGlobalLayoutListener; | ||||
|     ActionProvider mProvider; | ||||
|  | ||||
|     public void setDefaultActionButtonContentDescription(int i) { | ||||
|         this.mDefaultActionButtonContentDescription = i; | ||||
|     } | ||||
|  | ||||
|     public void setInitialActivityCount(int i) { | ||||
|         this.mInitialActivityCount = i; | ||||
|     } | ||||
|  | ||||
|     public void setOnDismissListener(PopupWindow.OnDismissListener onDismissListener) { | ||||
|         this.mOnDismissListener = onDismissListener; | ||||
|     } | ||||
|  | ||||
|     public void setProvider(ActionProvider actionProvider) { | ||||
|         this.mProvider = actionProvider; | ||||
|     } | ||||
|  | ||||
|     public ActivityChooserView(Context context) { | ||||
|         this(context, null); | ||||
|     } | ||||
|  | ||||
|     public ActivityChooserView(Context context, AttributeSet attributeSet) { | ||||
|         this(context, attributeSet, 0); | ||||
|     } | ||||
|  | ||||
|     public ActivityChooserView(Context context, AttributeSet attributeSet, int i) { | ||||
|         super(context, attributeSet, i); | ||||
|         this.mModelDataSetObserver = new DataSetObserver() { // from class: androidx.appcompat.widget.ActivityChooserView.1 | ||||
|             @Override // android.database.DataSetObserver | ||||
|             public void onChanged() { | ||||
|                 super.onChanged(); | ||||
|                 ActivityChooserView.this.mAdapter.notifyDataSetChanged(); | ||||
|             } | ||||
|  | ||||
|             @Override // android.database.DataSetObserver | ||||
|             public void onInvalidated() { | ||||
|                 super.onInvalidated(); | ||||
|                 ActivityChooserView.this.mAdapter.notifyDataSetInvalidated(); | ||||
|             } | ||||
|         }; | ||||
|         this.mOnGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { // from class: androidx.appcompat.widget.ActivityChooserView.2 | ||||
|             @Override // android.view.ViewTreeObserver.OnGlobalLayoutListener | ||||
|             public void onGlobalLayout() { | ||||
|                 if (ActivityChooserView.this.isShowingPopup()) { | ||||
|                     if (!ActivityChooserView.this.isShown()) { | ||||
|                         ActivityChooserView.this.getListPopupWindow().dismiss(); | ||||
|                         return; | ||||
|                     } | ||||
|                     ActivityChooserView.this.getListPopupWindow().show(); | ||||
|                     if (ActivityChooserView.this.mProvider != null) { | ||||
|                         ActivityChooserView.this.mProvider.subUiVisibilityChanged(true); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         }; | ||||
|         this.mInitialActivityCount = 4; | ||||
|         TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.ActivityChooserView, i, 0); | ||||
|         ViewCompat.saveAttributeDataForStyleable(this, context, R.styleable.ActivityChooserView, attributeSet, obtainStyledAttributes, i, 0); | ||||
|         this.mInitialActivityCount = obtainStyledAttributes.getInt(R.styleable.ActivityChooserView_initialActivityCount, 4); | ||||
|         Drawable drawable = obtainStyledAttributes.getDrawable(R.styleable.ActivityChooserView_expandActivityOverflowButtonDrawable); | ||||
|         obtainStyledAttributes.recycle(); | ||||
|         LayoutInflater.from(getContext()).inflate(R.layout.abc_activity_chooser_view, (ViewGroup) this, true); | ||||
|         Callbacks callbacks = new Callbacks(); | ||||
|         this.mCallbacks = callbacks; | ||||
|         View findViewById = findViewById(R.id.activity_chooser_view_content); | ||||
|         this.mActivityChooserContent = findViewById; | ||||
|         this.mActivityChooserContentBackground = findViewById.getBackground(); | ||||
|         FrameLayout frameLayout = (FrameLayout) findViewById(R.id.default_activity_button); | ||||
|         this.mDefaultActivityButton = frameLayout; | ||||
|         frameLayout.setOnClickListener(callbacks); | ||||
|         frameLayout.setOnLongClickListener(callbacks); | ||||
|         this.mDefaultActivityButtonImage = (ImageView) frameLayout.findViewById(R.id.image); | ||||
|         FrameLayout frameLayout2 = (FrameLayout) findViewById(R.id.expand_activities_button); | ||||
|         frameLayout2.setOnClickListener(callbacks); | ||||
|         frameLayout2.setAccessibilityDelegate(new View.AccessibilityDelegate() { // from class: androidx.appcompat.widget.ActivityChooserView.3 | ||||
|             @Override // android.view.View.AccessibilityDelegate | ||||
|             public void onInitializeAccessibilityNodeInfo(View view, AccessibilityNodeInfo accessibilityNodeInfo) { | ||||
|                 super.onInitializeAccessibilityNodeInfo(view, accessibilityNodeInfo); | ||||
|                 AccessibilityNodeInfoCompat.wrap(accessibilityNodeInfo).setCanOpenPopup(true); | ||||
|             } | ||||
|         }); | ||||
|         frameLayout2.setOnTouchListener(new ForwardingListener(frameLayout2) { // from class: androidx.appcompat.widget.ActivityChooserView.4 | ||||
|             @Override // androidx.appcompat.widget.ForwardingListener | ||||
|             public ShowableListMenu getPopup() { | ||||
|                 return ActivityChooserView.this.getListPopupWindow(); | ||||
|             } | ||||
|  | ||||
|             @Override // androidx.appcompat.widget.ForwardingListener | ||||
|             protected boolean onForwardingStarted() { | ||||
|                 ActivityChooserView.this.showPopup(); | ||||
|                 return true; | ||||
|             } | ||||
|  | ||||
|             @Override // androidx.appcompat.widget.ForwardingListener | ||||
|             protected boolean onForwardingStopped() { | ||||
|                 ActivityChooserView.this.dismissPopup(); | ||||
|                 return true; | ||||
|             } | ||||
|         }); | ||||
|         this.mExpandActivityOverflowButton = frameLayout2; | ||||
|         ImageView imageView = (ImageView) frameLayout2.findViewById(R.id.image); | ||||
|         this.mExpandActivityOverflowButtonImage = imageView; | ||||
|         imageView.setImageDrawable(drawable); | ||||
|         ActivityChooserViewAdapter activityChooserViewAdapter = new ActivityChooserViewAdapter(); | ||||
|         this.mAdapter = activityChooserViewAdapter; | ||||
|         activityChooserViewAdapter.registerDataSetObserver(new DataSetObserver() { // from class: androidx.appcompat.widget.ActivityChooserView.5 | ||||
|             @Override // android.database.DataSetObserver | ||||
|             public void onChanged() { | ||||
|                 super.onChanged(); | ||||
|                 ActivityChooserView.this.updateAppearance(); | ||||
|             } | ||||
|         }); | ||||
|         Resources resources = context.getResources(); | ||||
|         this.mListPopupMaxWidth = Math.max(resources.getDisplayMetrics().widthPixels / 2, resources.getDimensionPixelSize(R.dimen.abc_config_prefDialogWidth)); | ||||
|     } | ||||
|  | ||||
|     @Override // androidx.appcompat.widget.ActivityChooserModel.ActivityChooserModelClient | ||||
|     public void setActivityChooserModel(ActivityChooserModel activityChooserModel) { | ||||
|         this.mAdapter.setDataModel(activityChooserModel); | ||||
|         if (isShowingPopup()) { | ||||
|             dismissPopup(); | ||||
|             showPopup(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public void setExpandActivityOverflowButtonDrawable(Drawable drawable) { | ||||
|         this.mExpandActivityOverflowButtonImage.setImageDrawable(drawable); | ||||
|     } | ||||
|  | ||||
|     public void setExpandActivityOverflowButtonContentDescription(int i) { | ||||
|         this.mExpandActivityOverflowButtonImage.setContentDescription(getContext().getString(i)); | ||||
|     } | ||||
|  | ||||
|     public boolean showPopup() { | ||||
|         if (isShowingPopup() || !this.mIsAttachedToWindow) { | ||||
|             return false; | ||||
|         } | ||||
|         this.mIsSelectingDefaultActivity = false; | ||||
|         showPopupUnchecked(this.mInitialActivityCount); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     /* JADX WARN: Multi-variable type inference failed */ | ||||
|     /* JADX WARN: Type inference failed for: r0v15 */ | ||||
|     /* JADX WARN: Type inference failed for: r0v6 */ | ||||
|     /* JADX WARN: Type inference failed for: r0v7, types: [boolean, int] */ | ||||
|     void showPopupUnchecked(int i) { | ||||
|         if (this.mAdapter.getDataModel() == null) { | ||||
|             throw new IllegalStateException("No data model. Did you call #setDataModel?"); | ||||
|         } | ||||
|         getViewTreeObserver().addOnGlobalLayoutListener(this.mOnGlobalLayoutListener); | ||||
|         ?? r0 = this.mDefaultActivityButton.getVisibility() == 0 ? 1 : 0; | ||||
|         int activityCount = this.mAdapter.getActivityCount(); | ||||
|         if (i != Integer.MAX_VALUE && activityCount > i + r0) { | ||||
|             this.mAdapter.setShowFooterView(true); | ||||
|             this.mAdapter.setMaxActivityCount(i - 1); | ||||
|         } else { | ||||
|             this.mAdapter.setShowFooterView(false); | ||||
|             this.mAdapter.setMaxActivityCount(i); | ||||
|         } | ||||
|         ListPopupWindow listPopupWindow = getListPopupWindow(); | ||||
|         if (listPopupWindow.isShowing()) { | ||||
|             return; | ||||
|         } | ||||
|         if (this.mIsSelectingDefaultActivity || r0 == 0) { | ||||
|             this.mAdapter.setShowDefaultActivity(true, r0); | ||||
|         } else { | ||||
|             this.mAdapter.setShowDefaultActivity(false, false); | ||||
|         } | ||||
|         listPopupWindow.setContentWidth(Math.min(this.mAdapter.measureContentWidth(), this.mListPopupMaxWidth)); | ||||
|         listPopupWindow.show(); | ||||
|         ActionProvider actionProvider = this.mProvider; | ||||
|         if (actionProvider != null) { | ||||
|             actionProvider.subUiVisibilityChanged(true); | ||||
|         } | ||||
|         listPopupWindow.getListView().setContentDescription(getContext().getString(R.string.abc_activitychooserview_choose_application)); | ||||
|         listPopupWindow.getListView().setSelector(new ColorDrawable(0)); | ||||
|     } | ||||
|  | ||||
|     public boolean dismissPopup() { | ||||
|         if (!isShowingPopup()) { | ||||
|             return true; | ||||
|         } | ||||
|         getListPopupWindow().dismiss(); | ||||
|         ViewTreeObserver viewTreeObserver = getViewTreeObserver(); | ||||
|         if (!viewTreeObserver.isAlive()) { | ||||
|             return true; | ||||
|         } | ||||
|         viewTreeObserver.removeGlobalOnLayoutListener(this.mOnGlobalLayoutListener); | ||||
|         return true; | ||||
|     } | ||||
|  | ||||
|     public boolean isShowingPopup() { | ||||
|         return getListPopupWindow().isShowing(); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     protected void onAttachedToWindow() { | ||||
|         super.onAttachedToWindow(); | ||||
|         ActivityChooserModel dataModel = this.mAdapter.getDataModel(); | ||||
|         if (dataModel != null) { | ||||
|             dataModel.registerObserver(this.mModelDataSetObserver); | ||||
|         } | ||||
|         this.mIsAttachedToWindow = true; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     protected void onDetachedFromWindow() { | ||||
|         super.onDetachedFromWindow(); | ||||
|         ActivityChooserModel dataModel = this.mAdapter.getDataModel(); | ||||
|         if (dataModel != null) { | ||||
|             dataModel.unregisterObserver(this.mModelDataSetObserver); | ||||
|         } | ||||
|         ViewTreeObserver viewTreeObserver = getViewTreeObserver(); | ||||
|         if (viewTreeObserver.isAlive()) { | ||||
|             viewTreeObserver.removeGlobalOnLayoutListener(this.mOnGlobalLayoutListener); | ||||
|         } | ||||
|         if (isShowingPopup()) { | ||||
|             dismissPopup(); | ||||
|         } | ||||
|         this.mIsAttachedToWindow = false; | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.View | ||||
|     protected void onMeasure(int i, int i2) { | ||||
|         View view = this.mActivityChooserContent; | ||||
|         if (this.mDefaultActivityButton.getVisibility() != 0) { | ||||
|             i2 = View.MeasureSpec.makeMeasureSpec(View.MeasureSpec.getSize(i2), BasicMeasure.EXACTLY); | ||||
|         } | ||||
|         measureChild(view, i, i2); | ||||
|         setMeasuredDimension(view.getMeasuredWidth(), view.getMeasuredHeight()); | ||||
|     } | ||||
|  | ||||
|     @Override // android.view.ViewGroup, android.view.View | ||||
|     protected void onLayout(boolean z, int i, int i2, int i3, int i4) { | ||||
|         this.mActivityChooserContent.layout(0, 0, i3 - i, i4 - i2); | ||||
|         if (isShowingPopup()) { | ||||
|             return; | ||||
|         } | ||||
|         dismissPopup(); | ||||
|     } | ||||
|  | ||||
|     public ActivityChooserModel getDataModel() { | ||||
|         return this.mAdapter.getDataModel(); | ||||
|     } | ||||
|  | ||||
|     ListPopupWindow getListPopupWindow() { | ||||
|         if (this.mListPopupWindow == null) { | ||||
|             ListPopupWindow listPopupWindow = new ListPopupWindow(getContext()); | ||||
|             this.mListPopupWindow = listPopupWindow; | ||||
|             listPopupWindow.setAdapter(this.mAdapter); | ||||
|             this.mListPopupWindow.setAnchorView(this); | ||||
|             this.mListPopupWindow.setModal(true); | ||||
|             this.mListPopupWindow.setOnItemClickListener(this.mCallbacks); | ||||
|             this.mListPopupWindow.setOnDismissListener(this.mCallbacks); | ||||
|         } | ||||
|         return this.mListPopupWindow; | ||||
|     } | ||||
|  | ||||
|     void updateAppearance() { | ||||
|         if (this.mAdapter.getCount() > 0) { | ||||
|             this.mExpandActivityOverflowButton.setEnabled(true); | ||||
|         } else { | ||||
|             this.mExpandActivityOverflowButton.setEnabled(false); | ||||
|         } | ||||
|         int activityCount = this.mAdapter.getActivityCount(); | ||||
|         int historySize = this.mAdapter.getHistorySize(); | ||||
|         if (activityCount == 1 || (activityCount > 1 && historySize > 0)) { | ||||
|             this.mDefaultActivityButton.setVisibility(0); | ||||
|             ResolveInfo defaultActivity = this.mAdapter.getDefaultActivity(); | ||||
|             PackageManager packageManager = getContext().getPackageManager(); | ||||
|             this.mDefaultActivityButtonImage.setImageDrawable(defaultActivity.loadIcon(packageManager)); | ||||
|             if (this.mDefaultActionButtonContentDescription != 0) { | ||||
|                 this.mDefaultActivityButton.setContentDescription(getContext().getString(this.mDefaultActionButtonContentDescription, defaultActivity.loadLabel(packageManager))); | ||||
|             } | ||||
|         } else { | ||||
|             this.mDefaultActivityButton.setVisibility(8); | ||||
|         } | ||||
|         if (this.mDefaultActivityButton.getVisibility() == 0) { | ||||
|             this.mActivityChooserContent.setBackgroundDrawable(this.mActivityChooserContentBackground); | ||||
|         } else { | ||||
|             this.mActivityChooserContent.setBackgroundDrawable(null); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private class Callbacks implements AdapterView.OnItemClickListener, View.OnClickListener, View.OnLongClickListener, PopupWindow.OnDismissListener { | ||||
|         Callbacks() { | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.AdapterView.OnItemClickListener | ||||
|         public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) { | ||||
|             int itemViewType = ((ActivityChooserViewAdapter) adapterView.getAdapter()).getItemViewType(i); | ||||
|             if (itemViewType != 0) { | ||||
|                 if (itemViewType == 1) { | ||||
|                     ActivityChooserView.this.showPopupUnchecked(Integer.MAX_VALUE); | ||||
|                     return; | ||||
|                 } | ||||
|                 throw new IllegalArgumentException(); | ||||
|             } | ||||
|             ActivityChooserView.this.dismissPopup(); | ||||
|             if (ActivityChooserView.this.mIsSelectingDefaultActivity) { | ||||
|                 if (i > 0) { | ||||
|                     ActivityChooserView.this.mAdapter.getDataModel().setDefaultActivity(i); | ||||
|                     return; | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|             if (!ActivityChooserView.this.mAdapter.getShowDefaultActivity()) { | ||||
|                 i++; | ||||
|             } | ||||
|             Intent chooseActivity = ActivityChooserView.this.mAdapter.getDataModel().chooseActivity(i); | ||||
|             if (chooseActivity != null) { | ||||
|                 chooseActivity.addFlags(524288); | ||||
|                 ActivityChooserView.this.getContext().startActivity(chooseActivity); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         @Override // android.view.View.OnClickListener | ||||
|         public void onClick(View view) { | ||||
|             if (view == ActivityChooserView.this.mDefaultActivityButton) { | ||||
|                 ActivityChooserView.this.dismissPopup(); | ||||
|                 Intent chooseActivity = ActivityChooserView.this.mAdapter.getDataModel().chooseActivity(ActivityChooserView.this.mAdapter.getDataModel().getActivityIndex(ActivityChooserView.this.mAdapter.getDefaultActivity())); | ||||
|                 if (chooseActivity != null) { | ||||
|                     chooseActivity.addFlags(524288); | ||||
|                     ActivityChooserView.this.getContext().startActivity(chooseActivity); | ||||
|                     return; | ||||
|                 } | ||||
|                 return; | ||||
|             } | ||||
|             if (view == ActivityChooserView.this.mExpandActivityOverflowButton) { | ||||
|                 ActivityChooserView.this.mIsSelectingDefaultActivity = false; | ||||
|                 ActivityChooserView activityChooserView = ActivityChooserView.this; | ||||
|                 activityChooserView.showPopupUnchecked(activityChooserView.mInitialActivityCount); | ||||
|                 return; | ||||
|             } | ||||
|             throw new IllegalArgumentException(); | ||||
|         } | ||||
|  | ||||
|         @Override // android.view.View.OnLongClickListener | ||||
|         public boolean onLongClick(View view) { | ||||
|             if (view == ActivityChooserView.this.mDefaultActivityButton) { | ||||
|                 if (ActivityChooserView.this.mAdapter.getCount() > 0) { | ||||
|                     ActivityChooserView.this.mIsSelectingDefaultActivity = true; | ||||
|                     ActivityChooserView activityChooserView = ActivityChooserView.this; | ||||
|                     activityChooserView.showPopupUnchecked(activityChooserView.mInitialActivityCount); | ||||
|                 } | ||||
|                 return true; | ||||
|             } | ||||
|             throw new IllegalArgumentException(); | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.PopupWindow.OnDismissListener | ||||
|         public void onDismiss() { | ||||
|             notifyOnDismissListener(); | ||||
|             if (ActivityChooserView.this.mProvider != null) { | ||||
|                 ActivityChooserView.this.mProvider.subUiVisibilityChanged(false); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         private void notifyOnDismissListener() { | ||||
|             if (ActivityChooserView.this.mOnDismissListener != null) { | ||||
|                 ActivityChooserView.this.mOnDismissListener.onDismiss(); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     private class ActivityChooserViewAdapter extends BaseAdapter { | ||||
|         private static final int ITEM_VIEW_TYPE_ACTIVITY = 0; | ||||
|         private static final int ITEM_VIEW_TYPE_COUNT = 3; | ||||
|         private static final int ITEM_VIEW_TYPE_FOOTER = 1; | ||||
|         public static final int MAX_ACTIVITY_COUNT_DEFAULT = 4; | ||||
|         public static final int MAX_ACTIVITY_COUNT_UNLIMITED = Integer.MAX_VALUE; | ||||
|         private ActivityChooserModel mDataModel; | ||||
|         private boolean mHighlightDefaultActivity; | ||||
|         private int mMaxActivityCount = 4; | ||||
|         private boolean mShowDefaultActivity; | ||||
|         private boolean mShowFooterView; | ||||
|  | ||||
|         public ActivityChooserModel getDataModel() { | ||||
|             return this.mDataModel; | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.Adapter | ||||
|         public long getItemId(int i) { | ||||
|             return i; | ||||
|         } | ||||
|  | ||||
|         public boolean getShowDefaultActivity() { | ||||
|             return this.mShowDefaultActivity; | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.BaseAdapter, android.widget.Adapter | ||||
|         public int getViewTypeCount() { | ||||
|             return 3; | ||||
|         } | ||||
|  | ||||
|         ActivityChooserViewAdapter() { | ||||
|         } | ||||
|  | ||||
|         public void setDataModel(ActivityChooserModel activityChooserModel) { | ||||
|             ActivityChooserModel dataModel = ActivityChooserView.this.mAdapter.getDataModel(); | ||||
|             if (dataModel != null && ActivityChooserView.this.isShown()) { | ||||
|                 dataModel.unregisterObserver(ActivityChooserView.this.mModelDataSetObserver); | ||||
|             } | ||||
|             this.mDataModel = activityChooserModel; | ||||
|             if (activityChooserModel != null && ActivityChooserView.this.isShown()) { | ||||
|                 activityChooserModel.registerObserver(ActivityChooserView.this.mModelDataSetObserver); | ||||
|             } | ||||
|             notifyDataSetChanged(); | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.BaseAdapter, android.widget.Adapter | ||||
|         public int getItemViewType(int i) { | ||||
|             return (this.mShowFooterView && i == getCount() - 1) ? 1 : 0; | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.Adapter | ||||
|         public int getCount() { | ||||
|             int activityCount = this.mDataModel.getActivityCount(); | ||||
|             if (!this.mShowDefaultActivity && this.mDataModel.getDefaultActivity() != null) { | ||||
|                 activityCount--; | ||||
|             } | ||||
|             int min = Math.min(activityCount, this.mMaxActivityCount); | ||||
|             return this.mShowFooterView ? min + 1 : min; | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.Adapter | ||||
|         public Object getItem(int i) { | ||||
|             int itemViewType = getItemViewType(i); | ||||
|             if (itemViewType != 0) { | ||||
|                 if (itemViewType == 1) { | ||||
|                     return null; | ||||
|                 } | ||||
|                 throw new IllegalArgumentException(); | ||||
|             } | ||||
|             if (!this.mShowDefaultActivity && this.mDataModel.getDefaultActivity() != null) { | ||||
|                 i++; | ||||
|             } | ||||
|             return this.mDataModel.getActivity(i); | ||||
|         } | ||||
|  | ||||
|         @Override // android.widget.Adapter | ||||
|         public View getView(int i, View view, ViewGroup viewGroup) { | ||||
|             int itemViewType = getItemViewType(i); | ||||
|             if (itemViewType != 0) { | ||||
|                 if (itemViewType == 1) { | ||||
|                     if (view != null && view.getId() == 1) { | ||||
|                         return view; | ||||
|                     } | ||||
|                     View inflate = LayoutInflater.from(ActivityChooserView.this.getContext()).inflate(R.layout.abc_activity_chooser_view_list_item, viewGroup, false); | ||||
|                     inflate.setId(1); | ||||
|                     ((TextView) inflate.findViewById(R.id.title)).setText(ActivityChooserView.this.getContext().getString(R.string.abc_activity_chooser_view_see_all)); | ||||
|                     return inflate; | ||||
|                 } | ||||
|                 throw new IllegalArgumentException(); | ||||
|             } | ||||
|             if (view == null || view.getId() != R.id.list_item) { | ||||
|                 view = LayoutInflater.from(ActivityChooserView.this.getContext()).inflate(R.layout.abc_activity_chooser_view_list_item, viewGroup, false); | ||||
|             } | ||||
|             PackageManager packageManager = ActivityChooserView.this.getContext().getPackageManager(); | ||||
|             ImageView imageView = (ImageView) view.findViewById(R.id.icon); | ||||
|             ResolveInfo resolveInfo = (ResolveInfo) getItem(i); | ||||
|             imageView.setImageDrawable(resolveInfo.loadIcon(packageManager)); | ||||
|             ((TextView) view.findViewById(R.id.title)).setText(resolveInfo.loadLabel(packageManager)); | ||||
|             if (this.mShowDefaultActivity && i == 0 && this.mHighlightDefaultActivity) { | ||||
|                 view.setActivated(true); | ||||
|             } else { | ||||
|                 view.setActivated(false); | ||||
|             } | ||||
|             return view; | ||||
|         } | ||||
|  | ||||
|         public int measureContentWidth() { | ||||
|             int i = this.mMaxActivityCount; | ||||
|             this.mMaxActivityCount = Integer.MAX_VALUE; | ||||
|             int makeMeasureSpec = View.MeasureSpec.makeMeasureSpec(0, 0); | ||||
|             int makeMeasureSpec2 = View.MeasureSpec.makeMeasureSpec(0, 0); | ||||
|             int count = getCount(); | ||||
|             View view = null; | ||||
|             int i2 = 0; | ||||
|             for (int i3 = 0; i3 < count; i3++) { | ||||
|                 view = getView(i3, view, null); | ||||
|                 view.measure(makeMeasureSpec, makeMeasureSpec2); | ||||
|                 i2 = Math.max(i2, view.getMeasuredWidth()); | ||||
|             } | ||||
|             this.mMaxActivityCount = i; | ||||
|             return i2; | ||||
|         } | ||||
|  | ||||
|         public void setMaxActivityCount(int i) { | ||||
|             if (this.mMaxActivityCount != i) { | ||||
|                 this.mMaxActivityCount = i; | ||||
|                 notifyDataSetChanged(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public ResolveInfo getDefaultActivity() { | ||||
|             return this.mDataModel.getDefaultActivity(); | ||||
|         } | ||||
|  | ||||
|         public void setShowFooterView(boolean z) { | ||||
|             if (this.mShowFooterView != z) { | ||||
|                 this.mShowFooterView = z; | ||||
|                 notifyDataSetChanged(); | ||||
|             } | ||||
|         } | ||||
|  | ||||
|         public int getActivityCount() { | ||||
|             return this.mDataModel.getActivityCount(); | ||||
|         } | ||||
|  | ||||
|         public int getHistorySize() { | ||||
|             return this.mDataModel.getHistorySize(); | ||||
|         } | ||||
|  | ||||
|         public void setShowDefaultActivity(boolean z, boolean z2) { | ||||
|             if (this.mShowDefaultActivity == z && this.mHighlightDefaultActivity == z2) { | ||||
|                 return; | ||||
|             } | ||||
|             this.mShowDefaultActivity = z; | ||||
|             this.mHighlightDefaultActivity = z2; | ||||
|             notifyDataSetChanged(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     public static class InnerLayout extends LinearLayout { | ||||
|         private static final int[] TINT_ATTRS = {android.R.attr.background}; | ||||
|  | ||||
|         public InnerLayout(Context context, AttributeSet attributeSet) { | ||||
|             super(context, attributeSet); | ||||
|             TintTypedArray obtainStyledAttributes = TintTypedArray.obtainStyledAttributes(context, attributeSet, TINT_ATTRS); | ||||
|             setBackgroundDrawable(obtainStyledAttributes.getDrawable(0)); | ||||
|             obtainStyledAttributes.recycle(); | ||||
|         } | ||||
|     } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user