1 /* 2 * The ManaPlus Client 3 * Copyright (C) 2011-2019 The ManaPlus Developers 4 * Copyright (C) 2019-2021 Andrei Karas 5 * 6 * This file is part of The ManaPlus Client. 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License as published by 10 * the Free Software Foundation; either version 2 of the License, or 11 * any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22 #ifndef GUI_WINDOWS_MAILEDITWINDOW_H 23 #define GUI_WINDOWS_MAILEDITWINDOW_H 24 25 #include "gui/widgets/window.h" 26 27 #include "listeners/actionlistener.h" 28 #include "listeners/focuslistener.h" 29 30 class Button; 31 class IntTextField; 32 class Inventory; 33 class Item; 34 class ItemContainer; 35 class Label; 36 class ScrollArea; 37 class TextField; 38 39 class MailEditWindow final : public Window, 40 public ActionListener, 41 public FocusListener 42 { 43 public: 44 MailEditWindow(); 45 46 A_DELETE_COPY(MailEditWindow) 47 48 ~MailEditWindow() override final; 49 50 void action(const ActionEvent &event) override final; 51 52 void addItem(const Item *const item, const int amount); 53 54 void setSubject(const std::string &str); 55 56 void setTo(const std::string &str); 57 58 void setMessage(const std::string &str); 59 60 void close() override final; 61 62 Inventory *getInventory() const A_WARN_UNUSED; 63 64 void updateItems(); 65 66 void focusLost(const Event &event) override final; 67 68 void validatedTo(); 69 70 private: 71 void sendMail(); 72 73 Button *mSendButton; 74 Button *mCloseButton; 75 Button *mAddButton; 76 Label *mToLabel; 77 Label *mSubjectLabel; 78 Label *mMoneyLabel; 79 Label *mItemLabel; 80 Label *mMessageLabel; 81 TextField *mToField; 82 TextField *mSubjectField; 83 IntTextField *mMoneyField; 84 TextField *mMessageField; 85 Inventory *mInventory; 86 ItemContainer *mItemContainer; 87 ScrollArea *mItemScrollArea; 88 bool mUseMail2; 89 }; 90 91 extern MailEditWindow *mailEditWindow; 92 93 #endif // GUI_WINDOWS_MAILEDITWINDOW_H 94