summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/abstractmail.cpp3
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
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 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 */
105QString AbstractMail::gen_attachment_id() 108QString 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
116int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool) 119int AbstractMail::createMbox(const QString&,const FolderP&,const QString& ,bool)
117{ 120{
118 return 0; 121 return 0;
119} 122}
120 123
121QString AbstractMail::defaultLocalfolder() 124QString 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
128QString AbstractMail::draftFolder() 131QString 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 */
134void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &) 137void AbstractMail::deleteMails(const QString &,const QValueList<Opie::Core::OSmartPointer<RecMail> > &)
135{ 138{
136} 139}
137 140
138void AbstractMail::mvcpAllMails(const FolderP&fromFolder, 141void 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
158void AbstractMail::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 161void 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}