summaryrefslogtreecommitdiffabout
path: root/kmicromail
Unidiff
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/composemail.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/kmicromail/composemail.cpp b/kmicromail/composemail.cpp
index 5f446fa..f7604ad 100644
--- a/kmicromail/composemail.cpp
+++ b/kmicromail/composemail.cpp
@@ -1,309 +1,315 @@
1// CHANGED 2004-08-06 Lutz Rogowski 1// CHANGED 2004-08-06 Lutz Rogowski
2 2
3#include "composemail.h" 3#include "composemail.h"
4 4
5#include <libmailwrapper/smtpwrapper.h> 5#include <libmailwrapper/smtpwrapper.h>
6#include <libmailwrapper/storemail.h> 6#include <libmailwrapper/storemail.h>
7#include <libmailwrapper/abstractmail.h> 7#include <libmailwrapper/abstractmail.h>
8#include <libmailwrapper/mailtypes.h> 8#include <libmailwrapper/mailtypes.h>
9 9
10/* OPIE */ 10/* OPIE */
11//#include <opie2/ofiledialog.h> 11//#include <opie2/ofiledialog.h>
12//#include <opie2/odebug.h> 12//#include <opie2/odebug.h>
13#include <kfiledialog.h> 13#include <kfiledialog.h>
14//#include <qpe/resource.h> 14//#include <qpe/resource.h>
15#include <qpe/config.h> 15#include <qpe/config.h>
16#include <qpe/global.h> 16#include <qpe/global.h>
17//#include <qpe/contact.h> 17//#include <qpe/contact.h>
18 18
19 19
20#include <qcombobox.h> 20#include <qcombobox.h>
21#include <qcheckbox.h> 21#include <qcheckbox.h>
22#include <qtimer.h> 22#include <qtimer.h>
23#include <qmessagebox.h> 23#include <qmessagebox.h>
24#include <qpushbutton.h> 24#include <qpushbutton.h>
25#include <qmultilineedit.h> 25#include <qmultilineedit.h>
26#include <qlabel.h> 26#include <qlabel.h>
27#include <qtabwidget.h> 27#include <qtabwidget.h>
28#include <qlistview.h> 28#include <qlistview.h>
29#include <kabc/addresseedialog.h> 29#include <kabc/addresseedialog.h>
30#include <kabc/stdaddressbook.h> 30#include <kabc/stdaddressbook.h>
31#include <kabc/addressee.h> 31#include <kabc/addressee.h>
32#ifdef DESKTOP_VERSION 32#ifdef DESKTOP_VERSION
33#include <kabc/addresseedialog.h> 33#include <kabc/addresseedialog.h>
34#else //DESKTOP_VERSION 34#else //DESKTOP_VERSION
35#include <libkdepim/externalapphandler.h> 35#include <libkdepim/externalapphandler.h>
36#endif //DESKTOP_VERSION 36#endif //DESKTOP_VERSION
37 37
38 38
39//using namespace Opie::Core; 39//using namespace Opie::Core;
40//using namespace Opie::Ui; 40//using namespace Opie::Ui;
41ComposeMail::ComposeMail( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags ) 41ComposeMail::ComposeMail( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags )
42 : ComposeMailUI( parent, name, modal, flags ) 42 : ComposeMailUI( parent, name, modal, flags )
43{ 43{
44 44
45 mPickLineEdit = 0; 45 mPickLineEdit = 0;
46 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)), 46 connect(ExternalAppHandler::instance(), SIGNAL(receivedNameEmailUidListEvent(const QString&, const QStringList&, const QStringList&, const QStringList&)),
47 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&))); 47 this, SLOT(insertAttendees(const QString&, const QStringList&, const QStringList&, const QStringList&)));
48 settings = s; 48 settings = s;
49 m_replyid = ""; 49 m_replyid = "";
50 KConfig config( locateLocal("config", "kabcrc") ); 50 KConfig config( locateLocal("config", "kabcrc") );
51 config.setGroup( "General" ); 51 config.setGroup( "General" );
52 QString whoami_uid = config.readEntry( "WhoAmI" ); 52 QString whoami_uid = config.readEntry( "WhoAmI" );
53 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid); 53 if ( whoami_uid.isEmpty() ) {
54 QMessageBox::information( 0, tr( "Hint" ),
55 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
56 tr( "Ok" ) );
57
58 } else
59 bool res = ExternalAppHandler::instance()->requestDetailsFromKAPI("", "sendbacklist", whoami_uid);
54#ifdef DESKTOP_VERSION 60#ifdef DESKTOP_VERSION
55 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( ); 61 KABC::Addressee con = KABC::StdAddressBook::self()->whoAmI( );
56 QStringList mails = con.emails(); 62 QStringList mails = con.emails();
57 QString defmail = con.preferredEmail(); 63 QString defmail = con.preferredEmail();
58 if ( mails.count() == 0) 64 if ( mails.count() == 0)
59 QMessageBox::information( 0, tr( "Hint" ), 65 QMessageBox::information( 0, tr( "Hint" ),
60 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 66 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
61 tr( "Ok" ) ); 67 tr( "Ok" ) );
62 if (defmail.length()!=0) { 68 if (defmail.length()!=0) {
63 fromBox->insertItem(defmail); 69 fromBox->insertItem(defmail);
64 } 70 }
65 QStringList::ConstIterator sit = mails.begin(); 71 QStringList::ConstIterator sit = mails.begin();
66 for (;sit!=mails.end();++sit) { 72 for (;sit!=mails.end();++sit) {
67 if ( (*sit)==defmail) 73 if ( (*sit)==defmail)
68 continue; 74 continue;
69 fromBox->insertItem((*sit)); 75 fromBox->insertItem((*sit));
70 } 76 }
71 senderNameEdit->setText(con.formattedName()); 77 senderNameEdit->setText(con.formattedName());
72#endif 78#endif
73 Config cfg( "mail" ); 79 Config cfg( "mail" );
74 cfg.setGroup( "Compose" ); 80 cfg.setGroup( "Compose" );
75 checkBoxLater->setChecked( cfg.readBoolEntry( "sendLater", false ) ); 81 checkBoxLater->setChecked( cfg.readBoolEntry( "sendLater", false ) );
76 82
77 attList->addColumn( tr( "Name" ) ); 83 attList->addColumn( tr( "Name" ) );
78 attList->addColumn( tr( "Size" ) ); 84 attList->addColumn( tr( "Size" ) );
79 85
80 QList<Account> accounts = settings->getAccounts(); 86 QList<Account> accounts = settings->getAccounts();
81 87
82 Account *it; 88 Account *it;
83 for ( it = accounts.first(); it; it = accounts.next() ) { 89 for ( it = accounts.first(); it; it = accounts.next() ) {
84 if ( it->getType()==MAILLIB::A_SMTP ) { 90 if ( it->getType()==MAILLIB::A_SMTP ) {
85 SMTPaccount *smtp = static_cast<SMTPaccount *>(it); 91 SMTPaccount *smtp = static_cast<SMTPaccount *>(it);
86 smtpAccountBox->insertItem( smtp->getAccountName() ); 92 smtpAccountBox->insertItem( smtp->getAccountName() );
87 smtpAccounts.append( smtp ); 93 smtpAccounts.append( smtp );
88 } 94 }
89 } 95 }
90 if ( smtpAccounts.count() > 0 ) { 96 if ( smtpAccounts.count() > 0 ) {
91 fillValues( smtpAccountBox->currentItem() ); 97 fillValues( smtpAccountBox->currentItem() );
92 } else { 98 } else {
93 QMessageBox::information( 0, tr( "Problem" ), 99 QMessageBox::information( 0, tr( "Problem" ),
94 tr( "Please create an SMTP account first.\nThe SMTP is needed for sending mail.\n" ), 100 tr( "Please create an SMTP account first.\nThe SMTP is needed for sending mail.\n" ),
95 tr( "Ok" ) ); 101 tr( "Ok" ) );
96 return; 102 return;
97 } 103 }
98 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) ); 104 connect( smtpAccountBox, SIGNAL( activated(int) ), SLOT( fillValues(int) ) );
99 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) ); 105 connect( toButton, SIGNAL( clicked() ), SLOT( pickAddressTo() ) );
100 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) ); 106 connect( ccButton, SIGNAL( clicked() ), SLOT( pickAddressCC() ) );
101 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) ); 107 connect( bccButton, SIGNAL( clicked() ), SLOT( pickAddressBCC() ) );
102 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) ); 108 connect( replyButton, SIGNAL( clicked() ), SLOT( pickAddressReply() ) );
103 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) ); 109 connect( addButton, SIGNAL( clicked() ), SLOT( addAttachment() ) );
104 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) ); 110 connect( deleteButton, SIGNAL( clicked() ), SLOT( removeAttachment() ) );
105 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) ); 111 connect( SaveButton, SIGNAL( clicked() ), SLOT( saveAsDraft()) );
106 mMail = 0; 112 mMail = 0;
107 warnAttach = true; 113 warnAttach = true;
108 114
109} 115}
110 116
111 117
112 118
113void ComposeMail::saveAsDraft() 119void ComposeMail::saveAsDraft()
114{ 120{
115 121
116 Opie::Core::OSmartPointer<Mail> mail= new Mail(); 122 Opie::Core::OSmartPointer<Mail> mail= new Mail();
117 mail->setMail(fromBox->currentText()); 123 mail->setMail(fromBox->currentText());
118 mail->setTo( toLine->text() ); 124 mail->setTo( toLine->text() );
119 mail->setName(senderNameEdit->text()); 125 mail->setName(senderNameEdit->text());
120 mail->setCC( ccLine->text() ); 126 mail->setCC( ccLine->text() );
121 mail->setBCC( bccLine->text() ); 127 mail->setBCC( bccLine->text() );
122 mail->setReply( replyLine->text() ); 128 mail->setReply( replyLine->text() );
123 mail->setSubject( subjectLine->text() ); 129 mail->setSubject( subjectLine->text() );
124 if (!m_replyid.isEmpty()) { 130 if (!m_replyid.isEmpty()) {
125 QStringList ids; 131 QStringList ids;
126 ids.append(m_replyid); 132 ids.append(m_replyid);
127 mail->setInreply(ids); 133 mail->setInreply(ids);
128 } 134 }
129 QString txt = message->text(); 135 QString txt = message->text();
130 if ( !sigMultiLine->text().isEmpty() ) { 136 if ( !sigMultiLine->text().isEmpty() ) {
131 txt.append( "\n--\n" ); 137 txt.append( "\n--\n" );
132 txt.append( sigMultiLine->text() ); 138 txt.append( sigMultiLine->text() );
133 } 139 }
134 mail->setMessage( txt ); 140 mail->setMessage( txt );
135 141
136 /* only use the default drafts folder name! */ 142 /* only use the default drafts folder name! */
137 Storemail wrapper(AbstractMail::draftFolder()); 143 Storemail wrapper(AbstractMail::draftFolder());
138 wrapper.storeMail(mail); 144 wrapper.storeMail(mail);
139 145
140 AttachViewItem *it = (AttachViewItem *) attList->firstChild(); 146 AttachViewItem *it = (AttachViewItem *) attList->firstChild();
141 /* attachments we will ignore! */ 147 /* attachments we will ignore! */
142 if ( it != 0 ) { 148 if ( it != 0 ) {
143 if ( warnAttach ) 149 if ( warnAttach )
144 QMessageBox::warning(0,tr("Store message"), 150 QMessageBox::warning(0,tr("Store message"),
145 tr("<center>Attachments will not be stored in \"Draft\" folder</center>")); 151 tr("<center>Attachments will not be stored in \"Draft\" folder</center>"));
146 warnAttach = false; 152 warnAttach = false;
147 } 153 }
148 setStatus( tr("Mail saved as draft!") ); 154 setStatus( tr("Mail saved as draft!") );
149} 155}
150void ComposeMail::clearStatus() 156void ComposeMail::clearStatus()
151{ 157{
152 topLevelWidget()->setCaption( tr("Compose mail") ); 158 topLevelWidget()->setCaption( tr("Compose mail") );
153} 159}
154void ComposeMail::setStatus( QString status ) 160void ComposeMail::setStatus( QString status )
155{ 161{
156 topLevelWidget()->setCaption( status ); 162 topLevelWidget()->setCaption( status );
157 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ; 163 QTimer::singleShot ( 10000, this, SLOT( clearStatus() ) ) ;
158} 164}
159void ComposeMail::pickAddress( ) 165void ComposeMail::pickAddress( )
160{ 166{
161 167
162 QLineEdit *line = mPickLineEdit; 168 QLineEdit *line = mPickLineEdit;
163 if ( line == 0 ) 169 if ( line == 0 )
164 return; 170 return;
165#ifdef DESKTOP_VERSION 171#ifdef DESKTOP_VERSION
166 //qDebug(" ComposeMail::pickAddress "); 172 //qDebug(" ComposeMail::pickAddress ");
167 QString names ;//= AddressPicker::getNames(); 173 QString names ;//= AddressPicker::getNames();
168 174
169 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this); 175 KABC::Addressee::List list = KABC::AddresseeDialog::getAddressees(this);
170 uint i=0; 176 uint i=0;
171 for (i=0; i < list.count(); i++) { 177 for (i=0; i < list.count(); i++) {
172 if ( !list[i].preferredEmail().isEmpty()) { 178 if ( !list[i].preferredEmail().isEmpty()) {
173 if ( ! names.isEmpty() ) 179 if ( ! names.isEmpty() )
174 names+= ","; 180 names+= ",";
175 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">"; 181 names+= "\""+list[i].realName() +"\"<" +list[i].preferredEmail() +">";
176 182
177 } 183 }
178 } 184 }
179 185
180 186
181 if ( line->text().isEmpty() ) { 187 if ( line->text().isEmpty() ) {
182 line->setText( names ); 188 line->setText( names );
183 } else if ( !names.isEmpty() ) { 189 } else if ( !names.isEmpty() ) {
184 line->setText( line->text() + ", " + names ); 190 line->setText( line->text() + ", " + names );
185 } 191 }
186#else 192#else
187 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/ompi", this->name() /* name is here the unique uid*/); 193 bool res = ExternalAppHandler::instance()->requestNameEmailUidListFromKAPI("QPE/Application/ompi", this->name() /* name is here the unique uid*/);
188 // the result should now arrive through method insertAttendees 194 // the result should now arrive through method insertAttendees
189#endif 195#endif
190} 196}
191//the map includes name/email pairs, that comes from Ka/Pi 197//the map includes name/email pairs, that comes from Ka/Pi
192void ComposeMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList) 198void ComposeMail::insertAttendees(const QString& uid,const QStringList& nameList,const QStringList& emailList,const QStringList& uidList)
193{ 199{
194 qDebug("ComposeMail::insertAttendees "); 200 qDebug("ComposeMail::insertAttendees ");
195 raise(); 201 raise();
196 202
197 if ( mPickLineEdit == 0 ) { //whoami received 203 if ( mPickLineEdit == 0 ) { //whoami received
198 204
199 QString defmail = uidList[0]; 205 QString defmail = uidList[0];
200 if ( emailList.count() == 0 ) 206 if ( emailList.count() == 0 )
201 QMessageBox::information( 0, tr( "Hint" ), 207 QMessageBox::information( 0, tr( "Hint" ),
202 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ), 208 tr( "Please apply\n\"Set Who Am I\"\nin KA/Pi to get the from\nfield automatically filled out!\n" ),
203 tr( "Ok" ) ); 209 tr( "Ok" ) );
204 if (defmail.length()!=0) { 210 if (defmail.length()!=0) {
205 fromBox->insertItem(defmail); 211 fromBox->insertItem(defmail);
206 } 212 }
207 QStringList::ConstIterator sit = emailList.begin(); 213 QStringList::ConstIterator sit = emailList.begin();
208 int pref = 0; 214 int pref = 0;
209 for (;sit!=emailList.end();++sit) { 215 for (;sit!=emailList.end();++sit) {
210 if ( (*sit)==defmail) 216 if ( (*sit)==defmail)
211 continue; 217 continue;
212 fromBox->insertItem((*sit)); 218 fromBox->insertItem((*sit));
213 } 219 }
214 senderNameEdit->setText(nameList[0]); 220 senderNameEdit->setText(nameList[0]);
215 return; 221 return;
216 } 222 }
217 QString names ; 223 QString names ;
218 QLineEdit *line = mPickLineEdit; 224 QLineEdit *line = mPickLineEdit;
219 if (uid == this->name()) 225 if (uid == this->name())
220 { 226 {
221 for ( int i = 0; i < nameList.count(); i++) 227 for ( int i = 0; i < nameList.count(); i++)
222 { 228 {
223 QString _name = nameList[i]; 229 QString _name = nameList[i];
224 QString _email = emailList[i]; 230 QString _email = emailList[i];
225 QString _uid = uidList[i]; 231 QString _uid = uidList[i];
226 if ( ! _email.isEmpty() ) { 232 if ( ! _email.isEmpty() ) {
227 if ( ! names.isEmpty() ) 233 if ( ! names.isEmpty() )
228 names+= ","; 234 names+= ",";
229 names+= "\""+_name +"\"<" +_email +">"; 235 names+= "\""+_name +"\"<" +_email +">";
230 } 236 }
231 } 237 }
232 } 238 }
233 if ( line->text().isEmpty() ) { 239 if ( line->text().isEmpty() ) {
234 line->setText( names ); 240 line->setText( names );
235 } else if ( !names.isEmpty() ) { 241 } else if ( !names.isEmpty() ) {
236 line->setText( line->text() + ", " + names ); 242 line->setText( line->text() + ", " + names );
237 } 243 }
238} 244}
239 245
240void ComposeMail::setTo( const QString & to ) 246void ComposeMail::setTo( const QString & to )
241{ 247{
242 toLine->setText( to ); 248 toLine->setText( to );
243} 249}
244 250
245void ComposeMail::setSubject( const QString & subject ) 251void ComposeMail::setSubject( const QString & subject )
246{ 252{
247 subjectLine->setText( subject ); 253 subjectLine->setText( subject );
248} 254}
249 255
250void ComposeMail::setInReplyTo( const QString & messageId ) 256void ComposeMail::setInReplyTo( const QString & messageId )
251{ 257{
252 m_replyid = messageId; 258 m_replyid = messageId;
253} 259}
254 260
255void ComposeMail::setMessage( const QString & text ) 261void ComposeMail::setMessage( const QString & text )
256{ 262{
257 message->setText( text ); 263 message->setText( text );
258} 264}
259 265
260 266
261void ComposeMail::pickAddressTo() 267void ComposeMail::pickAddressTo()
262{ 268{
263 mPickLineEdit = toLine; 269 mPickLineEdit = toLine;
264 pickAddress( ); 270 pickAddress( );
265} 271}
266 272
267void ComposeMail::pickAddressCC() 273void ComposeMail::pickAddressCC()
268{ 274{
269 mPickLineEdit = ccLine; 275 mPickLineEdit = ccLine;
270 pickAddress( ); 276 pickAddress( );
271} 277}
272 278
273void ComposeMail::pickAddressBCC() 279void ComposeMail::pickAddressBCC()
274{ 280{
275 mPickLineEdit = bccLine; 281 mPickLineEdit = bccLine;
276 pickAddress( ); 282 pickAddress( );
277} 283}
278 284
279void ComposeMail::pickAddressReply() 285void ComposeMail::pickAddressReply()
280{ 286{
281 mPickLineEdit = replyLine; 287 mPickLineEdit = replyLine;
282 pickAddress( ); 288 pickAddress( );
283} 289}
284 290
285void ComposeMail::fillValues( int ) 291void ComposeMail::fillValues( int )
286{ 292{
287#if 0 293#if 0
288 SMTPaccount *smtp = smtpAccounts.at( current ); 294 SMTPaccount *smtp = smtpAccounts.at( current );
289 ccLine->clear(); 295 ccLine->clear();
290 if ( smtp->getUseCC() ) { 296 if ( smtp->getUseCC() ) {
291 ccLine->setText( smtp->getCC() ); 297 ccLine->setText( smtp->getCC() );
292 } 298 }
293 bccLine->clear(); 299 bccLine->clear();
294 if ( smtp->getUseBCC() ) { 300 if ( smtp->getUseBCC() ) {
295 bccLine->setText( smtp->getBCC() ); 301 bccLine->setText( smtp->getBCC() );
296 } 302 }
297 replyLine->clear(); 303 replyLine->clear();
298 if ( smtp->getUseReply() ) { 304 if ( smtp->getUseReply() ) {
299 replyLine->setText( smtp->getReply() ); 305 replyLine->setText( smtp->getReply() );
300 } 306 }
301 sigMultiLine->setText( smtp->getSignature() ); 307 sigMultiLine->setText( smtp->getSignature() );
302#endif 308#endif
303} 309}
304 310
305void ComposeMail::slotAdjustColumns() 311void ComposeMail::slotAdjustColumns()
306{ 312{
307 int currPage = tabWidget->currentPageIndex(); 313 int currPage = tabWidget->currentPageIndex();
308 314
309 tabWidget->showPage( attachTab ); 315 tabWidget->showPage( attachTab );