diff options
author | Andrei Karas <akaras@inbox.ru> | 2016-01-08 23:07:23 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2016-01-08 23:07:23 +0300 |
commit | c74a91d49f6afea0b23acc4d5b4543dfee5e64db (patch) | |
tree | f851e96a451605b244e7fe77b7ad2c57b54a29b5 /src/gui/windows/itemamountwindow.cpp | |
parent | 52865ff4b24e3ea85967e76099b73f2e581a856d (diff) | |
download | mv-c74a91d49f6afea0b23acc4d5b4543dfee5e64db.tar.gz mv-c74a91d49f6afea0b23acc4d5b4543dfee5e64db.tar.bz2 mv-c74a91d49f6afea0b23acc4d5b4543dfee5e64db.tar.xz mv-c74a91d49f6afea0b23acc4d5b4543dfee5e64db.zip |
Allow drag & drop more than one amount at time in craft inventory.
Diffstat (limited to 'src/gui/windows/itemamountwindow.cpp')
-rw-r--r-- | src/gui/windows/itemamountwindow.cpp | 60 |
1 files changed, 50 insertions, 10 deletions
diff --git a/src/gui/windows/itemamountwindow.cpp b/src/gui/windows/itemamountwindow.cpp index 35d7a629f..103fb619b 100644 --- a/src/gui/windows/itemamountwindow.cpp +++ b/src/gui/windows/itemamountwindow.cpp @@ -26,7 +26,6 @@ #include "input/keyboardconfig.h" -#include "net/inventoryhandler.h" #include "gui/viewport.h" #include "gui/models/itemsmodel.h" @@ -34,6 +33,9 @@ #include "gui/popups/itempopup.h" #include "gui/windows/maileditwindow.h" +#ifdef EATHENA_SUPPORT +#include "gui/windows/npcdialog.h" +#endif #include "gui/windows/shopwindow.h" #include "gui/windows/tradewindow.h" @@ -46,6 +48,11 @@ #include "gui/widgets/label.h" #include "gui/widgets/slider.h" +#include "net/inventoryhandler.h" +#ifdef EATHENA_SUPPORT +#include "net/npchandler.h" +#endif + #include "resources/item/item.h" #include "utils/gettext.h" @@ -54,7 +61,7 @@ #include "debug.h" -void ItemAmountWindow::finish(const Item *const item, +void ItemAmountWindow::finish(Item *const item, const int amount, const int price, const Usage usage) @@ -102,6 +109,12 @@ void ItemAmountWindow::finish(const Item *const item, if (mailEditWindow) mailEditWindow->addItem(item, amount); break; + case CraftAdd: + { + NpcDialog *const dialog = npcHandler->getCurrentNpcDialog(); + if (dialog) + dialog->addCraftItem(item, amount, price); // price as slot + } #endif default: break; @@ -336,13 +349,27 @@ void ItemAmountWindow::action(const ActionEvent &event) { if (mItemPriceTextField) { - finish(mItem, mItemAmountTextField->getValue(), - mItemPriceTextField->getValue(), mUsage); + finish(mItem, + mItemAmountTextField->getValue(), + mItemPriceTextField->getValue(), + mUsage); } else { - finish(mItem, mItemAmountTextField->getValue(), - 0, mUsage); + if (mUsage == CraftAdd) + { + finish(mItem, + mItemAmountTextField->getValue(), + mPrice, + mUsage); + } + else + { + finish(mItem, + mItemAmountTextField->getValue(), + 0, + mUsage); + } } close(); return; @@ -431,8 +458,11 @@ void ItemAmountWindow::keyReleased(KeyEvent &event A_UNUSED) mItemAmountSlide->setValue(mItemAmountTextField->getValue()); } -void ItemAmountWindow::showWindow(const Usage usage, Window *const parent, - Item *const item, int maxRange) +void ItemAmountWindow::showWindow(const Usage usage, + Window *const parent, + Item *const item, + int maxRange, + int tag) { if (!item) return; @@ -441,7 +471,17 @@ void ItemAmountWindow::showWindow(const Usage usage, Window *const parent, maxRange = item->getQuantity(); if (usage != ShopBuyAdd && usage != ShopSellAdd && maxRange <= 1) - finish(item, maxRange, 0, usage); + { + if (usage == CraftAdd) + finish(item, maxRange, tag, usage); + else + finish(item, maxRange, 0, usage); + } else - CREATEWIDGET(ItemAmountWindow, usage, parent, item, maxRange); + { + ItemAmountWindow *const window = CREATEWIDGETR(ItemAmountWindow, + usage, parent, item, maxRange); + if (usage == CraftAdd) + window->mPrice = tag; + } } |