void QApplicationWindow::refresh() { const ZLApplication::Toolbar::ItemVector &items = application().toolbar().items(); bool isVisibilityChanged = false; if (myToolbarMask.size() != items.size()) { isVisibilityChanged = true; myToolbarMask.clear(); myToolbarMask.assign(items.size(), false); } std::vector<bool>::iterator bt = myToolbarMask.begin(); for (ZLApplication::Toolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { if ((*it)->isButton()) { const ZLApplication::Toolbar::ButtonItem &button = (const ZLApplication::Toolbar::ButtonItem&)**it; if (application().isActionVisible(button.actionId()) != *bt) { *bt = !*bt; isVisibilityChanged = true; } ++bt; } } if (isVisibilityChanged) { bt = myToolbarMask.begin(); centralWidget()->hide(); menuBar()->clear(); for (ZLApplication::Toolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { if ((*it)->isButton()) { const ZLApplication::Toolbar::ButtonItem &button = (const ZLApplication::Toolbar::ButtonItem&)**it; if (*bt) { const QPixmap &pixmap = Resource::loadPixmap((ZLApplication::ApplicationName() + "/" + button.iconName()).c_str()); menuBar()->insertItem(pixmap, this, SLOT(emptySlot()), 0, button.actionId()); } ++bt; } } centralWidget()->show(); } for (ZLApplication::Toolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { if ((*it)->isButton()) { const ZLApplication::Toolbar::ButtonItem &button = (const ZLApplication::Toolbar::ButtonItem&)**it; int id = button.actionId(); if (menuBar()->findItem(id) != 0) { menuBar()->setItemEnabled(id, application().isActionEnabled(id)); } } } }
void CraftingSession::emptySlots(uint32 counter) { uint8 amount = mManufacturingSchematic->getManufactureSlots()->size(); for (uint8 i = 0; i < amount; i++) { ManufactureSlot* manSlot = mManufacturingSchematic->getManufactureSlots()->at(i); if(manSlot) { emptySlot(i,manSlot,mOwner->getEquipManager()->getEquippedObject(CreatureEquipSlot_Inventory)->getId()); gMessageLib->sendCraftAcknowledge(opCraftEmptySlot,CraftError_None,static_cast<uint8>(counter),mOwner); } } }
void QApplicationWindow::addToolbarItem(ZLApplication::Toolbar::ItemPtr item) { if (item->isButton()) { const ZLApplication::Toolbar::ButtonItem &buttonItem = (const ZLApplication::Toolbar::ButtonItem&)*item; menuBar()->insertItem(QPixmap((ImageDirectory + "/" + ZLApplication::ApplicationName() + "/" + buttonItem.iconName() + ".png").c_str()), this, SLOT(emptySlot()), 0, buttonItem.actionId()); } }
void ZLQtApplicationWindow::refresh() { const ZLToolbar::ItemVector &items = application().toolbar().items(); bool isVisibilityChanged = false; if (myToolbarMask.size() != items.size()) { isVisibilityChanged = true; myToolbarMask.clear(); myToolbarMask.assign(items.size(), false); } std::vector<bool>::iterator bt = myToolbarMask.begin(); for (ZLToolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { switch ((*it)->type()) { case ZLToolbar::Item::PLAIN_BUTTON: case ZLToolbar::Item::MENU_BUTTON: case ZLToolbar::Item::TOGGLE_BUTTON: { const ZLToolbar::AbstractButtonItem &button = (const ZLToolbar::AbstractButtonItem&)**it; if (application().isActionVisible(button.actionId()) != *bt) { *bt = !*bt; isVisibilityChanged = true; } ++bt; break; } } } if (isVisibilityChanged) { bt = myToolbarMask.begin(); centralWidget()->hide(); menuBar()->clear(); for (ZLToolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { switch ((*it)->type()) { case ZLToolbar::Item::PLAIN_BUTTON: case ZLToolbar::Item::MENU_BUTTON: case ZLToolbar::Item::TOGGLE_BUTTON: { const ZLToolbar::AbstractButtonItem &button = (const ZLToolbar::AbstractButtonItem&)**it; if (*bt) { const QPixmap &pixmap = Resource::loadPixmap((ZLUnicodeUtil::toLower(ZLibrary::ApplicationName()) + ZLibrary::FileNameDelimiter + button.iconName()).c_str()); const std::string &actionId = button.actionId(); std::map<std::string,int>::const_iterator iter = myActionIndices.find(actionId); int actionIndex; if (iter != myActionIndices.end()) { actionIndex = iter->second; } else { actionIndex = myActionIndices.size() + 1; myActionIndices[actionId] = actionIndex; myActionIds[actionIndex] = actionId; } menuBar()->insertItem(pixmap, this, SLOT(emptySlot()), 0, actionIndex); } ++bt; break; } } } centralWidget()->show(); } for (ZLToolbar::ItemVector::const_iterator it = items.begin(); it != items.end(); ++it) { switch ((*it)->type()) { case ZLToolbar::Item::PLAIN_BUTTON: case ZLToolbar::Item::MENU_BUTTON: case ZLToolbar::Item::TOGGLE_BUTTON: { const ZLToolbar::AbstractButtonItem &button = (const ZLToolbar::AbstractButtonItem&)**it; const std::string &actionId = button.actionId(); const int id = myActionIndices[actionId]; if (menuBar()->findItem(id) != 0) { menuBar()->setItemEnabled(id, application().isActionEnabled(actionId)); } break; } } } }
void Kolf::initGUI() { newAction = KStdGameAction::gameNew(this, SLOT(newGame()), actionCollection()); newAction->setText(newAction->text() + QString("...")); endAction = KStdGameAction::end(this, SLOT(closeGame()), actionCollection()); printAction = KStdGameAction::print(this, SLOT(print()), actionCollection()); (void) KStdGameAction::quit(this, SLOT(close()), actionCollection()); saveAction = KStdAction::save(this, SLOT(save()), actionCollection(), "game_save"); saveAction->setText(i18n("Save &Course")); saveAsAction = KStdAction::saveAs(this, SLOT(saveAs()), actionCollection(), "game_save_as"); saveAsAction->setText(i18n("Save &Course As...")); saveGameAction = new KAction(i18n("&Save Game"), 0, this, SLOT(saveGame()), actionCollection(), "savegame"); saveGameAsAction = new KAction(i18n("&Save Game As..."), 0, this, SLOT(saveGameAs()), actionCollection(), "savegameas"); loadGameAction = KStdGameAction::load(this, SLOT(loadGame()), actionCollection()); loadGameAction->setText(i18n("Load Saved Game...")); highScoreAction = KStdGameAction::highscores(this, SLOT(showHighScores()), actionCollection()); editingAction = new KToggleAction(i18n("&Edit"), "pencil", CTRL+Key_E, this, SLOT(emptySlot()), actionCollection(), "editing"); newHoleAction = new KAction(i18n("&New"), "filenew", CTRL+SHIFT+Key_N, this, SLOT(emptySlot()), actionCollection(), "newhole"); clearHoleAction = new KAction(KStdGuiItem::clear().text(), "locationbar_erase", CTRL+Key_Delete, this, SLOT(emptySlot()), actionCollection(), "clearhole"); resetHoleAction = new KAction(i18n("&Reset"), CTRL+Key_R, this, SLOT(emptySlot()), actionCollection(), "resethole"); undoShotAction = KStdAction::undo(this, SLOT(emptySlot()), actionCollection(), "undoshot"); undoShotAction->setText(i18n("&Undo Shot")); //replayShotAction = new KAction(i18n("&Replay Shot"), 0, this, SLOT(emptySlot()), actionCollection(), "replay"); holeAction = new KListAction(i18n("Switch to Hole"), 0, this, SLOT(emptySlot()), actionCollection(), "switchhole"); nextAction = new KAction(i18n("&Next Hole"), "forward", KStdAccel::shortcut(KStdAccel::Forward), this, SLOT(emptySlot()), actionCollection(), "nexthole"); prevAction = new KAction(i18n("&Previous Hole"), "back", KStdAccel::shortcut(KStdAccel::Back), this, SLOT(emptySlot()), actionCollection(), "prevhole"); firstAction = new KAction(i18n("&First Hole"), "gohome", KStdAccel::shortcut(KStdAccel::Home), this, SLOT(emptySlot()), actionCollection(), "firsthole"); lastAction = new KAction(i18n("&Last Hole"), CTRL+SHIFT+Key_End, this, SLOT(emptySlot()), actionCollection(), "lasthole"); randAction = new KAction(i18n("&Random Hole"), "goto", 0, this, SLOT(emptySlot()), actionCollection(), "randhole"); useMouseAction = new KToggleAction(i18n("Enable &Mouse for Moving Putter"), 0, this, SLOT(emptySlot()), actionCollection(), "usemouse"); useMouseAction->setCheckedState(i18n("Disable &Mouse for Moving Putter")); connect(useMouseAction, SIGNAL(toggled(bool)), this, SLOT(useMouseChanged(bool))); KConfig *config = kapp->config(); config->setGroup("Settings"); useMouseAction->setChecked(config->readBoolEntry("useMouse", true)); useAdvancedPuttingAction = new KToggleAction(i18n("Enable &Advanced Putting"), 0, this, SLOT(emptySlot()), actionCollection(), "useadvancedputting"); useAdvancedPuttingAction->setCheckedState(i18n("Disable &Advanced Putting")); connect(useAdvancedPuttingAction, SIGNAL(toggled(bool)), this, SLOT(useAdvancedPuttingChanged(bool))); useAdvancedPuttingAction->setChecked(config->readBoolEntry("useAdvancedPutting", false)); showInfoAction = new KToggleAction(i18n("Show &Info"), "info", CTRL+Key_I, this, SLOT(emptySlot()), actionCollection(), "showinfo"); showInfoAction->setCheckedState(i18n("Hide &Info")); connect(showInfoAction, SIGNAL(toggled(bool)), this, SLOT(showInfoChanged(bool))); showInfoAction->setChecked(config->readBoolEntry("showInfo", false)); showGuideLineAction = new KToggleAction(i18n("Show Putter &Guideline"), 0, this, SLOT(emptySlot()), actionCollection(), "showguideline"); showGuideLineAction->setCheckedState(i18n("Hide Putter &Guideline")); connect(showGuideLineAction, SIGNAL(toggled(bool)), this, SLOT(showGuideLineChanged(bool))); showGuideLineAction->setChecked(config->readBoolEntry("showGuideLine", true)); KToggleAction *act=new KToggleAction(i18n("Enable All Dialog Boxes"), 0, this, SLOT(enableAllMessages()), actionCollection(), "enableAll"); act->setCheckedState(i18n("Disable All Dialog Boxes")); soundAction = new KToggleAction(i18n("Play &Sounds"), 0, this, SLOT(emptySlot()), actionCollection(), "sound"); connect(soundAction, SIGNAL(toggled(bool)), this, SLOT(soundChanged(bool))); soundAction->setChecked(config->readBoolEntry("sound", true)); (void) new KAction(i18n("&Reload Plugins"), 0, this, SLOT(initPlugins()), actionCollection(), "reloadplugins"); (void) new KAction(i18n("Show &Plugins"), 0, this, SLOT(showPlugins()), actionCollection(), "showplugins"); aboutAction = new KAction(i18n("&About Course"), 0, this, SLOT(emptySlot()), actionCollection(), "aboutcourse"); tutorialAction = new KAction(i18n("&Tutorial"), 0, this, SLOT(tutorial()), actionCollection(), "tutorial"); statusBar(); setupGUI(); }
void CraftingSession::handleFillSlotResourceRewrite(uint64 resContainerId,uint32 slotId,uint32 unknown,uint8 counter) { // update resource container ResourceContainer* resContainer = dynamic_cast<ResourceContainer*>(gWorldManager->getObjectById(resContainerId)); ManufactureSlot* manSlot = mManufacturingSchematic->getManufactureSlots()->at(slotId); //bool resourceBool = false; bool smallupdate = false; if(!resContainer) { gMessageLib->sendCraftAcknowledge(opCraftFillSlot,CraftError_Ingredient_Not_In_Inventory,counter,mOwner); } if(!manSlot) { gMessageLib->sendCraftAcknowledge(opCraftFillSlot,CraftError_Invalid_Slot,counter,mOwner); } uint32 availableAmount = resContainer->getAmount(); uint32 totalNeededAmount = manSlot->mDraftSlot->getNecessaryAmount(); uint32 existingAmount = 0; uint64 containerResId = resContainer->getResourceId(); // see if something is filled already existingAmount = manSlot->getFilledAmount(); //check whether we have the same resource - if it's different replace the current resource with the new one if(manSlot->getResourceId() && (containerResId != manSlot->getResourceId())) { // remove the old resource from the slot and input the new one. emptySlot(slotId, manSlot, manSlot->getResourceId()); //gMessageLib->sendCraftAcknowledge(opCraftFillSlot,CraftError_Internal_Invalid_Ingredient,counter,mOwner); //return; } else { // update the needed amount totalNeededAmount -= existingAmount; } // fail if its already complete if(!totalNeededAmount) { gMessageLib->sendCraftAcknowledge(opCraftFillSlot,CraftError_Slot_Already_Full,counter,mOwner); return; } uint32 takeAmount = 0; if(availableAmount >= totalNeededAmount) { takeAmount = totalNeededAmount; } else { takeAmount = availableAmount; } // add it to the slot get the update type smallupdate = manSlot->addResourcetoSlot(containerResId,takeAmount,manSlot->mDraftSlot->getType()); // update the container amount uint32 newContainerAmount = availableAmount - takeAmount; updateResourceContainer(resContainer->getId(),newContainerAmount); // update the slot total resource amount manSlot->setFilledAmount(manSlot->getFilledAmount()+takeAmount); if(manSlot->getFilledAmount() == manSlot->mDraftSlot->getNecessaryAmount()) { // update the total count of filled slots mManufacturingSchematic->addFilledSlot(); gMessageLib->sendUpdateFilledManufactureSlots(mManufacturingSchematic,mOwner); } // update the slot contents, send all slots on first fill // we need to make sure we only update lists with changes, so the lists dont desynchronize! if(!mFirstFill) { mFirstFill = true; gMessageLib->sendDeltasMSCO_7(mManufacturingSchematic,mOwner); } else if(smallupdate == true) { gMessageLib->sendManufactureSlotUpdateSmall(mManufacturingSchematic,static_cast<uint8>(slotId),mOwner); } else { gMessageLib->sendManufactureSlotUpdate(mManufacturingSchematic,static_cast<uint8>(slotId),mOwner); } // done gMessageLib->sendCraftAcknowledge(opCraftFillSlot,CraftError_None,counter,mOwner); }