-rw-r--r-- | noncore/net/mail/libmailwrapper/abstractmail.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/noncore/net/mail/libmailwrapper/abstractmail.cpp b/noncore/net/mail/libmailwrapper/abstractmail.cpp index 7c1c0e4..f40aac8 100644 --- a/noncore/net/mail/libmailwrapper/abstractmail.cpp +++ b/noncore/net/mail/libmailwrapper/abstractmail.cpp | |||
@@ -1,170 +1,169 @@ | |||
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 | QString result(text); | 91 | QString result(text); |
92 | 92 | ||
93 | /* due a bug in libetpan it isn't usable this moment */ | 93 | err = mailmime_encoded_phrase_parse("iso-8859-1", |
94 | /* int err = mailmime_encoded_phrase_parse("iso-8859-1", | 94 | text, strlen(text),&index, "iso-8859-1",&res); |
95 | text, strlen(text),&index, "iso-8859-1",&res);*/ | 95 | //odebug << "Input: " << text << "" << oendl; |
96 | //odebug << "Input: " << text << "" << oendl; | ||
97 | if (err == MAILIMF_NO_ERROR && res && strlen(res)) { | 96 | if (err == MAILIMF_NO_ERROR && res && strlen(res)) { |
98 | // result = QString(res); | 97 | result = QString(res); |
99 | // odebug << "Res: " << res << ", length: " << strlen(res) << "" << oendl; | 98 | // odebug << "Res: " << res << ", length: " << strlen(res) << "" << oendl; |
100 | } | 99 | } |
101 | if (res) free(res); | 100 | if (res) free(res); |
102 | return result; | 101 | return result; |
103 | } | 102 | } |
104 | 103 | ||
105 | /* cp & paste from launcher */ | 104 | /* cp & paste from launcher */ |
106 | QString AbstractMail::gen_attachment_id() | 105 | QString AbstractMail::gen_attachment_id() |
107 | { | 106 | { |
108 | QFile file( "/proc/sys/kernel/random/uuid" ); | 107 | QFile file( "/proc/sys/kernel/random/uuid" ); |
109 | if (!file.open(IO_ReadOnly ) ) | 108 | if (!file.open(IO_ReadOnly ) ) |
110 | return QString::null; | 109 | return QString::null; |
111 | 110 | ||
112 | QTextStream stream(&file); | 111 | QTextStream stream(&file); |
113 | 112 | ||
114 | return "{" + stream.read().stripWhiteSpace() + "}"; | 113 | return "{" + stream.read().stripWhiteSpace() + "}"; |
115 | } | 114 | } |
116 | 115 | ||
117 | int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) | 116 | int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) |
118 | { | 117 | { |
119 | return 0; | 118 | return 0; |
120 | } | 119 | } |
121 | 120 | ||
122 | QString AbstractMail::defaultLocalfolder() | 121 | QString AbstractMail::defaultLocalfolder() |
123 | { | 122 | { |
124 | QString f = getenv( "HOME" ); | 123 | QString f = getenv( "HOME" ); |
125 | f += "/Applications/opiemail/localmail"; | 124 | f += "/Applications/opiemail/localmail"; |
126 | return f; | 125 | return f; |
127 | } | 126 | } |
128 | 127 | ||
129 | QString AbstractMail::draftFolder() | 128 | QString AbstractMail::draftFolder() |
130 | { | 129 | { |
131 | return QString("Drafts"); | 130 | return QString("Drafts"); |
132 | } | 131 | } |
133 | 132 | ||
134 | /* temporary - will be removed when implemented in all classes */ | 133 | /* temporary - will be removed when implemented in all classes */ |
135 | void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) | 134 | void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) |
136 | { | 135 | { |
137 | } | 136 | } |
138 | 137 | ||
139 | void AbstractMail::mvcpAllMails(const FolderP&fromFolder, | 138 | void AbstractMail::mvcpAllMails(const FolderP&fromFolder, |
140 | const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 139 | const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) |
141 | { | 140 | { |
142 | QValueList<RecMailP> t; | 141 | QValueList<RecMailP> t; |
143 | listMessages(fromFolder->getName(),t); | 142 | listMessages(fromFolder->getName(),t); |
144 | encodedString*st = 0; | 143 | encodedString*st = 0; |
145 | while (t.count()>0) { | 144 | while (t.count()>0) { |
146 | RecMailP r = (*t.begin()); | 145 | RecMailP r = (*t.begin()); |
147 | st = fetchRawBody(r); | 146 | st = fetchRawBody(r); |
148 | if (st) { | 147 | if (st) { |
149 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); | 148 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); |
150 | delete st; | 149 | delete st; |
151 | } | 150 | } |
152 | t.remove(t.begin()); | 151 | t.remove(t.begin()); |
153 | } | 152 | } |
154 | if (moveit) { | 153 | if (moveit) { |
155 | deleteAllMail(fromFolder); | 154 | deleteAllMail(fromFolder); |
156 | } | 155 | } |
157 | } | 156 | } |
158 | 157 | ||
159 | void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) | 158 | void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) |
160 | { | 159 | { |
161 | encodedString*st = 0; | 160 | encodedString*st = 0; |
162 | st = fetchRawBody(mail); | 161 | st = fetchRawBody(mail); |
163 | if (st) { | 162 | if (st) { |
164 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); | 163 | targetWrapper->storeMessage(st->Content(),st->Length(),targetFolder); |
165 | delete st; | 164 | delete st; |
166 | } | 165 | } |
167 | if (moveit) { | 166 | if (moveit) { |
168 | deleteMail(mail); | 167 | deleteMail(mail); |
169 | } | 168 | } |
170 | } | 169 | } |