diff --git a/apps/openmw/mwgui/recharge.cpp b/apps/openmw/mwgui/recharge.cpp index afca12ad9..f97d8dbf8 100644 --- a/apps/openmw/mwgui/recharge.cpp +++ b/apps/openmw/mwgui/recharge.cpp @@ -33,6 +33,7 @@ namespace MWGui Recharge::Recharge() : WindowBase("openmw_recharge_dialog.layout") + , mItemSelectionDialog(NULL) { getWidget(mBox, "Box"); getWidget(mGemBox, "GemBox"); @@ -45,6 +46,8 @@ Recharge::Recharge() mBox->setDisplayMode(ItemChargeView::DisplayMode_EnchantmentCharge); + mGemIcon->eventMouseButtonClick += MyGUI::newDelegate(this, &Recharge::onSelectItem); + setVisible(false); } @@ -87,6 +90,12 @@ void Recharge::updateView() mGemBox->setVisible(toolBoxVisible); mGemBox->setUserString("Hidden", toolBoxVisible ? "false" : "true"); + if (!toolBoxVisible) + { + mGemIcon->setItem(MWWorld::Ptr()); + mGemIcon->clearUserStrings(); + } + mBox->update(); Gui::Box* box = dynamic_cast(mMainWidget); @@ -102,6 +111,34 @@ void Recharge::onCancel(MyGUI::Widget *sender) exit(); } +void Recharge::onSelectItem(MyGUI::Widget *sender) +{ + delete mItemSelectionDialog; + mItemSelectionDialog = new ItemSelectionDialog("#{sSoulGemsWithSouls}"); + mItemSelectionDialog->eventItemSelected += MyGUI::newDelegate(this, &Recharge::onItemSelected); + mItemSelectionDialog->eventDialogCanceled += MyGUI::newDelegate(this, &Recharge::onItemCancel); + mItemSelectionDialog->setVisible(true); + mItemSelectionDialog->openContainer(MWMechanics::getPlayer()); + mItemSelectionDialog->setFilter(SortFilterItemModel::Filter_OnlyChargedSoulstones); +} + +void Recharge::onItemSelected(MWWorld::Ptr item) +{ + mItemSelectionDialog->setVisible(false); + + mGemIcon->setItem(item); + mGemIcon->setUserString ("ToolTipType", "ItemPtr"); + mGemIcon->setUserData(item); + + MWBase::Environment::get().getSoundManager()->playSound(item.getClass().getDownSoundId(item), 1, 1); + updateView(); +} + +void Recharge::onItemCancel() +{ + mItemSelectionDialog->setVisible(false); +} + void Recharge::onItemClicked(MyGUI::Widget *sender, const MWWorld::Ptr& item) { MWWorld::Ptr gem = *mGemIcon->getUserData(); diff --git a/apps/openmw/mwgui/recharge.hpp b/apps/openmw/mwgui/recharge.hpp index bbcf994dd..cc3db14df 100644 --- a/apps/openmw/mwgui/recharge.hpp +++ b/apps/openmw/mwgui/recharge.hpp @@ -3,6 +3,8 @@ #include "windowbase.hpp" +#include "itemselection.hpp" + namespace MWWorld { class Ptr; @@ -11,6 +13,7 @@ namespace MWWorld namespace MWGui { +class ItemSelectionDialog; class ItemWidget; class ItemChargeView; @@ -32,12 +35,19 @@ protected: ItemWidget* mGemIcon; + ItemSelectionDialog* mItemSelectionDialog; + MyGUI::TextBox* mChargeLabel; MyGUI::Button* mCancelButton; void updateView(); + void onSelectItem(MyGUI::Widget* sender); + + void onItemSelected(MWWorld::Ptr item); + void onItemCancel(); + void onItemClicked (MyGUI::Widget* sender, const MWWorld::Ptr& item); void onCancel (MyGUI::Widget* sender); void onMouseWheel(MyGUI::Widget* _sender, int _rel); diff --git a/files/mygui/openmw_recharge_dialog.layout b/files/mygui/openmw_recharge_dialog.layout index 9301bec92..d620aadab 100644 --- a/files/mygui/openmw_recharge_dialog.layout +++ b/files/mygui/openmw_recharge_dialog.layout @@ -1,22 +1,12 @@ - + - - - - - - - - - - - - + + @@ -26,14 +16,25 @@ - - - - - - + + + + + + + + + + + + + + + + + + -