void ZLApplicationWindow::refreshToolbar() { const ZLToolbar::ItemVector &items = application().toolbar().items(); bool canAddSeparator = false; ZLToolbar::ItemPtr lastSeparator = 0; for (ZLToolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { if ((*it)->isSeparator()) { if (canAddSeparator) { lastSeparator = *it; canAddSeparator = false; } else { setToolbarItemState(*it, false, true); } } else { ZLToolbar::ButtonItem &button = (ZLToolbar::ButtonItem&)**it; const std::string &id = button.actionId(); const bool visible = application().isActionVisible(id); const bool enabled = application().isActionEnabled(id); if (visible) { if (!lastSeparator.isNull()) { setToolbarItemState(lastSeparator, true, true); lastSeparator = 0; } canAddSeparator = true; } setToolbarItemState(*it, visible, enabled); } } if (!lastSeparator.isNull()) { setToolbarItemState(lastSeparator, false, true); } }
void ZLApplicationWindow::refreshToolbar(ToolbarType type) { const ZLToolbar::ItemVector &items = application().toolbar(type).items(); bool canAddSeparator = false; ZLToolbar::ItemPtr lastSeparator = 0; for (ZLToolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { switch ((*it)->type()) { case ZLToolbar::Item::TEXT_FIELD: case ZLToolbar::Item::COMBO_BOX: case ZLToolbar::Item::SEARCH_FIELD: case ZLToolbar::Item::PLAIN_BUTTON: case ZLToolbar::Item::MENU_BUTTON: { ZLToolbar::ActionItem &button = (ZLToolbar::ActionItem&)**it; const std::string &id = button.actionId(); const bool visible = application().isActionVisible(id); const bool enabled = application().isActionEnabled(id); if (visible) { if (!lastSeparator.isNull()) { setToolbarItemState(lastSeparator, true, true); lastSeparator = 0; } canAddSeparator = true; } setToolbarItemState(*it, visible, enabled); } break; case ZLToolbar::Item::TOGGLE_BUTTON: { ZLToolbar::ToggleButtonItem &button = (ZLToolbar::ToggleButtonItem&)**it; const std::string &id = button.actionId(); const bool visible = application().isActionVisible(id); const bool enabled = application().isActionEnabled(id); if (visible) { if (!lastSeparator.isNull()) { setToolbarItemState(lastSeparator, true, true); lastSeparator = 0; } canAddSeparator = true; } /* if (!enabled && button.isPressed()) { button.buttonGroup().press(0); //application().doAction(group->UnselectAllButtonsActionId); myToggleButtonLock = true; setToggleButtonState(button); myToggleButtonLock = false; } */ setToolbarItemState(*it, visible, enabled); setToggleButtonState(button); } break; case ZLToolbar::Item::SEPARATOR: if (canAddSeparator) { lastSeparator = *it; canAddSeparator = false; } else { setToolbarItemState(*it, false, true); } break; case ZLToolbar::Item::FILL_SEPARATOR: if (canAddSeparator) { lastSeparator = *it; canAddSeparator = false; } else if (lastSeparator != 0) { setToolbarItemState(lastSeparator, false, true); lastSeparator = *it; } else { setToolbarItemState(*it, false, true); } break; } } if (!lastSeparator.isNull()) { setToolbarItemState(lastSeparator, false, true); } }