summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--kmicromail/libmailwrapper/imapwrapper.cpp2
2 files changed, 6 insertions, 0 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 4fff7e1..6be5222 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,285 +1,289 @@
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 1.9.14 ************ 3********** VERSION 1.9.14 ************
4 4
5Fixed some problems with the dialog sizes when switching 5Fixed some problems with the dialog sizes when switching
6portrait/landscape mode on 640x480 PDA display. 6portrait/landscape mode on 640x480 PDA display.
7 7
8Fixed some other small bugs. 8Fixed some other small bugs.
9 9
10Fixed an ugly bug in KOpieMail: 10Fixed an ugly bug in KOpieMail:
11KOpieMail was not able to write files (mails) to MSDOS file system, 11KOpieMail was not able to write files (mails) to MSDOS file system,
12like on an usual preformatted SD card. That should work now. 12like on an usual preformatted SD card. That should work now.
13To save your mail data on the Sd card do the following: 13To save your mail data on the Sd card do the following:
14Create a dir on the SD card: 14Create a dir on the SD card:
15mkdir /mnt/card/localmail 15mkdir /mnt/card/localmail
16Go to your home dir: 16Go to your home dir:
17cd 17cd
18Go to kopiemail data storage dir: 18Go to kopiemail data storage dir:
19cd kdepim/apps/kopiemail 19cd kdepim/apps/kopiemail
20Create a symlink to the SD card: 20Create a symlink to the SD card:
21ls -s /mnt/card/localmail 21ls -s /mnt/card/localmail
22Now KOpieMail will store all mails on the SD card. 22Now KOpieMail will store all mails on the SD card.
23 23
24KO/Pi Monthview: 24KO/Pi Monthview:
25Now "Go to Today" selects the current month from day 1-end, 25Now "Go to Today" selects the current month from day 1-end,
26not the current date + some days. 26not the current date + some days.
27I.e. "Go to Today" shows now always 27I.e. "Go to Today" shows now always
28the current month with first day of month in the first row. 28the current month with first day of month in the first row.
29 29
30Added missing German translation.
31
32Fixed icons of executeable on Wintendo.
33
30 34
31********** VERSION 1.9.13 ************ 35********** VERSION 1.9.13 ************
32 36
33Fixed nasty PwM/Pi file reading bug, when 37Fixed nasty PwM/Pi file reading bug, when
34the used hash algo of file is different then the global 38the used hash algo of file is different then the global
35hash algo. 39hash algo.
36 40
37Added KA/Pi support for opie mailit mailapplication. 41Added KA/Pi support for opie mailit mailapplication.
38 42
39Fixed some bugs in OM/Pi. 43Fixed some bugs in OM/Pi.
40Now character conversion tables are available for the Zaurus 44Now character conversion tables are available for the Zaurus
41to make OM/Pi working properly. 45to make OM/Pi working properly.
42To get the character conversion in OM/Pi working, please download 46To get the character conversion in OM/Pi working, please download
43at the sourceforge project site the package 47at the sourceforge project site the package
44sr-character-conversion_SharpROM_arm.ipk.zip 48sr-character-conversion_SharpROM_arm.ipk.zip
45(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 49(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
46from the section "general files for KDE/Pim" 50from the section "general files for KDE/Pim"
47Instructions how to install this package are in a ReadMe in this file. 51Instructions how to install this package are in a ReadMe in this file.
48 52
49 53
50Fixed the orientation change problem in KA/Pi when switching 54Fixed the orientation change problem in KA/Pi when switching
51portrait/landscape mode. 55portrait/landscape mode.
52 56
53French translation available for KA/Pi and OM/Pi. 57French translation available for KA/Pi and OM/Pi.
54 58
55Fixed some problems with categories in KO/Pi in DTM sync. 59Fixed some problems with categories in KO/Pi in DTM sync.
56 60
57Added selection dialog for export to phone in KA/Pi. 61Added selection dialog for export to phone in KA/Pi.
58 62
59If in KO/Pi is an attendee selected to add to a meeting and this 63If in KO/Pi is an attendee selected to add to a meeting and this
60attendee is already in the list of attendees, this person is not added 64attendee is already in the list of attendees, this person is not added
61again. 65again.
62 66
63Some menu cleanup in KA/Pi. 67Some menu cleanup in KA/Pi.
64 68
65********** VERSION 1.9.12 ************ 69********** VERSION 1.9.12 ************
66 70
67Fix for the bug in KO/Pi What's Next view of version 1.9.11. 71Fix for the bug in KO/Pi What's Next view of version 1.9.11.
68 72
69Bugfix: Licence file is now shown again. 73Bugfix: Licence file is now shown again.
70 74
71OM/Pi now supports Unicode (utf8 charset). 75OM/Pi now supports Unicode (utf8 charset).
72Fixed some bugs in OM/Pi. 76Fixed some bugs in OM/Pi.
73 77
74KA/Pi has more German translation. 78KA/Pi has more German translation.
75 79
76 80
77********** VERSION 1.9.11 ************ 81********** VERSION 1.9.11 ************
78 82
79Fixed several problems in PWM/Pi, like 83Fixed several problems in PWM/Pi, like
80asking the user, if unsaved changed are pending 84asking the user, if unsaved changed are pending
81when closing the app. 85when closing the app.
82And PwM/Pi handles now different texts for the 86And PwM/Pi handles now different texts for the
83fields Description, Username, Password, configurable per category. 87fields Description, Username, Password, configurable per category.
84 88
85Fixed a crash in KO/Pi , when importing/loading vcs files 89Fixed a crash in KO/Pi , when importing/loading vcs files
86which have an entry with an attendee with state: 90which have an entry with an attendee with state:
87NEEDS ACTION 91NEEDS ACTION
88 92
89Fixed some problems in the German translation of OM/Pi, 93Fixed some problems in the German translation of OM/Pi,
90which makes some dialogs not fitting on the screen 94which makes some dialogs not fitting on the screen
91of the Z 5500. 95of the Z 5500.
92 96
93Fixed Qtopia crash, when disabling/deinstalling 97Fixed Qtopia crash, when disabling/deinstalling
94KO/Pi alarm applet. 98KO/Pi alarm applet.
95 99
96Implemented direct KDE<->KA/Pi sync for KA/Pi running 100Implemented direct KDE<->KA/Pi sync for KA/Pi running
97on Linux desktop. 101on Linux desktop.
98 102
99Added feature "remove sync info" to sync menu. 103Added feature "remove sync info" to sync menu.
100 104
101Tweaked the KO/Pi What's next view a bit, added 105Tweaked the KO/Pi What's next view a bit, added
102setting to hide events that are done. 106setting to hide events that are done.
103 107
104Disabled "beam receive enabled" on startup to 108Disabled "beam receive enabled" on startup to
105avoid problems if Fastload is enabled. 109avoid problems if Fastload is enabled.
106Please set "beam receive enabled", 110Please set "beam receive enabled",
107if you want to receive data via IR. 111if you want to receive data via IR.
108 112
109Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 113Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
110on Linux desktop. 114on Linux desktop.
111 115
112Made in KA/Pi scrolling possible, if details view is selected. 116Made in KA/Pi scrolling possible, if details view is selected.
113(The keyboard focus is set automatically to the search line) 117(The keyboard focus is set automatically to the search line)
114 118
115Fixed a bug in DMT sync, that a new entry in DTM was added 119Fixed a bug in DMT sync, that a new entry in DTM was added
116on every sync to Kx/Pi. 120on every sync to Kx/Pi.
117 121
118Fixed missing writing of KA/Pi categories to DMT entries when syncing. 122Fixed missing writing of KA/Pi categories to DMT entries when syncing.
119 123
120Fixed a bug in DMT sync with todos created in KO/Pi containing 124Fixed a bug in DMT sync with todos created in KO/Pi containing
121non-latin1 characters. 125non-latin1 characters.
122 126
123Rearranged package contents of Sharp-ipks and made all 127Rearranged package contents of Sharp-ipks and made all
124packages installable on SD again. 128packages installable on SD again.
125 129
126Fixed the writing of addressbook data in DTM sync. 130Fixed the writing of addressbook data in DTM sync.
127Empty fields in KA/Pi were not removed. 131Empty fields in KA/Pi were not removed.
128 132
129Added better category handling in KA/Pi: 133Added better category handling in KA/Pi:
130Added item 134Added item
131Edit Categories and 135Edit Categories and
132Manage new categories 136Manage new categories
133to the settings menu. 137to the settings menu.
134Possible to configure a view to display categories. 138Possible to configure a view to display categories.
135 139
136Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 140Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
137 141
138Fixed displaying of "free" days and time in KO Monthview and Agendaview. 142Fixed displaying of "free" days and time in KO Monthview and Agendaview.
139 143
140... and many other bugfixes. 144... and many other bugfixes.
141 145
142********** VERSION 1.9.10 ************ 146********** VERSION 1.9.10 ************
143 147
144Many internal small bugfixes. 148Many internal small bugfixes.
145And fix of the "big" bug in KO/Pi, 149And fix of the "big" bug in KO/Pi,
146that after Syncing the appointments had an offset by several hours. 150that after Syncing the appointments had an offset by several hours.
147That was a problem with the internal timezone setting, 151That was a problem with the internal timezone setting,
148introduced by the changed timezone configuration settings. 152introduced by the changed timezone configuration settings.
149 153
150German translation for OM/Pi is now available. 154German translation for OM/Pi is now available.
151 155
152 156
153********** VERSION 1.9.9 ************ 157********** VERSION 1.9.9 ************
154 158
155KDE-Pim/Pi has a new Member! 159KDE-Pim/Pi has a new Member!
156It is called PWM/Pi (Passwordmanager/platform-independent) 160It is called PWM/Pi (Passwordmanager/platform-independent)
157and it is available for the Zaurus. 161and it is available for the Zaurus.
158It is planned, that it will be available later for Windows. 162It is planned, that it will be available later for Windows.
159(And for Linux, of course). 163(And for Linux, of course).
160It is a port of the Passwordmanager of KDE. 164It is a port of the Passwordmanager of KDE.
161It will need the MicroKDElibs to run. 165It will need the MicroKDElibs to run.
162 166
163Made loading of addressbooks in KA/Pi up to 7 times faster! 167Made loading of addressbooks in KA/Pi up to 7 times faster!
164The bigger your addressbook file, the more starting speed 168The bigger your addressbook file, the more starting speed
165will you gain. (relatively) 169will you gain. (relatively)
166 170
167The Qtopia addressbook connector is now platform independend 171The Qtopia addressbook connector is now platform independend
168as well and should work on any platform for importing/exporting 172as well and should work on any platform for importing/exporting
169Qtopia and Opie XML files. 173Qtopia and Opie XML files.
170 174
171Added a +30min feature to the timezone settings to make 175Added a +30min feature to the timezone settings to make
172KDE-Pim/Pi useable in Australia and other parts on the 176KDE-Pim/Pi useable in Australia and other parts on the
173world with strange timezones ;-) 177world with strange timezones ;-)
174 178
175German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 179German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
176 180
177It is now possible to disable the 181It is now possible to disable the
178"receive data via infrared" feature, such that syncing with 182"receive data via infrared" feature, such that syncing with
179Outlook is now possible again with Kx/Pi runing. 183Outlook is now possible again with Kx/Pi runing.
180Please disable it, before syncing Sharp DTM with Outlook. 184Please disable it, before syncing Sharp DTM with Outlook.
181For your convenience, the "receive data via infrared" feature 185For your convenience, the "receive data via infrared" feature
182is disabled automatically, if you sync Kx/Pi with DTM. 186is disabled automatically, if you sync Kx/Pi with DTM.
183You have to enable it again manually after syncing. 187You have to enable it again manually after syncing.
184Enabling this feature makes it impossible to start the 188Enabling this feature makes it impossible to start the
185Sharp DTM apps. If this feature is enabled, you will only get the 189Sharp DTM apps. If this feature is enabled, you will only get the
186alarm notification from KO/Pi and not from the Sharp calendar. 190alarm notification from KO/Pi and not from the Sharp calendar.
187This is very useful if you sync KO/Pi with Sharp DTM, 191This is very useful if you sync KO/Pi with Sharp DTM,
188because after syncing you usually would get notified about 192because after syncing you usually would get notified about
189an alarm by KO/Pi and the Sharp Calendar. 193an alarm by KO/Pi and the Sharp Calendar.
190 194
191Together with the Linux desktop version of KO/Pi 195Together with the Linux desktop version of KO/Pi
192it is now possible to sync KO/Pi on the Zaurus 196it is now possible to sync KO/Pi on the Zaurus
193with the complete KDE-desktop (3.3 or later) 197with the complete KDE-desktop (3.3 or later)
194calendar data easily. 198calendar data easily.
195That makes it possible to sync the Z with one 199That makes it possible to sync the Z with one
196click of a mouse with the KDE-Desktop. 200click of a mouse with the KDE-Desktop.
197This feature it available for all Zaurus platforms KO/Pi 201This feature it available for all Zaurus platforms KO/Pi
198is running on. 202is running on.
199The only thing needed is a running KO/Pi on Linux and 203The only thing needed is a running KO/Pi on Linux and
200a compiled version of the small 204a compiled version of the small
201KDE-Pim/Pi<->KDE-Desktop access command line program, 205KDE-Pim/Pi<->KDE-Desktop access command line program,
202which is in the KDE-Pim/Pi sources available. 206which is in the KDE-Pim/Pi sources available.
203 207
204The "KDE-desktop" syncing feature for KA/Pi will follow 208The "KDE-desktop" syncing feature for KA/Pi will follow
205in the next releases. 209in the next releases.
206 210
207Fixed the vcard export bug, which had the version 1.9.8. 211Fixed the vcard export bug, which had the version 1.9.8.
208 212
209Added missing GERMAN translation to KO/Pi. 213Added missing GERMAN translation to KO/Pi.
210Hi PsionX, could you add the missing french translation?Thx! 214Hi PsionX, could you add the missing french translation?Thx!
211 215
212Translation files for KA/Pi are available as well. 216Translation files for KA/Pi are available as well.
213GERMAN translation will be available in the next release. 217GERMAN translation will be available in the next release.
214PsionX ( yres, you again ;-) ), could you start translating 218PsionX ( yres, you again ;-) ), could you start translating
215KA/Pi? Thx! 219KA/Pi? Thx!
216 220
217You can download the version 1.9.9 at 221You can download the version 1.9.9 at
218 222
219http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 223http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
220 224
221Note: 225Note:
222To run the mail program OM/Pi you need libopenssl. 226To run the mail program OM/Pi you need libopenssl.
223A link to a download loaction is available at 227A link to a download loaction is available at
224ZSI at www.killefiz.de 228ZSI at www.killefiz.de
225 229
226 230
227********** VERSION 1.9.8 ************ 231********** VERSION 1.9.8 ************
228 232
229Fixed character decoding in OM/Pi. 233Fixed character decoding in OM/Pi.
230(e.g. German "Umlaute" were not displayed properly.) 234(e.g. German "Umlaute" were not displayed properly.)
231 235
232Made is possible to reparent todos in KO/Pi. 236Made is possible to reparent todos in KO/Pi.
233Use contextmenu or keys (look at Help-Keys + Colors) for that. 237Use contextmenu or keys (look at Help-Keys + Colors) for that.
234 238
235Added the missing Sync-Howto and WhatsNew to the packages. 239Added the missing Sync-Howto and WhatsNew to the packages.
236 240
237KO/Pi on Linux desktop can now sync with KDE desktop. 241KO/Pi on Linux desktop can now sync with KDE desktop.
238That means: When using KO/Pi on Linux desktop for syncing with 242That means: When using KO/Pi on Linux desktop for syncing with
239KDE desktop and the Zaurus, the Zaurus can be synced now 243KDE desktop and the Zaurus, the Zaurus can be synced now
240with all KDE-Calendar resources, not only with one local file. 244with all KDE-Calendar resources, not only with one local file.
241(That makes it possible to sync the Zaurus with the 245(That makes it possible to sync the Zaurus with the
242calendar data on a Kolab server) 246calendar data on a Kolab server)
243 247
244KA/Pi syncing with KDE desktop will be available in the next version. 248KA/Pi syncing with KDE desktop will be available in the next version.
245 249
246 250
247********** VERSION 1.9.7 ************ 251********** VERSION 1.9.7 ************
248 252
249KO/Pi - KA/Pi on Windows: 253KO/Pi - KA/Pi on Windows:
250Now a directory can be defined by the user, where the 254Now a directory can be defined by the user, where the
251application/config data should be saved. 255application/config data should be saved.
252 Define your desired path in the evironment variable 256 Define your desired path in the evironment variable
253 MICROKDEHOME 257 MICROKDEHOME
254 before starting KO/Pi or KA/Pi. 258 before starting KO/Pi or KA/Pi.
255 259
256An easy Kx/Pi to Kx/Pi syncing is now possible 260An easy Kx/Pi to Kx/Pi syncing is now possible
257(it is called Pi-Sync) via network. 261(it is called Pi-Sync) via network.
258Please look at the Sync Howto. 262Please look at the Sync Howto.
259 263
260Exporting of calendar data and contacts to mobile phones is now possible. 264Exporting of calendar data and contacts to mobile phones is now possible.
261The SyncHowto is updated with information howto 265The SyncHowto is updated with information howto
262access/sync mobile phones. 266access/sync mobile phones.
263Please look at the Sync Howto. 267Please look at the Sync Howto.
264 268
265Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 269Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
266Please disable Fastload for the original contact/calendar applications 270Please disable Fastload for the original contact/calendar applications
267and close them. 271and close them.
268KO/Pi and KA/Pi must be running in order to receive the data. 272KO/Pi and KA/Pi must be running in order to receive the data.
269(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 273(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
270 274
271In the KA/Pi details view are now the preferred tel. numbers displayed on top 275In the KA/Pi details view are now the preferred tel. numbers displayed on top
272of the other data ( emails/tel.numbers/addresses) 276of the other data ( emails/tel.numbers/addresses)
273 277
274Fixed some syncing problems in KA/Pi. 278Fixed some syncing problems in KA/Pi.
275 279
276Added font settings for the KA/Pi details view. 280Added font settings for the KA/Pi details view.
277Added fields "children's name" and "gender" to KA/Pi. 281Added fields "children's name" and "gender" to KA/Pi.
278 282
279Made searching in KA/Pi better: 283Made searching in KA/Pi better:
280Now the first item in a view is selected after a search automatically and 284Now the first item in a view is selected after a search automatically and
281the views can be scrolled up/down when the search input field has the keyboard focus. 285the views can be scrolled up/down when the search input field has the keyboard focus.
282 286
283And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 287And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
284 288
285 289
diff --git a/kmicromail/libmailwrapper/imapwrapper.cpp b/kmicromail/libmailwrapper/imapwrapper.cpp
index da7065f..b890725 100644
--- a/kmicromail/libmailwrapper/imapwrapper.cpp
+++ b/kmicromail/libmailwrapper/imapwrapper.cpp
@@ -1,305 +1,307 @@
1// CHANGED 2004-09-31 Lutz Rogowski 1// CHANGED 2004-09-31 Lutz Rogowski
2#include <stdlib.h> 2#include <stdlib.h>
3#include <libetpan/libetpan.h> 3#include <libetpan/libetpan.h>
4#include <qpe/global.h> 4#include <qpe/global.h>
5#include <qapplication.h> 5#include <qapplication.h>
6#include "imapwrapper.h" 6#include "imapwrapper.h"
7#include "mailtypes.h" 7#include "mailtypes.h"
8#include "logindialog.h" 8#include "logindialog.h"
9#include <qprogressbar.h> 9#include <qprogressbar.h>
10#include "genericwrapper.h" 10#include "genericwrapper.h"
11#include <kglobal.h> 11#include <kglobal.h>
12 12
13using namespace Opie::Core; 13using namespace Opie::Core;
14int IMAPwrapper::mMax = 0; 14int IMAPwrapper::mMax = 0;
15int IMAPwrapper::mCurrent = 0; 15int IMAPwrapper::mCurrent = 0;
16 16
17IMAPwrapper::IMAPwrapper( IMAPaccount *a ) 17IMAPwrapper::IMAPwrapper( IMAPaccount *a )
18 : AbstractMail() 18 : AbstractMail()
19{ 19{
20 account = a; 20 account = a;
21 m_imap = 0; 21 m_imap = 0;
22 m_Lastmbox = ""; 22 m_Lastmbox = "";
23 mCurrent = 0; 23 mCurrent = 0;
24 mMax = 0; 24 mMax = 0;
25} 25}
26 26
27IMAPwrapper::~IMAPwrapper() 27IMAPwrapper::~IMAPwrapper()
28{ 28{
29 logout(); 29 logout();
30} 30}
31 31
32/* to avoid to often select statements in loops etc. 32/* to avoid to often select statements in loops etc.
33 we trust that we are logged in and connection is established!*/ 33 we trust that we are logged in and connection is established!*/
34int IMAPwrapper::selectMbox(const QString&mbox) 34int IMAPwrapper::selectMbox(const QString&mbox)
35{ 35{
36 if (mbox == m_Lastmbox) { 36 if (mbox == m_Lastmbox) {
37 return MAILIMAP_NO_ERROR; 37 return MAILIMAP_NO_ERROR;
38 } 38 }
39 int err = mailimap_select( m_imap, (char*)mbox.latin1()); 39 int err = mailimap_select( m_imap, (char*)mbox.latin1());
40 if ( err != MAILIMAP_NO_ERROR ) { 40 if ( err != MAILIMAP_NO_ERROR ) {
41 m_Lastmbox = ""; 41 m_Lastmbox = "";
42 return err; 42 return err;
43 } 43 }
44 m_Lastmbox = mbox; 44 m_Lastmbox = mbox;
45 return err; 45 return err;
46} 46}
47 47
48void IMAPwrapper::imap_progress( size_t current, size_t maximum ) 48void IMAPwrapper::imap_progress( size_t current, size_t maximum )
49{ 49{
50 qApp->processEvents();
51 return;
50 //qDebug("imap progress %d of %d ",current,maximum ); 52 //qDebug("imap progress %d of %d ",current,maximum );
51 //Global::statusMessage(i18n("Downloading message %1 of %2").arg( current).arg(maximum)); 53 //Global::statusMessage(i18n("Downloading message %1 of %2").arg( current).arg(maximum));
52 //qApp->processEvents() 54 //qApp->processEvents()
53 static unsigned int last = 0; 55 static unsigned int last = 0;
54 if ( last != current ) 56 if ( last != current )
55 IMAPwrapper::progress(); 57 IMAPwrapper::progress();
56 last = current; 58 last = current;
57} 59}
58void IMAPwrapper::progress( QString m ) 60void IMAPwrapper::progress( QString m )
59{ 61{
60 62
61 static QString mProgrMess; 63 static QString mProgrMess;
62 if ( m != QString::null ) { 64 if ( m != QString::null ) {
63 mProgrMess = m; 65 mProgrMess = m;
64 mCurrent = 1; 66 mCurrent = 1;
65 return; 67 return;
66 } 68 }
67 QString mess; 69 QString mess;
68 //qDebug("progress "); 70 //qDebug("progress ");
69 if ( mMax ) mess = mProgrMess +i18n(" message %1 of %2").arg( mCurrent++).arg(mMax); 71 if ( mMax ) mess = mProgrMess +i18n(" message %1 of %2").arg( mCurrent++).arg(mMax);
70 else mess = mProgrMess +i18n(" message %1").arg( mCurrent++); 72 else mess = mProgrMess +i18n(" message %1").arg( mCurrent++);
71 Global::statusMessage(mess); 73 Global::statusMessage(mess);
72 //qDebug("Progress %s %s", mess.latin1(), m.latin1()); 74 //qDebug("Progress %s %s", mess.latin1(), m.latin1());
73 qApp->processEvents(); 75 qApp->processEvents();
74} 76}
75bool IMAPwrapper::start_tls(bool force_tls) 77bool IMAPwrapper::start_tls(bool force_tls)
76{ 78{
77 int err; 79 int err;
78 bool try_tls = force_tls; 80 bool try_tls = force_tls;
79 mailimap_capability_data * cap_data = 0; 81 mailimap_capability_data * cap_data = 0;
80 82
81 err = mailimap_capability(m_imap,&cap_data); 83 err = mailimap_capability(m_imap,&cap_data);
82 if (err != MAILIMAP_NO_ERROR) { 84 if (err != MAILIMAP_NO_ERROR) {
83 Global::statusMessage("error getting capabilities!"); 85 Global::statusMessage("error getting capabilities!");
84 return false; 86 return false;
85 } 87 }
86 clistiter * cur; 88 clistiter * cur;
87 for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) { 89 for(cur = clist_begin(cap_data->cap_list) ; cur != NULL;cur = clist_next(cur)) {
88 struct mailimap_capability * cap; 90 struct mailimap_capability * cap;
89 cap = (struct mailimap_capability *)clist_content(cur); 91 cap = (struct mailimap_capability *)clist_content(cur);
90 if (cap->cap_type == MAILIMAP_CAPABILITY_NAME) { 92 if (cap->cap_type == MAILIMAP_CAPABILITY_NAME) {
91 if (strcasecmp(cap->cap_data.cap_name, "STARTTLS") == 0) { 93 if (strcasecmp(cap->cap_data.cap_name, "STARTTLS") == 0) {
92 try_tls = true; 94 try_tls = true;
93 break; 95 break;
94 } 96 }
95 } 97 }
96 } 98 }
97 if (cap_data) { 99 if (cap_data) {
98 mailimap_capability_data_free(cap_data); 100 mailimap_capability_data_free(cap_data);
99 } 101 }
100 if (try_tls) { 102 if (try_tls) {
101 err = mailimap_starttls(m_imap); 103 err = mailimap_starttls(m_imap);
102 if (err != MAILIMAP_NO_ERROR && force_tls) { 104 if (err != MAILIMAP_NO_ERROR && force_tls) {
103 Global::statusMessage(i18n("Server has no TLS support!")); 105 Global::statusMessage(i18n("Server has no TLS support!"));
104 try_tls = false; 106 try_tls = false;
105 } else { 107 } else {
106 mailstream_low * low; 108 mailstream_low * low;
107 mailstream_low * new_low; 109 mailstream_low * new_low;
108 low = mailstream_get_low(m_imap->imap_stream); 110 low = mailstream_get_low(m_imap->imap_stream);
109 if (!low) { 111 if (!low) {
110 try_tls = false; 112 try_tls = false;
111 } else { 113 } else {
112 int fd = mailstream_low_get_fd(low); 114 int fd = mailstream_low_get_fd(low);
113 if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) { 115 if (fd > -1 && (new_low = mailstream_low_ssl_open(fd))!=0) {
114 mailstream_low_free(low); 116 mailstream_low_free(low);
115 mailstream_set_low(m_imap->imap_stream, new_low); 117 mailstream_set_low(m_imap->imap_stream, new_low);
116 } else { 118 } else {
117 try_tls = false; 119 try_tls = false;
118 } 120 }
119 } 121 }
120 } 122 }
121 } 123 }
122 return try_tls; 124 return try_tls;
123} 125}
124 126
125void IMAPwrapper::login() 127void IMAPwrapper::login()
126{ 128{
127 QString server, user, pass; 129 QString server, user, pass;
128 uint16_t port; 130 uint16_t port;
129 int err = MAILIMAP_NO_ERROR; 131 int err = MAILIMAP_NO_ERROR;
130 132
131 if (account->getOffline()) return; 133 if (account->getOffline()) return;
132 /* we are connected this moment */ 134 /* we are connected this moment */
133 /* TODO: setup a timer holding the line or if connection closed - delete the value */ 135 /* TODO: setup a timer holding the line or if connection closed - delete the value */
134 if (m_imap) { 136 if (m_imap) {
135 err = mailimap_noop(m_imap); 137 err = mailimap_noop(m_imap);
136 if (err!=MAILIMAP_NO_ERROR) { 138 if (err!=MAILIMAP_NO_ERROR) {
137 logout(); 139 logout();
138 } else { 140 } else {
139 mailstream_flush(m_imap->imap_stream); 141 mailstream_flush(m_imap->imap_stream);
140 return; 142 return;
141 } 143 }
142 } 144 }
143 server = account->getServer(); 145 server = account->getServer();
144 port = account->getPort().toUInt(); 146 port = account->getPort().toUInt();
145 if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) { 147 if ( account->getUser().isEmpty() || account->getPassword().isEmpty() ) {
146 LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true ); 148 LoginDialog login( account->getUser(), account->getPassword(), NULL, 0, true );
147 login.show(); 149 login.show();
148 if ( QDialog::Accepted == login.exec() ) { 150 if ( QDialog::Accepted == login.exec() ) {
149 // ok 151 // ok
150 user = login.getUser(); 152 user = login.getUser();
151 pass = login.getPassword(); 153 pass = login.getPassword();
152 } else { 154 } else {
153 // cancel 155 // cancel
154 return; 156 return;
155 } 157 }
156 } else { 158 } else {
157 user = account->getUser(); 159 user = account->getUser();
158 pass = account->getPassword(); 160 pass = account->getPassword();
159 } 161 }
160 162
161 m_imap = mailimap_new( 20, &imap_progress ); 163 m_imap = mailimap_new( 20, &imap_progress );
162 164
163 /* connect */ 165 /* connect */
164 bool ssl = false; 166 bool ssl = false;
165 bool try_tls = false; 167 bool try_tls = false;
166 bool force_tls = false; 168 bool force_tls = false;
167 169
168 if ( account->ConnectionType() == 2 ) { 170 if ( account->ConnectionType() == 2 ) {
169 ssl = true; 171 ssl = true;
170 } 172 }
171 if (account->ConnectionType()==1) { 173 if (account->ConnectionType()==1) {
172 force_tls = true; 174 force_tls = true;
173 } 175 }
174 176
175 if ( ssl ) { 177 if ( ssl ) {
176 qDebug("using ssl "); 178 qDebug("using ssl ");
177 err = mailimap_ssl_connect( m_imap, (char*)server.latin1(), port ); 179 err = mailimap_ssl_connect( m_imap, (char*)server.latin1(), port );
178 qDebug("back "); 180 qDebug("back ");
179 } else { 181 } else {
180 err = mailimap_socket_connect( m_imap, (char*)server.latin1(), port ); 182 err = mailimap_socket_connect( m_imap, (char*)server.latin1(), port );
181 } 183 }
182 184
183 if ( err != MAILIMAP_NO_ERROR && 185 if ( err != MAILIMAP_NO_ERROR &&
184 err != MAILIMAP_NO_ERROR_AUTHENTICATED && 186 err != MAILIMAP_NO_ERROR_AUTHENTICATED &&
185 err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) { 187 err != MAILIMAP_NO_ERROR_NON_AUTHENTICATED ) {
186 QString failure = ""; 188 QString failure = "";
187 if (err == MAILIMAP_ERROR_CONNECTION_REFUSED) { 189 if (err == MAILIMAP_ERROR_CONNECTION_REFUSED) {
188 failure="Connection refused"; 190 failure="Connection refused";
189 } else { 191 } else {
190 failure="Unknown failure"; 192 failure="Unknown failure";
191 } 193 }
192 Global::statusMessage(i18n("error connecting imap server: %1").arg(failure)); 194 Global::statusMessage(i18n("error connecting imap server: %1").arg(failure));
193 mailimap_free( m_imap ); 195 mailimap_free( m_imap );
194 m_imap = 0; 196 m_imap = 0;
195 return; 197 return;
196 } 198 }
197 199
198 if (!ssl) { 200 if (!ssl) {
199 try_tls = start_tls(force_tls); 201 try_tls = start_tls(force_tls);
200 } 202 }
201 203
202 bool ok = true; 204 bool ok = true;
203 if (force_tls && !try_tls) { 205 if (force_tls && !try_tls) {
204 Global::statusMessage(i18n("Server has no TLS support!")); 206 Global::statusMessage(i18n("Server has no TLS support!"));
205 ok = false; 207 ok = false;
206 } 208 }
207 209
208 210
209 /* login */ 211 /* login */
210 212
211 if (ok) { 213 if (ok) {
212 err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() ); 214 err = mailimap_login_simple( m_imap, (char*)user.latin1(), (char*)pass.latin1() );
213 if ( err != MAILIMAP_NO_ERROR ) { 215 if ( err != MAILIMAP_NO_ERROR ) {
214 Global::statusMessage(i18n("error logging in imap server: %1").arg(m_imap->imap_response)); 216 Global::statusMessage(i18n("error logging in imap server: %1").arg(m_imap->imap_response));
215 ok = false; 217 ok = false;
216 } 218 }
217 } 219 }
218 if (!ok) { 220 if (!ok) {
219 err = mailimap_close( m_imap ); 221 err = mailimap_close( m_imap );
220 mailimap_free( m_imap ); 222 mailimap_free( m_imap );
221 m_imap = 0; 223 m_imap = 0;
222 } 224 }
223} 225}
224 226
225void IMAPwrapper::logout() 227void IMAPwrapper::logout()
226{ 228{
227 int err = MAILIMAP_NO_ERROR; 229 int err = MAILIMAP_NO_ERROR;
228 if (!m_imap) return; 230 if (!m_imap) return;
229 err = mailimap_logout( m_imap ); 231 err = mailimap_logout( m_imap );
230 err = mailimap_close( m_imap ); 232 err = mailimap_close( m_imap );
231 mailimap_free( m_imap ); 233 mailimap_free( m_imap );
232 m_imap = 0; 234 m_imap = 0;
233 m_Lastmbox = ""; 235 m_Lastmbox = "";
234} 236}
235 237
236void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb) 238void IMAPwrapper::listMessages(const QString&mailbox,QValueList<Opie::Core::OSmartPointer<RecMail> > &target , int maxSizeInKb)
237{ 239{
238 240
239 int tryAgain = 1; 241 int tryAgain = 1;
240 while ( tryAgain >= 0 ) { 242 while ( tryAgain >= 0 ) {
241 int err = MAILIMAP_NO_ERROR; 243 int err = MAILIMAP_NO_ERROR;
242 clist *result = 0; 244 clist *result = 0;
243 clistcell *current; 245 clistcell *current;
244 mailimap_fetch_type *fetchType = 0; 246 mailimap_fetch_type *fetchType = 0;
245 mailimap_set *set = 0; 247 mailimap_set *set = 0;
246 248
247 login(); 249 login();
248 if (!m_imap) { 250 if (!m_imap) {
249 return; 251 return;
250 } 252 }
251 /* select mailbox READONLY for operations */ 253 /* select mailbox READONLY for operations */
252 err = selectMbox(mailbox); 254 err = selectMbox(mailbox);
253 if ( err != MAILIMAP_NO_ERROR ) { 255 if ( err != MAILIMAP_NO_ERROR ) {
254 return; 256 return;
255 } 257 }
256 258
257 int last = m_imap->imap_selection_info->sel_exists; 259 int last = m_imap->imap_selection_info->sel_exists;
258 260
259 if (last == 0) { 261 if (last == 0) {
260 Global::statusMessage(i18n("Mailbox has no mails")); 262 Global::statusMessage(i18n("Mailbox has no mails"));
261 return; 263 return;
262 } else { 264 } else {
263 } 265 }
264 progress( i18n("Fetch ")); 266 progress( i18n("Fetch "));
265 mMax = last; 267 mMax = last;
266 //qDebug("last %d ", last); 268 //qDebug("last %d ", last);
267 Global::statusMessage(i18n("Fetching header list")); 269 Global::statusMessage(i18n("Fetching header list"));
268 qApp->processEvents(); 270 qApp->processEvents();
269 /* the range has to start at 1!!! not with 0!!!! */ 271 /* the range has to start at 1!!! not with 0!!!! */
270 //LR the access to web.de imap server is no working with value 1 272 //LR the access to web.de imap server is no working with value 1
271 //qDebug("interval %d - %d ", tryAgain, last-1+tryAgain ); 273 //qDebug("interval %d - %d ", tryAgain, last-1+tryAgain );
272 set = mailimap_set_new_interval( tryAgain, last ); 274 set = mailimap_set_new_interval( tryAgain, last );
273 fetchType = mailimap_fetch_type_new_fetch_att_list_empty(); 275 fetchType = mailimap_fetch_type_new_fetch_att_list_empty();
274 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope()); 276 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_envelope());
275 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags()); 277 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_flags());
276 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate()); 278 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_internaldate());
277 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size()); 279 mailimap_fetch_type_new_fetch_att_list_add(fetchType,mailimap_fetch_att_new_rfc822_size());
278 280
279 err = mailimap_fetch( m_imap, set, fetchType, &result ); 281 err = mailimap_fetch( m_imap, set, fetchType, &result );
280 mailimap_set_free( set ); 282 mailimap_set_free( set );
281 mailimap_fetch_type_free( fetchType ); 283 mailimap_fetch_type_free( fetchType );
282 284
283 QString date,subject,from; 285 QString date,subject,from;
284 286
285 if ( err == MAILIMAP_NO_ERROR ) { 287 if ( err == MAILIMAP_NO_ERROR ) {
286 tryAgain = -1; 288 tryAgain = -1;
287 mailimap_msg_att * msg_att; 289 mailimap_msg_att * msg_att;
288 int i = 0; 290 int i = 0;
289 for (current = clist_begin(result); current != 0; current=clist_next(current)) { 291 for (current = clist_begin(result); current != 0; current=clist_next(current)) {
290 ++i; 292 ++i;
291 //qDebug("iii %d ",i); 293 //qDebug("iii %d ",i);
292 msg_att = (mailimap_msg_att*)current->data; 294 msg_att = (mailimap_msg_att*)current->data;
293 RecMail*m = parse_list_result(msg_att); 295 RecMail*m = parse_list_result(msg_att);
294 if (m) { 296 if (m) {
295 if ( maxSizeInKb == 0 || m->Msgsize()<=(unsigned int ) maxSizeInKb*1024 ) { 297 if ( maxSizeInKb == 0 || m->Msgsize()<=(unsigned int ) maxSizeInKb*1024 ) {
296 m->setNumber(i); 298 m->setNumber(i);
297 m->setMbox(mailbox); 299 m->setMbox(mailbox);
298 m->setWrapper(this); 300 m->setWrapper(this);
299 target.append(m); 301 target.append(m);
300 } 302 }
301 } 303 }
302 } 304 }
303 Global::statusMessage(i18n("Mailbox has %1 mails").arg(target.count())); 305 Global::statusMessage(i18n("Mailbox has %1 mails").arg(target.count()));
304 } else { 306 } else {
305 --tryAgain; 307 --tryAgain;