1 | /* |
2 | Copyright (c) 2009 Constantin Berzan <exit3219@gmail.com> |
3 | |
4 | Based on MailTransport code by: |
5 | Copyright (c) 2006 - 2007 Volker Krause <vkrause@kde.org> |
6 | |
7 | Based on KMail code by: |
8 | Copyright (c) 2001-2002 Michael Haeckel <haeckel@kde.org> |
9 | |
10 | This library is free software; you can redistribute it and/or modify it |
11 | under the terms of the GNU Library General Public License as published by |
12 | the Free Software Foundation; either version 2 of the License, or (at your |
13 | option) any later version. |
14 | |
15 | This library is distributed in the hope that it will be useful, but WITHOUT |
16 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
17 | FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public |
18 | License for more details. |
19 | |
20 | You should have received a copy of the GNU Library General Public License |
21 | along with this library; see the file COPYING.LIB. If not, write to the |
22 | Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
23 | 02110-1301, USA. |
24 | */ |
25 | |
26 | #ifndef MAILTRANSPORT_TRANSPORTCONFIGWIDGET_H |
27 | #define MAILTRANSPORT_TRANSPORTCONFIGWIDGET_H |
28 | |
29 | #include <QWidget> |
30 | |
31 | class KConfigDialogManager; |
32 | |
33 | namespace MailTransport { |
34 | |
35 | class Transport; |
36 | class TransportConfigWidgetPrivate; |
37 | |
38 | /** |
39 | @internal |
40 | |
41 | Abstract configuration widget for a mail transport. It makes sure that |
42 | the configured transport has a unique name, and takes care of writing its |
43 | settings to the config file. If it is a new transport, the caller must |
44 | still call TransportManager::addTransport() to register the transport. |
45 | |
46 | Concrete configuration is done in subclasses SMTPConfigWidget and |
47 | SendmailConfigWidget. Akonadi-type transports are not configured by |
48 | MailTransport directly, instead the configure() method of their agent |
49 | instance is called. |
50 | |
51 | To configure a transport from applications, use |
52 | TransportManager::configureTransport(). You still need to call |
53 | TransportManager::addTransport() if this is a new transport, not registered |
54 | with TransportManager. |
55 | |
56 | @author Constantin Berzan <exit3219@gmail.com> |
57 | @since 4.4 |
58 | */ |
59 | class TransportConfigWidget : public QWidget |
60 | { |
61 | Q_OBJECT |
62 | |
63 | public: |
64 | /** |
65 | Creates a new mail transport configuration widget for the given |
66 | Transport object. |
67 | @param transport The Transport object to configure. |
68 | @param parent The parent widget. |
69 | */ |
70 | explicit TransportConfigWidget( Transport *transport, QWidget *parent = 0 ); |
71 | |
72 | /** |
73 | Destroys the widget. |
74 | */ |
75 | virtual ~TransportConfigWidget(); |
76 | |
77 | /** |
78 | @internal |
79 | Get the KConfigDialogManager for this widget. |
80 | */ |
81 | KConfigDialogManager *configManager() const; |
82 | |
83 | public Q_SLOTS: |
84 | /** |
85 | Saves the transport's settings. |
86 | |
87 | The base implementation writes the settings to the config file and makes |
88 | sure the transport has a unique name. Reimplement in derived classes to |
89 | save your custom settings, and call the base implementation. |
90 | */ |
91 | // TODO: do we also want to check for invalid settings? |
92 | virtual void apply(); |
93 | |
94 | protected: |
95 | TransportConfigWidgetPrivate *const d_ptr; |
96 | TransportConfigWidget( TransportConfigWidgetPrivate &dd, |
97 | Transport *transport, QWidget *parent ); |
98 | |
99 | private: |
100 | Q_DECLARE_PRIVATE( TransportConfigWidget ) |
101 | |
102 | void init( Transport *transport ); |
103 | |
104 | }; |
105 | |
106 | } // namespace MailTransport |
107 | |
108 | #endif // MAILTRANSPORT_TRANSPORTCONFIGWIDGET_H |
109 | |