-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp index f40aac8..5a8ada6 100644 --- a/noncore/net/mail/libmailwrapper/abstractmail.cpp +++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp | |||
@@ -1,169 +1,172 @@ | |||
1 | #include "abstractmail.h" | 1 | #include "abstractmail.h" |
2 | #include "imapwrapper.h" | 2 | #include "imapwrapper.h" |
3 | #include "pop3wrapper.h" | 3 | #include "pop3wrapper.h" |
4 | #include "nntpwrapper.h" | 4 | #include "nntpwrapper.h" |
5 | #include "mhwrapper.h" | 5 | #include "mhwrapper.h" |
6 | #include "mailtypes.h" | 6 | #include "mailtypes.h" |
7 | 7 | ||
8 | #include <opie2/odebug.h> | 8 | #include <opie2/odebug.h> |
9 | 9 | ||
10 | #include <qfile.h> | 10 | #include <qfile.h> |
11 | #include <qtextstream.h> | 11 | #include <qtextstream.h> |
12 | #include <stdlib.h> | 12 | #include <stdlib.h> |
13 | #include <libetpan/mailmime_content.h> | 13 | #include <libetpan/mailmime_content.h> |
14 | #include <libetpan/mailmime.h> | 14 | #include <libetpan/mailmime.h> |
15 | 15 | ||
16 | using namespace Opie::Core; | 16 | using namespace Opie::Core; |
17 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) | 17 | AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) |
18 | { | 18 | { |
19 | return new IMAPwrapper(a); | 19 | return new IMAPwrapper(a); |
20 | } | 20 | } |
21 | 21 | ||
22 | AbstractMail* AbstractMail::getWrapper(POP3account *a) | 22 | AbstractMail* AbstractMail::getWrapper(POP3account *a) |
23 | { | 23 | { |
24 | return new POP3wrapper(a); | 24 | return new POP3wrapper(a); |
25 | } | 25 | } |
26 | 26 | ||
27 | AbstractMail* AbstractMail::getWrapper(NNTPaccount *a) | 27 | AbstractMail* AbstractMail::getWrapper(NNTPaccount *a) |
28 | { | 28 | { |
29 | return new NNTPwrapper(a); | 29 | return new NNTPwrapper(a); |
30 | } | 30 | } |
31 | 31 | ||
32 | AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name) | 32 | AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name) |
33 | { | 33 | { |
34 | return new MHwrapper(a,name); | 34 | return new MHwrapper(a,name); |
35 | } | 35 | } |
36 | 36 | ||
37 | AbstractMail* AbstractMail::getWrapper(Account*a) | 37 | AbstractMail* AbstractMail::getWrapper(Account*a) |
38 | { | 38 | { |
39 | if (!a) return 0; | 39 | if (!a) return 0; |
40 | switch (a->getType()) { | 40 | switch (a->getType()) { |
41 | case MAILLIB::A_IMAP: | 41 | case MAILLIB::A_IMAP: |
42 | return new IMAPwrapper((IMAPaccount*)a); | 42 | return new IMAPwrapper((IMAPaccount*)a); |
43 | break; | 43 | break; |
44 | case MAILLIB::A_POP3: | 44 | case MAILLIB::A_POP3: |
45 | return new POP3wrapper((POP3account*)a); | 45 | return new POP3wrapper((POP3account*)a); |
46 | break; | 46 | break; |
47 | case MAILLIB::A_NNTP: | 47 | case MAILLIB::A_NNTP: |
48 | return new NNTPwrapper((NNTPaccount*)a); | 48 | return new NNTPwrapper((NNTPaccount*)a); |
49 | break; | 49 | break; |
50 | default: | 50 | default: |
51 | return 0; | 51 | return 0; |
52 | } | 52 | } |
53 | } | 53 | } |
54 | 54 | ||
55 | encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc) | 55 | encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc) |
56 | { | 56 | { |
57 | odebug << "Decode string start" << oendl; | 57 | odebug << "Decode string start" << oendl; |
58 | char*result_text; | 58 | char*result_text; |
59 | size_t index = 0; | 59 | size_t index = 0; |
60 | /* reset for recursive use! */ | 60 | /* reset for recursive use! */ |
61 | size_t target_length = 0; | 61 | size_t target_length = 0; |
62 | result_text = 0; | 62 | result_text = 0; |
63 | int mimetype = MAILMIME_MECHANISM_7BIT; | 63 | int mimetype = MAILMIME_MECHANISM_7BIT; |
64 | if (enc.lower()=="quoted-printable") { | 64 | if (enc.lower()=="quoted-printable") { |
65 | mimetype = MAILMIME_MECHANISM_QUOTED_PRINTABLE; | 65 | mimetype = MAILMIME_MECHANISM_QUOTED_PRINTABLE; |
66 | } else if (enc.lower()=="base64") { | 66 | } else if (enc.lower()=="base64") { |
67 | mimetype = MAILMIME_MECHANISM_BASE64; | 67 | mimetype = MAILMIME_MECHANISM_BASE64; |
68 | } else if (enc.lower()=="8bit") { | 68 | } else if (enc.lower()=="8bit") { |
69 | mimetype = MAILMIME_MECHANISM_8BIT; | 69 | mimetype = MAILMIME_MECHANISM_8BIT; |
70 | } else if (enc.lower()=="binary") { | 70 | } else if (enc.lower()=="binary") { |
71 | mimetype = MAILMIME_MECHANISM_BINARY; | 71 | mimetype = MAILMIME_MECHANISM_BINARY; |
72 | } | 72 | } |
73 | 73 | ||
74 | int err = mailmime_part_parse(text->Content(),text->Length(),&index,mimetype, | 74 | int err = mailmime_part_parse(text->Content(),text->Length(),&index,mimetype, |
75 | &result_text,&target_length); | 75 | &result_text,&target_length); |
76 | 76 | ||
77 | encodedString* result = new encodedString(); | 77 | encodedString* result = new encodedString(); |
78 | if (err == MAILIMF_NO_ERROR) { | 78 | if (err == MAILIMF_NO_ERROR) { |
79 | result->setContent(result_text,target_length); | 79 | result->setContent(result_text,target_length); |
80 | } | 80 | } |
81 | odebug << "Decode string finished" << oendl; | 81 | odebug << "Decode string finished" << oendl; |
82 | return result; | 82 | return result; |
83 | } | 83 | } |
84 | 84 | ||
85 | QString AbstractMail::convert_String(const char*text) | 85 | QString AbstractMail::convert_String(const char*text) |
86 | { | 86 | { |
87 | size_t index = 0; | 87 | size_t index = 0; |
88 | char*res = 0; | 88 | char*res = 0; |
89 | int err = MAILIMF_NO_ERROR; | 89 | int err = MAILIMF_NO_ERROR; |
90 | 90 | ||
91 | if (!text) { | ||
92 | return QString(""); | ||
93 | } | ||
91 | QString result(text); | 94 | QString result(text); |
92 | 95 | ||
93 | err = mailmime_encoded_phrase_parse("iso-8859-1", | 96 | err = mailmime_encoded_phrase_parse("iso-8859-1", |
94 | text, strlen(text),&index, "iso-8859-1",&res); | 97 | text, strlen(text),&index, "iso-8859-1",&res); |
95 | //odebug << "Input: " << text << "" << oendl; | 98 | //odebug << "Input: " << text << "" << oendl; |
96 | if (err == MAILIMF_NO_ERROR && res && strlen(res)) { | 99 | if (err == MAILIMF_NO_ERROR && res && strlen(res)) { |
97 | result = QString(res); | 100 | result = QString(res); |
98 | // odebug << "Res: " << res << ", length: " << strlen(res) << "" << oendl; | 101 | // odebug << "Res: " << res << ", length: " << strlen(res) << "" << oendl; |
99 | } | 102 | } |
100 | if (res) free(res); | 103 | if (res) free(res); |
101 | return result; | 104 | return result; |
102 | } | 105 | } |
103 | 106 | ||
104 | /* cp & paste from launcher */ | 107 | /* cp & paste from launcher */ |
105 | QString AbstractMail::gen_attachment_id() | 108 | QString AbstractMail::gen_attachment_id() |
106 | { | 109 | { |
107 | QFile file( "/proc/sys/kernel/random/uuid" ); | 110 | QFile file( "/proc/sys/kernel/random/uuid" ); |
108 | if (!file.open(IO_ReadOnly ) ) | 111 | if (!file.open(IO_ReadOnly ) ) |
109 | return QString::null; | 112 | return QString::null; |
110 | 113 | ||
111 | QTextStream stream(&file); | 114 | QTextStream stream(&file); |
112 | 115 | ||
113 | return "{" + stream.read().stripWhiteSpace() + "}"; | 116 | return "{" + stream.read().stripWhiteSpace() + "}"; |
114 | } | 117 | } |
115 | 118 | ||
116 | int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) | 119 | int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) |
117 | { | 120 | { |
118 | return 0; | 121 | return 0; |
119 | } | 122 | } |
120 | 123 | ||
121 | QString AbstractMail::defaultLocalfolder() | 124 | QString AbstractMail::defaultLocalfolder() |
122 | { | 125 | { |
123 | QString f = getenv( "HOME" ); | 126 | QString f = getenv( "HOME" ); |
124 | f += "/Applications/opiemail/localmail"; | 127 | f += "/Applications/opiemail/localmail"; |
125 | return f; | 128 | return f; |
126 | } | 129 | } |
127 | 130 | ||
128 | QString AbstractMail::draftFolder() | 131 | QString AbstractMail::draftFolder() |
129 | { | 132 | { |
130 | return QString("Drafts"); | 133 | return QString("Drafts"); |
131 | } | 134 | } |
132 | 135 | ||
133 | /* temporary - will be removed when implemented in all classes */ | 136 | /* temporary - will be removed when implemented in all classes */ |
134 | void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) | 137 | void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) |
135 | { | 138 | { |
136 | } | 139 | } |
137 | 140 | ||
138 | void AbstractMail::mvcpAllMails(const FolderP&fromFolder, | 141 | void AbstractMail::mvcpAllMails(const FolderP&fromFolder, |
139 | const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 142 | const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) |
140 | { | 143 | { |
141 | QValueList<RecMailP> t; | 144 | QValueList<RecMailP> t; |
142 | listMessages(fromFolder->getName(),t); | 145 | listMessages(fromFolder->getName(),t); |
143 | encodedString*st = 0; | 146 | encodedString*st = 0; |
144 | while (t.count()>0) { | 147 | while (t.count()>0) { |
145 | RecMailP r = (*t.begin()); | 148 | RecMailP r = (*t.begin()); |
146 | st = fetchRawBody(r); | 149 | st = fetchRawBody(r); |
147 | if (st) { | 150 | if (st) { |
148 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); | 151 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); |
149 | delete st; | 152 | delete st; |
150 | } | 153 | } |
151 | t.remove(t.begin()); | 154 | t.remove(t.begin()); |
152 | } | 155 | } |
153 | if (moveit) { | 156 | if (moveit) { |
154 | deleteAllMail(fromFolder); | 157 | deleteAllMail(fromFolder); |
155 | } | 158 | } |
156 | } | 159 | } |
157 | 160 | ||
158 | void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 161 | void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) |
159 | { | 162 | { |
160 | encodedString*st = 0; | 163 | encodedString*st = 0; |
161 | st = fetchRawBody(mail); | 164 | st = fetchRawBody(mail); |
162 | if (st) { | 165 | if (st) { |
163 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); | 166 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); |
164 | delete st; | 167 | delete st; |
165 | } | 168 | } |
166 | if (moveit) { | 169 | if (moveit) { |
167 | deleteMail(mail); | 170 | deleteMail(mail); |
168 | } | 171 | } |
169 | } | 172 | } |