1 /*
2 * Copyright 2011-2013, Axel Dörfler, axeld@pinc-software.de.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7 #include "Settings.h"
8
9 #include <crypt.h>
10
11
Settings(const char * accountName,const BMessage & archive)12 Settings::Settings(const char* accountName, const BMessage& archive)
13 :
14 fMessage(archive),
15 fAccountName(accountName)
16 {
17 }
18
19
~Settings()20 Settings::~Settings()
21 {
22 }
23
24
25 BNetworkAddress
ServerAddress() const26 Settings::ServerAddress() const
27 {
28 return BNetworkAddress(Server(), Port());
29 }
30
31
32 BString
Server() const33 Settings::Server() const
34 {
35 return fMessage.GetString("server", "");
36 }
37
38
39 uint16
Port() const40 Settings::Port() const
41 {
42 int32 port;
43 if (fMessage.FindInt32("port", &port) == B_OK)
44 return port;
45
46 return UseSSL() ? 993 : 143;
47 }
48
49
50 bool
UseSSL() const51 Settings::UseSSL() const
52 {
53 return fMessage.GetInt32("flavor", 1) == 1;
54 }
55
56
57 BString
Username() const58 Settings::Username() const
59 {
60 return fMessage.GetString("username", "");
61 }
62
63
64 BString
Password() const65 Settings::Password() const
66 {
67 BString password;
68 char* passwd = get_passwd(&fMessage, "cpasswd");
69 if (passwd != NULL) {
70 password = passwd;
71 delete[] passwd;
72 return password;
73 }
74
75 return "";
76 }
77
78
79 BPath
Destination() const80 Settings::Destination() const
81 {
82 BPath path(fMessage.FindString("destination"));
83 if (path.Path() == NULL) {
84 // Use default directory
85 path = "/boot/home/mail";
86 path.Append(fAccountName.String());
87 }
88 return path;
89 }
90
91
92 int32
MaxConnections() const93 Settings::MaxConnections() const
94 {
95 return fMessage.GetInt32("max connections", 1);
96 }
97
98
99 bool
IdleMode() const100 Settings::IdleMode() const
101 {
102 return fMessage.GetBool("idle", true);
103 }
104
105
106 int32
BodyFetchLimit() const107 Settings::BodyFetchLimit() const
108 {
109 return fMessage.GetInt32("partial_download_limit", -1);
110 }
111
112 bool
DeleteRemoteWhenLocal() const113 Settings::DeleteRemoteWhenLocal() const
114 {
115 return fMessage.FindBool("delete_remote_when_local");
116 }
117