summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-10-16 01:04:04 +0300
committerAndrei Karas <akaras@inbox.ru>2014-10-16 01:04:04 +0300
commit4b891f50dfc89318321eeac176415d1bef61aca6 (patch)
treef1da78c30374409d4f329faecb7e7b627674cf21 /src/gui
parentf8f1e69d820e49d93669b17363ab6225456515f7 (diff)
downloadmanaplus-4b891f50dfc89318321eeac176415d1bef61aca6.tar.gz
manaplus-4b891f50dfc89318321eeac176415d1bef61aca6.tar.bz2
manaplus-4b891f50dfc89318321eeac176415d1bef61aca6.tar.xz
manaplus-4b891f50dfc89318321eeac176415d1bef61aca6.zip
Add bank window (hercules only).
also add banklistener to get changed bank balance.
Diffstat (limited to 'src/gui')
-rw-r--r--src/gui/windows/bankwindow.cpp101
-rw-r--r--src/gui/windows/bankwindow.h64
2 files changed, 165 insertions, 0 deletions
diff --git a/src/gui/windows/bankwindow.cpp b/src/gui/windows/bankwindow.cpp
new file mode 100644
index 000000000..f3b46c6d4
--- /dev/null
+++ b/src/gui/windows/bankwindow.cpp
@@ -0,0 +1,101 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2014 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 <http://www.gnu.org/licenses/>.
+ */
+
+#include "gui/windows/bankwindow.h"
+
+#include "units.h"
+
+#include "net/bankhandler.h"
+
+#include "gui/windows/setupwindow.h"
+
+#include "gui/widgets/button.h"
+#include "gui/widgets/containerplacer.h"
+#include "gui/widgets/inttextfield.h"
+#include "gui/widgets/label.h"
+
+#include "utils/gettext.h"
+#include "utils/stringutils.h"
+
+#include "debug.h"
+
+BankWindow *bankWindow = nullptr;
+
+BankWindow::BankWindow() :
+ // TRANSLATORS: bank window name
+ Window(_("Bank"), false, nullptr, "bank.xml"),
+ ActionListener(),
+ BankListener(),
+ // TRANSLATORS: bank window money label
+ mBankMoneyLabel(new Label(this, strprintf(
+ _("Money in bank: %s"), " "))),
+ mInputMoneyTextField(new IntTextField(this, 0, 0, 2147483647)),
+ // TRANSLATORS: bank window button
+ mWithdrawButton(new Button(this, _("Withdraw"), "withdraw", this)),
+ // TRANSLATORS: bank window button
+ mDepositButton(new Button(this, _("Deposit"), "deposit", this))
+{
+ setWindowName("Bank");
+ setCloseButton(true);
+
+ if (setupWindow)
+ setupWindow->registerWindowForReset(this);
+
+ mBankMoneyLabel->adjustSize();
+ ContainerPlacer placer = getPlacer(0, 0);
+ placer(0, 0, mBankMoneyLabel, 7);
+ placer(0, 1, mInputMoneyTextField, 10);
+ placer(0, 2, mDepositButton, 5);
+ placer(5, 2, mWithdrawButton, 5);
+
+ setContentSize(300, 100);
+ setDefaultSize(300, 100, ImageRect::CENTER, 0, 0);
+
+ center();
+ setDefaultSize();
+ loadWindowState();
+ reflowLayout(300);
+ enableVisibleSound(true);
+}
+
+BankWindow::~BankWindow()
+{
+}
+
+void BankWindow::widgetShown(const Event &event)
+{
+ if (event.getSource() == this)
+ bankHandler->check();
+}
+
+void BankWindow::bankMoneyChanged(const int money)
+{
+ mBankMoneyLabel->setCaption(strprintf(_("Money in bank: %s"),
+ Units::formatCurrency(money).c_str()));
+}
+
+void BankWindow::action(const ActionEvent &event)
+{
+ const std::string &eventId = event.getId();
+ if (eventId == "deposit")
+ bankHandler->deposit(mInputMoneyTextField->getValue());
+ else if (eventId == "withdraw")
+ bankHandler->withdraw(mInputMoneyTextField->getValue());
+}
diff --git a/src/gui/windows/bankwindow.h b/src/gui/windows/bankwindow.h
new file mode 100644
index 000000000..739054a78
--- /dev/null
+++ b/src/gui/windows/bankwindow.h
@@ -0,0 +1,64 @@
+/*
+ * The ManaPlus Client
+ * Copyright (C) 2011-2014 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 <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef GUI_WINDOWS_BANKWINDOW_H
+#define GUI_WINDOWS_BANKWINDOW_H
+
+#include "gui/widgets/window.h"
+
+#include "listeners/actionlistener.h"
+#include "listeners/banklistener.h"
+
+class Button;
+class IntTextField;
+class Label;
+
+/**
+ * A dialog to choose between buying or selling at a shop.
+ *
+ * \ingroup Interface
+ */
+class BankWindow final : public Window,
+ public ActionListener,
+ public BankListener
+{
+ public:
+ BankWindow();
+
+ A_DELETE_COPY(BankWindow)
+
+ ~BankWindow();
+
+ void action(const ActionEvent &event) override final;
+
+ void widgetShown(const Event &event) override final;
+
+ void bankMoneyChanged(const int money);
+
+ private:
+ Label *mBankMoneyLabel;
+ IntTextField *mInputMoneyTextField;
+ Button *mWithdrawButton;
+ Button *mDepositButton;
+};
+
+extern BankWindow *bankWindow;
+
+#endif // GUI_WINDOWS_BANKWINDOW_H