summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt5
-rw-r--r--kmicromail/editaccounts.cpp24
-rw-r--r--kmicromail/libetpan/tools/mailstream_socket.c2
-rw-r--r--kmicromail/libmailwrapper/smtpwrapper.cpp8
4 files changed, 25 insertions, 14 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 5661955..65f9168 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,119 +1,124 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.0.15 ************ 3********** VERSION 2.0.15 ************
4 4
5PwM/Pi: 5PwM/Pi:
6Added keyboard shorcuts for 6Added keyboard shorcuts for
7- toggling summary view (space bar) 7- toggling summary view (space bar)
8- delete item (delete + backspace key) 8- delete item (delete + backspace key)
9- add new item ( i + n key) 9- add new item ( i + n key)
10Fixed length of info in the title. 10Fixed length of info in the title.
11 11
12KO/Pi-KA/Pi: 12KO/Pi-KA/Pi:
13Changed "ME" menu bar entry to an icon. 13Changed "ME" menu bar entry to an icon.
14 14
15KO/Pi: 15KO/Pi:
16Fixed two minor bugs in displaying todos. 16Fixed two minor bugs in displaying todos.
17If in month view a cell is selected, the key shortcut "d" shows now that date. 17If in month view a cell is selected, the key shortcut "d" shows now that date.
18Added complete info for a todo in month view as an icon left of the text. 18Added complete info for a todo in month view as an icon left of the text.
19Fixed problems of displaying data when "<" or ">" were used in summary/location/description. 19Fixed problems of displaying data when "<" or ">" were used in summary/location/description.
20Fixed problem of search dialog size when switching displays. 20Fixed problem of search dialog size when switching displays.
21Cancel key now closes date picker. 21Cancel key now closes date picker.
22Rearranged KO/Pi file menu structure. 22Rearranged KO/Pi file menu structure.
23 23
24OM/Pi:
25Added to the SMTP account setting the option
26"No secure connection".
27You have to configure your SMTP accounts again, sorry.
28
24 29
25********** VERSION 2.0.14 ************ 30********** VERSION 2.0.14 ************
26 31
27Made Passwordmanager PwM/Pi more userfriendly: 32Made Passwordmanager PwM/Pi more userfriendly:
28Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more. 33Rearranged some toolbar icons, optimized setting of focus, fixed layout problems and more.
29Fixed bug in KO/Pi todo printing. 34Fixed bug in KO/Pi todo printing.
30Made Qtopia calendar import possible on desktop . 35Made Qtopia calendar import possible on desktop .
31 36
32********** VERSION 2.0.13 ************ 37********** VERSION 2.0.13 ************
33 38
34Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter. 39Fixed a problem in the addressee select dialog and made it more user friendly by adding a minimize splitter.
35 40
36In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down". 41In the search dialog you can switch now the focus from search line edit to the list view by pressing key "arrow down".
37 42
38OM/Pi: 43OM/Pi:
39Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails. 44Fixed a refresh problem of outgoing/sent/sendfailed folders after sending mails.
40Added missing German translation. 45Added missing German translation.
41Added warning if path is specified in local folder settings of account config. 46Added warning if path is specified in local folder settings of account config.
42 47
43********** VERSION 2.0.12 ************ 48********** VERSION 2.0.12 ************
44 49
45KO/Pi: 50KO/Pi:
46Fixed a bug in todo start/due date handling for non recurring todos with a start and due date. 51Fixed a bug in todo start/due date handling for non recurring todos with a start and due date.
47Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes. 52Fixed some layout problems in the KO/Pi agenda view when there were many conflicting itmes.
48Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer. 53Fixed several problems of the keyboard focus in the desktop versions when opening the search dialog/event viewer.
49 54
50Fixed problem in pi-sync mode when wrong password was sent. 55Fixed problem in pi-sync mode when wrong password was sent.
51 56
52OM/Pi: 57OM/Pi:
53Fixed a crash when displaying mails with "Show mail as html" was checked in the config. 58Fixed a crash when displaying mails with "Show mail as html" was checked in the config.
54Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled. 59Added a check before displaying the mail if the mail is in html format, if "Show mail as html" is enabled.
55 60
56********** VERSION 2.0.11 ************ 61********** VERSION 2.0.11 ************
57 62
58Fixed some problems in pi-sync mode 63Fixed some problems in pi-sync mode
59(e.g. details of events were not synced properly) 64(e.g. details of events were not synced properly)
60 65
61********** VERSION 2.0.10 ************ 66********** VERSION 2.0.10 ************
62 67
63KO/Pi: 68KO/Pi:
64In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view. 69In the desktop versions the context menu in the search dialog was broken after introducing the What'sThis info for the list view.
65This is fixed. 70This is fixed.
66Changed the search dialog a bit to make it more user friendly. 71Changed the search dialog a bit to make it more user friendly.
67(E.g.: Removed message box about "no items found" and set key focus to search line edit after search). 72(E.g.: Removed message box about "no items found" and set key focus to search line edit after search).
68 73
69Added config option to hide the week number in KO/Pi toolbar. 74Added config option to hide the week number in KO/Pi toolbar.
70 75
71********** VERSION 2.0.9 ************ 76********** VERSION 2.0.9 ************
72 77
73Made month view icons for multiday events a bit nicer. 78Made month view icons for multiday events a bit nicer.
74Some minor fixes in KO/Pi 79Some minor fixes in KO/Pi
75(e.g. go to today did not work for new week view properly). 80(e.g. go to today did not work for new week view properly).
76 81
77 82
78********** VERSION 2.0.8 ************ 83********** VERSION 2.0.8 ************
79 84
80Fixed a problem in dependency info in the ipk files for the Zaurus. 85Fixed a problem in dependency info in the ipk files for the Zaurus.
81 86
82Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar. 87Added icon for the stealth new week view and made navigation more user friendly in monthview by adding a prev/next week button to the navigator bar.
83 88
84Added a "go today" button to the datepicker. 89Added a "go today" button to the datepicker.
85 90
86Added "created" and "last modified" to event/todo viewer (and What'sThis viewer) 91Added "created" and "last modified" to event/todo viewer (and What'sThis viewer)
87and made it configureable to show these values. 92and made it configureable to show these values.
88 93
89Fixed a problem for events (from external iCal files) that do have a duration but no end date. 94Fixed a problem for events (from external iCal files) that do have a duration but no end date.
90 95
91 96
92********** VERSION 2.0.7 ************ 97********** VERSION 2.0.7 ************
93 98
94Added global application font settings 99Added global application font settings
95(for all KDE-Pim/Pi apps) to the general settings. 100(for all KDE-Pim/Pi apps) to the general settings.
96 101
97Fixed a problem in OM/Pi when trying to login to some IMAP servers 102Fixed a problem in OM/Pi when trying to login to some IMAP servers
98(like the IMAP server of Apple: mail.mac.com ) 103(like the IMAP server of Apple: mail.mac.com )
99 104
100Added recurring todos to KO/Pi. 105Added recurring todos to KO/Pi.
101 106
102 107
103********** VERSION 2.0.6 ************ 108********** VERSION 2.0.6 ************
104 109
105Some bugfixes in the pi-sync mode. 110Some bugfixes in the pi-sync mode.
106Added German translation for pi-sync mode. 111Added German translation for pi-sync mode.
107 112
108KO/Pi: 113KO/Pi:
109Made the todolist using alternate background. 114Made the todolist using alternate background.
110 115
111Other minor fixes in KO/Pi. 116Other minor fixes in KO/Pi.
112 117
113 118
114********** VERSION 2.0.5 ************ 119********** VERSION 2.0.5 ************
115 120
116Bugfixes in KO/Pi. 121Bugfixes in KO/Pi.
117 122
118********** VERSION 2.0.4 ************ 123********** VERSION 2.0.4 ************
119 124
diff --git a/kmicromail/editaccounts.cpp b/kmicromail/editaccounts.cpp
index f1075c0..49049f6 100644
--- a/kmicromail/editaccounts.cpp
+++ b/kmicromail/editaccounts.cpp
@@ -237,368 +237,372 @@ void EditAccounts::slotEditMail()
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 );
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
@@ -113,134 +113,134 @@ mailstream_low * mailstream_low_socket_open(int fd)
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
@@ -100,205 +100,207 @@ void SMTPwrapper::progress( size_t current, size_t maximum ) {
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;