summaryrefslogtreecommitdiffabout
path: root/kmicromail/libmailwrapper/mhwrapper.cpp
Unidiff
Diffstat (limited to 'kmicromail/libmailwrapper/mhwrapper.cpp') (more/less context) (show whitespace changes)
-rw-r--r--kmicromail/libmailwrapper/mhwrapper.cpp55
1 files changed, 32 insertions, 23 deletions
diff --git a/kmicromail/libmailwrapper/mhwrapper.cpp b/kmicromail/libmailwrapper/mhwrapper.cpp
index de6d220..90b5d23 100644
--- a/kmicromail/libmailwrapper/mhwrapper.cpp
+++ b/kmicromail/libmailwrapper/mhwrapper.cpp
@@ -254,136 +254,145 @@ void MHwrapper::deleteMails(const QString & mailbox,const QValueList<RecMailP> &
254 if (r!=MAIL_NO_ERROR) { 254 if (r!=MAIL_NO_ERROR) {
255 qDebug("deleteMails: error selecting folder! "); 255 qDebug("deleteMails: error selecting folder! ");
256 return; 256 return;
257 } 257 }
258 QValueList<RecMailP>::ConstIterator it; 258 QValueList<RecMailP>::ConstIterator it;
259 for (it=target.begin(); it!=target.end();++it) { 259 for (it=target.begin(); it!=target.end();++it) {
260 r = mailsession_remove_message(m_storage->sto_session,(*it)->getNumber()); 260 r = mailsession_remove_message(m_storage->sto_session,(*it)->getNumber());
261 if (r != MAIL_NO_ERROR) { 261 if (r != MAIL_NO_ERROR) {
262 qDebug("error deleting mail "); 262 qDebug("error deleting mail ");
263 break; 263 break;
264 } 264 }
265 } 265 }
266} 266}
267 267
268int MHwrapper::deleteAllMail(const FolderP&tfolder) 268int MHwrapper::deleteAllMail(const FolderP&tfolder)
269{ 269{
270 init_storage(); 270 init_storage();
271 if (!m_storage) { 271 if (!m_storage) {
272 return 0; 272 return 0;
273 } 273 }
274 int res = 1; 274 int res = 1;
275 if (!tfolder) return 0; 275 if (!tfolder) return 0;
276 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 276 int r = mailsession_select_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
277 if (r!=MAIL_NO_ERROR) { 277 if (r!=MAIL_NO_ERROR) {
278 qDebug("error selecting folder! "); 278 qDebug("error selecting folder! ");
279 return 0; 279 return 0;
280 } 280 }
281 mailmessage_list*l=0; 281 mailmessage_list*l=0;
282 r = mailsession_get_messages_list(m_storage->sto_session,&l); 282 r = mailsession_get_messages_list(m_storage->sto_session,&l);
283 if (r != MAIL_NO_ERROR) { 283 if (r != MAIL_NO_ERROR) {
284 qDebug("Error message list "); 284 qDebug("Error message list ");
285 res = 0; 285 res = 0;
286 } 286 }
287 unsigned j = 0; 287 unsigned j = 0;
288 for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) { 288 for(unsigned int i = 0 ; l!= 0 && res==1 && i < carray_count(l->msg_tab) ; ++i) {
289 mailmessage * msg; 289 mailmessage * msg;
290 msg = (mailmessage*)carray_get(l->msg_tab, i); 290 msg = (mailmessage*)carray_get(l->msg_tab, i);
291 j = msg->msg_index; 291 j = msg->msg_index;
292 r = mailsession_remove_message(m_storage->sto_session,j); 292 r = mailsession_remove_message(m_storage->sto_session,j);
293 if (r != MAIL_NO_ERROR) { 293 if (r != MAIL_NO_ERROR) {
294 Global::statusMessage(i18n("Error deleting mail %1").arg(i+1)); 294 Global::statusMessage(i18n("Error deleting mail %1").arg(i+1));
295 res = 0; 295 res = 0;
296 break; 296 break;
297 } 297 }
298 } 298 }
299 if (l) mailmessage_list_free(l); 299 if (l) mailmessage_list_free(l);
300 return res; 300 return res;
301} 301}
302bool MHwrapper::rmDir(QString folder) // absolute path!
303{
304 QDir dir ( folder );
305 if ( !dir.exists() )
306 return false;
307 int i;
308 // qDebug("rmdir %s ",folder.latin1());
309 QStringList list = dir.entryList(QDir::Dirs|QDir::Files|QDir::NoSymLinks|QDir::Hidden );
310 for (i=0; i<list.count(); i++ ) {
311 bool result = true;
312 QString entry = folder+"/"+ list[i] ;
313 //qDebug("entry %s ",entry.latin1() );
302 314
315 QFileInfo fi ( entry );
316 if ( fi.isFile() ) {
317 //qDebug("file %s ",entry.latin1() );
318 result = QFile::remove ( entry ) ;
319 } else {
320 //qDebug("dir %s ",entry.latin1());
321 if ( list[i] != "." && list[i] != ".." )
322 result = rmDir( entry );
323 }
324 if ( ! result )
325 return false;
326 }
327 //qDebug("removing... ");
328 return QDir::root().rmdir ( folder, true );
329}
303int MHwrapper::deleteMbox(const FolderP&tfolder) 330int MHwrapper::deleteMbox(const FolderP&tfolder)
304{ 331{
305 init_storage(); 332 init_storage();
306 if (!m_storage) { 333 if (!m_storage) {
307 return 0; 334 return 0;
308 } 335 }
309 if (!tfolder) return 0; 336 if (!tfolder) return 0;
310 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0; 337 if (tfolder->getName()=="/" || tfolder->getName().isEmpty()) return 0;
311 338
312 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1()); 339 int r = mailsession_delete_folder(m_storage->sto_session,(char*)tfolder->getName().latin1());
313 340
314 if (r != MAIL_NO_ERROR) { 341 if (r != MAIL_NO_ERROR) {
315 qDebug("error deleting mail box "); 342 qDebug("error deleting mail box ");
316 return 0; 343 return 0;
317 } 344 }
318 QString delDir = locateLocal( "apps", "kopiemail")+ "localmail"; 345 //qDebug("*****************\ndel %s %s ", delDir.latin1(),tfolder->getName().latin1() );
319 qDebug("*****************\ndel %s %s ", delDir.latin1(),tfolder->getName().latin1() ); 346 if ( !rmDir( tfolder->getName() )) {
320#if 0 347 qDebug("error deleteing folder %s ",tfolder->getName().latin1());
321 QString cmd = "rm -rf "+tfolder->getName();
322 QStringList command;
323 command << "/bin/sh";
324 command << "-c";
325 command << cmd.latin1();
326 OProcess *process = new OProcess();
327
328 /*
329 connect(process, SIGNAL(processExited(Opie::Core::OProcess*)),
330 this, SLOT( processEnded(Opie::Core::OProcess*)));
331 connect(process, SIGNAL( receivedStderr(Opie::Core::OProcess*,char*,int)),
332 this, SLOT( oprocessStderr(Opie::Core::OProcess*,char*,int)));
333 */
334 *process << command;
335 removeMboxfailed = false;
336 if(!process->start(OProcess::Block, OProcess::All) ) {
337 qDebug("could not start process ");
338 return 0;
339 } 348 }
340#endif 349 else
341 qDebug("mail box deleted "); 350 qDebug("mail box deleted %s ", tfolder->getName().latin1());
342 return 1; 351 return 1;
343} 352}
344 353
345 354
346void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox) 355void MHwrapper::statusFolder(folderStat&target_stat,const QString & mailbox)
347{ 356{
348 init_storage(); 357 init_storage();
349 if (!m_storage) { 358 if (!m_storage) {
350 return; 359 return;
351 } 360 }
352 target_stat.message_count = 0; 361 target_stat.message_count = 0;
353 target_stat.message_unseen = 0; 362 target_stat.message_unseen = 0;
354 target_stat.message_recent = 0; 363 target_stat.message_recent = 0;
355 QString f = buildPath(mailbox); 364 QString f = buildPath(mailbox);
356 int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count, 365 int r = mailsession_status_folder(m_storage->sto_session,(char*)f.latin1(),&target_stat.message_count,
357 &target_stat.message_recent,&target_stat.message_unseen); 366 &target_stat.message_recent,&target_stat.message_unseen);
358 if (r != MAIL_NO_ERROR) { 367 if (r != MAIL_NO_ERROR) {
359 Global::statusMessage(i18n("Error retrieving status")); 368 Global::statusMessage(i18n("Error retrieving status"));
360 } 369 }
361} 370}
362 371
363MAILLIB::ATYPE MHwrapper::getType()const 372MAILLIB::ATYPE MHwrapper::getType()const
364{ 373{
365 return MAILLIB::A_MH; 374 return MAILLIB::A_MH;
366} 375}
367 376
368const QString&MHwrapper::getName()const 377const QString&MHwrapper::getName()const
369{ 378{
370 return MHName; 379 return MHName;
371} 380}
372void MHwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit) 381void MHwrapper::mvcpMail(const RecMailP&mail,const QString&targetFolder,AbstractMail*targetWrapper,bool moveit)
373{ 382{
374 init_storage(); 383 init_storage();
375 if (!m_storage) { 384 if (!m_storage) {
376 return; 385 return;
377 } 386 }
378 if (targetWrapper != this) { 387 if (targetWrapper != this) {
379 qDebug("Using generic "); 388 qDebug("Using generic ");
380 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit); 389 Genericwrapper::mvcpMail(mail,targetFolder,targetWrapper,moveit);
381 return; 390 return;
382 } 391 }
383 qDebug("Using internal routines for move/copy "); 392 qDebug("Using internal routines for move/copy ");
384 QString tf = buildPath(targetFolder); 393 QString tf = buildPath(targetFolder);
385 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1()); 394 int r = mailsession_select_folder(m_storage->sto_session,(char*)mail->getMbox().latin1());
386 if (r != MAIL_NO_ERROR) { 395 if (r != MAIL_NO_ERROR) {
387 qDebug("Error selecting source mailbox "); 396 qDebug("Error selecting source mailbox ");
388 return; 397 return;
389 } 398 }