summaryrefslogtreecommitdiff
authoralwin <alwin>2004-10-17 12:24:39 (UTC)
committer alwin <alwin>2004-10-17 12:24:39 (UTC)
commit03f04b51c84b15f5b6e82a7b427adeef56c16e90 (patch) (unidiff)
treea5677873f4f21c774488a84b1789e640b2fd2846
parent29719c2132c20eb92ba3e9b4e33eccfc0f89c8b4 (diff)
downloadopie-03f04b51c84b15f5b6e82a7b427adeef56c16e90.zip
opie-03f04b51c84b15f5b6e82a7b427adeef56c16e90.tar.gz
opie-03f04b51c84b15f5b6e82a7b427adeef56c16e90.tar.bz2
the bug in libetpan seems to be fixed so we can reuse string encoding again
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp17
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
16using namespace Opie::Core; 16using namespace Opie::Core;
17AbstractMail* AbstractMail::getWrapper(IMAPaccount *a) 17AbstractMail* AbstractMail::getWrapper(IMAPaccount *a)
18{ 18{
19 return new IMAPwrapper(a); 19 return new IMAPwrapper(a);
20} 20}
21 21
22AbstractMail* AbstractMail::getWrapper(POP3account *a) 22AbstractMail* AbstractMail::getWrapper(POP3account *a)
23{ 23{
24 return new POP3wrapper(a); 24 return new POP3wrapper(a);
25} 25}
26 26
27AbstractMail* AbstractMail::getWrapper(NNTPaccount *a) 27AbstractMail* AbstractMail::getWrapper(NNTPaccount *a)
28{ 28{
29 return new NNTPwrapper(a); 29 return new NNTPwrapper(a);
30} 30}
31 31
32AbstractMail* AbstractMail::getWrapper(const QString&a,const QString&name) 32AbstractMail* 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
37AbstractMail* AbstractMail::getWrapper(Account*a) 37AbstractMail* 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
55encodedString* AbstractMail::decode_String(const encodedString*text,const QString&enc) 55encodedString* 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
85QString AbstractMail::convert_String(const char*text) 85QString 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 */
106QString AbstractMail::gen_attachment_id() 105QString 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
117int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) 116int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool)
118{ 117{
119 return 0; 118 return 0;
120} 119}
121 120
122QString AbstractMail::defaultLocalfolder() 121QString 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
129QString AbstractMail::draftFolder() 128QString 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 */
135void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) 134void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &)
136{ 135{
137} 136}
138 137
139void AbstractMail::mvcpAllMails(const FolderP&fromFolder, 138void 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
159void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 158void 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}