From 26b43e7164214e8c9e5cdb8842a79a4fcc1493da Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Tue, 14 Jul 2015 22:42:47 +0300 Subject: Add ability for insert cards into items. --- src/gui/windows/insertcarddialog.cpp | 67 ++++++++++++++++++++++++++++++++++++ src/gui/windows/insertcarddialog.h | 51 +++++++++++++++++++++++++++ 2 files changed, 118 insertions(+) create mode 100644 src/gui/windows/insertcarddialog.cpp create mode 100644 src/gui/windows/insertcarddialog.h (limited to 'src/gui') diff --git a/src/gui/windows/insertcarddialog.cpp b/src/gui/windows/insertcarddialog.cpp new file mode 100644 index 000000000..d34dcc7c6 --- /dev/null +++ b/src/gui/windows/insertcarddialog.cpp @@ -0,0 +1,67 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "gui/windows/insertcarddialog.h" + +#include "shopitem.h" + +#include "gui/models/shopitems.h" + +#include "gui/widgets/button.h" +#include "gui/widgets/shoplistbox.h" + +#include "net/inventoryhandler.h" + +#include "utils/gettext.h" + +#include "debug.h" + +InsertCardDialog::InsertCardDialog(const int itemIndex) : + SellDialog(false), + mItemIndex(itemIndex) +{ + // TRANSLATORS: insert card dialog name + setWindowName(_("Insert card")); + // TRANSLATORS: insert card dialog name + setCaption(_("Insert card")); +} + +void InsertCardDialog::initButtons() +{ + // TRANSLATORS: insert card dialog button + mSellButton->setCaption(_("Insert")); + mSellButton->adjustSize(); + mShopItems->setMergeDuplicates(false); +} + +void InsertCardDialog::sellAction(const ActionEvent &event A_UNUSED) +{ + if (mAmountItems <= 0 || mAmountItems > mMaxItems) + return; + + const int selectedItem = mShopItemList->getSelected(); + const ShopItem *const item = mShopItems->at(selectedItem); + if (!item) + return; + inventoryHandler->insertCard(mItemIndex, item->getInvIndex()); + scheduleDelete(); +} diff --git a/src/gui/windows/insertcarddialog.h b/src/gui/windows/insertcarddialog.h new file mode 100644 index 000000000..938e1b57b --- /dev/null +++ b/src/gui/windows/insertcarddialog.h @@ -0,0 +1,51 @@ +/* + * The ManaPlus Client + * Copyright (C) 2004-2009 The Mana World Development Team + * Copyright (C) 2009-2010 The Mana Developers + * Copyright (C) 2011-2015 The ManaPlus Developers + * + * This file is part of The ManaPlus Client. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef GUI_WINDOWS_INSERTCARDDIALOG_H +#define GUI_WINDOWS_INSERTCARDDIALOG_H + +#ifdef EATHENA_SUPPORT + +#include "gui/widgets/selldialog.h" + +class InsertCardDialog final : public SellDialog +{ + public: + /** + * Constructor. + * + * @see Window::Window + */ + InsertCardDialog(const int itemIndex); + + A_DELETE_COPY(InsertCardDialog) + + protected: + void initButtons() override final; + void sellAction(const ActionEvent &event) override final; + + private: + int mItemIndex; +}; + +#endif // EATHENA_SUPPORT +#endif // GUI_WINDOWS_INSERTCARDDIALOG_H -- cgit v1.2.3-60-g2f50