Beispiel #1
0
  public void restoreActionViewStates(Bundle states) {
    if (states == null) {
      return;
    }

    SparseArray<Parcelable> viewStates = states.getSparseParcelableArray(getActionViewStatesKey());

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
      final MenuItem item = getItem(i);
      final View v = item.getActionView();
      if (v != null && v.getId() != View.NO_ID) {
        v.restoreHierarchyState(viewStates);
      }
      if (item.hasSubMenu()) {
        final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
        subMenu.restoreActionViewStates(states);
      }
    }

    final int expandedId = states.getInt(EXPANDED_ACTION_VIEW_ID);
    if (expandedId > 0) {
      MenuItem itemToExpand = findItem(expandedId);
      if (itemToExpand != null) {
        itemToExpand.expandActionView();
      }
    }
  }
Beispiel #2
0
  public void saveActionViewStates(Bundle outStates) {
    SparseArray<Parcelable> viewStates = null;

    final int itemCount = size();
    for (int i = 0; i < itemCount; i++) {
      final MenuItem item = getItem(i);
      final View v = item.getActionView();
      if (v != null && v.getId() != View.NO_ID) {
        if (viewStates == null) {
          viewStates = new SparseArray<Parcelable>();
        }
        v.saveHierarchyState(viewStates);
        if (item.isActionViewExpanded()) {
          outStates.putInt(EXPANDED_ACTION_VIEW_ID, item.getItemId());
        }
      }
      if (item.hasSubMenu()) {
        final SubMenuBuilder subMenu = (SubMenuBuilder) item.getSubMenu();
        subMenu.saveActionViewStates(outStates);
      }
    }

    if (viewStates != null) {
      outStates.putSparseParcelableArray(getActionViewStatesKey(), viewStates);
    }
  }
 public boolean onSubMenuSelected(SubMenuBuilder submenubuilder) {
   if (submenubuilder.hasVisibleItems()) {
     MenuPopupHelper menupopuphelper = new MenuPopupHelper(mContext, submenubuilder, mAnchorView);
     menupopuphelper.setCallback(mPresenterCallback);
     boolean flag1 = false;
     int j = submenubuilder.size();
     int i = 0;
     label0:
     do {
       label1:
       {
         boolean flag = flag1;
         if (i < j) {
           MenuItem menuitem = submenubuilder.getItem(i);
           if (!menuitem.isVisible() || menuitem.getIcon() == null) {
             break label1;
           }
           flag = true;
         }
         menupopuphelper.setForceShowIcon(flag);
         if (menupopuphelper.tryShow()) {
           if (mPresenterCallback != null) {
             mPresenterCallback.onOpenSubMenu(submenubuilder);
           }
           return true;
         }
         break label0;
       }
       i++;
     } while (true);
   }
   return false;
 }
  public MenuItem setTitle(CharSequence title) {
    mTitle = title;

    mMenu.onItemsChanged(false);

    if (mSubMenu != null) {
      mSubMenu.setHeaderTitle(title);
    }

    return this;
  }
    public ActionButtonSubmenu(Context context, SubMenuBuilder subMenu) {
      super(context, subMenu);
      // UNUSED mSubMenu = subMenu;

      MenuItemImpl item = (MenuItemImpl) subMenu.getItem();
      if (!item.isActionButton()) {
        // Give a reasonable anchor to nested submenus.
        setAnchorView(mOverflowButton == null ? (View) mMenuView : mOverflowButton);
      }

      setCallback(mPopupPresenterCallback);

      boolean preserveIconSpacing = false;
      final int count = subMenu.size();
      for (int i = 0; i < count; i++) {
        MenuItem childItem = subMenu.getItem(i);
        if (childItem.isVisible() && childItem.getIcon() != null) {
          preserveIconSpacing = true;
          break;
        }
      }
      setForceShowIcon(preserveIconSpacing);
    }
  public boolean onSubMenuSelected(SubMenuBuilder subMenu) {
    if (!subMenu.hasVisibleItems()) return false;

    SubMenuBuilder topSubMenu = subMenu;
    while (topSubMenu.getParentMenu() != mMenu) {
      topSubMenu = (SubMenuBuilder) topSubMenu.getParentMenu();
    }
    View anchor = findViewForItem(topSubMenu.getItem());
    if (anchor == null) {
      if (mOverflowButton == null) return false;
      anchor = mOverflowButton;
    }

    mOpenSubMenuId = subMenu.getItem().getItemId();
    mActionButtonPopup = new ActionButtonSubmenu(mContext, subMenu);
    mActionButtonPopup.setAnchorView(anchor);
    mActionButtonPopup.show();
    super.onSubMenuSelected(subMenu);
    return true;
  }
 @Override
 public void onCloseMenu(MenuBuilder menu, boolean allMenusAreClosing) {
   if (menu instanceof SubMenuBuilder) {
     ((SubMenuBuilder) menu).getRootMenu().close(false);
   }
 }
Beispiel #8
0
  public boolean bindNativeOverflow(
      android.view.Menu menu,
      android.view.MenuItem.OnMenuItemClickListener listener,
      HashMap<android.view.MenuItem, MenuItemImpl> map) {
    final List<MenuItemImpl> nonActionItems = getNonActionItems();
    if (nonActionItems == null || nonActionItems.size() == 0) {
      return false;
    }

    boolean visible = false;
    menu.clear();
    for (MenuItemImpl nonActionItem : nonActionItems) {
      if (!nonActionItem.isVisible()) {
        continue;
      }
      visible = true;

      android.view.MenuItem nativeItem;
      if (nonActionItem.hasSubMenu()) {
        android.view.SubMenu nativeSub =
            menu.addSubMenu(
                nonActionItem.getGroupId(),
                nonActionItem.getItemId(),
                nonActionItem.getOrder(),
                nonActionItem.getTitle());

        SubMenuBuilder subMenu = (SubMenuBuilder) nonActionItem.getSubMenu();
        for (MenuItemImpl subItem : subMenu.getVisibleItems()) {
          android.view.MenuItem nativeSubItem =
              nativeSub.add(
                  subItem.getGroupId(),
                  subItem.getItemId(),
                  subItem.getOrder(),
                  subItem.getTitle());

          nativeSubItem.setIcon(subItem.getIcon());
          nativeSubItem.setOnMenuItemClickListener(listener);
          nativeSubItem.setEnabled(subItem.isEnabled());
          nativeSubItem.setIntent(subItem.getIntent());
          nativeSubItem.setNumericShortcut(subItem.getNumericShortcut());
          nativeSubItem.setAlphabeticShortcut(subItem.getAlphabeticShortcut());
          nativeSubItem.setTitleCondensed(subItem.getTitleCondensed());
          nativeSubItem.setCheckable(subItem.isCheckable());
          nativeSubItem.setChecked(subItem.isChecked());

          if (subItem.isExclusiveCheckable()) {
            nativeSub.setGroupCheckable(subItem.getGroupId(), true, true);
          }

          map.put(nativeSubItem, subItem);
        }

        nativeItem = nativeSub.getItem();
      } else {
        nativeItem =
            menu.add(
                nonActionItem.getGroupId(),
                nonActionItem.getItemId(),
                nonActionItem.getOrder(),
                nonActionItem.getTitle());
      }
      nativeItem.setIcon(nonActionItem.getIcon());
      nativeItem.setOnMenuItemClickListener(listener);
      nativeItem.setEnabled(nonActionItem.isEnabled());
      nativeItem.setIntent(nonActionItem.getIntent());
      nativeItem.setNumericShortcut(nonActionItem.getNumericShortcut());
      nativeItem.setAlphabeticShortcut(nonActionItem.getAlphabeticShortcut());
      nativeItem.setTitleCondensed(nonActionItem.getTitleCondensed());
      nativeItem.setCheckable(nonActionItem.isCheckable());
      nativeItem.setChecked(nonActionItem.isChecked());

      if (nonActionItem.isExclusiveCheckable()) {
        menu.setGroupCheckable(nonActionItem.getGroupId(), true, true);
      }

      map.put(nativeItem, nonActionItem);
    }
    return visible;
  }
  void setSubMenu(SubMenuBuilder subMenu) {
    mSubMenu = subMenu;

    subMenu.setHeaderTitle(getTitle());
  }