1/*-
2 * Copyright (c) 2000 Alex Zepeda <zipzippy@sonic.net>
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 */
27
28#ifndef _KEMAILSETTINGS_H
29#define _KEMAILSETTINGS_H
30
31#include <QtCore/QString>
32#include <QtCore/QStringList>
33
34#include <kio/kio_export.h>
35
36class KEMailSettingsPrivate;
37
38
39/**
40 * This is just a small class to facilitate accessing e-mail settings in
41 * a sane way, and allowing any program to manage multiple e-mail
42 * profiles effortlessly
43 *
44 * @author Alex Zepeda zipzippy@sonic.net
45 **/
46class KIO_EXPORT KEMailSettings {
47public:
48 /**
49 * The list of settings that I thought of when I wrote this
50 * class. Any extra settings thought of later can be accessed
51 * easily with getExtendedSetting and setExtendedSetting.
52 * @see getSetting()
53 * @see setSetting()
54 * @see getExtendedSetting()
55 * @see setExtendedSetting()
56 **/
57 enum Setting {
58 ClientProgram,
59 ClientTerminal,
60 RealName,
61 EmailAddress,
62 ReplyToAddress,
63 Organization,
64 OutServer,
65 OutServerLogin,
66 OutServerPass,
67 OutServerType,
68 OutServerCommand,
69 OutServerTLS,
70 InServer,
71 InServerLogin,
72 InServerPass,
73 InServerType,
74 InServerMBXType,
75 InServerTLS
76 };
77
78 /**
79 * The various extensions allowed.
80 **/
81 enum Extension {
82 POP3,
83 SMTP,
84 OTHER
85 };
86
87 /**
88 * Default constructor, just sets things up.
89 **/
90 KEMailSettings();
91
92 /**
93 * Default destructor, nothing to see here.
94 **/
95 ~KEMailSettings();
96
97 /**
98 * List of profiles available.
99 * @return the list of profiles
100 **/
101 QStringList profiles() const;
102
103 /**
104 * Returns the name of the current profile.
105 * @returns what profile we're currently using
106 **/
107 QString currentProfileName() const;
108
109 /**
110 * Change the current profile.
111 * @param s the name of the new profile
112 **/
113 void setProfile (const QString &s);
114
115 /**
116 * Returns the name of the default profile.
117 * @returns the name of the one that's currently default QString() if none
118 **/
119 QString defaultProfileName() const;
120
121 /**
122 * Sets a new default.
123 * @param def the new default
124 **/
125 void setDefault(const QString &def);
126
127 /**
128 * Get one of the predefined "basic" settings.
129 * @param s the setting to get
130 * @return the value of the setting, or QString() if not
131 * set
132 **/
133 QString getSetting(KEMailSettings::Setting s) const;
134
135 /**
136 * Set one of the predefined "basic" settings.
137 * @param s the setting to set
138 * @param v the new value of the setting, or QString() to
139 * unset
140 **/
141 void setSetting(KEMailSettings::Setting s, const QString &v);
142
143private:
144 KEMailSettingsPrivate* const p;
145};
146
147#endif
148