summaryrefslogtreecommitdiffabout
path: root/kmicromail
Unidiff
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/composemail.cpp14
-rw-r--r--kmicromail/opiemail.cpp33
-rw-r--r--kmicromail/opiemail.h5
3 files changed, 48 insertions, 4 deletions
diff --git a/kmicromail/composemail.cpp b/kmicromail/composemail.cpp
index ed8a2ee..3231b45 100644
--- a/kmicromail/composemail.cpp
+++ b/kmicromail/composemail.cpp
@@ -1,155 +1,156 @@
1// CHANGED 2004-08-06 Lutz Rogowski 1// CHANGED 2004-08-06 Lutz Rogowski
2 2
3 3
4#ifdef DESKTOP_VERSION 4#ifdef DESKTOP_VERSION
5#include <qapplication.h> 5#include <qapplication.h>
6#include <kabc/addresseedialog.h> 6#include <kabc/addresseedialog.h>
7#include <kabc/stdaddressbook.h> 7#include <kabc/stdaddressbook.h>
8#include <kabc/addressee.h> 8#include <kabc/addressee.h>
9#else 9#else
10#include <qpe/qpeapplication.h> 10#include <qpe/qpeapplication.h>
11#endif //DESKTOP_VERSION 11#endif //DESKTOP_VERSION
12#include <libkdepim/externalapphandler.h> 12#include <libkdepim/externalapphandler.h>
13 13
14#include "koprefs.h" 14#include "koprefs.h"
15#include <klocale.h> 15#include <klocale.h>
16#include <kglobal.h> 16#include <kglobal.h>
17 17
18#ifdef MINIKDE_KDIALOG_H 18#ifdef MINIKDE_KDIALOG_H
19#undef MINIKDE_KDIALOG_H 19#undef MINIKDE_KDIALOG_H
20#endif 20#endif
21 21
22 22
23#include "composemail.h" 23#include "composemail.h"
24 24
25#include <libmailwrapper/smtpwrapper.h> 25#include <libmailwrapper/smtpwrapper.h>
26#include <libmailwrapper/storemail.h> 26#include <libmailwrapper/storemail.h>
27#include <libmailwrapper/abstractmail.h> 27#include <libmailwrapper/abstractmail.h>
28#include <libmailwrapper/mailtypes.h> 28#include <libmailwrapper/mailtypes.h>
29 29
30/* OPIE */ 30/* OPIE */
31//#include <opie2/ofiledialog.h> 31//#include <opie2/ofiledialog.h>
32//#include <opie2/odebug.h> 32//#include <opie2/odebug.h>
33#include <kfiledialog.h> 33#include <kfiledialog.h>
34//#include <qpe/resource.h> 34//#include <qpe/resource.h>
35#include <qpe/global.h> 35#include <qpe/global.h>
36//#include <qpe/contact.h> 36//#include <qpe/contact.h>
37 37
38 38
39#include <qcombobox.h> 39#include <qcombobox.h>
40#include <qcheckbox.h> 40#include <qcheckbox.h>
41#include <qiconset.h> 41#include <qiconset.h>
42#include <qtimer.h> 42#include <qtimer.h>
43#include <qmessagebox.h> 43#include <qmessagebox.h>
44#include <qpushbutton.h> 44#include <qpushbutton.h>
45#include <qmultilineedit.h> 45#include <qmultilineedit.h>
46#include <qlabel.h> 46#include <qlabel.h>
47#include <qtabwidget.h> 47#include <qtabwidget.h>
48#include <qlistview.h> 48#include <qlistview.h>
49 49
50//using namespace Opie::Core; 50//using namespace Opie::Core;
51//using namespace Opie::Ui; 51//using namespace Opie::Ui;
52ComposeMail::ComposeMail( Settings *sett, QWidget *parent, const char *name, bool modal ) 52ComposeMail::ComposeMail( Settings *sett, QWidget *parent, const char *name, bool modal )
53 : ComposeMailUI( parent, name, modal ) 53 : ComposeMailUI( parent, name, modal )
54{ 54{
55 55
56 mPickLineEdit = 0; 56 mPickLineEdit = 0;
57 mEncoding = KOPrefs::instance()->mCurrentCodeName; 57 mEncoding = KOPrefs::instance()->mCurrentCodeName;
58 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), 58 //managed from opiemail now
59 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); 59 //connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
60 // this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
60 settings = sett; 61 settings = sett;
61 m_replyid = ""; 62 m_replyid = "";
62 if ( KOPrefs::instance()->mUseKapi) { 63 if ( KOPrefs::instance()->mUseKapi) {
63 KConfig config( locateLocal("config", "kabcrc") ); 64 KConfig config( locateLocal("config", "kabcrc") );
64 config.setGroup( "General" ); 65 config.setGroup( "General" );
65 QString whoami_uid = config.readEntry( "WhoAmI" ); 66 QString whoami_uid = config.readEntry( "WhoAmI" );
66 67
67 if ( whoami_uid.isEmpty() ) { 68 if ( whoami_uid.isEmpty() ) {
68 QMessageBox::information( 0, i18n( "Hint" ), 69 QMessageBox::information( 0, i18n( "Hint" ),
69 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 70 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
70 i18n( "Ok" ) ); 71 i18n( "Ok" ) );
71 72
72 73
73 fillSettings(); 74 fillSettings();
74 } else 75 } else
75 ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid); 76 ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid);
76 77
77 78
78#ifdef DESKTOP_VERSION 79#ifdef DESKTOP_VERSION
79 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( ); 80 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( );
80 QStringList mails = con.emails(); 81 QStringList mails = con.emails();
81 QString defmail = con.preferredEmail(); 82 QString defmail = con.preferredEmail();
82 if ( mails.count() == 0) 83 if ( mails.count() == 0)
83 QMessageBox::information( 0, i18n( "Hint" ), 84 QMessageBox::information( 0, i18n( "Hint" ),
84 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 85 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
85 i18n( "Ok" ) ); 86 i18n( "Ok" ) );
86 if (defmail.length()!=0) { 87 if (defmail.length()!=0) {
87 fromBox->insertItem(defmail); 88 fromBox->insertItem(defmail);
88 } 89 }
89 QStringList::ConstIterator sit = mails.begin(); 90 QStringList::ConstIterator sit = mails.begin();
90 for (;sit!=mails.end();++sit) { 91 for (;sit!=mails.end();++sit) {
91 if ( (*sit)==defmail) 92 if ( (*sit)==defmail)
92 continue; 93 continue;
93 fromBox->insertItem((*sit)); 94 fromBox->insertItem((*sit));
94 } 95 }
95 senderNameEdit->setText(con.formattedName()); 96 senderNameEdit->setText(con.formattedName());
96#endif 97#endif
97 98
98 } else { 99 } else {
99 fillSettings(); 100 fillSettings();
100 } 101 }
101 checkBoxLater->setChecked( KOPrefs::instance()->mSendLater ); 102 checkBoxLater->setChecked( KOPrefs::instance()->mSendLater );
102 103
103 attList->addColumn( i18n( "Name" ) ); 104 attList->addColumn( i18n( "Name" ) );
104 attList->addColumn( i18n( "Size" ) ); 105 attList->addColumn( i18n( "Size" ) );
105 QList<Account> accounts = settings->getAccounts(); 106 QList<Account> accounts = settings->getAccounts();
106 107
107 if ( QApplication::desktop()->width() < 320 ) 108 if ( QApplication::desktop()->width() < 320 )
108 smtpAccountBox->setMaximumWidth( 80 ); 109 smtpAccountBox->setMaximumWidth( 80 );
109 Account *it; 110 Account *it;
110 for ( it = accounts.first(); it; it = accounts.next() ) { 111 for ( it = accounts.first(); it; it = accounts.next() ) {
111 if ( it->getType()==MAILLIB::A_SMTP ) { 112 if ( it->getType()==MAILLIB::A_SMTP ) {
112 SMTPaccount *smtp = static_cast<SMTPaccount *>(it); 113 SMTPaccount *smtp = static_cast<SMTPaccount *>(it);
113 smtpAccountBox->insertItem( smtp->getAccountName() ); 114 smtpAccountBox->insertItem( smtp->getAccountName() );
114 smtpAccounts.append( smtp ); 115 smtpAccounts.append( smtp );
115 } 116 }
116 } 117 }
117 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) ); 118 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) );
118 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) ); 119 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) );
119 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) ); 120 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) );
120 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) ); 121 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) );
121 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) ); 122 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) );
122 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) ); 123 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) );
123 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) ); 124 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) );
124 mMail = 0; 125 mMail = 0;
125 warnAttach = true; 126 warnAttach = true;
126 QIconSet icon; 127 QIconSet icon;
127 //icon = SmallIcon("fileexport"); 128 //icon = SmallIcon("fileexport");
128 icon = SmallIcon("filesave"); 129 icon = SmallIcon("filesave");
129 SaveButton->setIconSet (icon ) ; 130 SaveButton->setIconSet (icon ) ;
130 if ( QApplication::desktop()->width() < 320 ) { 131 if ( QApplication::desktop()->width() < 320 ) {
131 SaveButton->setText ("") ; 132 SaveButton->setText ("") ;
132 SaveButton->setMaximumSize ( SaveButton->sizeHint().height(),SaveButton->sizeHint().height()) ; 133 SaveButton->setMaximumSize ( SaveButton->sizeHint().height(),SaveButton->sizeHint().height()) ;
133 } 134 }
134 else 135 else
135 SaveButton->setText (i18n("Save")); 136 SaveButton->setText (i18n("Save"));
136#ifndef DESKTOP_VERSION 137#ifndef DESKTOP_VERSION
137 QPEApplication::setStylusOperation( message, QPEApplication::RightOnHold ); 138 QPEApplication::setStylusOperation( message, QPEApplication::RightOnHold );
138 QPEApplication::setStylusOperation( senderNameEdit, QPEApplication::RightOnHold ); 139 QPEApplication::setStylusOperation( senderNameEdit, QPEApplication::RightOnHold );
139 QPEApplication::setStylusOperation( subjectLine, QPEApplication::RightOnHold ); 140 QPEApplication::setStylusOperation( subjectLine, QPEApplication::RightOnHold );
140#endif 141#endif
141 message->setFont ( KOPrefs::instance()->mComposeFont ); 142 message->setFont ( KOPrefs::instance()->mComposeFont );
142 message->setWordWrap (QMultiLineEdit::WidgetWidth); 143 message->setWordWrap (QMultiLineEdit::WidgetWidth);
143 if ( smtpAccounts.count() > 0 ) { 144 if ( smtpAccounts.count() > 0 ) {
144 fillValues( smtpAccountBox->currentItem() ); 145 fillValues( smtpAccountBox->currentItem() );
145 } else { 146 } else {
146 QMessageBox::information( 0, i18n( "Problem" ), 147 QMessageBox::information( 0, i18n( "Problem" ),
147 i18n( "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n" ), 148 i18n( "Please create an\nSMTP account first.\nThe SMTP is needed\nfor sending mail.\n" ),
148 i18n( "Ok" ) ); 149 i18n( "Ok" ) );
149 return; 150 return;
150 } 151 }
151 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) ); 152 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) );
152 connect( SaveSigButton, SIGNAL( clicked() ), SLOT( saveSig()) ); 153 connect( SaveSigButton, SIGNAL( clicked() ), SLOT( saveSig()) );
153 if ( smtpAccountBox->count()) 154 if ( smtpAccountBox->count())
154 fillValues(0); 155 fillValues(0);
155 156
@@ -167,214 +168,221 @@ void ComposeMail::fillSettings()
167 } 168 }
168 senderNameEdit->setText(KOPrefs::instance()->mName); 169 senderNameEdit->setText(KOPrefs::instance()->mName);
169} 170}
170void ComposeMail::saveSig() 171void ComposeMail::saveSig()
171{ 172{
172 if ( smtpAccountBox->count()) { 173 if ( smtpAccountBox->count()) {
173 int cur = smtpAccountBox->currentItem (); 174 int cur = smtpAccountBox->currentItem ();
174 SMTPaccount *smtp = smtpAccounts.at( cur ); 175 SMTPaccount *smtp = smtpAccounts.at( cur );
175 if ( smtp ) 176 if ( smtp )
176 smtp->setSignature( sigMultiLine->text()); 177 smtp->setSignature( sigMultiLine->text());
177 } 178 }
178} 179}
179void ComposeMail::saveAsDraft() 180void ComposeMail::saveAsDraft()
180{ 181{
181 182
182 Opie::Core::OSmartPointer<Mail> mail= new Mail(); 183 Opie::Core::OSmartPointer<Mail> mail= new Mail();
183 mail->setMail(fromBox->currentText()); 184 mail->setMail(fromBox->currentText());
184 mail->setTo( toLine->text() ); 185 mail->setTo( toLine->text() );
185 mail->setName(senderNameEdit->text()); 186 mail->setName(senderNameEdit->text());
186 mail->setCC( ccLine->text() ); 187 mail->setCC( ccLine->text() );
187 mail->setBCC( bccLine->text() ); 188 mail->setBCC( bccLine->text() );
188 mail->setReply( replyLine->text() ); 189 mail->setReply( replyLine->text() );
189 mail->setSubject( subjectLine->text() ); 190 mail->setSubject( subjectLine->text() );
190 if (!m_replyid.isEmpty()) { 191 if (!m_replyid.isEmpty()) {
191 QStringList ids; 192 QStringList ids;
192 ids.append(m_replyid); 193 ids.append(m_replyid);
193 mail->setInreply(ids); 194 mail->setInreply(ids);
194 } 195 }
195 QString txt = message->text(); 196 QString txt = message->text();
196 if ( !sigMultiLine->text().isEmpty() ) { 197 if ( !sigMultiLine->text().isEmpty() ) {
197 txt.append( "\n--\n" ); 198 txt.append( "\n--\n" );
198 txt.append( sigMultiLine->text() ); 199 txt.append( sigMultiLine->text() );
199 } 200 }
200 mail->setMessage( txt ); 201 mail->setMessage( txt );
201 mail->setCharset (mEncoding); 202 mail->setCharset (mEncoding);
202 /* only use the default drafts folder name! */ 203 /* only use the default drafts folder name! */
203 Storemail wrapper(AbstractMail::draftFolder()); 204 Storemail wrapper(AbstractMail::draftFolder());
204 wrapper.storeMail(mail); 205 wrapper.storeMail(mail);
205 206
206 AttachViewItem *it = (AttachViewItem *) attList->firstChild(); 207 AttachViewItem *it = (AttachViewItem *) attList->firstChild();
207 /* attachments we will ignore! */ 208 /* attachments we will ignore! */
208 if ( it != 0 ) { 209 if ( it != 0 ) {
209 if ( warnAttach ) 210 if ( warnAttach )
210 QMessageBox::warning(0,i18n("Store message"), 211 QMessageBox::warning(0,i18n("Store message"),
211 i18n("<center>Attachments will not be stored in \"Draft\" folder</center>")); 212 i18n("<center>Attachments will not be stored in \"Draft\" folder</center>"));
212 warnAttach = false; 213 warnAttach = false;
213 } 214 }
214 setStatus( i18n("Mail saved as draft!") ); 215 setStatus( i18n("Mail saved as draft!") );
215} 216}
216void ComposeMail::clearStatus() 217void ComposeMail::clearStatus()
217{ 218{
218 topLevelWidget()->setCaption( i18n("Compose mail") ); 219 topLevelWidget()->setCaption( i18n("Compose mail") );
219} 220}
220void ComposeMail::setStatus( QString status ) 221void ComposeMail::setStatus( QString status )
221{ 222{
222 topLevelWidget()->setCaption( status ); 223 topLevelWidget()->setCaption( status );
223 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ; 224 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ;
224} 225}
225void ComposeMail::pickAddress( ) 226void ComposeMail::pickAddress( )
226{ 227{
227 228
228 QLineEdit *line = mPickLineEdit; 229 QLineEdit *line = mPickLineEdit;
229 if ( line == 0 ) 230 if ( line == 0 )
230 return; 231 return;
231#ifdef DESKTOP_VERSION 232#ifdef DESKTOP_VERSION
232 //qDebug(" ComposeMail::pickAddress "); 233 //qDebug(" ComposeMail::pickAddress ");
233 QString names ;//= AddressPicker::getNames(); 234 QString names ;//= AddressPicker::getNames();
234 235
235 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 236 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
236 uint i=0; 237 uint i=0;
237 for (i=0; i < list.count(); i++) { 238 for (i=0; i < list.count(); i++) {
238 if ( !list[i].preferredEmail().isEmpty()) { 239 if ( !list[i].preferredEmail().isEmpty()) {
239 if ( ! names.isEmpty() ) 240 if ( ! names.isEmpty() )
240 names+= ","; 241 names+= ",";
241 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">"; 242 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">";
242 243
243 } 244 }
244 } 245 }
245 246
246 247
247 if ( line->text().isEmpty() ) { 248 if ( line->text().isEmpty() ) {
248 line->setText( names ); 249 line->setText( names );
249 } else if ( !names.isEmpty() ) { 250 } else if ( !names.isEmpty() ) {
250 line->setText( line->text() + ", " + names ); 251 line->setText( line->text() + ", " + names );
251 } 252 }
252#else 253#else
253 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/ompi", this->name() /* name is here the unique uid*/); 254 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/ompi", this->name() /* name is here the unique uid*/);
254 // the result should now arrive through method insertAttendees 255 // the result should now arrive through method insertAttendees
255#endif 256#endif
256} 257}
257//the map includes name/email pairs, that comes from Ka/Pi 258//the map includes name/email pairs, that comes from Ka/Pi
258void ComposeMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) 259void ComposeMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList)
259{ 260{
260 //qDebug("ComposeMail::insertAttendees "); 261 //qDebug("ComposeMail::insertAttendees ");
261 raise(); 262 raise();
262 263
264 QString UID = uid;
265 if ( uid.left( 18 ) == (this->name() +QString("pick2")) ) {
266 mPickLineEdit = toLine;
267 UID = this->name();
268 subjectLine->setText( uid.mid( 18 ) );
269 }
270 //qDebug("ccc %s %s ", uid.latin1(), this->name());
263 if ( mPickLineEdit == 0 ) { //whoami received 271 if ( mPickLineEdit == 0 ) { //whoami received
264 QString defmail = uidList[0]; 272 QString defmail = uidList[0];
265 if ( emailList.count() == 0 ) 273 if ( emailList.count() == 0 )
266 QMessageBox::information( 0, i18n( "Hint" ), 274 QMessageBox::information( 0, i18n( "Hint" ),
267 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 275 i18n( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
268 i18n( "Ok" ) ); 276 i18n( "Ok" ) );
269 if (defmail.length()!=0) { 277 if (defmail.length()!=0) {
270 fromBox->insertItem(defmail); 278 fromBox->insertItem(defmail);
271 } 279 }
272 QStringList::ConstIterator sit = emailList.begin(); 280 QStringList::ConstIterator sit = emailList.begin();
273 int pref = 0; 281 int pref = 0;
274 for (;sit!=emailList.end();++sit) { 282 for (;sit!=emailList.end();++sit) {
275 if ( (*sit)==defmail) 283 if ( (*sit)==defmail)
276 continue; 284 continue;
277 fromBox->insertItem((*sit)); 285 fromBox->insertItem((*sit));
278 } 286 }
279 senderNameEdit->setText(nameList[0]); 287 senderNameEdit->setText(nameList[0]);
280 return; 288 return;
281 } 289 }
282 QString names ; 290 QString names ;
283 QLineEdit *line = mPickLineEdit; 291 QLineEdit *line = mPickLineEdit;
284 if (uid == this->name()) 292 if (UID == this->name())
285 { 293 {
286 for ( int i = 0; i < nameList.count(); i++) 294 for ( int i = 0; i < nameList.count(); i++)
287 { 295 {
288 QString _name = nameList[i]; 296 QString _name = nameList[i];
289 QString _email = emailList[i]; 297 QString _email = emailList[i];
290 QString _uid = uidList[i]; 298 QString _uid = uidList[i];
291 if ( ! _email.isEmpty() ) { 299 if ( ! _email.isEmpty() ) {
292 if ( ! names.isEmpty() ) 300 if ( ! names.isEmpty() )
293 names+= ","; 301 names+= ",";
294 names+= "\""+_name +"\"<" +_email +">"; 302 names+= "\""+_name +"\"<" +_email +">";
295 } 303 }
296 } 304 }
297 } 305 }
298 if ( line->text().isEmpty() ) { 306 if ( line->text().isEmpty() ) {
299 line->setText( names ); 307 line->setText( names );
300 } else if ( !names.isEmpty() ) { 308 } else if ( !names.isEmpty() ) {
301 line->setText( line->text() + ", " + names ); 309 line->setText( line->text() + ", " + names );
302 } 310 }
303} 311}
304 312
305void ComposeMail::setTo( const QString & to ) 313void ComposeMail::setTo( const QString & to )
306{ 314{
307 toLine->setText( to ); 315 toLine->setText( to );
308} 316}
309 317
310void ComposeMail::setSubject( const QString & subject ) 318void ComposeMail::setSubject( const QString & subject )
311{ 319{
312 subjectLine->setText( subject ); 320 subjectLine->setText( subject );
313} 321}
314 322
315void ComposeMail::setInReplyTo( const QString & messageId ) 323void ComposeMail::setInReplyTo( const QString & messageId )
316{ 324{
317 m_replyid = messageId; 325 m_replyid = messageId;
318} 326}
319 327
320void ComposeMail::setMessage( const QString & text ) 328void ComposeMail::setMessage( const QString & text )
321{ 329{
322 message->setText( text ); 330 message->setText( text );
323} 331}
324 332
325 333
326void ComposeMail::pickAddressTo() 334void ComposeMail::pickAddressTo()
327{ 335{
328 mPickLineEdit = toLine; 336 mPickLineEdit = toLine;
329 pickAddress( ); 337 pickAddress( );
330} 338}
331 339
332void ComposeMail::pickAddressCC() 340void ComposeMail::pickAddressCC()
333{ 341{
334 mPickLineEdit = ccLine; 342 mPickLineEdit = ccLine;
335 pickAddress( ); 343 pickAddress( );
336} 344}
337 345
338void ComposeMail::pickAddressBCC() 346void ComposeMail::pickAddressBCC()
339{ 347{
340 mPickLineEdit = bccLine; 348 mPickLineEdit = bccLine;
341 pickAddress( ); 349 pickAddress( );
342} 350}
343 351
344void ComposeMail::pickAddressReply() 352void ComposeMail::pickAddressReply()
345{ 353{
346 mPickLineEdit = replyLine; 354 mPickLineEdit = replyLine;
347 pickAddress( ); 355 pickAddress( );
348} 356}
349 357
350void ComposeMail::fillValues( int current ) 358void ComposeMail::fillValues( int current )
351{ 359{
352#if 0 360#if 0
353 SMTPaccount *smtp = smtpAccounts.at( current ); 361 SMTPaccount *smtp = smtpAccounts.at( current );
354 ccLine->clear(); 362 ccLine->clear();
355 if ( smtp->getUseCC() ) { 363 if ( smtp->getUseCC() ) {
356 ccLine->setText( smtp->getCC() ); 364 ccLine->setText( smtp->getCC() );
357 } 365 }
358 bccLine->clear(); 366 bccLine->clear();
359 if ( smtp->getUseBCC() ) { 367 if ( smtp->getUseBCC() ) {
360 bccLine->setText( smtp->getBCC() ); 368 bccLine->setText( smtp->getBCC() );
361 } 369 }
362 replyLine->clear(); 370 replyLine->clear();
363 if ( smtp->getUseReply() ) { 371 if ( smtp->getUseReply() ) {
364 replyLine->setText( smtp->getReply() ); 372 replyLine->setText( smtp->getReply() );
365 } 373 }
366#endif 374#endif
367 SMTPaccount *smtp = smtpAccounts.at( current ); 375 SMTPaccount *smtp = smtpAccounts.at( current );
368 if ( smtp ) 376 if ( smtp )
369 sigMultiLine->setText( smtp->getSignature() ); 377 sigMultiLine->setText( smtp->getSignature() );
370} 378}
371 379
372void ComposeMail::slotAdjustColumns() 380void ComposeMail::slotAdjustColumns()
373{ 381{
374 int currPage = tabWidget->currentPageIndex(); 382 int currPage = tabWidget->currentPageIndex();
375 383
376 tabWidget->showPage( attachTab ); 384 tabWidget->showPage( attachTab );
377 attList->setColumnWidth( 0, attList->visibleWidth() - 80 ); 385 attList->setColumnWidth( 0, attList->visibleWidth() - 80 );
378 attList->setColumnWidth( 1, 80 ); 386 attList->setColumnWidth( 1, 80 );
379 387
380 tabWidget->setCurrentPage( currPage ); 388 tabWidget->setCurrentPage( currPage );
diff --git a/kmicromail/opiemail.cpp b/kmicromail/opiemail.cpp
index f56711d..e159b73 100644
--- a/kmicromail/opiemail.cpp
+++ b/kmicromail/opiemail.cpp
@@ -1,402 +1,412 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2// CHANGED 2004-08-06 Lutz Rogowski 2// CHANGED 2004-08-06 Lutz Rogowski
3 3
4 4
5#define protected public 5#define protected public
6#include <qwidget.h> 6#include <qwidget.h>
7#undef protected 7#undef protected
8#include "koprefsdialog.h" 8#include "koprefsdialog.h"
9#include <kapplication.h> 9#include <kapplication.h>
10#include <libkdepim/externalapphandler.h> 10#include <libkdepim/externalapphandler.h>
11#include <libkdepim/kpimglobalprefs.h> 11#include <libkdepim/kpimglobalprefs.h>
12#ifdef MINIKDE_KDIALOG_H 12#ifdef MINIKDE_KDIALOG_H
13#undef MINIKDE_KDIALOG_H 13#undef MINIKDE_KDIALOG_H
14#endif 14#endif
15#include "settingsdialog.h" 15#include "settingsdialog.h"
16#include "opiemail.h" 16#include "opiemail.h"
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!
86 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 88 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
87 } 89 }
88 else if (msg == "newMail()") 90 else if (msg == "newMail()")
89 { 91 {
90 //qDebug("slotComposeMail() "); 92 //qDebug("slotComposeMail() ");
91 // we cannot call slotComposeMail(); directly, because may be executing a QCOP call 93 // we cannot call slotComposeMail(); directly, because may be executing a QCOP call
92 // and a QCOP call does not like a processevents in his execution 94 // and a QCOP call does not like a processevents in his execution
93 // with the Qtimer we call slotComposeMail() after we reached the main event loop 95 // with the Qtimer we call slotComposeMail() after we reached the main event loop
94 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 96 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
95 // slotComposeMail(); 97 // slotComposeMail();
96 } 98 }
97 else if (msg == "newMail(QString)") 99 else if (msg == "newMail(QString)")
98 { 100 {
99 //qDebug(" newMail(QString)"); 101 //qDebug(" newMail(QString)");
100 QDataStream stream(data,IO_ReadOnly); 102 QDataStream stream(data,IO_ReadOnly);
101 stream >> mPendingName; 103 stream >> mPendingName;
102 // the format is 104 // the format is
103 // NAME <EMAIL>:SUBJECT 105 // NAME <EMAIL>:SUBJECT
104 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) ); 106 QTimer::singleShot ( 50, this, SLOT(slotComposeMail() ) );
105 } else { 107 } else {
106 mPendingData = data; 108 mPendingData = data;
107 mPendingMessage = msg; 109 mPendingMessage = msg;
108 QTimer::singleShot ( 50, this, SLOT(slotExtAppHandler() ) ); 110 QTimer::singleShot ( 50, this, SLOT(slotExtAppHandler() ) );
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 }
197 if (smtpList.count()==0) 204 if (smtpList.count()==0)
198 { 205 {
199 QMessageBox::information(0,i18n("Info"),i18n("Define a smtp account first!\n")); 206 QMessageBox::information(0,i18n("Info"),i18n("Define a smtp account first!\n"));
200 return; 207 return;
201 } 208 }
202 if ( QMessageBox::warning(this, i18n("Sending all mails"), i18n("Do you really want to send\nall queued mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No ) 209 if ( QMessageBox::warning(this, i18n("Sending all mails"), i18n("Do you really want to send\nall queued mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::No )
203 return; 210 return;
204 if (smtpList.count()==1) 211 if (smtpList.count()==1)
205 { 212 {
206 smtp = smtpList.at(0); 213 smtp = smtpList.at(0);
207 } 214 }
208 else 215 else
209 { 216 {
210 smtp = 0; 217 smtp = 0;
211 selectsmtp selsmtp; 218 selectsmtp selsmtp;
212 selsmtp.setSelectionlist(&smtpList); 219 selsmtp.setSelectionlist(&smtpList);
213#ifndef DESKTOP_VERSION 220#ifndef DESKTOP_VERSION
214 selsmtp.showMaximized(); 221 selsmtp.showMaximized();
215#endif 222#endif
216 if ( selsmtp.exec() == QDialog::Accepted ) 223 if ( selsmtp.exec() == QDialog::Accepted )
217 { 224 {
218 smtp = selsmtp.selected_smtp(); 225 smtp = selsmtp.selected_smtp();
219 } 226 }
220 } 227 }
221 if (smtp) 228 if (smtp)
222 { 229 {
223 230
224 Global::statusMessage("Sending mails...!"); 231 Global::statusMessage("Sending mails...!");
225 SMTPwrapper * wrap = new SMTPwrapper(smtp); 232 SMTPwrapper * wrap = new SMTPwrapper(smtp);
226 if ( wrap->flushOutbox() ) 233 if ( wrap->flushOutbox() )
227 { 234 {
228 Global::statusMessage("Mails sent!"); 235 Global::statusMessage("Mails sent!");
229 } 236 }
230 delete wrap; 237 delete wrap;
231 } 238 }
232 // pending refresh list view, if outgoing is displayed 239 // pending refresh list view, if outgoing is displayed
233} 240}
234 241
235void OpieMail::slotSearchMails() 242void OpieMail::slotSearchMails()
236{ 243{
237 qDebug("OpieMail::slotSearchMails():not implemented "); 244 qDebug("OpieMail::slotSearchMails():not implemented ");
238} 245}
239 246
240void OpieMail::slotEditSettings() 247void OpieMail::slotEditSettings()
241{ 248{
242 249
243 KOPrefsDialog settingsDialog( this, "koprefs", true ); 250 KOPrefsDialog settingsDialog( this, "koprefs", true );
244#ifndef DESKTOP_VERSION 251#ifndef DESKTOP_VERSION
245 settingsDialog.showMaximized(); 252 settingsDialog.showMaximized();
246#endif 253#endif
247 settingsDialog.exec(); 254 settingsDialog.exec();
248 255
249 slotSetCodec( KOPrefs::instance()->mCurrentCodec ); 256 slotSetCodec( KOPrefs::instance()->mCurrentCodec );
250 // KApplication::execDialog(settingsDialog); 257 // KApplication::execDialog(settingsDialog);
251} 258}
252 259
253void OpieMail::slotEditAccounts() 260void OpieMail::slotEditAccounts()
254{ 261{
255 EditAccounts eaDialog( settings, this, 0, true ); 262 EditAccounts eaDialog( settings, this, 0, true );
256 eaDialog.slotAdjustColumns(); 263 eaDialog.slotAdjustColumns();
257#ifndef DESKTOP_VERSION 264#ifndef DESKTOP_VERSION
258 eaDialog.showMaximized(); 265 eaDialog.showMaximized();
259#endif 266#endif
260 eaDialog.exec(); 267 eaDialog.exec();
261 if ( settings ) delete settings; 268 if ( settings ) delete settings;
262 settings = new Settings(); 269 settings = new Settings();
263 270
264 folderView->populate( settings->getAccounts() ); 271 folderView->populate( settings->getAccounts() );
265} 272}
266void OpieMail::replyMail() 273void OpieMail::replyMail()
267{ 274{
268 275
269 QListViewItem*item = mailView->currentItem(); 276 QListViewItem*item = mailView->currentItem();
270 if (!item) return; 277 if (!item) return;
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)) {
339 Global::statusMessage("Error creating folder!"); 349 Global::statusMessage("Error creating folder!");
340 return; 350 return;
341 } 351 }
342 Global::statusMessage("Fetching mail...please wait!"); 352 Global::statusMessage("Fetching mail...please wait!");
343 qApp->processEvents(); 353 qApp->processEvents();
344 encodedString*st = 0; 354 encodedString*st = 0;
345 st = mail->Wrapper()->fetchRawBody(mail); 355 st = mail->Wrapper()->fetchRawBody(mail);
346 if ( st ) { 356 if ( st ) {
347 targetMail->storeMessage(st->Content(),st->Length(),lfName); 357 targetMail->storeMessage(st->Content(),st->Length(),lfName);
348 Global::statusMessage("Mail stored in "+ lfName); 358 Global::statusMessage("Mail stored in "+ lfName);
349 delete st; 359 delete st;
350 } else { 360 } else {
351 Global::statusMessage("Error: Cannot fetch mail!"); 361 Global::statusMessage("Error: Cannot fetch mail!");
352 } 362 }
353} 363}
354 364
355 365
356void OpieMail::deleteAndDisplayNextMail(ViewMail * vm) 366void OpieMail::deleteAndDisplayNextMail(ViewMail * vm)
357{ 367{
358 QListViewItem*item = mailView->currentItem(); 368 QListViewItem*item = mailView->currentItem();
359 if (!item ) { 369 if (!item ) {
360 closeViewMail(vm); 370 closeViewMail(vm);
361 return; 371 return;
362 } 372 }
363 RecMailP mail = ((MailListViewItem*)item)->data(); 373 RecMailP mail = ((MailListViewItem*)item)->data();
364 mail->Wrapper()->deleteMail( mail ); 374 mail->Wrapper()->deleteMail( mail );
365 item = item->itemBelow(); 375 item = item->itemBelow();
366 if (!item ) { 376 if (!item ) {
367 closeViewMail(vm); 377 closeViewMail(vm);
368 return; 378 return;
369 } 379 }
370 mailView->setCurrentItem(item); 380 mailView->setCurrentItem(item);
371 mail = ((MailListViewItem*)item)->data(); 381 mail = ((MailListViewItem*)item)->data();
372 RecBodyP body = folderView->fetchBody(mail); 382 RecBodyP body = folderView->fetchBody(mail);
373 vm->setBody( body ); 383 vm->setBody( body );
374 vm->setMail( mail ); 384 vm->setMail( mail );
375} 385}
376void OpieMail::displayNextMail(ViewMail * vm) 386void OpieMail::displayNextMail(ViewMail * vm)
377{ 387{
378 QListViewItem*item = mailView->currentItem(); 388 QListViewItem*item = mailView->currentItem();
379 if (!item) return; 389 if (!item) return;
380 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() ); 390 ( (MailListViewItem*)item )->setPixmap( 0, QPixmap() );
381 item = item->itemBelow(); 391 item = item->itemBelow();
382 if (!item) { 392 if (!item) {
383 vm->setCaption(i18n("End of List" )); 393 vm->setCaption(i18n("End of List" ));
384 return; 394 return;
385 } 395 }
386 mailView->setCurrentItem(item); 396 mailView->setCurrentItem(item);
387 RecMailP mail = ((MailListViewItem*)item)->data(); 397 RecMailP mail = ((MailListViewItem*)item)->data();
388 RecBodyP body = folderView->fetchBody(mail); 398 RecBodyP body = folderView->fetchBody(mail);
389 vm->setBody( body ); 399 vm->setBody( body );
390 vm->setMail( mail ); 400 vm->setMail( mail );
391} 401}
392void OpieMail::displayMail() 402void OpieMail::displayMail()
393{ 403{
394 QListViewItem*item = mailView->currentItem(); 404 QListViewItem*item = mailView->currentItem();
395 if (!item) return; 405 if (!item) return;
396 RecMailP mail = ((MailListViewItem*)item)->data(); 406 RecMailP mail = ((MailListViewItem*)item)->data();
397 RecBodyP body = folderView->fetchBody(mail); 407 RecBodyP body = folderView->fetchBody(mail);
398 ViewMail readMail( this,"", Qt::WType_Modal ); 408 ViewMail readMail( this,"", Qt::WType_Modal );
399 readMail.setBody( body ); 409 readMail.setBody( body );
400 readMail.setMail( mail ); 410 readMail.setMail( mail );
401#ifndef DESKTOP_VERSION 411#ifndef DESKTOP_VERSION
402 readMail.showMaximized(); 412 readMail.showMaximized();
@@ -544,98 +554,119 @@ void OpieMail::mailLeftClicked( QListViewItem *item )
544 /* just LEFT button - or tap with stylus on pda */ 554 /* just LEFT button - or tap with stylus on pda */
545 //if (button!=1) return; 555 //if (button!=1) return;
546 if (!item) return; 556 if (!item) return;
547 if (folderView->currentisDraft()) { 557 if (folderView->currentisDraft()) {
548 reEditMail(); 558 reEditMail();
549 } else { 559 } else {
550 displayMail(); 560 displayMail();
551 } 561 }
552} 562}
553 563
554void OpieMail::slotMoveCopyMail() 564void OpieMail::slotMoveCopyMail()
555{ 565{
556 if (!mailView->currentItem()) return; 566 if (!mailView->currentItem()) return;
557 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data(); 567 RecMailP mail = ((MailListViewItem*)mailView->currentItem() )->data();
558 AbstractMail*targetMail = 0; 568 AbstractMail*targetMail = 0;
559 QString targetFolder = ""; 569 QString targetFolder = "";
560 Selectstore sels; 570 Selectstore sels;
561 folderView->setupFolderselect(&sels); 571 folderView->setupFolderselect(&sels);
562 if (!sels.exec()) return; 572 if (!sels.exec()) return;
563 targetMail = sels.currentMail(); 573 targetMail = sels.currentMail();
564 targetFolder = sels.currentFolder(); 574 targetFolder = sels.currentFolder();
565 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) || 575 if ( (mail->Wrapper()==targetMail && mail->getMbox()==targetFolder) ||
566 targetFolder.isEmpty()) 576 targetFolder.isEmpty())
567 { 577 {
568 return; 578 return;
569 } 579 }
570 if (sels.newFolder() && !targetMail->createMbox(targetFolder)) 580 if (sels.newFolder() && !targetMail->createMbox(targetFolder))
571 { 581 {
572 QMessageBox::critical(0,i18n("Error creating new Folder"), 582 QMessageBox::critical(0,i18n("Error creating new Folder"),
573 i18n("<center>Error while creating<br>new folder - breaking.</center>")); 583 i18n("<center>Error while creating<br>new folder - breaking.</center>"));
574 return; 584 return;
575 } 585 }
576 sels.hide(); 586 sels.hide();
577 qApp->processEvents(); 587 qApp->processEvents();
578 // qDebug("hiding sels "); 588 // qDebug("hiding sels ");
579 mail->Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails()); 589 mail->Wrapper()->mvcpMail(mail,targetFolder,targetMail,sels.moveMails());
580 folderView->refreshCurrent(); 590 folderView->refreshCurrent();
581} 591}
582 592
583void OpieMail::slotMoveCopyAllMail() 593void OpieMail::slotMoveCopyAllMail()
584{ 594{
585 595
586 if (!mailView->currentItem()) return; 596 if (!mailView->currentItem()) return;
587 QValueList<RecMailP> t; 597 QValueList<RecMailP> t;
588 // if ( QMessageBox::warning(this, i18n("Move/Copy all selected mails"), i18n("Do you really want to copy/move\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes ) 598 // if ( QMessageBox::warning(this, i18n("Move/Copy all selected mails"), i18n("Do you really want to copy/move\nall selected mails?" ) , QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes )
589 { 599 {
590 MailListViewItem* item = (MailListViewItem*)mailView->firstChild (); 600 MailListViewItem* item = (MailListViewItem*)mailView->firstChild ();
591 while ( item ) { 601 while ( item ) {
592 if ( item->isSelected() ) { 602 if ( item->isSelected() ) {
593 t.append( item->data() ); 603 t.append( item->data() );
594 } 604 }
595 item = (MailListViewItem*)item->nextSibling(); 605 item = (MailListViewItem*)item->nextSibling();
596 } 606 }
597 } 607 }
598 // else 608 // else
599 // return; 609 // return;
600 if ( t.count() == 0 ) 610 if ( t.count() == 0 )
601 return; 611 return;
602 RecMailP mail = t.first(); 612 RecMailP mail = t.first();
603 AbstractMail*targetMail = 0; 613 AbstractMail*targetMail = 0;
604 QString targetFolder = ""; 614 QString targetFolder = "";
605 Selectstore sels; 615 Selectstore sels;
606 folderView->setupFolderselect(&sels); 616 folderView->setupFolderselect(&sels);
607 if (!sels.exec()) return; 617 if (!sels.exec()) return;
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}
diff --git a/kmicromail/opiemail.h b/kmicromail/opiemail.h
index b8a527f..4f75b3f 100644
--- a/kmicromail/opiemail.h
+++ b/kmicromail/opiemail.h
@@ -1,61 +1,66 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#ifndef OPIEMAIL_H 2#ifndef OPIEMAIL_H
3#define OPIEMAIL_H 3#define OPIEMAIL_H
4 4
5#include "mainwindow.h" 5#include "mainwindow.h"
6#include <libmailwrapper/settings.h> 6#include <libmailwrapper/settings.h>
7 7
8#include <opie2/osmartpointer.h> 8#include <opie2/osmartpointer.h>
9#include <libmailwrapper/mailtypes.h> 9#include <libmailwrapper/mailtypes.h>
10#include <viewmail.h> 10#include <viewmail.h>
11#include <qstringlist.h>
12
13class ComposeMail;
11 14
12class OpieMail : public MainWindow 15class OpieMail : public MainWindow
13{ 16{
14 Q_OBJECT 17 Q_OBJECT
15 18
16public: 19public:
17 OpieMail( QWidget *parent = 0, const char *name = 0 ); 20 OpieMail( QWidget *parent = 0, const char *name = 0 );
18 virtual ~OpieMail(); 21 virtual ~OpieMail();
19 static QString appName() { return QString::fromLatin1("kopiemail"); } 22 static QString appName() { return QString::fromLatin1("kopiemail"); }
20 23
21public slots: 24public slots:
22 virtual void slotwriteMail(const QString&name,const QString&email); 25 virtual void slotwriteMail(const QString&name,const QString&email);
23 virtual void slotwriteMail2(const QString&nameemail); 26 virtual void slotwriteMail2(const QString&nameemail);
24 virtual void slotComposeMail(); 27 virtual void slotComposeMail();
25 virtual void slotExtAppHandler(); 28 virtual void slotExtAppHandler();
26 virtual void appMessage(const QCString &msg, const QByteArray &data); 29 virtual void appMessage(const QCString &msg, const QByteArray &data);
27 virtual void message(const QCString &msg, const QByteArray &data); 30 virtual void message(const QCString &msg, const QByteArray &data);
31 void insertAttendees(const QString&, const QStringList& namelist, const QStringList& emaillist, const QStringList& uidlist);
28protected slots: 32protected slots:
29 virtual void deleteAndDisplayNextMail(ViewMail * vm); 33 virtual void deleteAndDisplayNextMail(ViewMail * vm);
30 virtual void displayNextMail(ViewMail * vm); 34 virtual void displayNextMail(ViewMail * vm);
31 virtual void slotSendQueued(); 35 virtual void slotSendQueued();
32 virtual void slotSearchMails(); 36 virtual void slotSearchMails();
33 virtual void slotEditSettings(); 37 virtual void slotEditSettings();
34 virtual void slotEditAccounts(); 38 virtual void slotEditAccounts();
35 virtual void displayMail(); 39 virtual void displayMail();
36 virtual void replyMail(); 40 virtual void replyMail();
37 virtual void slotDeleteMail(); 41 virtual void slotDeleteMail();
38 virtual void slotGetMail(); 42 virtual void slotGetMail();
39 virtual void slotGetAllMail(); 43 virtual void slotGetAllMail();
40 virtual void slotDeleteAllMail(); 44 virtual void slotDeleteAllMail();
41 virtual void mailHold(int, QListViewItem *,const QPoint&,int); 45 virtual void mailHold(int, QListViewItem *,const QPoint&,int);
42 virtual void slotShowFolders( bool show ); 46 virtual void slotShowFolders( bool show );
43 virtual void refreshMailView(const QValueList<RecMailP>&); 47 virtual void refreshMailView(const QValueList<RecMailP>&);
44 virtual void mailLeftClicked( QListViewItem * ); 48 virtual void mailLeftClicked( QListViewItem * );
45 virtual void slotMoveCopyMail(); 49 virtual void slotMoveCopyMail();
46 virtual void slotMoveCopyAllMail(); 50 virtual void slotMoveCopyAllMail();
47 virtual void reEditMail(); 51 virtual void reEditMail();
48 void clearSelection(); 52 void clearSelection();
49 void slotDownloadMail(); 53 void slotDownloadMail();
50private: 54private:
55 ComposeMail* mCurrentComposer;
51 void closeViewMail(ViewMail * vm); 56 void closeViewMail(ViewMail * vm);
52 QString mPendingEmail; 57 QString mPendingEmail;
53 QString mPendingName; 58 QString mPendingName;
54 QByteArray mPendingData; 59 QByteArray mPendingData;
55 QCString mPendingMessage; 60 QCString mPendingMessage;
56 Settings *settings; 61 Settings *settings;
57 QTextBrowser * tb; 62 QTextBrowser * tb;
58 63
59}; 64};
60 65
61#endif 66#endif