Exemplo n.º 1
0
            public ActionButtonSubmenu(ActionMenuPresenter _enclosing, android.content.Context
                                       context, [email protected] subMenu) : base(context, subMenu
                                                                                                           )
            {
                this._enclosing = _enclosing;
                this.mSubMenu   = subMenu;
                [email protected] item = ([email protected]
                                                                 )subMenu.getItem();
                if (!item.isActionButton())
                {
                    // Give a reasonable anchor to nested submenus.
                    this.setAnchorView(this._enclosing.mOverflowButton == null ? (android.view.View) this
                                       ._enclosing.mMenuView : this._enclosing.mOverflowButton);
                }
                this.setCallback(this._enclosing.mPopupPresenterCallback);
                bool preserveIconSpacing = false;
                int  count = subMenu.size();

                {
                    for (int i = 0; i < count; i++)
                    {
                        android.view.MenuItem childItem = subMenu.getItem(i);
                        if (childItem.isVisible() && childItem.getIcon() != null)
                        {
                            preserveIconSpacing = true;
                            break;
                        }
                    }
                }
                this.setForceShowIcon(preserveIconSpacing);
            }
Exemplo n.º 2
0
        public override bool shouldIncludeItem(int childIndex, [email protected]
                                               item)
        {
            java.util.ArrayList <*****@*****.**> itemsToShow = mMenu
                                                                                         .getNonActionItems();
            bool fits = (itemsToShow.size() == mMaxItems && childIndex < mMaxItems) || childIndex
                        < mMaxItems - 1;

            return(fits && !item.isActionButton());
        }
Exemplo n.º 3
0
        public override bool flagActionItems()
        {
            java.util.ArrayList <*****@*****.**> visibleItems = mMenu
                                                                                          .getVisibleItems();
            int itemsSize  = visibleItems.size();
            int maxActions = mMaxItems;
            int widthLimit = mActionItemWidthLimit;
            int querySpec  = android.view.View.MeasureSpec.makeMeasureSpec(0, android.view.View
                                                                           .MeasureSpec.UNSPECIFIED);

            android.view.ViewGroup parent = (android.view.ViewGroup)mMenuView;
            int  requiredItems            = 0;
            int  requestedItems           = 0;
            int  firstActionWidth         = 0;
            bool hasOverflow = false;

            {
                for (int i = 0; i < itemsSize; i++)
                {
                    [email protected] item = visibleItems.get(i);
                    if (item.requiresActionButton())
                    {
                        requiredItems++;
                    }
                    else
                    {
                        if (item.requestsActionButton())
                        {
                            requestedItems++;
                        }
                        else
                        {
                            hasOverflow = true;
                        }
                    }
                    if (mExpandedActionViewsExclusive && item.isActionViewExpanded())
                    {
                        // Overflow everything if we have an expanded action view and we're
                        // space constrained.
                        maxActions = 0;
                    }
                }
            }
            // Reserve a spot for the overflow item if needed.
            if (mReserveOverflow && (hasOverflow || requiredItems + requestedItems > maxActions
                                     ))
            {
                maxActions--;
            }
            maxActions -= requiredItems;
            android.util.SparseBooleanArray seenGroups = mActionButtonGroups;
            seenGroups.clear();
            int cellSize       = 0;
            int cellsRemaining = 0;

            if (mStrictWidthLimit)
            {
                cellsRemaining = widthLimit / mMinCellSize;
                int cellSizeRemaining = widthLimit % mMinCellSize;
                cellSize = mMinCellSize + cellSizeRemaining / cellsRemaining;
            }
            {
                // Flag as many more requested items as will fit.
                for (int i_1 = 0; i_1 < itemsSize; i_1++)
                {
                    [email protected] item = visibleItems.get(i_1);
                    if (item.requiresActionButton())
                    {
                        android.view.View v = getItemView(item, mScrapActionButtonView, parent);
                        if (mScrapActionButtonView == null)
                        {
                            mScrapActionButtonView = v;
                        }
                        if (mStrictWidthLimit)
                        {
                            cellsRemaining -= [email protected]
                                                  (v, cellSize, cellsRemaining, querySpec, 0);
                        }
                        else
                        {
                            v.measure(querySpec, querySpec);
                        }
                        int measuredWidth = v.getMeasuredWidth();
                        widthLimit -= measuredWidth;
                        if (firstActionWidth == 0)
                        {
                            firstActionWidth = measuredWidth;
                        }
                        int groupId = item.getGroupId();
                        if (groupId != 0)
                        {
                            seenGroups.put(groupId, true);
                        }
                        item.setIsActionButton(true);
                    }
                    else
                    {
                        if (item.requestsActionButton())
                        {
                            // Items in a group with other items that already have an action slot
                            // can break the max actions rule, but not the width limit.
                            int  groupId  = item.getGroupId();
                            bool inGroup  = seenGroups.get(groupId);
                            bool isAction = (maxActions > 0 || inGroup) && widthLimit > 0 && (!mStrictWidthLimit ||
                                                                                              cellsRemaining > 0);
                            if (isAction)
                            {
                                android.view.View v = getItemView(item, mScrapActionButtonView, parent);
                                if (mScrapActionButtonView == null)
                                {
                                    mScrapActionButtonView = v;
                                }
                                if (mStrictWidthLimit)
                                {
                                    int cells = [email protected](v, cellSize
                                                                                                                , cellsRemaining, querySpec, 0);
                                    cellsRemaining -= cells;
                                    if (cells == 0)
                                    {
                                        isAction = false;
                                    }
                                }
                                else
                                {
                                    v.measure(querySpec, querySpec);
                                }
                                int measuredWidth = v.getMeasuredWidth();
                                widthLimit -= measuredWidth;
                                if (firstActionWidth == 0)
                                {
                                    firstActionWidth = measuredWidth;
                                }
                                if (mStrictWidthLimit)
                                {
                                    isAction &= widthLimit >= 0;
                                }
                                else
                                {
                                    // Did this push the entire first item past the limit?
                                    isAction &= widthLimit + firstActionWidth > 0;
                                }
                            }
                            if (isAction && groupId != 0)
                            {
                                seenGroups.put(groupId, true);
                            }
                            else
                            {
                                if (inGroup)
                                {
                                    // We broke the width limit. Demote the whole group, they all overflow now.
                                    seenGroups.put(groupId, false);
                                    {
                                        for (int j = 0; j < i_1; j++)
                                        {
                                            [email protected] areYouMyGroupie = visibleItems.get(j);
                                            if (areYouMyGroupie.getGroupId() == groupId)
                                            {
                                                // Give back the action slot
                                                if (areYouMyGroupie.isActionButton())
                                                {
                                                    maxActions++;
                                                }
                                                areYouMyGroupie.setIsActionButton(false);
                                            }
                                        }
                                    }
                                }
                            }
                            if (isAction)
                            {
                                maxActions--;
                            }
                            item.setIsActionButton(isAction);
                        }
                    }
                }
            }
            return(true);
        }
Exemplo n.º 4
0
 public override bool shouldIncludeItem(int childIndex, [email protected]
                                        item)
 {
     return(item.isActionButton());
 }