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