summaryrefslogtreecommitdiffabout
path: root/kmicromail
Unidiff
Diffstat (limited to 'kmicromail') (more/less context) (ignore whitespace changes)
-rw-r--r--kmicromail/editaccounts.cpp24
-rw-r--r--kmicromail/libetpan/tools/mailstream_socket.c2
-rw-r--r--kmicromail/libmailwrapper/smtpwrapper.cpp8
3 files changed, 20 insertions, 14 deletions
diff --git a/kmicromail/editaccounts.cpp b/kmicromail/editaccounts.cpp
index f1075c0..49049f6 100644
--- a/kmicromail/editaccounts.cpp
+++ b/kmicromail/editaccounts.cpp
@@ -1,693 +1,697 @@
1 1
2#include <qdialog.h> 2#include <qdialog.h>
3#include "kapplication.h" 3#include "kapplication.h"
4#include "defines.h" 4#include "defines.h"
5#include "editaccounts.h" 5#include "editaccounts.h"
6/* OPIE */ 6/* OPIE */
7#include <qpe/qpeapplication.h> 7#include <qpe/qpeapplication.h>
8 8
9/* QT */ 9/* QT */
10#include <qstringlist.h> 10#include <qstringlist.h>
11 11
12#include <qcombobox.h> 12#include <qcombobox.h>
13#include <qcheckbox.h> 13#include <qcheckbox.h>
14#include <qmessagebox.h> 14#include <qmessagebox.h>
15#include <qpushbutton.h> 15#include <qpushbutton.h>
16#include <qlineedit.h> 16#include <qlineedit.h>
17#include <qlabel.h> 17#include <qlabel.h>
18#include <qtabwidget.h> 18#include <qtabwidget.h>
19#include <qlistview.h> 19#include <qlistview.h>
20#include <qspinbox.h> 20#include <qspinbox.h>
21#include <klocale.h> 21#include <klocale.h>
22#include <kfiledialog.h> 22#include <kfiledialog.h>
23 23
24#include <libmailwrapper/nntpwrapper.h> 24#include <libmailwrapper/nntpwrapper.h>
25 25
26using namespace Opie::Core; 26using namespace Opie::Core;
27 27
28AccountListItem::AccountListItem( QListView *parent, Account *a) 28AccountListItem::AccountListItem( QListView *parent, Account *a)
29 : QListViewItem( parent ) 29 : QListViewItem( parent )
30{ 30{
31 account = a; 31 account = a;
32 setText( 0, account->getAccountName() ); 32 setText( 0, account->getAccountName() );
33 QString ttext = ""; 33 QString ttext = "";
34 switch (account->getType()) { 34 switch (account->getType()) {
35 case MAILLIB::A_NNTP: 35 case MAILLIB::A_NNTP:
36 ttext="NNTP"; 36 ttext="NNTP";
37 break; 37 break;
38 case MAILLIB::A_POP3: 38 case MAILLIB::A_POP3:
39 ttext = "POP3"; 39 ttext = "POP3";
40 break; 40 break;
41 case MAILLIB::A_IMAP: 41 case MAILLIB::A_IMAP:
42 ttext = "IMAP"; 42 ttext = "IMAP";
43 break; 43 break;
44 case MAILLIB::A_SMTP: 44 case MAILLIB::A_SMTP:
45 ttext = "SMTP"; 45 ttext = "SMTP";
46 break; 46 break;
47 default: 47 default:
48 ttext = "UNKNOWN"; 48 ttext = "UNKNOWN";
49 break; 49 break;
50 } 50 }
51 setText( 1, ttext); 51 setText( 1, ttext);
52} 52}
53 53
54EditAccounts::EditAccounts( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags ) 54EditAccounts::EditAccounts( Settings *s, QWidget *parent, const char *name, bool modal, WFlags flags )
55 : EditAccountsUI( parent, name, modal, flags ) 55 : EditAccountsUI( parent, name, modal, flags )
56{ 56{
57 settings = s; 57 settings = s;
58 58
59 mailList->addColumn( i18n( "Account" ) ); 59 mailList->addColumn( i18n( "Account" ) );
60 mailList->addColumn( i18n( "Type" ) ); 60 mailList->addColumn( i18n( "Type" ) );
61 61
62 newsList->addColumn( i18n( "Account" ) ); 62 newsList->addColumn( i18n( "Account" ) );
63 63
64 connect( newMail, SIGNAL( clicked() ), SLOT( slotNewMail() ) ); 64 connect( newMail, SIGNAL( clicked() ), SLOT( slotNewMail() ) );
65 connect( editMail, SIGNAL( clicked() ), SLOT( slotEditMail() ) ); 65 connect( editMail, SIGNAL( clicked() ), SLOT( slotEditMail() ) );
66 connect( deleteMail, SIGNAL( clicked() ), SLOT( slotDeleteMail() ) ); 66 connect( deleteMail, SIGNAL( clicked() ), SLOT( slotDeleteMail() ) );
67 connect( newNews, SIGNAL( clicked() ), SLOT( slotNewNews() ) ); 67 connect( newNews, SIGNAL( clicked() ), SLOT( slotNewNews() ) );
68 connect( editNews, SIGNAL( clicked() ), SLOT( slotEditNews() ) ); 68 connect( editNews, SIGNAL( clicked() ), SLOT( slotEditNews() ) );
69 connect( deleteNews, SIGNAL( clicked() ), SLOT( slotDeleteNews() ) ); 69 connect( deleteNews, SIGNAL( clicked() ), SLOT( slotDeleteNews() ) );
70 70
71 slotFillLists(); 71 slotFillLists();
72} 72}
73 73
74void EditAccounts::slotFillLists() 74void EditAccounts::slotFillLists()
75{ 75{
76 mailList->clear(); 76 mailList->clear();
77 newsList->clear(); 77 newsList->clear();
78 78
79 QList<Account> accounts = settings->getAccounts(); 79 QList<Account> accounts = settings->getAccounts();
80 Account *it; 80 Account *it;
81 for ( it = accounts.first(); it; it = accounts.next() ) 81 for ( it = accounts.first(); it; it = accounts.next() )
82 { 82 {
83 if ( it->getType()==MAILLIB::A_NNTP ) 83 if ( it->getType()==MAILLIB::A_NNTP )
84 { 84 {
85 (void) new AccountListItem( newsList, it ); 85 (void) new AccountListItem( newsList, it );
86 } 86 }
87 else 87 else
88 { 88 {
89 (void) new AccountListItem( mailList, it ); 89 (void) new AccountListItem( mailList, it );
90 } 90 }
91 } 91 }
92} 92}
93 93
94void EditAccounts::slotNewMail() 94void EditAccounts::slotNewMail()
95{ 95{
96 QString *selection = new QString(); 96 QString *selection = new QString();
97 SelectMailType selType( selection, this, 0, true ); 97 SelectMailType selType( selection, this, 0, true );
98 selType.show(); 98 selType.show();
99 if ( QDialog::Accepted == selType.exec() ) 99 if ( QDialog::Accepted == selType.exec() )
100 { 100 {
101 slotNewAccount( *selection ); 101 slotNewAccount( *selection );
102 } 102 }
103} 103}
104 104
105void EditAccounts::slotNewAccount( const QString &type ) 105void EditAccounts::slotNewAccount( const QString &type )
106{ 106{
107 if ( type.compare( i18n("IMAP") ) == 0 ) 107 if ( type.compare( i18n("IMAP") ) == 0 )
108 { 108 {
109 IMAPaccount *account = new IMAPaccount(); 109 IMAPaccount *account = new IMAPaccount();
110 IMAPconfig imap( account, this, 0, true ); 110 IMAPconfig imap( account, this, 0, true );
111 111
112#ifndef DESKTOP_VERSION 112#ifndef DESKTOP_VERSION
113 imap.showMaximized(); 113 imap.showMaximized();
114#endif 114#endif
115 if ( QDialog::Accepted == imap.exec() ) 115 if ( QDialog::Accepted == imap.exec() )
116 { 116 {
117 settings->addAccount( account ); 117 settings->addAccount( account );
118 account->save(); 118 account->save();
119 slotFillLists(); 119 slotFillLists();
120 } 120 }
121 else 121 else
122 { 122 {
123 account->remove(); 123 account->remove();
124 } 124 }
125 } 125 }
126 else if ( type.compare( i18n("POP3") ) == 0 ) 126 else if ( type.compare( i18n("POP3") ) == 0 )
127 { 127 {
128 POP3account *account = new POP3account(); 128 POP3account *account = new POP3account();
129 POP3config pop3( account, this, 0, true, WStyle_ContextHelp ); 129 POP3config pop3( account, this, 0, true, WStyle_ContextHelp );
130 if ( QDialog::Accepted == KApplication::execDialog( &pop3 ) ) 130 if ( QDialog::Accepted == KApplication::execDialog( &pop3 ) )
131 { 131 {
132 settings->addAccount( account ); 132 settings->addAccount( account );
133 account->save(); 133 account->save();
134 slotFillLists(); 134 slotFillLists();
135 } 135 }
136 else 136 else
137 { 137 {
138 account->remove(); 138 account->remove();
139 } 139 }
140 } 140 }
141 else if ( type.compare( i18n("SMTP") ) == 0 ) 141 else if ( type.compare( i18n("SMTP") ) == 0 )
142 { 142 {
143 SMTPaccount *account = new SMTPaccount(); 143 SMTPaccount *account = new SMTPaccount();
144 SMTPconfig smtp( account, this, 0, true, WStyle_ContextHelp ); 144 SMTPconfig smtp( account, this, 0, true, WStyle_ContextHelp );
145 if ( QDialog::Accepted == KApplication::execDialog( &smtp ) ) 145 if ( QDialog::Accepted == KApplication::execDialog( &smtp ) )
146 { 146 {
147 settings->addAccount( account ); 147 settings->addAccount( account );
148 account->save(); 148 account->save();
149 slotFillLists(); 149 slotFillLists();
150 150
151 } 151 }
152 else 152 else
153 { 153 {
154 account->remove(); 154 account->remove();
155 } 155 }
156 } 156 }
157 else if ( type.compare( i18n("NNTP") ) == 0 ) 157 else if ( type.compare( i18n("NNTP") ) == 0 )
158 { 158 {
159 NNTPaccount *account = new NNTPaccount(); 159 NNTPaccount *account = new NNTPaccount();
160 NNTPconfig nntp( account, this, 0, true, WStyle_ContextHelp ); 160 NNTPconfig nntp( account, this, 0, true, WStyle_ContextHelp );
161 if ( QDialog::Accepted == KApplication::execDialog( &nntp ) ) 161 if ( QDialog::Accepted == KApplication::execDialog( &nntp ) )
162 { 162 {
163 settings->addAccount( account ); 163 settings->addAccount( account );
164 account->save(); 164 account->save();
165 slotFillLists(); 165 slotFillLists();
166 } 166 }
167 else 167 else
168 { 168 {
169 account->remove(); 169 account->remove();
170 } 170 }
171 } 171 }
172} 172}
173 173
174void EditAccounts::slotEditAccount( Account *account ) 174void EditAccounts::slotEditAccount( Account *account )
175{ 175{
176 if ( account->getType() == MAILLIB::A_IMAP ) 176 if ( account->getType() == MAILLIB::A_IMAP )
177 { 177 {
178 IMAPaccount *imapAcc = static_cast<IMAPaccount *>(account); 178 IMAPaccount *imapAcc = static_cast<IMAPaccount *>(account);
179 IMAPconfig imap( imapAcc, this, 0, true, WStyle_ContextHelp ); 179 IMAPconfig imap( imapAcc, this, 0, true, WStyle_ContextHelp );
180 if ( QDialog::Accepted == KApplication::execDialog( &imap ) ) 180 if ( QDialog::Accepted == KApplication::execDialog( &imap ) )
181 { 181 {
182 slotFillLists(); 182 slotFillLists();
183 } 183 }
184 } 184 }
185 else if ( account->getType()==MAILLIB::A_POP3 ) 185 else if ( account->getType()==MAILLIB::A_POP3 )
186 { 186 {
187 POP3account *pop3Acc = static_cast<POP3account *>(account); 187 POP3account *pop3Acc = static_cast<POP3account *>(account);
188 POP3config pop3( pop3Acc, this, 0, true, WStyle_ContextHelp ); 188 POP3config pop3( pop3Acc, this, 0, true, WStyle_ContextHelp );
189 if ( QDialog::Accepted == KApplication::execDialog( &pop3 ) ) 189 if ( QDialog::Accepted == KApplication::execDialog( &pop3 ) )
190 { 190 {
191 slotFillLists(); 191 slotFillLists();
192 } 192 }
193 } 193 }
194 else if ( account->getType()==MAILLIB::A_SMTP ) 194 else if ( account->getType()==MAILLIB::A_SMTP )
195 { 195 {
196 SMTPaccount *smtpAcc = static_cast<SMTPaccount *>(account); 196 SMTPaccount *smtpAcc = static_cast<SMTPaccount *>(account);
197 SMTPconfig smtp( smtpAcc, this, 0, true, WStyle_ContextHelp ); 197 SMTPconfig smtp( smtpAcc, this, 0, true, WStyle_ContextHelp );
198 if ( QDialog::Accepted == KApplication::execDialog( &smtp ) ) 198 if ( QDialog::Accepted == KApplication::execDialog( &smtp ) )
199 { 199 {
200 slotFillLists(); 200 slotFillLists();
201 } 201 }
202 } 202 }
203 else if ( account->getType()==MAILLIB::A_NNTP) 203 else if ( account->getType()==MAILLIB::A_NNTP)
204 { 204 {
205 NNTPaccount *nntpAcc = static_cast<NNTPaccount *>(account); 205 NNTPaccount *nntpAcc = static_cast<NNTPaccount *>(account);
206 NNTPconfig nntp( nntpAcc, this, 0, true, WStyle_ContextHelp ); 206 NNTPconfig nntp( nntpAcc, this, 0, true, WStyle_ContextHelp );
207 if ( QDialog::Accepted == KApplication::execDialog( &nntp ) ) 207 if ( QDialog::Accepted == KApplication::execDialog( &nntp ) )
208 { 208 {
209 slotFillLists(); 209 slotFillLists();
210 } 210 }
211 } 211 }
212} 212}
213 213
214void EditAccounts::slotDeleteAccount( Account *account ) 214void EditAccounts::slotDeleteAccount( Account *account )
215{ 215{
216 if ( QMessageBox::information( this, i18n( "Question" ), 216 if ( QMessageBox::information( this, i18n( "Question" ),
217 i18n( "<p>Do you really want to delete the selected Account?</p>" ), 217 i18n( "<p>Do you really want to delete the selected Account?</p>" ),
218 i18n( "Yes" ), i18n( "No" ) ) == 0 ) 218 i18n( "Yes" ), i18n( "No" ) ) == 0 )
219 { 219 {
220 settings->delAccount( account ); 220 settings->delAccount( account );
221 slotFillLists(); 221 slotFillLists();
222 } 222 }
223} 223}
224 224
225void EditAccounts::slotEditMail() 225void EditAccounts::slotEditMail()
226{ 226{
227 if ( !mailList->currentItem() ) 227 if ( !mailList->currentItem() )
228 { 228 {
229 QMessageBox::information( this, i18n( "Error" ), 229 QMessageBox::information( this, i18n( "Error" ),
230 i18n( "<p>Please select an account.</p>" ), 230 i18n( "<p>Please select an account.</p>" ),
231 i18n( "Ok" ) ); 231 i18n( "Ok" ) );
232 return; 232 return;
233 } 233 }
234 234
235 Account *a = ((AccountListItem *) mailList->currentItem())->getAccount(); 235 Account *a = ((AccountListItem *) mailList->currentItem())->getAccount();
236 slotEditAccount( a ); 236 slotEditAccount( a );
237} 237}
238 238
239void EditAccounts::slotDeleteMail() 239void EditAccounts::slotDeleteMail()
240{ 240{
241 if ( !mailList->currentItem() ) 241 if ( !mailList->currentItem() )
242 { 242 {
243 QMessageBox::information( this, i18n( "Error" ), 243 QMessageBox::information( this, i18n( "Error" ),
244 i18n( "<p>Please select an account.</p>" ), 244 i18n( "<p>Please select an account.</p>" ),
245 i18n( "Ok" ) ); 245 i18n( "Ok" ) );
246 return; 246 return;
247 } 247 }
248 248
249 Account *a = ((AccountListItem *) mailList->currentItem())->getAccount(); 249 Account *a = ((AccountListItem *) mailList->currentItem())->getAccount();
250 slotDeleteAccount( a ); 250 slotDeleteAccount( a );
251} 251}
252 252
253void EditAccounts::slotNewNews() 253void EditAccounts::slotNewNews()
254{ 254{
255 slotNewAccount( "NNTP" ); 255 slotNewAccount( "NNTP" );
256} 256}
257 257
258void EditAccounts::slotEditNews() 258void EditAccounts::slotEditNews()
259{ 259{
260 if ( !newsList->currentItem() ) 260 if ( !newsList->currentItem() )
261 { 261 {
262 QMessageBox::information( this, i18n( "Error" ), 262 QMessageBox::information( this, i18n( "Error" ),
263 i18n( "<p>Please select an account.</p>" ), 263 i18n( "<p>Please select an account.</p>" ),
264 i18n( "Ok" ) ); 264 i18n( "Ok" ) );
265 return; 265 return;
266 } 266 }
267 267
268 Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); 268 Account *a = ((AccountListItem *) newsList->currentItem())->getAccount();
269 slotEditAccount( a ); 269 slotEditAccount( a );
270} 270}
271 271
272void EditAccounts::slotDeleteNews() 272void EditAccounts::slotDeleteNews()
273{ 273{
274 if ( !newsList->currentItem() ) 274 if ( !newsList->currentItem() )
275 { 275 {
276 QMessageBox::information( this, i18n( "Error" ), 276 QMessageBox::information( this, i18n( "Error" ),
277 i18n( "<p>Please select an account.</p>" ), 277 i18n( "<p>Please select an account.</p>" ),
278 i18n( "Ok" ) ); 278 i18n( "Ok" ) );
279 return; 279 return;
280 } 280 }
281 281
282 Account *a = ((AccountListItem *) newsList->currentItem())->getAccount(); 282 Account *a = ((AccountListItem *) newsList->currentItem())->getAccount();
283 slotDeleteAccount( a ); 283 slotDeleteAccount( a );
284} 284}
285 285
286void EditAccounts::slotAdjustColumns() 286void EditAccounts::slotAdjustColumns()
287{ 287{
288 int currPage = configTab->currentPageIndex(); 288 int currPage = configTab->currentPageIndex();
289 289
290 configTab->showPage( mailTab ); 290 configTab->showPage( mailTab );
291 mailList->setColumnWidth( 0, mailList->visibleWidth() - 50 ); 291 mailList->setColumnWidth( 0, mailList->visibleWidth() - 50 );
292 mailList->setColumnWidth( 1, 50 ); 292 mailList->setColumnWidth( 1, 50 );
293 293
294 configTab->showPage( newsTab ); 294 configTab->showPage( newsTab );
295 newsList->setColumnWidth( 0, newsList->visibleWidth() ); 295 newsList->setColumnWidth( 0, newsList->visibleWidth() );
296 296
297 configTab->setCurrentPage( currPage ); 297 configTab->setCurrentPage( currPage );
298} 298}
299 299
300void EditAccounts::accept() 300void EditAccounts::accept()
301{ 301{
302 settings->saveAccounts(); 302 settings->saveAccounts();
303 303
304 QDialog::accept(); 304 QDialog::accept();
305} 305}
306 306
307/** 307/**
308 * SelectMailType 308 * SelectMailType
309 */ 309 */
310 310
311SelectMailType::SelectMailType( QString *selection, QWidget *parent, const char *name, bool modal, WFlags flags ) 311SelectMailType::SelectMailType( QString *selection, QWidget *parent, const char *name, bool modal, WFlags flags )
312 : SelectMailTypeUI( parent, name, modal, flags ) 312 : SelectMailTypeUI( parent, name, modal, flags )
313{ 313{
314 selected = selection; 314 selected = selection;
315 selected->replace( 0, selected->length(), typeBox->currentText() ); 315 selected->replace( 0, selected->length(), typeBox->currentText() );
316 connect( typeBox, SIGNAL( activated(const QString&) ), SLOT( slotSelection(const QString&) ) ); 316 connect( typeBox, SIGNAL( activated(const QString&) ), SLOT( slotSelection(const QString&) ) );
317} 317}
318 318
319void SelectMailType::slotSelection( const QString &sel ) 319void SelectMailType::slotSelection( const QString &sel )
320{ 320{
321 selected->replace( 0, selected->length(), sel ); 321 selected->replace( 0, selected->length(), sel );
322} 322}
323 323
324/** 324/**
325 * IMAPconfig 325 * IMAPconfig
326 */ 326 */
327 327
328IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) 328IMAPconfig::IMAPconfig( IMAPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags )
329 : IMAPconfigUI( parent, name, modal, flags ) 329 : IMAPconfigUI( parent, name, modal, flags )
330{ 330{
331 data = account; 331 data = account;
332 332
333 fillValues(); 333 //fillValues();
334 334
335 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) ); 335 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) );
336 ComboBox1->insertItem( "Only if available", 0 ); 336 ComboBox1->insertItem( "Only if available", 0 );
337 ComboBox1->insertItem( "Always, Negotiated", 1 ); 337 ComboBox1->insertItem( "Always, Negotiated", 1 );
338 ComboBox1->insertItem( "Connect on secure port", 2 ); 338 ComboBox1->insertItem( "Connect on secure port", 2 );
339 ComboBox1->insertItem( "Run command instead", 3 ); 339 ComboBox1->insertItem( "Run command instead", 3 );
340 CommandEdit->hide(); 340 CommandEdit->hide();
341 ComboBox1->setCurrentItem( data->ConnectionType() ); 341 fillValues();
342 // ComboBox1->setCurrentItem( data->ConnectionType() );
342} 343}
343 344
344void IMAPconfig::slotConnectionToggle( int index ) 345void IMAPconfig::slotConnectionToggle( int index )
345{ 346{
346 if ( index == 2 ) 347 if ( index == 2 )
347 { 348 {
348 portLine->setText( IMAP_SSL_PORT ); 349 portLine->setText( IMAP_SSL_PORT );
349 } 350 }
350 else if ( index == 3 ) 351 else if ( index == 3 )
351 { 352 {
352 portLine->setText( IMAP_PORT ); 353 portLine->setText( IMAP_PORT );
353 CommandEdit->show(); 354 CommandEdit->show();
354 } 355 }
355 else 356 else
356 { 357 {
357 portLine->setText( IMAP_PORT ); 358 portLine->setText( IMAP_PORT );
358 } 359 }
359} 360}
360 361
361void IMAPconfig::fillValues() 362void IMAPconfig::fillValues()
362{ 363{
363 accountLine->setText( data->getAccountName() ); 364 accountLine->setText( data->getAccountName() );
364 serverLine->setText( data->getServer() ); 365 serverLine->setText( data->getServer() );
365 portLine->setText( data->getPort() ); 366 portLine->setText( data->getPort() );
366 ComboBox1->setCurrentItem( data->ConnectionType() ); 367 ComboBox1->setCurrentItem( data->ConnectionType() );
367 userLine->setText( data->getUser() ); 368 userLine->setText( data->getUser() );
368 passLine->setText( data->getPassword() ); 369 passLine->setText( data->getPassword() );
369 prefixLine->setText(data->getPrefix()); 370 prefixLine->setText(data->getPrefix());
370 localFolder->setText( data->getLocalFolder() ); 371 localFolder->setText( data->getLocalFolder() );
371 int max = data->getMaxMailSize() ; 372 int max = data->getMaxMailSize() ;
372 if ( max ) { 373 if ( max ) {
373 CheckBoxDown->setChecked( true ); 374 CheckBoxDown->setChecked( true );
374 SpinBoxDown->setValue ( max ); 375 SpinBoxDown->setValue ( max );
375 } else { 376 } else {
376 CheckBoxDown->setChecked( false ); 377 CheckBoxDown->setChecked( false );
377 SpinBoxDown->setValue ( 5 ); 378 SpinBoxDown->setValue ( 5 );
378 } 379 }
379 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() ); 380 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() );
380} 381}
381 382
382void IMAPconfig::accept() 383void IMAPconfig::accept()
383{ 384{
384 if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) { 385 if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) {
385 QMessageBox::information( this, i18n( "Error" ), 386 QMessageBox::information( this, i18n( "Error" ),
386 i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ), 387 i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ),
387 i18n( "Ok" ) ); 388 i18n( "Ok" ) );
388 return; 389 return;
389 } 390 }
390 data->setAccountName( accountLine->text() ); 391 data->setAccountName( accountLine->text() );
391 data->setServer( serverLine->text() ); 392 data->setServer( serverLine->text() );
392 data->setPort( portLine->text() ); 393 data->setPort( portLine->text() );
393 data->setConnectionType( ComboBox1->currentItem() ); 394 data->setConnectionType( ComboBox1->currentItem() );
394 data->setUser( userLine->text() ); 395 data->setUser( userLine->text() );
395 data->setPassword( passLine->text() ); 396 data->setPassword( passLine->text() );
396 data->setPrefix(prefixLine->text()); 397 data->setPrefix(prefixLine->text());
397 data->setLocalFolder( localFolder->text() ); 398 data->setLocalFolder( localFolder->text() );
398 data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ; 399 data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ;
399 data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() ); 400 data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() );
400 401
401 QDialog::accept(); 402 QDialog::accept();
402} 403}
403 404
404/** 405/**
405 * POP3config 406 * POP3config
406 */ 407 */
407 408
408POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags ) 409POP3config::POP3config( POP3account *account, QWidget *parent, const char *name, bool modal, WFlags flags )
409 : POP3configUI( parent, name, modal, flags ) 410 : POP3configUI( parent, name, modal, flags )
410{ 411{
411 data = account; 412 data = account;
412 fillValues(); 413 //fillValues();
413 414
414 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) ); 415 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) );
415 ComboBox1->insertItem( "Only if available", 0 ); 416 ComboBox1->insertItem( "Only if available", 0 );
416 ComboBox1->insertItem( "Always, Negotiated", 1 ); 417 ComboBox1->insertItem( "Always, Negotiated", 1 );
417 ComboBox1->insertItem( "Connect on secure port", 2 ); 418 ComboBox1->insertItem( "Connect on secure port", 2 );
418 ComboBox1->insertItem( "Run command instead", 3 ); 419 ComboBox1->insertItem( "Run command instead", 3 );
419 CommandEdit->hide(); 420 CommandEdit->hide();
420 ComboBox1->setCurrentItem( data->ConnectionType() ); 421 fillValues();
422 //ComboBox1->setCurrentItem( data->ConnectionType() );
421} 423}
422 424
423void POP3config::slotConnectionToggle( int index ) 425void POP3config::slotConnectionToggle( int index )
424{ 426{
425 // 2 is ssl connection 427 // 2 is ssl connection
426 if ( index == 2 ) 428 if ( index == 2 )
427 { 429 {
428 portLine->setText( POP3_SSL_PORT ); 430 portLine->setText( POP3_SSL_PORT );
429 } 431 }
430 else if ( index == 3 ) 432 else if ( index == 3 )
431 { 433 {
432 portLine->setText( POP3_PORT ); 434 portLine->setText( POP3_PORT );
433 CommandEdit->show(); 435 CommandEdit->show();
434 } 436 }
435 else 437 else
436 { 438 {
437 portLine->setText( POP3_PORT ); 439 portLine->setText( POP3_PORT );
438 } 440 }
439} 441}
440 442
441void POP3config::fillValues() 443void POP3config::fillValues()
442{ 444{
443 accountLine->setText( data->getAccountName() ); 445 accountLine->setText( data->getAccountName() );
444 serverLine->setText( data->getServer() ); 446 serverLine->setText( data->getServer() );
445 portLine->setText( data->getPort() ); 447 portLine->setText( data->getPort() );
446 ComboBox1->setCurrentItem( data->ConnectionType() ); 448 ComboBox1->setCurrentItem( data->ConnectionType() );
447 userLine->setText( data->getUser() ); 449 userLine->setText( data->getUser() );
448 passLine->setText( data->getPassword() ); 450 passLine->setText( data->getPassword() );
449 localFolder->setText( data->getLocalFolder() ); 451 localFolder->setText( data->getLocalFolder() );
450 int max = data->getMaxMailSize() ; 452 int max = data->getMaxMailSize() ;
451 if ( max ) { 453 if ( max ) {
452 CheckBoxDown->setChecked( true ); 454 CheckBoxDown->setChecked( true );
453 SpinBoxDown->setValue ( max ); 455 SpinBoxDown->setValue ( max );
454 } else { 456 } else {
455 CheckBoxDown->setChecked( false ); 457 CheckBoxDown->setChecked( false );
456 SpinBoxDown->setValue ( 5 ); 458 SpinBoxDown->setValue ( 5 );
457 } 459 }
458 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() ); 460 CheckBoxLeaveOn->setChecked( data->getLeaveOnServer() );
459} 461}
460 462
461void POP3config::accept() 463void POP3config::accept()
462{ 464{
463 if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) { 465 if ( localFolder->text().contains("/") ||localFolder->text().contains("\\") ) {
464 QMessageBox::information( this, i18n( "Error" ), 466 QMessageBox::information( this, i18n( "Error" ),
465 i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ), 467 i18n( "No paths allowed in\nlocal folder settings.\nPlease specify a folder\nname or leave empty\nto create local folder\nwith account name\nautomatically." ),
466 i18n( "Ok" ) ); 468 i18n( "Ok" ) );
467 return; 469 return;
468 } 470 }
469 data->setAccountName( accountLine->text() ); 471 data->setAccountName( accountLine->text() );
470 data->setServer( serverLine->text() ); 472 data->setServer( serverLine->text() );
471 data->setPort( portLine->text() ); 473 data->setPort( portLine->text() );
472 data->setConnectionType( ComboBox1->currentItem() ); 474 data->setConnectionType( ComboBox1->currentItem() );
473 data->setUser( userLine->text() ); 475 data->setUser( userLine->text() );
474 data->setPassword( passLine->text() ); 476 data->setPassword( passLine->text() );
475 data->setLocalFolder( localFolder->text() ); 477 data->setLocalFolder( localFolder->text() );
476 data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ; 478 data->setMaxMailSize( CheckBoxDown->isChecked()?SpinBoxDown->value():0 ) ;
477 data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() ); 479 data->setLeaveOnServer( CheckBoxLeaveOn->isChecked() );
478 480
479 QDialog::accept(); 481 QDialog::accept();
480} 482}
481 483
482/** 484/**
483 * SMTPconfig 485 * SMTPconfig
484 */ 486 */
485 487
486SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) 488SMTPconfig::SMTPconfig( SMTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags )
487 : SMTPconfigUI( parent, name, modal, flags ) 489 : SMTPconfigUI( parent, name, modal, flags )
488{ 490{
489 data = account; 491 data = account;
490 492
491 connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) ); 493 connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) );
492 connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) ); 494 connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) );
493 495
494 fillValues(); 496 // fillValues();
495 QIconSet icon; 497 QIconSet icon;
496 //icon = SmallIcon("fileexport"); 498 //icon = SmallIcon("fileexport");
497 icon = SmallIcon("fileopen"); 499 icon = SmallIcon("fileopen");
498 SignaturButton->setText(""); 500 SignaturButton->setText("");
499 SignaturButton->setIconSet (icon ) ; 501 SignaturButton->setIconSet (icon ) ;
500 SignaturButton->setMaximumSize ( SignaturButton->sizeHint().height()+4,SignaturButton->sizeHint().height()) ; 502 SignaturButton->setMaximumSize ( SignaturButton->sizeHint().height()+4,SignaturButton->sizeHint().height()) ;
501 connect( SignaturButton, SIGNAL( clicked() ), this, SLOT( chooseSig() ) ); 503 connect( SignaturButton, SIGNAL( clicked() ), this, SLOT( chooseSig() ) );
502 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) ); 504 connect( ComboBox1, SIGNAL( activated(int) ), SLOT( slotConnectionToggle(int) ) );
503 ComboBox1->insertItem( "Only if available", 0 ); 505 ComboBox1->insertItem( "No secure connection, no TLS", 0 );
504 ComboBox1->insertItem( "Always, Negotiated", 1 ); 506 ComboBox1->insertItem( "Only if available, try TLS", 1 );
505 ComboBox1->insertItem( "Connect on secure port", 2 ); 507 ComboBox1->insertItem( "Always, use TLS", 2 );
506 ComboBox1->insertItem( "Run command instead", 3 ); 508 ComboBox1->insertItem( "Connect on secure port (SSL)", 3 );
509 ComboBox1->insertItem( "Run command instead", 4 );
507 CommandEdit->hide(); 510 CommandEdit->hide();
508 ComboBox1->setCurrentItem( data->ConnectionType() ); 511 fillValues();
512 //ComboBox1->setCurrentItem( data->ConnectionType() );
509} 513}
510void SMTPconfig::chooseSig() 514void SMTPconfig::chooseSig()
511{ 515{
512 QString lnk = KFileDialog::getOpenFileName( "", "Choose Signatur File", this ); 516 QString lnk = KFileDialog::getOpenFileName( "", "Choose Signatur File", this );
513 if ( !lnk.isEmpty() ) { 517 if ( !lnk.isEmpty() ) {
514 SignaturEdit->setText( lnk ); 518 SignaturEdit->setText( lnk );
515 } 519 }
516} 520}
517void SMTPconfig::slotConnectionToggle( int index ) 521void SMTPconfig::slotConnectionToggle( int index )
518{ 522{
519 // 2 is ssl connection 523 // 2 is ssl connection
520 if ( index == 2 ) 524 if ( index == 2 )
521 { 525 {
522 portLine->setText( SMTP_SSL_PORT ); 526 portLine->setText( SMTP_SSL_PORT );
523 } 527 }
524 else if ( index == 3 ) 528 else if ( index == 3 )
525 { 529 {
526 portLine->setText( SMTP_PORT ); 530 portLine->setText( SMTP_PORT );
527 CommandEdit->show(); 531 CommandEdit->show();
528 } 532 }
529 else 533 else
530 { 534 {
531 portLine->setText( SMTP_PORT ); 535 portLine->setText( SMTP_PORT );
532 } 536 }
533} 537}
534 538
535void SMTPconfig::fillValues() 539void SMTPconfig::fillValues()
536{ 540{
537 accountLine->setText( data->getAccountName() ); 541 accountLine->setText( data->getAccountName() );
538 serverLine->setText( data->getServer() ); 542 serverLine->setText( data->getServer() );
539 portLine->setText( data->getPort() ); 543 portLine->setText( data->getPort() );
540 ComboBox1->setCurrentItem( data->ConnectionType() ); 544 ComboBox1->setCurrentItem( data->ConnectionType() );
541 loginBox->setChecked( data->getLogin() ); 545 loginBox->setChecked( data->getLogin() );
542 userLine->setText( data->getUser() ); 546 userLine->setText( data->getUser() );
543 passLine->setText( data->getPassword() ); 547 passLine->setText( data->getPassword() );
544 SignaturEdit->setText( data->getSigFile() ); 548 SignaturEdit->setText( data->getSigFile() );
545} 549}
546 550
547void SMTPconfig::accept() 551void SMTPconfig::accept()
548{ 552{
549 data->setAccountName( accountLine->text() ); 553 data->setAccountName( accountLine->text() );
550 data->setServer( serverLine->text() ); 554 data->setServer( serverLine->text() );
551 data->setPort( portLine->text() ); 555 data->setPort( portLine->text() );
552 data->setConnectionType( ComboBox1->currentItem() ); 556 data->setConnectionType( ComboBox1->currentItem() );
553 data->setLogin( loginBox->isChecked() ); 557 data->setLogin( loginBox->isChecked() );
554 data->setUser( userLine->text() ); 558 data->setUser( userLine->text() );
555 data->setPassword( passLine->text() ); 559 data->setPassword( passLine->text() );
556 data->setSigFile( SignaturEdit->text() ); 560 data->setSigFile( SignaturEdit->text() );
557 561
558 QDialog::accept(); 562 QDialog::accept();
559} 563}
560 564
561/** 565/**
562 * NNTPconfig 566 * NNTPconfig
563 */ 567 */
564 568
565NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags ) 569NNTPconfig::NNTPconfig( NNTPaccount *account, QWidget *parent, const char *name, bool modal, WFlags flags )
566 : NNTPconfigUI( parent, name, modal, flags ) 570 : NNTPconfigUI( parent, name, modal, flags )
567{ 571{
568 data = account; 572 data = account;
569 573
570 connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) ); 574 connect( loginBox, SIGNAL( toggled(bool) ), userLine, SLOT( setEnabled(bool) ) );
571 connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) ); 575 connect( loginBox, SIGNAL( toggled(bool) ), passLine, SLOT( setEnabled(bool) ) );
572 connect( GetNGButton, SIGNAL( clicked() ), this, SLOT( slotGetNG() ) ); 576 connect( GetNGButton, SIGNAL( clicked() ), this, SLOT( slotGetNG() ) );
573 connect( ShowSubcribed, SIGNAL( clicked() ), this, SLOT( slotShowSub() ) ); 577 connect( ShowSubcribed, SIGNAL( clicked() ), this, SLOT( slotShowSub() ) );
574 connect( FilterButton, SIGNAL( clicked() ), this, SLOT( slotShowFilter() ) ); 578 connect( FilterButton, SIGNAL( clicked() ), this, SLOT( slotShowFilter() ) );
575 fillValues(); 579 fillValues();
576 580
577 connect( sslBox, SIGNAL( toggled(bool) ), SLOT( slotSSL(bool) ) ); 581 connect( sslBox, SIGNAL( toggled(bool) ), SLOT( slotSSL(bool) ) );
578} 582}
579 583
580void NNTPconfig::slotShowSub() 584void NNTPconfig::slotShowSub()
581{ 585{
582 save(); 586 save();
583 data->save(); 587 data->save();
584 ListViewGroups->clear(); 588 ListViewGroups->clear();
585 for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) { 589 for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) {
586 QCheckListItem *item; 590 QCheckListItem *item;
587 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); 591 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
588 item->setOn( true ); 592 item->setOn( true );
589 } 593 }
590 topLevelWidget()->setCaption( i18n("%1 groups subscribed").arg( subscribedGroups.count())); 594 topLevelWidget()->setCaption( i18n("%1 groups subscribed").arg( subscribedGroups.count()));
591} 595}
592void NNTPconfig::slotShowFilter() 596void NNTPconfig::slotShowFilter()
593{ 597{
594 save(); 598 save();
595 data->save(); 599 data->save();
596 ListViewGroups->clear(); 600 ListViewGroups->clear();
597 int count = 0; 601 int count = 0;
598 for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) { 602 for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) {
599 QCheckListItem *item; 603 QCheckListItem *item;
600 if ( GroupFilter->text().isEmpty() || (*it).find( GroupFilter->text() ) >= 0 ) { 604 if ( GroupFilter->text().isEmpty() || (*it).find( GroupFilter->text() ) >= 0 ) {
601 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); 605 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
602 ++count; 606 ++count;
603 if ( subscribedGroups.contains( (*it) ) >= 1 ) { 607 if ( subscribedGroups.contains( (*it) ) >= 1 ) {
604 item->setOn( true ); 608 item->setOn( true );
605 } 609 }
606 } 610 }
607 } 611 }
608 topLevelWidget()->setCaption( i18n("Filter found %1 groups").arg( count)); 612 topLevelWidget()->setCaption( i18n("Filter found %1 groups").arg( count));
609} 613}
610void NNTPconfig::slotGetNG() { 614void NNTPconfig::slotGetNG() {
611 save(); 615 save();
612 data->save(); 616 data->save();
613 topLevelWidget()->setCaption( i18n("Fetching group list...")); 617 topLevelWidget()->setCaption( i18n("Fetching group list..."));
614 qApp->processEvents(); 618 qApp->processEvents();
615 NNTPwrapper* tmp = new NNTPwrapper( data ); 619 NNTPwrapper* tmp = new NNTPwrapper( data );
616 allGroups = tmp->listAllNewsgroups(); 620 allGroups = tmp->listAllNewsgroups();
617 topLevelWidget()->setCaption( i18n("Downloaded %1 group names").arg( allGroups.count())); 621 topLevelWidget()->setCaption( i18n("Downloaded %1 group names").arg( allGroups.count()));
618 622
619 ListViewGroups->clear(); 623 ListViewGroups->clear();
620 624
621 for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) { 625 for ( QStringList::Iterator it = allGroups.begin(); it != allGroups.end(); ++it ) {
622 QCheckListItem *item; 626 QCheckListItem *item;
623 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); 627 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
624 if ( subscribedGroups.contains( (*it) ) >= 1 ) { 628 if ( subscribedGroups.contains( (*it) ) >= 1 ) {
625 item->setOn( true ); 629 item->setOn( true );
626 630
627 } 631 }
628 } 632 }
629 delete tmp; 633 delete tmp;
630} 634}
631 635
632void NNTPconfig::slotSSL( bool enabled ) 636void NNTPconfig::slotSSL( bool enabled )
633{ 637{
634 if ( enabled ) 638 if ( enabled )
635 { 639 {
636 portLine->setText( NNTP_SSL_PORT ); 640 portLine->setText( NNTP_SSL_PORT );
637 } 641 }
638 else 642 else
639 { 643 {
640 portLine->setText( NNTP_PORT ); 644 portLine->setText( NNTP_PORT );
641 } 645 }
642} 646}
643 647
644void NNTPconfig::fillValues() 648void NNTPconfig::fillValues()
645{ 649{
646 accountLine->setText( data->getAccountName() ); 650 accountLine->setText( data->getAccountName() );
647 serverLine->setText( data->getServer() ); 651 serverLine->setText( data->getServer() );
648 portLine->setText( data->getPort() ); 652 portLine->setText( data->getPort() );
649 sslBox->setChecked( data->getSSL() ); 653 sslBox->setChecked( data->getSSL() );
650 loginBox->setChecked( data->getLogin() ); 654 loginBox->setChecked( data->getLogin() );
651 userLine->setText( data->getUser() ); 655 userLine->setText( data->getUser() );
652 passLine->setText( data->getPassword() ); 656 passLine->setText( data->getPassword() );
653 subscribedGroups = data->getGroups(); 657 subscribedGroups = data->getGroups();
654 /* don't forget that - you will overwrite values if user clicks cancel! */ 658 /* don't forget that - you will overwrite values if user clicks cancel! */
655 for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) { 659 for ( QStringList::Iterator it = subscribedGroups.begin(); it != subscribedGroups.end(); ++it ) {
656 QCheckListItem *item; 660 QCheckListItem *item;
657 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox ); 661 item = new QCheckListItem( ListViewGroups, (*it), QCheckListItem::CheckBox );
658 item->setOn( true ); 662 item->setOn( true );
659 } 663 }
660} 664}
661 665
662void NNTPconfig::save() 666void NNTPconfig::save()
663{ 667{
664 data->setAccountName( accountLine->text() ); 668 data->setAccountName( accountLine->text() );
665 data->setServer( serverLine->text() ); 669 data->setServer( serverLine->text() );
666 data->setPort( portLine->text() ); 670 data->setPort( portLine->text() );
667 data->setSSL( sslBox->isChecked() ); 671 data->setSSL( sslBox->isChecked() );
668 data->setLogin( loginBox->isChecked() ); 672 data->setLogin( loginBox->isChecked() );
669 data->setUser( userLine->text() ); 673 data->setUser( userLine->text() );
670 data->setPassword( passLine->text() ); 674 data->setPassword( passLine->text() );
671 675
672 QListViewItemIterator list_it( ListViewGroups ); 676 QListViewItemIterator list_it( ListViewGroups );
673 677
674 for ( ; list_it.current(); ++list_it ) { 678 for ( ; list_it.current(); ++list_it ) {
675 679
676 if ( ( (QCheckListItem*)list_it.current() )->isOn() ) { 680 if ( ( (QCheckListItem*)list_it.current() )->isOn() ) {
677 if ( subscribedGroups.contains( list_it.current()->text(0) ) < 1 ) 681 if ( subscribedGroups.contains( list_it.current()->text(0) ) < 1 )
678 subscribedGroups.append( list_it.current()->text(0) ); 682 subscribedGroups.append( list_it.current()->text(0) );
679 } else { 683 } else {
680 if ( subscribedGroups.contains( list_it.current()->text(0) ) >= 1 ) 684 if ( subscribedGroups.contains( list_it.current()->text(0) ) >= 1 )
681 subscribedGroups.remove( list_it.current()->text(0) ); 685 subscribedGroups.remove( list_it.current()->text(0) );
682 } 686 }
683 687
684 } 688 }
685 data->setGroups( subscribedGroups ); 689 data->setGroups( subscribedGroups );
686} 690}
687 691
688void NNTPconfig::accept() 692void NNTPconfig::accept()
689{ 693{
690 save(); 694 save();
691 QDialog::accept(); 695 QDialog::accept();
692} 696}
693 697
diff --git a/kmicromail/libetpan/tools/mailstream_socket.c b/kmicromail/libetpan/tools/mailstream_socket.c
index 04a6f48..fd2c758 100644
--- a/kmicromail/libetpan/tools/mailstream_socket.c
+++ b/kmicromail/libetpan/tools/mailstream_socket.c
@@ -1,246 +1,246 @@
1/* 1/*
2 * libEtPan! -- a mail stuff library 2 * libEtPan! -- a mail stuff library
3 * 3 *
4 * Copyright (C) 2001, 2002 - DINH Viet Hoa 4 * Copyright (C) 2001, 2002 - DINH Viet Hoa
5 * All rights reserved. 5 * All rights reserved.
6 * 6 *
7 * Redistribution and use in source and binary forms, with or without 7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions 8 * modification, are permitted provided that the following conditions
9 * are met: 9 * are met:
10 * 1. Redistributions of source code must retain the above copyright 10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer. 11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright 12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the 13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution. 14 * documentation and/or other materials provided with the distribution.
15 * 3. Neither the name of the libEtPan! project nor the names of its 15 * 3. Neither the name of the libEtPan! project nor the names of its
16 * contributors may be used to endorse or promote products derived 16 * contributors may be used to endorse or promote products derived
17 * from this software without specific prior written permission. 17 * from this software without specific prior written permission.
18 * 18 *
19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 19 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 22 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE. 29 * SUCH DAMAGE.
30 */ 30 */
31 31
32/* 32/*
33 * $Id$ 33 * $Id$
34 */ 34 */
35 35
36#include "mailstream_socket.h" 36#include "mailstream_socket.h"
37#include <unistd.h> 37#include <unistd.h>
38#include <stdlib.h> 38#include <stdlib.h>
39#include <fcntl.h> 39#include <fcntl.h>
40 40
41/* 41/*
42 these 3 headers MUST be included before <sys/select.h> 42 these 3 headers MUST be included before <sys/select.h>
43 to insure compatibility with Mac OS X (this is true for 10.2) 43 to insure compatibility with Mac OS X (this is true for 10.2)
44*/ 44*/
45#include <sys/time.h> 45#include <sys/time.h>
46#include <sys/socket.h> 46#include <sys/socket.h>
47#include <sys/types.h> 47#include <sys/types.h>
48#include <unistd.h> 48#include <unistd.h>
49#include <sys/select.h> 49#include <sys/select.h>
50 50
51/* mailstream_low, socket */ 51/* mailstream_low, socket */
52 52
53static int mailstream_low_socket_close(mailstream_low * s); 53static int mailstream_low_socket_close(mailstream_low * s);
54static ssize_t mailstream_low_socket_read(mailstream_low * s, 54static ssize_t mailstream_low_socket_read(mailstream_low * s,
55 void * buf, size_t count); 55 void * buf, size_t count);
56static ssize_t mailstream_low_socket_write(mailstream_low * s, 56static ssize_t mailstream_low_socket_write(mailstream_low * s,
57 const void * buf, size_t count); 57 const void * buf, size_t count);
58static void mailstream_low_socket_free(mailstream_low * s); 58static void mailstream_low_socket_free(mailstream_low * s);
59static int mailstream_low_socket_get_fd(mailstream_low * s); 59static int mailstream_low_socket_get_fd(mailstream_low * s);
60 60
61static mailstream_low_driver local_mailstream_socket_driver = { 61static mailstream_low_driver local_mailstream_socket_driver = {
62 mailstream_read: mailstream_low_socket_read, 62 mailstream_read: mailstream_low_socket_read,
63 mailstream_write: mailstream_low_socket_write, 63 mailstream_write: mailstream_low_socket_write,
64 mailstream_close: mailstream_low_socket_close, 64 mailstream_close: mailstream_low_socket_close,
65 mailstream_free: mailstream_low_socket_free, 65 mailstream_free: mailstream_low_socket_free,
66 mailstream_get_fd: mailstream_low_socket_get_fd, 66 mailstream_get_fd: mailstream_low_socket_get_fd,
67}; 67};
68 68
69mailstream_low_driver * mailstream_socket_driver = 69mailstream_low_driver * mailstream_socket_driver =
70&local_mailstream_socket_driver; 70&local_mailstream_socket_driver;
71 71
72/* file descriptor must be given in (default) blocking-mode */ 72/* file descriptor must be given in (default) blocking-mode */
73 73
74static struct mailstream_socket_data * socket_data_new(int fd) 74static struct mailstream_socket_data * socket_data_new(int fd)
75{ 75{
76 struct mailstream_socket_data * socket_data; 76 struct mailstream_socket_data * socket_data;
77 77
78 socket_data = malloc(sizeof(* socket_data)); 78 socket_data = malloc(sizeof(* socket_data));
79 if (socket_data == NULL) 79 if (socket_data == NULL)
80 goto err; 80 goto err;
81 81
82 socket_data->fd = fd; 82 socket_data->fd = fd;
83 83
84 return socket_data; 84 return socket_data;
85 85
86 err: 86 err:
87 return NULL; 87 return NULL;
88} 88}
89 89
90static void socket_data_free(struct mailstream_socket_data * socket_data) 90static void socket_data_free(struct mailstream_socket_data * socket_data)
91{ 91{
92 free(socket_data); 92 free(socket_data);
93} 93}
94 94
95static void socket_data_close(struct mailstream_socket_data * socket_data) 95static void socket_data_close(struct mailstream_socket_data * socket_data)
96{ 96{
97 close(socket_data->fd); 97 close(socket_data->fd);
98 socket_data->fd = -1; 98 socket_data->fd = -1;
99} 99}
100 100
101mailstream_low * mailstream_low_socket_open(int fd) 101mailstream_low * mailstream_low_socket_open(int fd)
102{ 102{
103 mailstream_low * s; 103 mailstream_low * s;
104 struct mailstream_socket_data * socket_data; 104 struct mailstream_socket_data * socket_data;
105 105
106 socket_data = socket_data_new(fd); 106 socket_data = socket_data_new(fd);
107 if (socket_data == NULL) 107 if (socket_data == NULL)
108 goto err; 108 goto err;
109 109
110 s = mailstream_low_new(socket_data, mailstream_socket_driver); 110 s = mailstream_low_new(socket_data, mailstream_socket_driver);
111 if (s == NULL) 111 if (s == NULL)
112 goto free_socket_data; 112 goto free_socket_data;
113 113
114 return s; 114 return s;
115 115
116 free_socket_data: 116 free_socket_data:
117 socket_data_free(socket_data); 117 socket_data_free(socket_data);
118 err: 118 err:
119 return NULL; 119 return NULL;
120} 120}
121 121
122static int mailstream_low_socket_close(mailstream_low * s) 122static int mailstream_low_socket_close(mailstream_low * s)
123{ 123{
124 struct mailstream_socket_data * socket_data; 124 struct mailstream_socket_data * socket_data;
125 125
126 socket_data = (struct mailstream_socket_data *) s->data; 126 socket_data = (struct mailstream_socket_data *) s->data;
127 socket_data_close(socket_data); 127 socket_data_close(socket_data);
128 128
129 return 0; 129 return 0;
130} 130}
131 131
132static void mailstream_low_socket_free(mailstream_low * s) 132static void mailstream_low_socket_free(mailstream_low * s)
133{ 133{
134 struct mailstream_socket_data * socket_data; 134 struct mailstream_socket_data * socket_data;
135 135
136 socket_data = (struct mailstream_socket_data *) s->data; 136 socket_data = (struct mailstream_socket_data *) s->data;
137 socket_data_free(socket_data); 137 socket_data_free(socket_data);
138 s->data = NULL; 138 s->data = NULL;
139 139
140 free(s); 140 free(s);
141} 141}
142 142
143static int mailstream_low_socket_get_fd(mailstream_low * s) 143static int mailstream_low_socket_get_fd(mailstream_low * s)
144{ 144{
145 struct mailstream_socket_data * socket_data; 145 struct mailstream_socket_data * socket_data;
146 146
147 socket_data = (struct mailstream_socket_data *) s->data; 147 socket_data = (struct mailstream_socket_data *) s->data;
148 return socket_data->fd; 148 return socket_data->fd;
149} 149}
150 150
151 151
152static ssize_t mailstream_low_socket_read(mailstream_low * s, 152static ssize_t mailstream_low_socket_read(mailstream_low * s,
153 void * buf, size_t count) 153 void * buf, size_t count)
154{ 154{
155 struct mailstream_socket_data * socket_data; 155 struct mailstream_socket_data * socket_data;
156 156
157 socket_data = (struct mailstream_socket_data *) s->data; 157 socket_data = (struct mailstream_socket_data *) s->data;
158 158
159 /* timeout */ 159 /* timeout */
160 { 160 {
161 fd_set fds_read; 161 fd_set fds_read;
162 fd_set fds_excp; 162 fd_set fds_excp;
163 struct timeval timeout; 163 struct timeval timeout;
164 int r; 164 int r;
165 165
166 timeout = mailstream_network_delay; 166 timeout = mailstream_network_delay;
167 167
168 FD_ZERO(&fds_read); 168 FD_ZERO(&fds_read);
169 FD_SET(socket_data->fd, &fds_read); 169 FD_SET(socket_data->fd, &fds_read);
170 FD_ZERO(&fds_excp); 170 FD_ZERO(&fds_excp);
171 FD_SET(socket_data->fd, &fds_excp); 171 FD_SET(socket_data->fd, &fds_excp);
172 // LUTZ for safety I insert here a max val as well 172 // LUTZ for safety I insert here a max val as well
173 if ( timeout.tv_sec > DEFAULT_NETWORK_TIMEOUT ) 173 if ( timeout.tv_sec > DEFAULT_NETWORK_TIMEOUT )
174 timeout.tv_sec = DEFAULT_NETWORK_TIMEOUT; 174 timeout.tv_sec = DEFAULT_NETWORK_TIMEOUT;
175 r = select(socket_data->fd + 1, &fds_read, NULL, &fds_excp, &timeout); 175 r = select(socket_data->fd + 1, &fds_read, NULL, &fds_excp, &timeout);
176 if (r < 1 ) 176 if (r < 1 )
177 return -1; 177 return -1;
178 if (FD_ISSET(socket_data->fd, &fds_excp)) 178 if (FD_ISSET(socket_data->fd, &fds_excp))
179 return -1; 179 return -1;
180 if (!FD_ISSET(socket_data->fd, &fds_read)) 180 if (!FD_ISSET(socket_data->fd, &fds_read))
181 return 0; 181 return 0;
182 } 182 }
183 return recv(socket_data->fd,buf,count,MSG_NOSIGNAL); 183 return recv(socket_data->fd,buf,count,MSG_NOSIGNAL);
184 //return read(socket_data->fd, buf, count); 184 //return read(socket_data->fd, buf, count);
185} 185}
186#include <stdio.h> 186#include <stdio.h>
187static ssize_t mailstream_low_socket_write(mailstream_low * s, 187static ssize_t mailstream_low_socket_write(mailstream_low * s,
188 const void * buf, size_t count) 188 const void * buf, size_t count)
189{ 189{
190 struct mailstream_socket_data * socket_data; 190 struct mailstream_socket_data * socket_data;
191 191
192 socket_data = (struct mailstream_socket_data *) s->data; 192 socket_data = (struct mailstream_socket_data *) s->data;
193 /* timeout */ 193 /* timeout */
194 { 194 {
195 fd_set fds_write; 195 fd_set fds_write;
196 fd_set fds_excp; 196 fd_set fds_excp;
197 struct timeval timeout; 197 struct timeval timeout;
198 int r; 198 int r;
199 199
200 timeout = mailstream_network_delay; 200 timeout = mailstream_network_delay;
201 201
202 FD_ZERO(&fds_write); 202 FD_ZERO(&fds_write);
203 FD_SET(socket_data->fd, &fds_write); 203 FD_SET(socket_data->fd, &fds_write);
204 FD_ZERO(&fds_excp); 204 FD_ZERO(&fds_excp);
205 FD_SET(socket_data->fd, &fds_excp); 205 FD_SET(socket_data->fd, &fds_excp);
206 // LUTZ next line blocks sometimes 206 // LUTZ next line blocks sometimes
207 if ( timeout.tv_sec > DEFAULT_NETWORK_TIMEOUT ) 207 if ( timeout.tv_sec > DEFAULT_NETWORK_TIMEOUT )
208 timeout.tv_sec = DEFAULT_NETWORK_TIMEOUT; 208 timeout.tv_sec = DEFAULT_NETWORK_TIMEOUT;
209 fprintf(stderr,"fd %d to secs %d \n", socket_data->fd, timeout.tv_sec ); 209 //fprintf(stderr,"fd %d to secs %d \n", socket_data->fd, timeout.tv_sec );
210 r = select(socket_data->fd + 1, NULL, &fds_write, &fds_excp, &timeout); 210 r = select(socket_data->fd + 1, NULL, &fds_write, &fds_excp, &timeout);
211 if (r < 1) 211 if (r < 1)
212 return -1; 212 return -1;
213 if (FD_ISSET(socket_data->fd, &fds_excp)) 213 if (FD_ISSET(socket_data->fd, &fds_excp))
214 return -1; 214 return -1;
215 if (!FD_ISSET(socket_data->fd, &fds_write)) 215 if (!FD_ISSET(socket_data->fd, &fds_write))
216 return 0; 216 return 0;
217 } 217 }
218 218
219 return send(socket_data->fd,buf,count,MSG_NOSIGNAL); 219 return send(socket_data->fd,buf,count,MSG_NOSIGNAL);
220 //return write(socket_data->fd, buf, count); 220 //return write(socket_data->fd, buf, count);
221} 221}
222 222
223 223
224/* mailstream */ 224/* mailstream */
225 225
226mailstream * mailstream_socket_open(int fd) 226mailstream * mailstream_socket_open(int fd)
227{ 227{
228 mailstream_low * low; 228 mailstream_low * low;
229 mailstream * s; 229 mailstream * s;
230 230
231 low = mailstream_low_socket_open(fd); 231 low = mailstream_low_socket_open(fd);
232 if (low == NULL) 232 if (low == NULL)
233 goto err; 233 goto err;
234 234
235 s = mailstream_new(low, 8192); 235 s = mailstream_new(low, 8192);
236 if (s == NULL) 236 if (s == NULL)
237 goto free_low; 237 goto free_low;
238 238
239 return s; 239 return s;
240 240
241 free_low: 241 free_low:
242 mailstream_low_close(low); 242 mailstream_low_close(low);
243 err: 243 err:
244 return NULL; 244 return NULL;
245} 245}
246 246
diff --git a/kmicromail/libmailwrapper/smtpwrapper.cpp b/kmicromail/libmailwrapper/smtpwrapper.cpp
index 5096f67..872a460 100644
--- a/kmicromail/libmailwrapper/smtpwrapper.cpp
+++ b/kmicromail/libmailwrapper/smtpwrapper.cpp
@@ -1,470 +1,472 @@
1#include "smtpwrapper.h" 1#include "smtpwrapper.h"
2#include "mailwrapper.h" 2#include "mailwrapper.h"
3#include "abstractmail.h" 3#include "abstractmail.h"
4#include "logindialog.h" 4#include "logindialog.h"
5#include "mailtypes.h" 5#include "mailtypes.h"
6#include "sendmailprogress.h" 6#include "sendmailprogress.h"
7 7
8//#include <opie2/odebug.h> 8//#include <opie2/odebug.h>
9//#include <qt.h> 9//#include <qt.h>
10#include <qapplication.h> 10#include <qapplication.h>
11#include <qmessagebox.h> 11#include <qmessagebox.h>
12#include <stdlib.h> 12#include <stdlib.h>
13#ifndef DESKTOP_VERSION 13#ifndef DESKTOP_VERSION
14//#include <qpe/config.h> 14//#include <qpe/config.h>
15#include <qpe/qcopenvelope_qws.h> 15#include <qpe/qcopenvelope_qws.h>
16#endif 16#endif
17#include <libetpan/libetpan.h> 17#include <libetpan/libetpan.h>
18#include <klocale.h> 18#include <klocale.h>
19#include <kglobal.h> 19#include <kglobal.h>
20#include <kconfig.h> 20#include <kconfig.h>
21 21
22 22
23using namespace Opie::Core; 23using namespace Opie::Core;
24progressMailSend*SMTPwrapper::sendProgress = 0; 24progressMailSend*SMTPwrapper::sendProgress = 0;
25 25
26SMTPwrapper::SMTPwrapper(SMTPaccount * aSmtp ) 26SMTPwrapper::SMTPwrapper(SMTPaccount * aSmtp )
27 : Generatemail() 27 : Generatemail()
28{ 28{
29 m_SmtpAccount = aSmtp; 29 m_SmtpAccount = aSmtp;
30 KConfig cfg( locateLocal("config", "kopiemailrc" ) ); 30 KConfig cfg( locateLocal("config", "kopiemailrc" ) );
31 cfg.setGroup( "Status" ); 31 cfg.setGroup( "Status" );
32 m_queuedMail = cfg.readNumEntry( "outgoing", 0 ); 32 m_queuedMail = cfg.readNumEntry( "outgoing", 0 );
33 emit queuedMails( m_queuedMail ); 33 emit queuedMails( m_queuedMail );
34 connect( this, SIGNAL( queuedMails(int) ), this, SLOT( emitQCop(int) ) ); 34 connect( this, SIGNAL( queuedMails(int) ), this, SLOT( emitQCop(int) ) );
35 m_smtp = 0; 35 m_smtp = 0;
36} 36}
37 37
38SMTPwrapper::~SMTPwrapper() 38SMTPwrapper::~SMTPwrapper()
39{ 39{
40 disc_server(); 40 disc_server();
41} 41}
42 42
43void SMTPwrapper::emitQCop( int queued ) { 43void SMTPwrapper::emitQCop( int queued ) {
44#ifndef DESKTOP_VERSION 44#ifndef DESKTOP_VERSION
45 // LR : not used in kde-pim 45 // LR : not used in kde-pim
46 //QCopEnvelope env( "QPE/Pim", "outgoingMails(int)" ); 46 //QCopEnvelope env( "QPE/Pim", "outgoingMails(int)" );
47 //env << queued; 47 //env << queued;
48#endif 48#endif
49} 49}
50 50
51QString SMTPwrapper::mailsmtpError( int errnum ) { 51QString SMTPwrapper::mailsmtpError( int errnum ) {
52 switch ( errnum ) { 52 switch ( errnum ) {
53 case MAILSMTP_NO_ERROR: 53 case MAILSMTP_NO_ERROR:
54 return i18n( "No error" ); 54 return i18n( "No error" );
55 case MAILSMTP_ERROR_UNEXPECTED_CODE: 55 case MAILSMTP_ERROR_UNEXPECTED_CODE:
56 return i18n( "Unexpected error code" ); 56 return i18n( "Unexpected error code" );
57 case MAILSMTP_ERROR_SERVICE_NOT_AVAILABLE: 57 case MAILSMTP_ERROR_SERVICE_NOT_AVAILABLE:
58 return i18n( "Service not available" ); 58 return i18n( "Service not available" );
59 case MAILSMTP_ERROR_STREAM: 59 case MAILSMTP_ERROR_STREAM:
60 return i18n( "Stream error" ); 60 return i18n( "Stream error" );
61 case MAILSMTP_ERROR_HOSTNAME: 61 case MAILSMTP_ERROR_HOSTNAME:
62 return i18n( "gethostname() failed" ); 62 return i18n( "gethostname() failed" );
63 case MAILSMTP_ERROR_NOT_IMPLEMENTED: 63 case MAILSMTP_ERROR_NOT_IMPLEMENTED:
64 return i18n( "Not implemented" ); 64 return i18n( "Not implemented" );
65 case MAILSMTP_ERROR_ACTION_NOT_TAKEN: 65 case MAILSMTP_ERROR_ACTION_NOT_TAKEN:
66 return i18n( "Error, action not taken" ); 66 return i18n( "Error, action not taken" );
67 case MAILSMTP_ERROR_EXCEED_STORAGE_ALLOCATION: 67 case MAILSMTP_ERROR_EXCEED_STORAGE_ALLOCATION:
68 return i18n( "Data exceeds storage allocation" ); 68 return i18n( "Data exceeds storage allocation" );
69 case MAILSMTP_ERROR_IN_PROCESSING: 69 case MAILSMTP_ERROR_IN_PROCESSING:
70 return i18n( "Error in processing" ); 70 return i18n( "Error in processing" );
71 case MAILSMTP_ERROR_STARTTLS_NOT_SUPPORTED: 71 case MAILSMTP_ERROR_STARTTLS_NOT_SUPPORTED:
72 return i18n( "Starttls not supported" ); 72 return i18n( "Starttls not supported" );
73 // case MAILSMTP_ERROR_INSUFFISANT_SYSTEM_STORAGE: 73 // case MAILSMTP_ERROR_INSUFFISANT_SYSTEM_STORAGE:
74 // return i18n( "Insufficient system storage" ); 74 // return i18n( "Insufficient system storage" );
75 case MAILSMTP_ERROR_MAILBOX_UNAVAILABLE: 75 case MAILSMTP_ERROR_MAILBOX_UNAVAILABLE:
76 return i18n( "Mailbox unavailable" ); 76 return i18n( "Mailbox unavailable" );
77 case MAILSMTP_ERROR_MAILBOX_NAME_NOT_ALLOWED: 77 case MAILSMTP_ERROR_MAILBOX_NAME_NOT_ALLOWED:
78 return i18n( "Mailbox name not allowed" ); 78 return i18n( "Mailbox name not allowed" );
79 case MAILSMTP_ERROR_BAD_SEQUENCE_OF_COMMAND: 79 case MAILSMTP_ERROR_BAD_SEQUENCE_OF_COMMAND:
80 return i18n( "Bad command sequence" ); 80 return i18n( "Bad command sequence" );
81 case MAILSMTP_ERROR_USER_NOT_LOCAL: 81 case MAILSMTP_ERROR_USER_NOT_LOCAL:
82 return i18n( "User not local" ); 82 return i18n( "User not local" );
83 case MAILSMTP_ERROR_TRANSACTION_FAILED: 83 case MAILSMTP_ERROR_TRANSACTION_FAILED:
84 return i18n( "Transaction failed" ); 84 return i18n( "Transaction failed" );
85 case MAILSMTP_ERROR_MEMORY: 85 case MAILSMTP_ERROR_MEMORY:
86 return i18n( "Memory error" ); 86 return i18n( "Memory error" );
87 case MAILSMTP_ERROR_CONNECTION_REFUSED: 87 case MAILSMTP_ERROR_CONNECTION_REFUSED:
88 return i18n( "Connection refused" ); 88 return i18n( "Connection refused" );
89 default: 89 default:
90 return i18n( "Unknown error code" ); 90 return i18n( "Unknown error code" );
91 } 91 }
92} 92}
93 93
94 94
95void SMTPwrapper::progress( size_t current, size_t maximum ) { 95void SMTPwrapper::progress( size_t current, size_t maximum ) {
96 if (SMTPwrapper::sendProgress) { 96 if (SMTPwrapper::sendProgress) {
97 SMTPwrapper::sendProgress->setSingleMail(current, maximum ); 97 SMTPwrapper::sendProgress->setSingleMail(current, maximum );
98 qApp->processEvents(); 98 qApp->processEvents();
99 } 99 }
100} 100}
101 101
102void SMTPwrapper::storeMail(const char*mail, size_t length, const QString&box) { 102void SMTPwrapper::storeMail(const char*mail, size_t length, const QString&box) {
103 if (!mail) 103 if (!mail)
104 return; 104 return;
105 QString localfolders = AbstractMail::defaultLocalfolder(); 105 QString localfolders = AbstractMail::defaultLocalfolder();
106 AbstractMail*wrap = AbstractMail::getWrapper(localfolders); 106 AbstractMail*wrap = AbstractMail::getWrapper(localfolders);
107 wrap->createMbox(box); 107 wrap->createMbox(box);
108 wrap->storeMessage(mail,length,box); 108 wrap->storeMessage(mail,length,box);
109 delete wrap; 109 delete wrap;
110} 110}
111 111
112bool SMTPwrapper::smtpSend( mailmime *mail,bool later) { 112bool SMTPwrapper::smtpSend( mailmime *mail,bool later) {
113 clist *rcpts = 0; 113 clist *rcpts = 0;
114 char *from, *data; 114 char *from, *data;
115 size_t size; 115 size_t size;
116 116
117 from = data = 0; 117 from = data = 0;
118 118
119 mailmessage * msg = 0; 119 mailmessage * msg = 0;
120 msg = mime_message_init(mail); 120 msg = mime_message_init(mail);
121 mime_message_set_tmpdir(msg,getenv( "HOME" )); 121 mime_message_set_tmpdir(msg,getenv( "HOME" ));
122 int r = mailmessage_fetch(msg,&data,&size); 122 int r = mailmessage_fetch(msg,&data,&size);
123 mime_message_detach_mime(msg); 123 mime_message_detach_mime(msg);
124 mailmessage_free(msg); 124 mailmessage_free(msg);
125 if (r != MAIL_NO_ERROR || !data) { 125 if (r != MAIL_NO_ERROR || !data) {
126 if (data) 126 if (data)
127 free(data); 127 free(data);
128 qDebug("Error fetching mime... "); 128 qDebug("Error fetching mime... ");
129 return false; 129 return false;
130 } 130 }
131 msg = 0; 131 msg = 0;
132 if (later) { 132 if (later) {
133 storeMail(data,size,"Outgoing"); 133 storeMail(data,size,"Outgoing");
134 if (data) 134 if (data)
135 free( data ); 135 free( data );
136 KConfig cfg( locateLocal("config", "kopiemailrc" ) ); 136 KConfig cfg( locateLocal("config", "kopiemailrc" ) );
137 cfg.setGroup( "Status" ); 137 cfg.setGroup( "Status" );
138 cfg.writeEntry( "outgoing", ++m_queuedMail ); 138 cfg.writeEntry( "outgoing", ++m_queuedMail );
139 emit queuedMails( m_queuedMail ); 139 emit queuedMails( m_queuedMail );
140 return true; 140 return true;
141 } 141 }
142 from = getFrom( mail ); 142 from = getFrom( mail );
143 rcpts = createRcptList( mail->mm_data.mm_message.mm_fields ); 143 rcpts = createRcptList( mail->mm_data.mm_message.mm_fields );
144 bool result = smtpSend(from,rcpts,data,size); 144 bool result = smtpSend(from,rcpts,data,size);
145 if (data) { 145 if (data) {
146 free(data); 146 free(data);
147 } 147 }
148 if (from) { 148 if (from) {
149 free(from); 149 free(from);
150 } 150 }
151 if (rcpts) 151 if (rcpts)
152 smtp_address_list_free( rcpts ); 152 smtp_address_list_free( rcpts );
153 return result; 153 return result;
154} 154}
155 155
156void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage) 156void SMTPwrapper::storeFailedMail(const char*data,unsigned int size, const char*failuremessage)
157{ 157{
158 if (data) { 158 if (data) {
159 storeMail(data,size,"Sendfailed"); 159 storeMail(data,size,"Sendfailed");
160 } 160 }
161 if (failuremessage) { 161 if (failuremessage) {
162 QMessageBox::critical(0,i18n("Error sending mail"), 162 QMessageBox::critical(0,i18n("Error sending mail"),
163 failuremessage); 163 failuremessage);
164 } 164 }
165} 165}
166 166
167int SMTPwrapper::start_smtp_tls() 167int SMTPwrapper::start_smtp_tls()
168{ 168{
169 if (!m_smtp) { 169 if (!m_smtp) {
170 return MAILSMTP_ERROR_IN_PROCESSING; 170 return MAILSMTP_ERROR_IN_PROCESSING;
171 } 171 }
172 int err = mailesmtp_starttls(m_smtp); 172 int err = mailesmtp_starttls(m_smtp);
173 if (err != MAILSMTP_NO_ERROR) return err; 173 if (err != MAILSMTP_NO_ERROR) return err;
174 mailstream_low * low; 174 mailstream_low * low;
175 mailstream_low * new_low; 175 mailstream_low * new_low;
176 low = mailstream_get_low(m_smtp->stream); 176 low = mailstream_get_low(m_smtp->stream);
177 if (!low) { 177 if (!low) {
178 return MAILSMTP_ERROR_IN_PROCESSING; 178 return MAILSMTP_ERROR_IN_PROCESSING;
179 } 179 }
180 int fd = mailstream_low_get_fd(low); 180 int fd = mailstream_low_get_fd(low);
181 if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { 181 if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) {
182 mailstream_low_free(low); 182 mailstream_low_free(low);
183 mailstream_set_low(m_smtp->stream, new_low); 183 mailstream_set_low(m_smtp->stream, new_low);
184 } else { 184 } else {
185 return MAILSMTP_ERROR_IN_PROCESSING; 185 return MAILSMTP_ERROR_IN_PROCESSING;
186 } 186 }
187 return err; 187 return err;
188} 188}
189 189
190void SMTPwrapper::connect_server() 190void SMTPwrapper::connect_server()
191{ 191{
192 QString server, user, pass; 192 QString server, user, pass;
193 bool ssl; 193 bool ssl;
194 uint16_t port; 194 uint16_t port;
195 ssl = false; 195 ssl = false;
196 bool try_tls = true; 196 bool try_tls = false;
197 bool force_tls=false; 197 bool force_tls=false;
198 QString failuretext = ""; 198 QString failuretext = "";
199 199
200 if (m_smtp || !m_SmtpAccount) { 200 if (m_smtp || !m_SmtpAccount) {
201 return; 201 return;
202 } 202 }
203 server = m_SmtpAccount->getServer(); 203 server = m_SmtpAccount->getServer();
204 if ( m_SmtpAccount->ConnectionType() == 2 ) { 204 if ( m_SmtpAccount->ConnectionType() == 3 ) {
205 ssl = true; 205 ssl = true;
206 try_tls = false; 206 try_tls = false;
207 } else if (m_SmtpAccount->ConnectionType() == 1) { 207 } else if (m_SmtpAccount->ConnectionType() == 2) {
208 force_tls = true; 208 force_tls = true;
209 } else if (m_SmtpAccount->ConnectionType() == 1) {
210 try_tls = true;
209 } 211 }
210 int result = 1; 212 int result = 1;
211 port = m_SmtpAccount->getPort().toUInt(); 213 port = m_SmtpAccount->getPort().toUInt();
212 214
213 m_smtp = mailsmtp_new( 20, &progress ); 215 m_smtp = mailsmtp_new( 20, &progress );
214 if ( m_smtp == NULL ) { 216 if ( m_smtp == NULL ) {
215 /* no failure message cause this happens when problems with memory - than we 217 /* no failure message cause this happens when problems with memory - than we
216 we can not display any messagebox */ 218 we can not display any messagebox */
217 return; 219 return;
218 } 220 }
219 221
220 int err = MAILSMTP_NO_ERROR; 222 int err = MAILSMTP_NO_ERROR;
221 ; // odebug << "Servername " << server << " at port " << port << "" << oendl; 223 ; // odebug << "Servername " << server << " at port " << port << "" << oendl;
222 if ( ssl ) { 224 if ( ssl ) {
223 qDebug("smtp: ssl_connect "); 225 qDebug("smtp: ssl_connect ");
224 err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port ); 226 err = mailsmtp_ssl_connect( m_smtp, server.latin1(), port );
225 } else { 227 } else {
226 ; // odebug << "No SSL session" << oendl; 228 ; // odebug << "No SSL session" << oendl;
227 err = mailsmtp_socket_connect( m_smtp, server.latin1(), port ); 229 err = mailsmtp_socket_connect( m_smtp, server.latin1(), port );
228 } 230 }
229 if ( err != MAILSMTP_NO_ERROR ) { 231 if ( err != MAILSMTP_NO_ERROR ) {
230 qDebug("Error init SMTP connection" ); 232 qDebug("Error init SMTP connection" );
231 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err)); 233 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err));
232 result = 0; 234 result = 0;
233 } 235 }
234 236
235 qDebug("SMTP connection inited "); 237 qDebug("SMTP connection inited ");
236 /* switch to tls after init 'cause there it will send the ehlo */ 238 /* switch to tls after init 'cause there it will send the ehlo */
237 if (result) { 239 if (result) {
238 err = mailsmtp_init( m_smtp ); 240 err = mailsmtp_init( m_smtp );
239 if (err != MAILSMTP_NO_ERROR) { 241 if (err != MAILSMTP_NO_ERROR) {
240 result = 0; 242 result = 0;
241 qDebug("Error init SMTP connection "); 243 qDebug("Error init SMTP connection ");
242 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err)); 244 failuretext = i18n("Error init SMTP connection:\n%1").arg(mailsmtpError(err));
243 } 245 }
244 } 246 }
245 if (try_tls) { 247 if (try_tls) {
246 qDebug("Smpt: Try tls "); 248 qDebug("Smpt: Try tls ");
247 err = start_smtp_tls(); 249 err = start_smtp_tls();
248 if (err != MAILSMTP_NO_ERROR) { 250 if (err != MAILSMTP_NO_ERROR) {
249 try_tls = false; 251 try_tls = false;
250 qDebug("no tls "); 252 qDebug("no tls ");
251 } else { 253 } else {
252 err = mailesmtp_ehlo(m_smtp); 254 err = mailesmtp_ehlo(m_smtp);
253 } 255 }
254 } 256 }
255 //qDebug("mailesmtp_ehlo %d ",err ); 257 //qDebug("mailesmtp_ehlo %d ",err );
256 if (!try_tls && force_tls) { 258 if (!try_tls && force_tls) {
257 result = 0; 259 result = 0;
258 failuretext = i18n("Error init SMTP tls:%1").arg(mailsmtpError(err)); 260 failuretext = i18n("Error init SMTP tls:%1").arg(mailsmtpError(err));
259 } 261 }
260 262
261 if (result==1 && m_SmtpAccount->getLogin() ) { 263 if (result==1 && m_SmtpAccount->getLogin() ) {
262 ; // odebug << "smtp with auth" << oendl; 264 ; // odebug << "smtp with auth" << oendl;
263 if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) { 265 if ( m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty() ) {
264 // get'em 266 // get'em
265 LoginDialog login( m_SmtpAccount->getUser(), 267 LoginDialog login( m_SmtpAccount->getUser(),
266 m_SmtpAccount->getPassword(), NULL, 0, true ); 268 m_SmtpAccount->getPassword(), NULL, 0, true );
267 login.show(); 269 login.show();
268 if ( QDialog::Accepted == login.exec() ) { 270 if ( QDialog::Accepted == login.exec() ) {
269 // ok 271 // ok
270 user = login.getUser(); 272 user = login.getUser();
271 pass = login.getPassword(); 273 pass = login.getPassword();
272 } else { 274 } else {
273 result = 0; 275 result = 0;
274 failuretext=i18n("Login aborted - \nstoring mail to localfolder"); 276 failuretext=i18n("Login aborted - \nstoring mail to localfolder");
275 } 277 }
276 } else { 278 } else {
277 user = m_SmtpAccount->getUser(); 279 user = m_SmtpAccount->getUser();
278 pass = m_SmtpAccount->getPassword(); 280 pass = m_SmtpAccount->getPassword();
279 } 281 }
280 ; // odebug << "session->auth: " << m_smtp->auth << "" << oendl; 282 ; // odebug << "session->auth: " << m_smtp->auth << "" << oendl;
281 if (result) { 283 if (result) {
282 err = mailsmtp_auth( m_smtp, (char*)user.latin1(), (char*)pass.latin1() ); 284 err = mailsmtp_auth( m_smtp, (char*)user.latin1(), (char*)pass.latin1() );
283 if ( err == MAILSMTP_NO_ERROR ) { 285 if ( err == MAILSMTP_NO_ERROR ) {
284 qDebug("Smtp authentification ok "); 286 qDebug("Smtp authentification ok ");
285 } else { 287 } else {
286 failuretext = i18n("Authentification failed"); 288 failuretext = i18n("Authentification failed");
287 result = 0; 289 result = 0;
288 } 290 }
289 } 291 }
290 } 292 }
291} 293}
292 294
293void SMTPwrapper::disc_server() 295void SMTPwrapper::disc_server()
294{ 296{
295 if (m_smtp) { 297 if (m_smtp) {
296 mailsmtp_quit( m_smtp ); 298 mailsmtp_quit( m_smtp );
297 mailsmtp_free( m_smtp ); 299 mailsmtp_free( m_smtp );
298 m_smtp = 0; 300 m_smtp = 0;
299 } 301 }
300} 302}
301 303
302int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size ) 304int SMTPwrapper::smtpSend(char*from,clist*rcpts,const char*data,size_t size )
303{ 305{
304 int err,result; 306 int err,result;
305 QString failuretext = ""; 307 QString failuretext = "";
306 308
307 connect_server(); 309 connect_server();
308 310
309 result = 1; 311 result = 1;
310 if (m_smtp) { 312 if (m_smtp) {
311 err = mailsmtp_send( m_smtp, from, rcpts, data, size ); 313 err = mailsmtp_send( m_smtp, from, rcpts, data, size );
312 if ( err != MAILSMTP_NO_ERROR ) { 314 if ( err != MAILSMTP_NO_ERROR ) {
313 qDebug("Error sending mail"); 315 qDebug("Error sending mail");
314 failuretext=i18n("Error sending mail:\n%1").arg(mailsmtpError(err)); 316 failuretext=i18n("Error sending mail:\n%1").arg(mailsmtpError(err));
315 result = 0; 317 result = 0;
316 } 318 }
317 } else { 319 } else {
318 result = 0; 320 result = 0;
319 } 321 }
320 322
321 if (!result) { 323 if (!result) {
322 storeFailedMail(data,size,failuretext); 324 storeFailedMail(data,size,failuretext);
323 } else { 325 } else {
324 ; // odebug << "Mail sent." << oendl; 326 ; // odebug << "Mail sent." << oendl;
325 storeMail(data,size,"Sent"); 327 storeMail(data,size,"Sent");
326 } 328 }
327 return result; 329 return result;
328} 330}
329 331
330bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later ) 332bool SMTPwrapper::sendMail(const Opie::Core::OSmartPointer<Mail>&mail,bool later )
331{ 333{
332 mailmime * mimeMail; 334 mailmime * mimeMail;
333 bool result = true; 335 bool result = true;
334 mimeMail = createMimeMail(mail ); 336 mimeMail = createMimeMail(mail );
335 if ( mimeMail == 0 ) { 337 if ( mimeMail == 0 ) {
336 qDebug("SMTP wrapper:Error creating mail! "); 338 qDebug("SMTP wrapper:Error creating mail! ");
337 return false; 339 return false;
338 } else { 340 } else {
339 sendProgress = new progressMailSend(); 341 sendProgress = new progressMailSend();
340 sendProgress->show(); 342 sendProgress->show();
341 sendProgress->setMaxMails(1); 343 sendProgress->setMaxMails(1);
342 result = smtpSend( mimeMail,later); 344 result = smtpSend( mimeMail,later);
343 ; // odebug << "Clean up done" << oendl; 345 ; // odebug << "Clean up done" << oendl;
344 sendProgress->hide(); 346 sendProgress->hide();
345 delete sendProgress; 347 delete sendProgress;
346 sendProgress = 0; 348 sendProgress = 0;
347 mailmime_free( mimeMail ); 349 mailmime_free( mimeMail );
348 } 350 }
349 return result; 351 return result;
350} 352}
351 353
352int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,const RecMailP&which) { 354int SMTPwrapper::sendQueuedMail(AbstractMail*wrap,const RecMailP&which) {
353 size_t curTok = 0; 355 size_t curTok = 0;
354 mailimf_fields *fields = 0; 356 mailimf_fields *fields = 0;
355 mailimf_field*ffrom = 0; 357 mailimf_field*ffrom = 0;
356 clist *rcpts = 0; 358 clist *rcpts = 0;
357 char*from = 0; 359 char*from = 0;
358 int res = 0; 360 int res = 0;
359 361
360 encodedString * data = wrap->fetchRawBody(which); 362 encodedString * data = wrap->fetchRawBody(which);
361 if (!data) 363 if (!data)
362 return 0; 364 return 0;
363 int err = mailimf_fields_parse( data->Content(), data->Length(), &curTok, &fields ); 365 int err = mailimf_fields_parse( data->Content(), data->Length(), &curTok, &fields );
364 if (err != MAILIMF_NO_ERROR) { 366 if (err != MAILIMF_NO_ERROR) {
365 delete data; 367 delete data;
366 delete wrap; 368 delete wrap;
367 return 0; 369 return 0;
368 } 370 }
369 371
370 rcpts = createRcptList( fields ); 372 rcpts = createRcptList( fields );
371 ffrom = getField(fields, MAILIMF_FIELD_FROM ); 373 ffrom = getField(fields, MAILIMF_FIELD_FROM );
372 from = getFrom(ffrom); 374 from = getFrom(ffrom);
373 375
374 if (rcpts && from) { 376 if (rcpts && from) {
375 res = smtpSend(from,rcpts,data->Content(),data->Length()); 377 res = smtpSend(from,rcpts,data->Content(),data->Length());
376 } 378 }
377 if (fields) { 379 if (fields) {
378 mailimf_fields_free(fields); 380 mailimf_fields_free(fields);
379 fields = 0; 381 fields = 0;
380 } 382 }
381 if (data) { 383 if (data) {
382 delete data; 384 delete data;
383 } 385 }
384 if (from) { 386 if (from) {
385 free(from); 387 free(from);
386 } 388 }
387 if (rcpts) { 389 if (rcpts) {
388 smtp_address_list_free( rcpts ); 390 smtp_address_list_free( rcpts );
389 } 391 }
390 return res; 392 return res;
391} 393}
392 394
393/* this is a special fun */ 395/* this is a special fun */
394bool SMTPwrapper::flushOutbox() { 396bool SMTPwrapper::flushOutbox() {
395 bool returnValue = true; 397 bool returnValue = true;
396 398
397 ; // odebug << "Sending the queue" << oendl; 399 ; // odebug << "Sending the queue" << oendl;
398 if (!m_SmtpAccount) { 400 if (!m_SmtpAccount) {
399 ; // odebug << "No smtp account given" << oendl; 401 ; // odebug << "No smtp account given" << oendl;
400 return false; 402 return false;
401 } 403 }
402 404
403 bool reset_user_value = false; 405 bool reset_user_value = false;
404 QString localfolders = AbstractMail::defaultLocalfolder(); 406 QString localfolders = AbstractMail::defaultLocalfolder();
405 AbstractMail*wrap = AbstractMail::getWrapper(localfolders); 407 AbstractMail*wrap = AbstractMail::getWrapper(localfolders);
406 if (!wrap) { 408 if (!wrap) {
407 ; // odebug << "memory error" << oendl; 409 ; // odebug << "memory error" << oendl;
408 return false; 410 return false;
409 } 411 }
410 QString oldPw, oldUser; 412 QString oldPw, oldUser;
411 QValueList<RecMailP> mailsToSend; 413 QValueList<RecMailP> mailsToSend;
412 QValueList<RecMailP> mailsToRemove; 414 QValueList<RecMailP> mailsToRemove;
413 QString mbox("Outgoing"); 415 QString mbox("Outgoing");
414 wrap->listMessages(mbox,mailsToSend); 416 wrap->listMessages(mbox,mailsToSend);
415 if (mailsToSend.count()==0) { 417 if (mailsToSend.count()==0) {
416 delete wrap; 418 delete wrap;
417 ; // odebug << "No mails to send" << oendl; 419 ; // odebug << "No mails to send" << oendl;
418 return false; 420 return false;
419 } 421 }
420 422
421 oldPw = m_SmtpAccount->getPassword(); 423 oldPw = m_SmtpAccount->getPassword();
422 oldUser = m_SmtpAccount->getUser(); 424 oldUser = m_SmtpAccount->getUser();
423 if (m_SmtpAccount->getLogin() && (m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty()) ) { 425 if (m_SmtpAccount->getLogin() && (m_SmtpAccount->getUser().isEmpty() || m_SmtpAccount->getPassword().isEmpty()) ) {
424 // get'em 426 // get'em
425 QString user,pass; 427 QString user,pass;
426 LoginDialog login( m_SmtpAccount->getUser(), m_SmtpAccount->getPassword(), NULL, 0, true ); 428 LoginDialog login( m_SmtpAccount->getUser(), m_SmtpAccount->getPassword(), NULL, 0, true );
427 login.show(); 429 login.show();
428 if ( QDialog::Accepted == login.exec() ) { 430 if ( QDialog::Accepted == login.exec() ) {
429 // ok 431 // ok
430 user = login.getUser().latin1(); 432 user = login.getUser().latin1();
431 pass = login.getPassword().latin1(); 433 pass = login.getPassword().latin1();
432 reset_user_value = true; 434 reset_user_value = true;
433 m_SmtpAccount->setUser(user); 435 m_SmtpAccount->setUser(user);
434 m_SmtpAccount->setPassword(pass); 436 m_SmtpAccount->setPassword(pass);
435 } else { 437 } else {
436 return true; 438 return true;
437 } 439 }
438 } 440 }
439 441
440 442
441 sendProgress = new progressMailSend(); 443 sendProgress = new progressMailSend();
442 sendProgress->show(); 444 sendProgress->show();
443 sendProgress->setMaxMails(mailsToSend.count()); 445 sendProgress->setMaxMails(mailsToSend.count());
444 446
445 while (returnValue && mailsToSend.count()>0) { 447 while (returnValue && mailsToSend.count()>0) {
446 if (sendQueuedMail(wrap, (*mailsToSend.begin()))==0) { 448 if (sendQueuedMail(wrap, (*mailsToSend.begin()))==0) {
447 QMessageBox::critical(0,i18n("Error sending mail"), 449 QMessageBox::critical(0,i18n("Error sending mail"),
448 i18n("Error sending queued mail.\nBreaking.")); 450 i18n("Error sending queued mail.\nBreaking."));
449 returnValue = false; 451 returnValue = false;
450 } 452 }
451 mailsToRemove.append((*mailsToSend.begin())); 453 mailsToRemove.append((*mailsToSend.begin()));
452 mailsToSend.remove(mailsToSend.begin()); 454 mailsToSend.remove(mailsToSend.begin());
453 sendProgress->setCurrentMails(mailsToRemove.count()); 455 sendProgress->setCurrentMails(mailsToRemove.count());
454 } 456 }
455 if (reset_user_value) { 457 if (reset_user_value) {
456 m_SmtpAccount->setUser(oldUser); 458 m_SmtpAccount->setUser(oldUser);
457 m_SmtpAccount->setPassword(oldPw); 459 m_SmtpAccount->setPassword(oldPw);
458 } 460 }
459 KConfig cfg( locateLocal("config", "kopiemailrc" ) ); 461 KConfig cfg( locateLocal("config", "kopiemailrc" ) );
460 cfg.setGroup( "Status" ); 462 cfg.setGroup( "Status" );
461 m_queuedMail = mailsToSend.count(); 463 m_queuedMail = mailsToSend.count();
462 cfg.writeEntry( "outgoing", m_queuedMail ); 464 cfg.writeEntry( "outgoing", m_queuedMail );
463 emit queuedMails( m_queuedMail ); 465 emit queuedMails( m_queuedMail );
464 sendProgress->hide(); 466 sendProgress->hide();
465 delete sendProgress; 467 delete sendProgress;
466 sendProgress = 0; 468 sendProgress = 0;
467 wrap->deleteMails(mbox,mailsToRemove); 469 wrap->deleteMails(mbox,mailsToRemove);
468 delete wrap; 470 delete wrap;
469 return returnValue; 471 return returnValue;
470} 472}