Diffstat (limited to 'kmicromail/libmailwrapper/mhwrapper.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r-- | kmicromail/libmailwrapper/mhwrapper.cpp | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/kmicromail/libmailwrapper/mhwrapper.cpp b/kmicromail/libmailwrapper/mhwrapper.cpp index 962dac0..641d4d9 100644 --- a/kmicromail/libmailwrapper/mhwrapper.cpp +++ b/kmicromail/libmailwrapper/mhwrapper.cpp | |||
@@ -20,97 +20,96 @@ MHwrapper::MHwrapper(const QString & mbox_dir,const QString&mbox_name) | |||
20 | } | 20 | } |
21 | //odebug << MHPath << oendl; | 21 | //odebug << MHPath << oendl; |
22 | QDir dir(MHPath); | 22 | QDir dir(MHPath); |
23 | if (!dir.exists()) { | 23 | if (!dir.exists()) { |
24 | dir.mkdir(MHPath); | 24 | dir.mkdir(MHPath); |
25 | } | 25 | } |
26 | init_storage(); | 26 | init_storage(); |
27 | } | 27 | } |
28 | } | 28 | } |
29 | 29 | ||
30 | void MHwrapper::init_storage() | 30 | void MHwrapper::init_storage() |
31 | { | 31 | { |
32 | int r; | 32 | int r; |
33 | QString pre = MHPath; | 33 | QString pre = MHPath; |
34 | if (!m_storage) { | 34 | if (!m_storage) { |
35 | m_storage = mailstorage_new(NULL); | 35 | m_storage = mailstorage_new(NULL); |
36 | r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0); | 36 | r = mh_mailstorage_init(m_storage,(char*)pre.latin1(),0,0,0); |
37 | if (r != MAIL_NO_ERROR) { | 37 | if (r != MAIL_NO_ERROR) { |
38 | qDebug(" error init storage "); | 38 | qDebug(" error init storage "); |
39 | mailstorage_free(m_storage); | 39 | mailstorage_free(m_storage); |
40 | m_storage = 0; | 40 | m_storage = 0; |
41 | return; | 41 | return; |
42 | } | 42 | } |
43 | } | 43 | } |
44 | r = mailstorage_connect(m_storage); | 44 | r = mailstorage_connect(m_storage); |
45 | if (r!=MAIL_NO_ERROR) { | 45 | if (r!=MAIL_NO_ERROR) { |
46 | qDebug("error connecting storage "); | 46 | qDebug("error connecting storage "); |
47 | mailstorage_free(m_storage); | 47 | mailstorage_free(m_storage); |
48 | m_storage = 0; | 48 | m_storage = 0; |
49 | } | 49 | } |
50 | } | 50 | } |
51 | 51 | ||
52 | void MHwrapper::clean_storage() | 52 | void MHwrapper::clean_storage() |
53 | { | 53 | { |
54 | if (m_storage) { | 54 | if (m_storage) { |
55 | mailstorage_disconnect(m_storage); | 55 | mailstorage_disconnect(m_storage); |
56 | mailstorage_free(m_storage); | 56 | mailstorage_free(m_storage); |
57 | m_storage = 0; | 57 | m_storage = 0; |
58 | } | 58 | } |
59 | } | 59 | } |
60 | 60 | ||
61 | MHwrapper::~MHwrapper() | 61 | MHwrapper::~MHwrapper() |
62 | { | 62 | { |
63 | clean_storage(); | 63 | clean_storage(); |
64 | } | 64 | } |
65 | 65 | ||
66 | void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb ) | 66 | void MHwrapper::listMessages(const QString & mailbox, QValueList<Opie::Core::OSmartPointer<RecMail> > &target, int maxSizeInKb ) |
67 | { | 67 | { |
68 | qDebug("MHwrapper::listMessages "); | ||
69 | init_storage(); | 68 | init_storage(); |
70 | if (!m_storage) { | 69 | if (!m_storage) { |
71 | return; | 70 | return; |
72 | } | 71 | } |
73 | QString f = buildPath(mailbox); | 72 | QString f = buildPath(mailbox); |
74 | int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); | 73 | int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); |
75 | if (r!=MAIL_NO_ERROR) { | 74 | if (r!=MAIL_NO_ERROR) { |
76 | qDebug("listMessages: error selecting folder! "); | 75 | qDebug("listMessages: error selecting folder! "); |
77 | return; | 76 | return; |
78 | } | 77 | } |
79 | parseList(target,m_storage->sto_session,f, false, maxSizeInKb ); | 78 | parseList(target,m_storage->sto_session,f, false, maxSizeInKb ); |
80 | Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); | 79 | Global::statusMessage(tr("Mailbox has %1 mail(s)").arg(target.count())); |
81 | } | 80 | } |
82 | 81 | ||
83 | QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders() | 82 | QValueList<Opie::Core::OSmartPointer<Folder> >* MHwrapper::listFolders() |
84 | { | 83 | { |
85 | QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >(); | 84 | QValueList<Opie::Core::OSmartPointer<Folder> >* folders = new QValueList<Opie::Core::OSmartPointer<Folder> >(); |
86 | /* this is needed! */ | 85 | /* this is needed! */ |
87 | if (m_storage) mailstorage_disconnect(m_storage); | 86 | if (m_storage) mailstorage_disconnect(m_storage); |
88 | init_storage(); | 87 | init_storage(); |
89 | if (!m_storage) { | 88 | if (!m_storage) { |
90 | return folders; | 89 | return folders; |
91 | } | 90 | } |
92 | mail_list*flist = 0; | 91 | mail_list*flist = 0; |
93 | clistcell*current=0; | 92 | clistcell*current=0; |
94 | int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); | 93 | int r = mailsession_list_folders(m_storage->sto_session,NULL,&flist); |
95 | if (r != MAIL_NO_ERROR || !flist) { | 94 | if (r != MAIL_NO_ERROR || !flist) { |
96 | qDebug("error getting folder list "); | 95 | qDebug("error getting folder list "); |
97 | return folders; | 96 | return folders; |
98 | } | 97 | } |
99 | for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { | 98 | for (current=clist_begin(flist->mb_list);current!=0;current=clist_next(current)) { |
100 | QString t = (char*)current->data; | 99 | QString t = (char*)current->data; |
101 | t.replace(0,MHPath.length(),""); | 100 | t.replace(0,MHPath.length(),""); |
102 | folders->append(new MHFolder(t,MHPath)); | 101 | folders->append(new MHFolder(t,MHPath)); |
103 | } | 102 | } |
104 | mail_list_free(flist); | 103 | mail_list_free(flist); |
105 | return folders; | 104 | return folders; |
106 | } | 105 | } |
107 | 106 | ||
108 | void MHwrapper::deleteMail(const RecMailP&mail) | 107 | void MHwrapper::deleteMail(const RecMailP&mail) |
109 | { | 108 | { |
110 | init_storage(); | 109 | init_storage(); |
111 | if (!m_storage) { | 110 | if (!m_storage) { |
112 | return; | 111 | return; |
113 | } | 112 | } |
114 | int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); | 113 | int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); |
115 | if (r!=MAIL_NO_ERROR) { | 114 | if (r!=MAIL_NO_ERROR) { |
116 | qDebug("error selecting folder! "); | 115 | qDebug("error selecting folder! "); |
@@ -149,97 +148,96 @@ RecBodyP MHwrapper::fetchBody( const RecMailP &mail ) | |||
149 | } | 148 | } |
150 | body = parseMail(msg); | 149 | body = parseMail(msg); |
151 | mailmessage_fetch_result_free(msg,data); | 150 | mailmessage_fetch_result_free(msg,data); |
152 | return body; | 151 | return body; |
153 | } | 152 | } |
154 | 153 | ||
155 | void MHwrapper::mbox_progress( size_t current, size_t maximum ) | 154 | void MHwrapper::mbox_progress( size_t current, size_t maximum ) |
156 | { | 155 | { |
157 | qDebug("MBox Progress %d of %d",current,maximum ); | 156 | qDebug("MBox Progress %d of %d",current,maximum ); |
158 | //odebug << "MH " << current << " von " << maximum << "" << oendl; | 157 | //odebug << "MH " << current << " von " << maximum << "" << oendl; |
159 | } | 158 | } |
160 | 159 | ||
161 | QString MHwrapper::buildPath(const QString&p) | 160 | QString MHwrapper::buildPath(const QString&p) |
162 | { | 161 | { |
163 | QString f=""; | 162 | QString f=""; |
164 | if (p.length()==0||p=="/") | 163 | if (p.length()==0||p=="/") |
165 | return MHPath; | 164 | return MHPath; |
166 | if (!p.startsWith(MHPath)) { | 165 | if (!p.startsWith(MHPath)) { |
167 | f+=MHPath; | 166 | f+=MHPath; |
168 | } | 167 | } |
169 | if (!p.startsWith("/")) { | 168 | if (!p.startsWith("/")) { |
170 | f+="/"; | 169 | f+="/"; |
171 | } | 170 | } |
172 | f+=p; | 171 | f+=p; |
173 | return f; | 172 | return f; |
174 | } | 173 | } |
175 | 174 | ||
176 | int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool ) | 175 | int MHwrapper::createMbox(const QString&folder,const FolderP&pfolder,const QString&,bool ) |
177 | { | 176 | { |
178 | init_storage(); | 177 | init_storage(); |
179 | if (!m_storage) { | 178 | if (!m_storage) { |
180 | return 0; | 179 | return 0; |
181 | } | 180 | } |
182 | QString f; | 181 | QString f; |
183 | if (!pfolder) { | 182 | if (!pfolder) { |
184 | // toplevel folder | 183 | // toplevel folder |
185 | f = buildPath(folder); | 184 | f = buildPath(folder); |
186 | } else { | 185 | } else { |
187 | f = pfolder->getName(); | 186 | f = pfolder->getName(); |
188 | f+="/"; | 187 | f+="/"; |
189 | f+=folder; | 188 | f+=folder; |
190 | } | 189 | } |
191 | 190 | ||
192 | int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); | 191 | int r = mailsession_create_folder(m_storage->sto_session,(char*)f.latin1()); |
193 | if (r != MAIL_NO_ERROR) { | 192 | if (r != MAIL_NO_ERROR) { |
194 | qDebug("error creating folder "); | 193 | qDebug("error creating folder "); |
195 | return 0; | 194 | return 0; |
196 | } | 195 | } |
197 | qDebug("Folder created "); | ||
198 | return 1; | 196 | return 1; |
199 | } | 197 | } |
200 | 198 | ||
201 | void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) | 199 | void MHwrapper::storeMessage(const char*msg,size_t length, const QString&Folder) |
202 | { | 200 | { |
203 | init_storage(); | 201 | init_storage(); |
204 | if (!m_storage) { | 202 | if (!m_storage) { |
205 | return; | 203 | return; |
206 | } | 204 | } |
207 | QString f = buildPath(Folder); | 205 | QString f = buildPath(Folder); |
208 | int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); | 206 | int r = mailsession_select_folder(m_storage->sto_session,(char*)f.latin1()); |
209 | if (r!=MAIL_NO_ERROR) { | 207 | if (r!=MAIL_NO_ERROR) { |
210 | qDebug("error selecting folder! "); | 208 | qDebug("error selecting folder! "); |
211 | return; | 209 | return; |
212 | } | 210 | } |
213 | r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); | 211 | r = mailsession_append_message(m_storage->sto_session,(char*)msg,length); |
214 | if (r!=MAIL_NO_ERROR) { | 212 | if (r!=MAIL_NO_ERROR) { |
215 | qDebug("error storing mail "); | 213 | qDebug("error storing mail "); |
216 | } | 214 | } |
217 | return; | 215 | return; |
218 | } | 216 | } |
219 | 217 | ||
220 | encodedString* MHwrapper::fetchRawBody(const RecMailP&mail) | 218 | encodedString* MHwrapper::fetchRawBody(const RecMailP&mail) |
221 | { | 219 | { |
222 | encodedString*result = 0; | 220 | encodedString*result = 0; |
223 | init_storage(); | 221 | init_storage(); |
224 | if (!m_storage) { | 222 | if (!m_storage) { |
225 | return result; | 223 | return result; |
226 | } | 224 | } |
227 | mailmessage * msg = 0; | 225 | mailmessage * msg = 0; |
228 | char*data=0; | 226 | char*data=0; |
229 | size_t size; | 227 | size_t size; |
230 | int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); | 228 | int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); |
231 | if (r!=MAIL_NO_ERROR) { | 229 | if (r!=MAIL_NO_ERROR) { |
232 | qDebug("error selecting folder! "); | 230 | qDebug("error selecting folder! "); |
233 | return result; | 231 | return result; |
234 | } | 232 | } |
235 | r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); | 233 | r = mailsession_get_message(m_storage->sto_session, mail->getNumber(), &msg); |
236 | if (r != MAIL_NO_ERROR) { | 234 | if (r != MAIL_NO_ERROR) { |
237 | Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); | 235 | Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); |
238 | return 0; | 236 | return 0; |
239 | } | 237 | } |
240 | r = mailmessage_fetch(msg,&data,&size); | 238 | r = mailmessage_fetch(msg,&data,&size); |
241 | if (r != MAIL_NO_ERROR) { | 239 | if (r != MAIL_NO_ERROR) { |
242 | Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); | 240 | Global::statusMessage(tr("Error fetching mail %i").arg(mail->getNumber())); |
243 | if (msg) mailmessage_free(msg); | 241 | if (msg) mailmessage_free(msg); |
244 | return 0; | 242 | return 0; |
245 | } | 243 | } |