summaryrefslogtreecommitdiffabout
path: root/kmicromail/opiemail.cpp
authorzautrix <zautrix>2005-02-04 10:23:55 (UTC)
committer zautrix <zautrix>2005-02-04 10:23:55 (UTC)
commit83256090c493dab56f1afba4829e864598bf70d2 (patch) (unidiff)
tree8d5b7ee0c6fe42f0f14c53b80c924ccddd5a1599 /kmicromail/opiemail.cpp
parenta96872e5ecff3a8fb1785aff71f5f7f150ef8604 (diff)
downloadkdepimpi-83256090c493dab56f1afba4829e864598bf70d2.zip
kdepimpi-83256090c493dab56f1afba4829e864598bf70d2.tar.gz
kdepimpi-83256090c493dab56f1afba4829e864598bf70d2.tar.bz2
mail send
Diffstat (limited to 'kmicromail/opiemail.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/opiemail.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/kmicromail/opiemail.cpp b/kmicromail/opiemail.cpp
index f56711d..e159b73 100644
--- a/kmicromail/opiemail.cpp
+++ b/kmicromail/opiemail.cpp
@@ -17,69 +17,71 @@
17#include "editaccounts.h" 17#include "editaccounts.h"
18#include "composemail.h" 18#include "composemail.h"
19#include "mailistviewitem.h" 19#include "mailistviewitem.h"
20#include "viewmail.h" 20#include "viewmail.h"
21#include "selectstore.h" 21#include "selectstore.h"
22#include "selectsmtp.h" 22#include "selectsmtp.h"
23#include "accountitem.h" 23#include "accountitem.h"
24#include "accountview.h" 24#include "accountview.h"
25#include "klocale.h" 25#include "klocale.h"
26 26
27#include <qmessagebox.h> 27#include <qmessagebox.h>
28#include <qtimer.h> 28#include <qtimer.h>
29#include <qcursor.h> 29#include <qcursor.h>
30#include <qtextbrowser.h> 30#include <qtextbrowser.h>
31#include <qregexp.h> 31#include <qregexp.h>
32#include <qpe/global.h> 32#include <qpe/global.h>
33 33
34#ifdef DESKTOP_VERSION 34#ifdef DESKTOP_VERSION
35#include <qapplication.h> 35#include <qapplication.h>
36#else 36#else
37#include <qpe/qpeapplication.h> 37#include <qpe/qpeapplication.h>
38#endif 38#endif
39#include <libmailwrapper/smtpwrapper.h> 39#include <libmailwrapper/smtpwrapper.h>
40#include <libmailwrapper/mailtypes.h> 40#include <libmailwrapper/mailtypes.h>
41#include <libmailwrapper/abstractmail.h> 41#include <libmailwrapper/abstractmail.h>
42#include "koprefs.h" 42#include "koprefs.h"
43 43
44//using namespace Opie::Core; 44//using namespace Opie::Core;
45 45
46OpieMail::OpieMail( QWidget *parent, const char *name ) 46OpieMail::OpieMail( QWidget *parent, const char *name )
47 : MainWindow( parent, name) //, WStyle_ContextHelp ) 47 : MainWindow( parent, name) //, WStyle_ContextHelp )
48{ 48{
49 mCurrentComposer = 0;
49 settings = new Settings(); 50 settings = new Settings();
50 tb = 0; 51 tb = 0;
51 setIcon(SmallIcon( "kmicromail" ) ); 52 setIcon(SmallIcon( "kmicromail" ) );
52 folderView->populate( settings->getAccounts() ); 53 folderView->populate( settings->getAccounts() );
53 54 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
55 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
54} 56}
55 57
56OpieMail::~OpieMail() 58OpieMail::~OpieMail()
57{ 59{
58 if (settings) delete settings; 60 if (settings) delete settings;
59 if ( tb ) 61 if ( tb )
60 delete tb; 62 delete tb;
61} 63}
62 64
63void OpieMail::appMessage(const QCString &msg, const QByteArray &data) 65void OpieMail::appMessage(const QCString &msg, const QByteArray &data)
64{ 66{
65 67
66} 68}
67#include <stdlib.h> 69#include <stdlib.h>
68void OpieMail::message(const QCString &msg, const QByteArray &data) 70void OpieMail::message(const QCString &msg, const QByteArray &data)
69{ 71{
70 // copied from old mail2 72 // copied from old mail2
71 static int ii = 0; 73 static int ii = 0;
72 //qDebug("QCOP CALL ############################# %d ", ii); 74 //qDebug("QCOP CALL ############################# %d ", ii);
73 //QString mess ( msg ); 75 //QString mess ( msg );
74 //qDebug("Message = %s ",mess.latin1()); 76 //qDebug("Message = %s ",mess.latin1());
75 ++ii; 77 ++ii;
76 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this); 78 //qDebug("KM:appMessage %d *%s* %x", ii, msg.data(), this);
77 79
78 mPendingEmail = QString::null; 80 mPendingEmail = QString::null;
79 mPendingName = QString::null; 81 mPendingName = QString::null;
80 if (msg == "writeMail(QString,QString)") 82 if (msg == "writeMail(QString,QString)")
81 { 83 {
82 //qDebug("writeMail(QString,QString) "); 84 //qDebug("writeMail(QString,QString) ");
83 QDataStream stream(data,IO_ReadOnly); 85 QDataStream stream(data,IO_ReadOnly);
84 stream >> mPendingName >> mPendingEmail; 86 stream >> mPendingName >> mPendingEmail;
85 // removing the whitespaces at beginning and end is needed! 87 // removing the whitespaces at beginning and end is needed!
@@ -109,88 +111,93 @@ void OpieMail::message(const QCString &msg, const QByteArray &data)
109 } 111 }
110 112
111 //qDebug("END OpieMail::message "); 113 //qDebug("END OpieMail::message ");
112} 114}
113void OpieMail::slotExtAppHandler() 115void OpieMail::slotExtAppHandler()
114{ 116{
115 ExternalAppHandler::instance()->appMessage ( mPendingMessage, mPendingData ); 117 ExternalAppHandler::instance()->appMessage ( mPendingMessage, mPendingData );
116} 118}
117void OpieMail::slotwriteMail2(const QString& namemail ) 119void OpieMail::slotwriteMail2(const QString& namemail )
118{ 120{
119 //qDebug("OpieMail::slotwriteMail2 "); 121 //qDebug("OpieMail::slotwriteMail2 ");
120 //qApp->processEvents(); 122 //qApp->processEvents();
121 ComposeMail compose( settings, this, 0, true ); 123 ComposeMail compose( settings, this, 0, true );
122 if ( !namemail.isEmpty() ) { 124 if ( !namemail.isEmpty() ) {
123 QString to = namemail; 125 QString to = namemail;
124 if ( namemail.find( " <") > 1 ) { 126 if ( namemail.find( " <") > 1 ) {
125 to = "\"" +to.replace( QRegExp( " <"), "\" <") ; 127 to = "\"" +to.replace( QRegExp( " <"), "\" <") ;
126 } else 128 } else
127 if ( namemail.find( "<") > 1 ) { 129 if ( namemail.find( "<") > 1 ) {
128 to = "\"" +to.replace( QRegExp( "<"), "\" <") ; 130 to = "\"" +to.replace( QRegExp( "<"), "\" <") ;
129 } 131 }
130 int sub = to.find( ">:"); 132 int sub = to.find( ">:");
131 if ( sub > 0 ) { 133 if ( sub > 0 ) {
132 compose.setTo( to.left(sub+1) ); 134 compose.setTo( to.left(sub+1) );
133 compose.setSubject( to.mid(sub+2) ); 135 compose.setSubject( to.mid(sub+2) );
134 } else 136 } else
135 compose.setTo( to ); 137 compose.setTo( to );
136 } 138 }
137 compose.slotAdjustColumns(); 139 compose.slotAdjustColumns();
138#ifndef DESKTOP_VERSION 140#ifndef DESKTOP_VERSION
139 compose.showMaximized(); 141 compose.showMaximized();
140#endif 142#endif
143 mCurrentComposer = &compose;
141 compose.exec(); 144 compose.exec();
145 mCurrentComposer = 0;
142 raise(); 146 raise();
143 //qDebug("retttich "); 147 //qDebug("retttich ");
144} 148}
145void OpieMail::slotwriteMail(const QString&name,const QString&email) 149void OpieMail::slotwriteMail(const QString&name,const QString&email)
146{ 150{
147 // qDebug("OpieMail::slotwriteMail "); 151 // qDebug("OpieMail::slotwriteMail ");
148 ComposeMail compose( settings, this, 0, true ); 152 ComposeMail compose( settings, this, 0, true );
149 if (!email.isEmpty()) 153 if (!email.isEmpty())
150 { 154 {
151 if (!name.isEmpty()) 155 if (!name.isEmpty())
152 { 156 {
153 compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">"); 157 compose.setTo("\"" + name + "\"" + " " + "<"+ email + ">");
154 } 158 }
155 else 159 else
156 { 160 {
157 compose.setTo(email); 161 compose.setTo(email);
158 } 162 }
159 } 163 }
160 compose.slotAdjustColumns(); 164 compose.slotAdjustColumns();
161#ifndef DESKTOP_VERSION 165#ifndef DESKTOP_VERSION
162 compose.showMaximized(); 166 compose.showMaximized();
163#endif 167#endif
168
169 mCurrentComposer = &compose;
164 compose.exec(); 170 compose.exec();
171 mCurrentComposer = 0;
165 raise(); 172 raise();
166} 173}
167 174
168void OpieMail::slotComposeMail() 175void OpieMail::slotComposeMail()
169{ 176{
170 if ( mPendingEmail == QString::null && mPendingName == QString::null) 177 if ( mPendingEmail == QString::null && mPendingName == QString::null)
171 slotwriteMail2( QString () ); 178 slotwriteMail2( QString () );
172 else { 179 else {
173 if ( mPendingEmail == QString::null ) 180 if ( mPendingEmail == QString::null )
174 slotwriteMail2( mPendingName ); 181 slotwriteMail2( mPendingName );
175 else 182 else
176 slotwriteMail( mPendingName, mPendingEmail ); 183 slotwriteMail( mPendingName, mPendingEmail );
177 } 184 }
178 //slotwriteMail(0l,0l); 185 //slotwriteMail(0l,0l);
179} 186}
180 187
181void OpieMail::slotSendQueued() 188void OpieMail::slotSendQueued()
182{ 189{
183 SMTPaccount *smtp = 0; 190 SMTPaccount *smtp = 0;
184 191
185 QList<Account> list = settings->getAccounts(); 192 QList<Account> list = settings->getAccounts();
186 QList<SMTPaccount> smtpList; 193 QList<SMTPaccount> smtpList;
187 smtpList.setAutoDelete(false); 194 smtpList.setAutoDelete(false);
188 Account *it; 195 Account *it;
189 for ( it = list.first(); it; it = list.next() ) 196 for ( it = list.first(); it; it = list.next() )
190 { 197 {
191 if ( it->getType() == MAILLIB::A_SMTP ) 198 if ( it->getType() == MAILLIB::A_SMTP )
192 { 199 {
193 smtp = static_cast<SMTPaccount *>(it); 200 smtp = static_cast<SMTPaccount *>(it);
194 smtpList.append(smtp); 201 smtpList.append(smtp);
195 } 202 }
196 } 203 }
@@ -271,68 +278,71 @@ void OpieMail::replyMail()
271 RecMailP mail = ((MailListViewItem*)item)->data(); 278 RecMailP mail = ((MailListViewItem*)item)->data();
272 RecBodyP body = folderView->fetchBody(mail); 279 RecBodyP body = folderView->fetchBody(mail);
273 280
274 QString rtext; 281 QString rtext;
275 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose 282 rtext += QString("* %1 wrote on %2:\n") // no i18n on purpose
276 .arg( mail->getFrom()) 283 .arg( mail->getFrom())
277 .arg( mail->getDate()); 284 .arg( mail->getDate());
278 285
279 QString text = body->Bodytext(); 286 QString text = body->Bodytext();
280 QStringList lines = QStringList::split(QRegExp("\\n"), text); 287 QStringList lines = QStringList::split(QRegExp("\\n"), text);
281 QStringList::Iterator it; 288 QStringList::Iterator it;
282 for (it = lines.begin(); it != lines.end(); it++) 289 for (it = lines.begin(); it != lines.end(); it++)
283 { 290 {
284 rtext += "> " + *it + "\n"; 291 rtext += "> " + *it + "\n";
285 } 292 }
286 rtext += "\n"; 293 rtext += "\n";
287 294
288 QString prefix; 295 QString prefix;
289 if ( mail->getSubject().find(QRegExp("^Re: .*$")) != -1) prefix = ""; 296 if ( mail->getSubject().find(QRegExp("^Re: .*$")) != -1) prefix = "";
290 else prefix = "Re: "; // no i18n on purpose 297 else prefix = "Re: "; // no i18n on purpose
291 298
292 Settings *settings = new Settings(); 299 Settings *settings = new Settings();
293 ComposeMail composer( settings ,this, 0, true); 300 ComposeMail composer( settings ,this, 0, true);
294 if (mail->Replyto().isEmpty()) { 301 if (mail->Replyto().isEmpty()) {
295 composer.setTo( mail->getFrom()); 302 composer.setTo( mail->getFrom());
296 } else { 303 } else {
297 composer.setTo( mail->Replyto()); 304 composer.setTo( mail->Replyto());
298 } 305 }
299 composer.setSubject( prefix + mail->getSubject()); 306 composer.setSubject( prefix + mail->getSubject());
300 composer.setMessage( rtext ); 307 composer.setMessage( rtext );
301 composer.setInReplyTo( mail->Msgid()); 308 composer.setInReplyTo( mail->Msgid());
302 composer.setCharset( body->getCharset() ); 309 composer.setCharset( body->getCharset() );
310
311 mCurrentComposer = &composer;
303 if ( QDialog::Accepted == KApplication::execDialog( &composer ) ) 312 if ( QDialog::Accepted == KApplication::execDialog( &composer ) )
304 { 313 {
305 mail->Wrapper()->answeredMail(mail); 314 mail->Wrapper()->answeredMail(mail);
306 } 315 }
316 mCurrentComposer = 0;
307 delete settings; 317 delete settings;
308 318
309} 319}
310void OpieMail::closeViewMail(ViewMail * vm) 320void OpieMail::closeViewMail(ViewMail * vm)
311{ 321{
312 vm->hide(); 322 vm->hide();
313} 323}
314 324
315void OpieMail::slotDownloadMail( ) 325void OpieMail::slotDownloadMail( )
316{ 326{
317 QListViewItem*item = mailView->currentItem(); 327 QListViewItem*item = mailView->currentItem();
318 if (!item ) { 328 if (!item ) {
319 Global::statusMessage("Error: No item slected!"); 329 Global::statusMessage("Error: No item slected!");
320 return; 330 return;
321 } 331 }
322 RecMailP mail = ((MailListViewItem*)item)->data(); 332 RecMailP mail = ((MailListViewItem*)item)->data();
323 Account * acc = mail->Wrapper()->getAccount(); 333 Account * acc = mail->Wrapper()->getAccount();
324 if ( !acc ) { 334 if ( !acc ) {
325 Global::statusMessage("Mail is already stored locally!"); 335 Global::statusMessage("Mail is already stored locally!");
326 return; 336 return;
327 } 337 }
328 QString lfName = acc->getLocalFolder(); 338 QString lfName = acc->getLocalFolder();
329 //qDebug("local folder " + lfName ); 339 //qDebug("local folder " + lfName );
330 if ( lfName.isEmpty() ) 340 if ( lfName.isEmpty() )
331 lfName = acc->getAccountName(); 341 lfName = acc->getAccountName();
332 AbstractMail* targetMail = folderView->allAccounts()[0]->getWrapper(); 342 AbstractMail* targetMail = folderView->allAccounts()[0]->getWrapper();
333 //qDebug("target %d %d ",targetMail,mail->Wrapper() ); 343 //qDebug("target %d %d ",targetMail,mail->Wrapper() );
334 if ( targetMail == mail->Wrapper() ) { 344 if ( targetMail == mail->Wrapper() ) {
335 Global::statusMessage("Mail is already locally stored!"); 345 Global::statusMessage("Mail is already locally stored!");
336 return; 346 return;
337 } 347 }
338 if ( !targetMail->createMbox(lfName)) { 348 if ( !targetMail->createMbox(lfName)) {
@@ -608,34 +618,55 @@ void OpieMail::slotMoveCopyAllMail()
608 targetMail = sels.currentMail(); 618 targetMail = sels.currentMail();
609 targetFolder = sels.currentFolder(); 619 targetFolder = sels.currentFolder();
610 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) || 620 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) ||
611 targetFolder.isEmpty()) 621 targetFolder.isEmpty())
612 { 622 {
613 return; 623 return;
614 } 624 }
615 if (sels.newFolder() && !targetMail->createMbox(targetFolder)) 625 if (sels.newFolder() && !targetMail->createMbox(targetFolder))
616 { 626 {
617 QMessageBox::critical(0,i18n("Error creating new Folder"), 627 QMessageBox::critical(0,i18n("Error creating new Folder"),
618 i18n("<center>Error while creating<br>new folder - breaking.</center>")); 628 i18n("<center>Error while creating<br>new folder - breaking.</center>"));
619 return; 629 return;
620 } 630 }
621 sels.hide(); 631 sels.hide();
622 qApp->processEvents(); 632 qApp->processEvents();
623 //qDebug("hiding sels "); 633 //qDebug("hiding sels ");
624 mail->Wrapper()->mvcpMailList(t,targetFolder,targetMail,sels.moveMails()); 634 mail->Wrapper()->mvcpMailList(t,targetFolder,targetMail,sels.moveMails());
625 folderView->refreshCurrent(); 635 folderView->refreshCurrent();
626} 636}
627 637
628void OpieMail::reEditMail() 638void OpieMail::reEditMail()
629{ 639{
630 if (!mailView->currentItem()) return; 640 if (!mailView->currentItem()) return;
631 641
632 ComposeMail compose( settings, this, 0, true ); 642 ComposeMail compose( settings, this, 0, true );
633 compose.reEditMail(((MailListViewItem*)mailView->currentItem() )->data()); 643 compose.reEditMail(((MailListViewItem*)mailView->currentItem() )->data());
634 compose.slotAdjustColumns(); 644 compose.slotAdjustColumns();
635#ifndef DESKTOP_VERSION 645#ifndef DESKTOP_VERSION
636 compose.showMaximized(); 646 compose.showMaximized();
637#else 647#else
638 compose.resize(640,480); 648 compose.resize(640,480);
639#endif 649#endif
650 mCurrentComposer = &compose;
640 compose.exec(); 651 compose.exec();
652 mCurrentComposer = 0;
653}
654
655void OpieMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList)
656{
657
658 if ( mCurrentComposer ) {
659 mCurrentComposer->insertAttendees(uid,nameList,emailList,uidList);
660 } else {
661 ComposeMail compose( settings, this, 0, true );
662 compose.slotAdjustColumns();
663#ifndef DESKTOP_VERSION
664 compose.showMaximized();
665#endif
666 mCurrentComposer = &compose;
667 mCurrentComposer->insertAttendees(uid,nameList,emailList,uidList);
668 compose.exec();
669 mCurrentComposer = 0;
670 raise();
671 }
641} 672}