summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-16 14:10:42 (UTC)
committer zautrix <zautrix>2005-01-16 14:10:42 (UTC)
commitde5f08d69c716f85cc92f20700cd24fb1ad41295 (patch) (unidiff)
tree0a4f5dbbdb4fc24215ab85fa4b5e073d0e8104ef
parent3f61f5a339e9c0c67c17b16214abded0d123f246 (diff)
downloadkdepimpi-de5f08d69c716f85cc92f20700cd24fb1ad41295.zip
kdepimpi-de5f08d69c716f85cc92f20700cd24fb1ad41295.tar.gz
kdepimpi-de5f08d69c716f85cc92f20700cd24fb1ad41295.tar.bz2
added AB filter settings
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt5
-rw-r--r--kaddressbook/filter.cpp22
-rw-r--r--kaddressbook/filter.h6
-rw-r--r--kaddressbook/filtereditdialog.cpp40
-rw-r--r--kaddressbook/filtereditdialog.h7
5 files changed, 65 insertions, 15 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 5d8ef41..d8f8323 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,737 +1,742 @@
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.18 ************ 3********** VERSION 1.9.18 ************
4 4
5FYI: The VERSION 1.9.17 was a testing release only. 5FYI: The VERSION 1.9.17 was a testing release only.
6Please read the changelog of VERSION 1.9.17 as well. 6Please read the changelog of VERSION 1.9.17 as well.
7 7
8Cleaned up the syncing config dialog. 8Cleaned up the syncing config dialog.
9Added sync config options for date range for events. 9Added sync config options for date range for events.
10Added sync config options for filters on incoming data. 10Added sync config options for filters on incoming data.
11Added sync config options for filters on outgoing data. 11Added sync config options for filters on outgoing data.
12Please read the updated SyncHowTo about the new filter settings. 12Please read the updated SyncHowTo about the new filter settings.
13These filter settings make it now possible to sync with shared 13These filter settings make it now possible to sync with shared
14calendars without writing back private or confidential data 14calendars without writing back private or confidential data
15(via the outgoing filters). 15(via the outgoing filters).
16To sync only with particular parts of a shared calendar, 16To sync only with particular parts of a shared calendar,
17the incoming filter settings can be used. 17the incoming filter settings can be used.
18An example can be found in the SyncHowTo. 18An example can be found in the SyncHowTo.
19 19
20KO/Pi: 20KO/Pi:
21The timeedit input has a pulldown list for times. 21The timeedit input has a pulldown list for times.
22If opened, this pulldown list should now has the right time highlighted. 22If opened, this pulldown list should now has the right time highlighted.
23Added the possibility to exclude events/todos/journals in a filter.
24You should exclude journals, if you do not want them to sync with a public calendar.
23 25
26KA/Pi:
27Added the possibility to in/exclude public/private/confidential contacts to a filter.
28If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ...
24 29
25 30
26********** VERSION 1.9.17 ************ 31********** VERSION 1.9.17 ************
27 32
28KO/Pi: 33KO/Pi:
29Fixed that tooltips were not updated after moving an item in agenda view. 34Fixed that tooltips were not updated after moving an item in agenda view.
30Fixed a bug in sorting start date for recurring events in list view. 35Fixed a bug in sorting start date for recurring events in list view.
31Changed the left button in todo viewer from "Agenda" to "Set completed". 36Changed the left button in todo viewer from "Agenda" to "Set completed".
32This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 37This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
33Added more info in the todo viewer: Startdate, parent/sub todos. 38Added more info in the todo viewer: Startdate, parent/sub todos.
34 39
35 40
36KA/Pi: 41KA/Pi:
37All fields search does now actually search all the (possible) fields, 42All fields search does now actually search all the (possible) fields,
38not only those listed in the contact list. 43not only those listed in the contact list.
39Made is possible to inline a picture in a vcard on the Z. 44Made is possible to inline a picture in a vcard on the Z.
40This was only possible on the desktop, now is it possible on the Z as well. 45This was only possible on the desktop, now is it possible on the Z as well.
41Fixed of missing save settings after filter configuration. 46Fixed of missing save settings after filter configuration.
42Made saving of addressbook much faster. 47Made saving of addressbook much faster.
43Fixed extension widget layout problem. 48Fixed extension widget layout problem.
44Fixed saving of default formatted name settings. 49Fixed saving of default formatted name settings.
45Fixed formatted name handling in edit dialog. 50Fixed formatted name handling in edit dialog.
46Added an option for changing formatted names of many contacts 51Added an option for changing formatted names of many contacts
47(menu: File - Change - Set formatted name). 52(menu: File - Change - Set formatted name).
48 53
49QWhatsThis was not working on the Z ( only black rectangle was shown). 54QWhatsThis was not working on the Z ( only black rectangle was shown).
50This is Fixed. 55This is Fixed.
51 56
52KDE-Sync: 57KDE-Sync:
53Now readonly KDE resources are synced as well. 58Now readonly KDE resources are synced as well.
54(They are not changed in KDE itself, of course). 59(They are not changed in KDE itself, of course).
55 60
56 61
57 62
58********** VERSION 1.9.16 ************ 63********** VERSION 1.9.16 ************
59 64
60KO/Pi: 65KO/Pi:
61Fixed search dialog size on Z 6000 (480x640 display). 66Fixed search dialog size on Z 6000 (480x640 display).
62Added setting to hide/show time in agenda items. 67Added setting to hide/show time in agenda items.
63Added setting to hide not running todos in todo view. 68Added setting to hide not running todos in todo view.
64Added columns for start date/time in todo view. 69Added columns for start date/time in todo view.
65Replaced the solid half-hour lines in agenda view by dot lines. 70Replaced the solid half-hour lines in agenda view by dot lines.
66Added possibility of printing the What's Next View on the desktop 71Added possibility of printing the What's Next View on the desktop
67(i.e. Windows and Linux). 72(i.e. Windows and Linux).
68Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 73Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
69Added tooltips in month view.(Tooltips only available on desktop) 74Added tooltips in month view.(Tooltips only available on desktop)
70 75
71Fixed a strange problem in KO/Pi alarm applet. 76Fixed a strange problem in KO/Pi alarm applet.
72Did not find the actual problem, 77Did not find the actual problem,
73such that now Qtopia reboots again if deinstalling the alarm applet. 78such that now Qtopia reboots again if deinstalling the alarm applet.
74But the alarm applet should work again. 79But the alarm applet should work again.
75 80
76KA/Pi: 81KA/Pi:
77Fixed the problem, that internal pictures were not saved. 82Fixed the problem, that internal pictures were not saved.
78 83
79Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 84Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
80 85
81Fixed some minor problems. (Like word wrap in help text windows). 86Fixed some minor problems. (Like word wrap in help text windows).
82 87
83Fixed a compiling problem in microkde/kresources. 88Fixed a compiling problem in microkde/kresources.
84 89
85KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 90KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
86This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 91This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
87such that now syncing KO/Pi with Sharp DTM should work on the 92such that now syncing KO/Pi with Sharp DTM should work on the
88Zaurus C 3000 model. 93Zaurus C 3000 model.
89 94
90********** VERSION 1.9.15 ************ 95********** VERSION 1.9.15 ************
91 96
92Usebilty enhancements in KO/Pi: 97Usebilty enhancements in KO/Pi:
93When clicking on the date in a month view cell, the day view is shown. 98When clicking on the date in a month view cell, the day view is shown.
94Old behaviour was, that the "new event" dialog popped up. 99Old behaviour was, that the "new event" dialog popped up.
95 100
96Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 101Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
97That means, you can restore the latest 102That means, you can restore the latest
98event/todo/journal you have deleted. 103event/todo/journal you have deleted.
99A journal is deleted, if you clear all the text of the journal. 104A journal is deleted, if you clear all the text of the journal.
100 105
101Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 106Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
102 107
103KA/Pi starting in 480x640 resolution: 108KA/Pi starting in 480x640 resolution:
104Hide the filter action in toolbar 109Hide the filter action in toolbar
105and added icons for undo/delete/redo in toolbar. 110and added icons for undo/delete/redo in toolbar.
106 111
107Change in OM/Pi ViewMail dialog: 112Change in OM/Pi ViewMail dialog:
108When clicking on the "delete" icon the mail is deleted after confirmation as usual. 113When clicking on the "delete" icon the mail is deleted after confirmation as usual.
109But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 114But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
110 115
111Fixed a crash when deleting mail-accounts in OM/Pi. 116Fixed a crash when deleting mail-accounts in OM/Pi.
112 117
113 118
114********** VERSION 1.9.14 ************ 119********** VERSION 1.9.14 ************
115 120
116Fixed some problems with the dialog sizes when switching 121Fixed some problems with the dialog sizes when switching
117portrait/landscape mode on 640x480 PDA display. 122portrait/landscape mode on 640x480 PDA display.
118 123
119Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 124Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
120 125
121Fixed an ugly bug in KOpieMail: 126Fixed an ugly bug in KOpieMail:
122KOpieMail was not able to write files (mails) to MSDOS file system, 127KOpieMail was not able to write files (mails) to MSDOS file system,
123like on an usual preformatted SD card. That should work now. 128like on an usual preformatted SD card. That should work now.
124To save your mail data on the Sd card do the following: 129To save your mail data on the Sd card do the following:
125Create a dir on the SD card: 130Create a dir on the SD card:
126mkdir /mnt/card/localmail 131mkdir /mnt/card/localmail
127Go to your home dir: 132Go to your home dir:
128cd 133cd
129Go to kopiemail data storage dir: 134Go to kopiemail data storage dir:
130cd kdepim/apps/kopiemail 135cd kdepim/apps/kopiemail
131Create a symlink to the SD card: 136Create a symlink to the SD card:
132ls -s /mnt/card/localmail 137ls -s /mnt/card/localmail
133Now KOpieMail will store all mails on the SD card. 138Now KOpieMail will store all mails on the SD card.
134 139
135KO/Pi Monthview: 140KO/Pi Monthview:
136Now "Go to Today" selects the current month from day 1-end, 141Now "Go to Today" selects the current month from day 1-end,
137not the current date + some days. 142not the current date + some days.
138I.e. "Go to Today" shows now always 143I.e. "Go to Today" shows now always
139the current month with first day of month in the first row. 144the current month with first day of month in the first row.
140 145
141Added missing German translation. 146Added missing German translation.
142 147
143Fixed icons of executeable on Wintendo. 148Fixed icons of executeable on Wintendo.
144 149
145Added a "Show next Mail" button to the OM/Pi 150Added a "Show next Mail" button to the OM/Pi
146mail viewer such that the mail below the current mail 151mail viewer such that the mail below the current mail
147in the mail list view of the current folder 152in the mail list view of the current folder
148can be read with a single click. 153can be read with a single click.
149 154
150 155
151********** VERSION 1.9.13 ************ 156********** VERSION 1.9.13 ************
152 157
153Fixed nasty PwM/Pi file reading bug, when 158Fixed nasty PwM/Pi file reading bug, when
154the used hash algo of file is different then the global 159the used hash algo of file is different then the global
155hash algo. 160hash algo.
156 161
157Added KA/Pi support for opie mailit mailapplication. 162Added KA/Pi support for opie mailit mailapplication.
158 163
159Fixed some bugs in OM/Pi. 164Fixed some bugs in OM/Pi.
160Now character conversion tables are available for the Zaurus 165Now character conversion tables are available for the Zaurus
161to make OM/Pi working properly. 166to make OM/Pi working properly.
162To get the character conversion in OM/Pi working, please download 167To get the character conversion in OM/Pi working, please download
163at the sourceforge project site the package 168at the sourceforge project site the package
164sr-character-conversion_SharpROM_arm.ipk.zip 169sr-character-conversion_SharpROM_arm.ipk.zip
165(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) 170(or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms)
166from the section "general files for KDE/Pim" 171from the section "general files for KDE/Pim"
167Instructions how to install this package are in a ReadMe in this file. 172Instructions how to install this package are in a ReadMe in this file.
168 173
169 174
170Fixed the orientation change problem in KA/Pi when switching 175Fixed the orientation change problem in KA/Pi when switching
171portrait/landscape mode. 176portrait/landscape mode.
172 177
173French translation available for KA/Pi and OM/Pi. 178French translation available for KA/Pi and OM/Pi.
174 179
175Fixed some problems with categories in KO/Pi in DTM sync. 180Fixed some problems with categories in KO/Pi in DTM sync.
176 181
177Added selection dialog for export to phone in KA/Pi. 182Added selection dialog for export to phone in KA/Pi.
178 183
179If in KO/Pi is an attendee selected to add to a meeting and this 184If in KO/Pi is an attendee selected to add to a meeting and this
180attendee is already in the list of attendees, this person is not added 185attendee is already in the list of attendees, this person is not added
181again. 186again.
182 187
183Some menu cleanup in KA/Pi. 188Some menu cleanup in KA/Pi.
184 189
185********** VERSION 1.9.12 ************ 190********** VERSION 1.9.12 ************
186 191
187Fix for the bug in KO/Pi What's Next view of version 1.9.11. 192Fix for the bug in KO/Pi What's Next view of version 1.9.11.
188 193
189Bugfix: Licence file is now shown again. 194Bugfix: Licence file is now shown again.
190 195
191OM/Pi now supports Unicode (utf8 charset). 196OM/Pi now supports Unicode (utf8 charset).
192Fixed some bugs in OM/Pi. 197Fixed some bugs in OM/Pi.
193 198
194KA/Pi has more German translation. 199KA/Pi has more German translation.
195 200
196 201
197********** VERSION 1.9.11 ************ 202********** VERSION 1.9.11 ************
198 203
199Fixed several problems in PWM/Pi, like 204Fixed several problems in PWM/Pi, like
200asking the user, if unsaved changed are pending 205asking the user, if unsaved changed are pending
201when closing the app. 206when closing the app.
202And PwM/Pi handles now different texts for the 207And PwM/Pi handles now different texts for the
203fields Description, Username, Password, configurable per category. 208fields Description, Username, Password, configurable per category.
204 209
205Fixed a crash in KO/Pi , when importing/loading vcs files 210Fixed a crash in KO/Pi , when importing/loading vcs files
206which have an entry with an attendee with state: 211which have an entry with an attendee with state:
207NEEDS ACTION 212NEEDS ACTION
208 213
209Fixed some problems in the German translation of OM/Pi, 214Fixed some problems in the German translation of OM/Pi,
210which makes some dialogs not fitting on the screen 215which makes some dialogs not fitting on the screen
211of the Z 5500. 216of the Z 5500.
212 217
213Fixed Qtopia crash, when disabling/deinstalling 218Fixed Qtopia crash, when disabling/deinstalling
214KO/Pi alarm applet. 219KO/Pi alarm applet.
215 220
216Implemented direct KDE<->KA/Pi sync for KA/Pi running 221Implemented direct KDE<->KA/Pi sync for KA/Pi running
217on Linux desktop. 222on Linux desktop.
218 223
219Added feature "remove sync info" to sync menu. 224Added feature "remove sync info" to sync menu.
220 225
221Tweaked the KO/Pi What's next view a bit, added 226Tweaked the KO/Pi What's next view a bit, added
222setting to hide events that are done. 227setting to hide events that are done.
223 228
224Disabled "beam receive enabled" on startup to 229Disabled "beam receive enabled" on startup to
225avoid problems if Fastload is enabled. 230avoid problems if Fastload is enabled.
226Please set "beam receive enabled", 231Please set "beam receive enabled",
227if you want to receive data via IR. 232if you want to receive data via IR.
228 233
229Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running 234Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running
230on Linux desktop. 235on Linux desktop.
231 236
232Made in KA/Pi scrolling possible, if details view is selected. 237Made in KA/Pi scrolling possible, if details view is selected.
233(The keyboard focus is set automatically to the search line) 238(The keyboard focus is set automatically to the search line)
234 239
235Fixed a bug in DMT sync, that a new entry in DTM was added 240Fixed a bug in DMT sync, that a new entry in DTM was added
236on every sync to Kx/Pi. 241on every sync to Kx/Pi.
237 242
238Fixed missing writing of KA/Pi categories to DMT entries when syncing. 243Fixed missing writing of KA/Pi categories to DMT entries when syncing.
239 244
240Fixed a bug in DMT sync with todos created in KO/Pi containing 245Fixed a bug in DMT sync with todos created in KO/Pi containing
241non-latin1 characters. 246non-latin1 characters.
242 247
243Rearranged package contents of Sharp-ipks and made all 248Rearranged package contents of Sharp-ipks and made all
244packages installable on SD again. 249packages installable on SD again.
245 250
246Fixed the writing of addressbook data in DTM sync. 251Fixed the writing of addressbook data in DTM sync.
247Empty fields in KA/Pi were not removed. 252Empty fields in KA/Pi were not removed.
248 253
249Added better category handling in KA/Pi: 254Added better category handling in KA/Pi:
250Added item 255Added item
251Edit Categories and 256Edit Categories and
252Manage new categories 257Manage new categories
253to the settings menu. 258to the settings menu.
254Possible to configure a view to display categories. 259Possible to configure a view to display categories.
255 260
256Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. 261Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu.
257 262
258Fixed displaying of "free" days and time in KO Monthview and Agendaview. 263Fixed displaying of "free" days and time in KO Monthview and Agendaview.
259 264
260... and many other bugfixes. 265... and many other bugfixes.
261 266
262********** VERSION 1.9.10 ************ 267********** VERSION 1.9.10 ************
263 268
264Many internal small bugfixes. 269Many internal small bugfixes.
265And fix of the "big" bug in KO/Pi, 270And fix of the "big" bug in KO/Pi,
266that after Syncing the appointments had an offset by several hours. 271that after Syncing the appointments had an offset by several hours.
267That was a problem with the internal timezone setting, 272That was a problem with the internal timezone setting,
268introduced by the changed timezone configuration settings. 273introduced by the changed timezone configuration settings.
269 274
270German translation for OM/Pi is now available. 275German translation for OM/Pi is now available.
271 276
272 277
273********** VERSION 1.9.9 ************ 278********** VERSION 1.9.9 ************
274 279
275KDE-Pim/Pi has a new Member! 280KDE-Pim/Pi has a new Member!
276It is called PWM/Pi (Passwordmanager/platform-independent) 281It is called PWM/Pi (Passwordmanager/platform-independent)
277and it is available for the Zaurus. 282and it is available for the Zaurus.
278It is planned, that it will be available later for Windows. 283It is planned, that it will be available later for Windows.
279(And for Linux, of course). 284(And for Linux, of course).
280It is a port of the Passwordmanager of KDE. 285It is a port of the Passwordmanager of KDE.
281It will need the MicroKDElibs to run. 286It will need the MicroKDElibs to run.
282 287
283Made loading of addressbooks in KA/Pi up to 7 times faster! 288Made loading of addressbooks in KA/Pi up to 7 times faster!
284The bigger your addressbook file, the more starting speed 289The bigger your addressbook file, the more starting speed
285will you gain. (relatively) 290will you gain. (relatively)
286 291
287The Qtopia addressbook connector is now platform independend 292The Qtopia addressbook connector is now platform independend
288as well and should work on any platform for importing/exporting 293as well and should work on any platform for importing/exporting
289Qtopia and Opie XML files. 294Qtopia and Opie XML files.
290 295
291Added a +30min feature to the timezone settings to make 296Added a +30min feature to the timezone settings to make
292KDE-Pim/Pi useable in Australia and other parts on the 297KDE-Pim/Pi useable in Australia and other parts on the
293world with strange timezones ;-) 298world with strange timezones ;-)
294 299
295German "Umlaute" should now be sorted correctly on the Z in KA/Pi. 300German "Umlaute" should now be sorted correctly on the Z in KA/Pi.
296 301
297It is now possible to disable the 302It is now possible to disable the
298"receive data via infrared" feature, such that syncing with 303"receive data via infrared" feature, such that syncing with
299Outlook is now possible again with Kx/Pi runing. 304Outlook is now possible again with Kx/Pi runing.
300Please disable it, before syncing Sharp DTM with Outlook. 305Please disable it, before syncing Sharp DTM with Outlook.
301For your convenience, the "receive data via infrared" feature 306For your convenience, the "receive data via infrared" feature
302is disabled automatically, if you sync Kx/Pi with DTM. 307is disabled automatically, if you sync Kx/Pi with DTM.
303You have to enable it again manually after syncing. 308You have to enable it again manually after syncing.
304Enabling this feature makes it impossible to start the 309Enabling this feature makes it impossible to start the
305Sharp DTM apps. If this feature is enabled, you will only get the 310Sharp DTM apps. If this feature is enabled, you will only get the
306alarm notification from KO/Pi and not from the Sharp calendar. 311alarm notification from KO/Pi and not from the Sharp calendar.
307This is very useful if you sync KO/Pi with Sharp DTM, 312This is very useful if you sync KO/Pi with Sharp DTM,
308because after syncing you usually would get notified about 313because after syncing you usually would get notified about
309an alarm by KO/Pi and the Sharp Calendar. 314an alarm by KO/Pi and the Sharp Calendar.
310 315
311Together with the Linux desktop version of KO/Pi 316Together with the Linux desktop version of KO/Pi
312it is now possible to sync KO/Pi on the Zaurus 317it is now possible to sync KO/Pi on the Zaurus
313with the complete KDE-desktop (3.3 or later) 318with the complete KDE-desktop (3.3 or later)
314calendar data easily. 319calendar data easily.
315That makes it possible to sync the Z with one 320That makes it possible to sync the Z with one
316click of a mouse with the KDE-Desktop. 321click of a mouse with the KDE-Desktop.
317This feature it available for all Zaurus platforms KO/Pi 322This feature it available for all Zaurus platforms KO/Pi
318is running on. 323is running on.
319The only thing needed is a running KO/Pi on Linux and 324The only thing needed is a running KO/Pi on Linux and
320a compiled version of the small 325a compiled version of the small
321KDE-Pim/Pi<->KDE-Desktop access command line program, 326KDE-Pim/Pi<->KDE-Desktop access command line program,
322which is in the KDE-Pim/Pi sources available. 327which is in the KDE-Pim/Pi sources available.
323 328
324The "KDE-desktop" syncing feature for KA/Pi will follow 329The "KDE-desktop" syncing feature for KA/Pi will follow
325in the next releases. 330in the next releases.
326 331
327Fixed the vcard export bug, which had the version 1.9.8. 332Fixed the vcard export bug, which had the version 1.9.8.
328 333
329Added missing GERMAN translation to KO/Pi. 334Added missing GERMAN translation to KO/Pi.
330Hi PsionX, could you add the missing french translation?Thx! 335Hi PsionX, could you add the missing french translation?Thx!
331 336
332Translation files for KA/Pi are available as well. 337Translation files for KA/Pi are available as well.
333GERMAN translation will be available in the next release. 338GERMAN translation will be available in the next release.
334PsionX ( yres, you again ;-) ), could you start translating 339PsionX ( yres, you again ;-) ), could you start translating
335KA/Pi? Thx! 340KA/Pi? Thx!
336 341
337You can download the version 1.9.9 at 342You can download the version 1.9.9 at
338 343
339http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604 344http://sourceforge.net/project/showfiles.php?group_id=104103&package_id=112604
340 345
341Note: 346Note:
342To run the mail program OM/Pi you need libopenssl. 347To run the mail program OM/Pi you need libopenssl.
343A link to a download loaction is available at 348A link to a download loaction is available at
344ZSI at www.killefiz.de 349ZSI at www.killefiz.de
345 350
346 351
347********** VERSION 1.9.8 ************ 352********** VERSION 1.9.8 ************
348 353
349Fixed character decoding in OM/Pi. 354Fixed character decoding in OM/Pi.
350(e.g. German "Umlaute" were not displayed properly.) 355(e.g. German "Umlaute" were not displayed properly.)
351 356
352Made is possible to reparent todos in KO/Pi. 357Made is possible to reparent todos in KO/Pi.
353Use contextmenu or keys (look at Help-Keys + Colors) for that. 358Use contextmenu or keys (look at Help-Keys + Colors) for that.
354 359
355Added the missing Sync-Howto and WhatsNew to the packages. 360Added the missing Sync-Howto and WhatsNew to the packages.
356 361
357KO/Pi on Linux desktop can now sync with KDE desktop. 362KO/Pi on Linux desktop can now sync with KDE desktop.
358That means: When using KO/Pi on Linux desktop for syncing with 363That means: When using KO/Pi on Linux desktop for syncing with
359KDE desktop and the Zaurus, the Zaurus can be synced now 364KDE desktop and the Zaurus, the Zaurus can be synced now
360with all KDE-Calendar resources, not only with one local file. 365with all KDE-Calendar resources, not only with one local file.
361(That makes it possible to sync the Zaurus with the 366(That makes it possible to sync the Zaurus with the
362calendar data on a Kolab server) 367calendar data on a Kolab server)
363 368
364KA/Pi syncing with KDE desktop will be available in the next version. 369KA/Pi syncing with KDE desktop will be available in the next version.
365 370
366 371
367********** VERSION 1.9.7 ************ 372********** VERSION 1.9.7 ************
368 373
369KO/Pi - KA/Pi on Windows: 374KO/Pi - KA/Pi on Windows:
370Now a directory can be defined by the user, where the 375Now a directory can be defined by the user, where the
371application/config data should be saved. 376application/config data should be saved.
372 Define your desired path in the evironment variable 377 Define your desired path in the evironment variable
373 MICROKDEHOME 378 MICROKDEHOME
374 before starting KO/Pi or KA/Pi. 379 before starting KO/Pi or KA/Pi.
375 380
376An easy Kx/Pi to Kx/Pi syncing is now possible 381An easy Kx/Pi to Kx/Pi syncing is now possible
377(it is called Pi-Sync) via network. 382(it is called Pi-Sync) via network.
378Please look at the Sync Howto. 383Please look at the Sync Howto.
379 384
380Exporting of calendar data and contacts to mobile phones is now possible. 385Exporting of calendar data and contacts to mobile phones is now possible.
381The SyncHowto is updated with information howto 386The SyncHowto is updated with information howto
382access/sync mobile phones. 387access/sync mobile phones.
383Please look at the Sync Howto. 388Please look at the Sync Howto.
384 389
385Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly. 390Now KO/Pi and KA/Pi on the Zaurus can receive data via infrared directly.
386Please disable Fastload for the original contact/calendar applications 391Please disable Fastload for the original contact/calendar applications
387and close them. 392and close them.
388KO/Pi and KA/Pi must be running in order to receive the data. 393KO/Pi and KA/Pi must be running in order to receive the data.
389(KO/Pi and KA/Pi are always running if Fastload for them is enabled!) 394(KO/Pi and KA/Pi are always running if Fastload for them is enabled!)
390 395
391In the KA/Pi details view are now the preferred tel. numbers displayed on top 396In the KA/Pi details view are now the preferred tel. numbers displayed on top
392of the other data ( emails/tel.numbers/addresses) 397of the other data ( emails/tel.numbers/addresses)
393 398
394Fixed some syncing problems in KA/Pi. 399Fixed some syncing problems in KA/Pi.
395 400
396Added font settings for the KA/Pi details view. 401Added font settings for the KA/Pi details view.
397Added fields "children's name" and "gender" to KA/Pi. 402Added fields "children's name" and "gender" to KA/Pi.
398 403
399Made searching in KA/Pi better: 404Made searching in KA/Pi better:
400Now the first item in a view is selected after a search automatically and 405Now the first item in a view is selected after a search automatically and
401the views can be scrolled up/down when the search input field has the keyboard focus. 406the views can be scrolled up/down when the search input field has the keyboard focus.
402 407
403And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi. 408And, of course, fixed a bunch of reported bugs in KO/Pi and KA/Pi.
404 409
405 410
406********** VERSION 1.9.6 ************ 411********** VERSION 1.9.6 ************
407 412
408Changes in the external application communication on the Zaurus 413Changes in the external application communication on the Zaurus
409in order to use less RAM when the apps are running. 414in order to use less RAM when the apps are running.
410First syncing of addressbooks (KA/Pi) is possible. 415First syncing of addressbooks (KA/Pi) is possible.
411 416
412 417
413********** VERSION 1.9.5a ************ 418********** VERSION 1.9.5a ************
414 419
415Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5. 420Fixed a bug in KO/Pi in the SharpDTM sync of version 1.9.5.
416Fixed some small bugs. 421Fixed some small bugs.
417KA/Pi shows now the birthday in summary view. 422KA/Pi shows now the birthday in summary view.
418Now OM/Pi and KA/Pi are using the date format defined in KO/Pi 423Now OM/Pi and KA/Pi are using the date format defined in KO/Pi
419for displaying dates. 424for displaying dates.
420 425
421 426
422********** VERSION 1.9.5 ************ 427********** VERSION 1.9.5 ************
423 428
424There is still no Addressbook syncing! 429There is still no Addressbook syncing!
425 430
426New in 1.9.5: 431New in 1.9.5:
427 432
428Many bugfixes. 433Many bugfixes.
429Better searching in KA/Pi. 434Better searching in KA/Pi.
430You can configure in KA/Pi if you want to search only after 435You can configure in KA/Pi if you want to search only after
431<return> key pressed. 436<return> key pressed.
432 437
433Better mail downloading in OM/Pi. 438Better mail downloading in OM/Pi.
434 439
435First experimental alpha version of sync of KO/Pi with mobile phones. 440First experimental alpha version of sync of KO/Pi with mobile phones.
436See gammu documentation for supported phones. 441See gammu documentation for supported phones.
437You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp. 442You need to install the package kammu_1.9.5_arm.ipk for sync of KO/Pi with mobile phones. kammu_1.9.5_arm.ipk needs libbluetooth and libsdp.
438Quick hint how to use: 443Quick hint how to use:
439NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL! 444NOTE: MOBILE PHONE SYNC IS EXPERIMENTAL!
440Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp. 445Install kammu_1.9.5_arm.ipk , libbluetooth and libsdp.
441Create syncprofile - mobile device 446Create syncprofile - mobile device
442Remove entry for model. (Leave empty ). 447Remove entry for model. (Leave empty ).
443Enable infrared on Zaurus and your Phone. 448Enable infrared on Zaurus and your Phone.
444Sync. 449Sync.
445To get a more detailed log, start kopi from konsole. 450To get a more detailed log, start kopi from konsole.
446 451
447********** VERSION 1.9.4 ************ 452********** VERSION 1.9.4 ************
448 453
449This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus. 454This is the version 1.9.4 of KDE-Pim/Pi for the Zaurus.
450 455
451WARNING: 456WARNING:
452PLEASE BACKUP ALL YOUR DATA! 457PLEASE BACKUP ALL YOUR DATA!
453We have changed a lot and maybe there are some unknown problems. 458We have changed a lot and maybe there are some unknown problems.
454 459
455SYNC HANDLING HAS CHANGED! 460SYNC HANDLING HAS CHANGED!
456Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 461Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
457(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 462(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
458 463
459You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs. 464You need the kmicrokdelibs_1.9.4_arm.ipk as a base for the other programs.
460If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well. 465If you get the error: "Install only possible in main memory", just try it again to install it on SD card. That worked for me. And it was reported that rebooting Qtopia did help in this case as well.
461 466
462As programs are available: 467As programs are available:
463KO/Pi (korganizer ipk) - a calendar program. 468KO/Pi (korganizer ipk) - a calendar program.
464KA/Pi (kaddressbook ipk ) - an addressbook 469KA/Pi (kaddressbook ipk ) - an addressbook
465OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support. 470OM/Pi (kopiemail ipk ) an email program with pop/smtp and IMAP support.
466 471
467An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode. 472An alarm notification program ( korganizer-alarm ipk ) for KO/Pi that notifies you about alarms, even if the Zaurus is in suspend mode.
468(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia) 473(If you do not see an icon in the taskbar after installing korganizer-alarm, please restart Qtopia)
469 474
470All the applications are installed in a "Pim" TAB. 475All the applications are installed in a "Pim" TAB.
471If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk 476If this TAB is new on your system, you can get an icon in this TAB by installing pim_TAB_icon_1.9.4_arm.ipk
472 477
473All the application are integrated. 478All the application are integrated.
474Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail. 479Such that you can choose in KO/Pi the attendees of a meeting from the addresses in KA/Pi. When you click in KA/Pi on the email address, OM/Pi is started to write the mail.
475 480
476HINT: 481HINT:
477If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number. 482If you install KPhone/Pi 0.9.7, it will be called, if you click in KA/Pi on a phone number.
478 483
479What's new? 484What's new?
480 485
481SYNC HANDLING HAS CHANGED! 486SYNC HANDLING HAS CHANGED!
482Such that, if you sync now with an already synded device, you will duplicated entries after the first sync. 487Such that, if you sync now with an already synded device, you will duplicated entries after the first sync.
483(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks). 488(This change was introduced to make it possible to sync with mobile phones, which will be available later (maybe in 4 weeks).
484 489
485New in OM/Pi: 490New in OM/Pi:
486When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails. 491When copying(i.e. downloading mails) , you can specify, that only mails of a given size should be downloaded. Added mail copy possibility for selected mails.
487 492
488New in KO/Pi: 493New in KO/Pi:
489French is now available for KO/Pi. 494French is now available for KO/Pi.
490Choose menu:Actions - Configure:TAB locale 495Choose menu:Actions - Configure:TAB locale
491Syncing has changed. 496Syncing has changed.
492Phone sync available soon. 497Phone sync available soon.
493Not much changes, I cannot remember them ... 498Not much changes, I cannot remember them ...
494 499
495New in KA/Pi: 500New in KA/Pi:
496Beaming possible. 501Beaming possible.
497Sharp DTM readonly access possible( create a new DTM resource ); 502Sharp DTM readonly access possible( create a new DTM resource );
498Better searching possible. 503Better searching possible.
499Search is performed only after pressing the return key. 504Search is performed only after pressing the return key.
500Use wildcard * to specify parts of a name. 505Use wildcard * to specify parts of a name.
501 506
502Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * . 507Better name/email selection dialog (called from KO/Pi or OM/Pi). In this dialog, now searching is possible. Like in KA/Pi, use return key and wildcard * .
503 508
504A big improvement is the new management of the contact access. 509A big improvement is the new management of the contact access.
505In version 1.9.3, every application was using their own addressbook access data. 510In version 1.9.3, every application was using their own addressbook access data.
506That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi. 511That means, the addressbook was loaded up to three times in the memory, when accessed by KA/Pi, KO/Pi and OM/Pi.
507That was wasting of memory, if you had several hundreds of contacts. 512That was wasting of memory, if you had several hundreds of contacts.
508 513
509Now only KA/Pi accesses the addressbook. 514Now only KA/Pi accesses the addressbook.
510If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them. 515If KO/Pi or OM/Pi want to get some name/email data, they request KA/Pi to open the name/email selection dialog and send it back to them.
511If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly. 516If you click on an attendee in a meeting, its contact data is displayed in KA/Pi directly.
512That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first. 517That means, if KO/Pi or OM/Pi want to access contact data, KA/Pi is started first.
513 518
514New in the KO/Pi alarm applet: 519New in the KO/Pi alarm applet:
515Configure your own timer popup menu! 520Configure your own timer popup menu!
516(Text and minutes for timer countdown) 521(Text and minutes for timer countdown)
517Just edit the file 522Just edit the file
518(yourhomedir)/.kopialarmtimerrc 523(yourhomedir)/.kopialarmtimerrc
519and start/stop a timer to get a new menu with the data of this file. 524and start/stop a timer to get a new menu with the data of this file.
520 525
521********** VERSION 1.9.3 ************ 526********** VERSION 1.9.3 ************
5221) 5271)
523Now KO/Pi on Windows imports directly the calendar data of 528Now KO/Pi on Windows imports directly the calendar data of
524an installed Outlook. Should work with OL version >= 2000. 529an installed Outlook. Should work with OL version >= 2000.
525 530
526********** VERSION 1.9.2 ************ 531********** VERSION 1.9.2 ************
5271) 5321)
528KDE-Pim/Pi has got a new member: 533KDE-Pim/Pi has got a new member:
529KmicroMail (KM/Pi) is a mail program, 534KmicroMail (KM/Pi) is a mail program,
530which can handle IMAP and POP mail access. 535which can handle IMAP and POP mail access.
531It is based on Opie-Mail v3. 536It is based on Opie-Mail v3.
532All dependencies to the Opie libraries ar removed, 537All dependencies to the Opie libraries ar removed,
533such that no additional Opie lib is needed. 538such that no additional Opie lib is needed.
534It is already integrated in KO/Pi and KA/Pi. 539It is already integrated in KO/Pi and KA/Pi.
535It it now available for the Zaurus,probably it 540It it now available for the Zaurus,probably it
536will be available for other platforms later. 541will be available for other platforms later.
537Hint: 542Hint:
538Create your own contact (name + email) 543Create your own contact (name + email)
539in KA/Pi, select this contact and choose menu: 544in KA/Pi, select this contact and choose menu:
540Settings - Set Who Am I. 545Settings - Set Who Am I.
541Now the settings of this contact are used as 546Now the settings of this contact are used as
542the sender data in KM/Pi. 547the sender data in KM/Pi.
5432) 5482)
544KDE-Pim/Pi is split up in five different 549KDE-Pim/Pi is split up in five different
545packages now precompiled for Sharp Zaurus: 550packages now precompiled for Sharp Zaurus:
546--kmicrokdelibs_1.9.2_arm.ipk 551--kmicrokdelibs_1.9.2_arm.ipk
547The libs are needed for any 552The libs are needed for any
548of the following programs: 553of the following programs:
549--kaddressbook_1.9.2_arm.ipk 554--kaddressbook_1.9.2_arm.ipk
550--kmicromail_1.9.2_arm.ipk 555--kmicromail_1.9.2_arm.ipk
551--korganizer_1.9.2_arm.ipk 556--korganizer_1.9.2_arm.ipk
552Independ from that, there is the alarm applet 557Independ from that, there is the alarm applet
553available for KO/Pi, which also offers 558available for KO/Pi, which also offers
554quick access for a new mail or 559quick access for a new mail or
555showing the addressbook.: 560showing the addressbook.:
556--korganizer-alarm_1.9.2_arm.ipk 561--korganizer-alarm_1.9.2_arm.ipk
557Independend means, that the alarm applet 562Independend means, that the alarm applet
558does not need any of the libs or programs above to run. 563does not need any of the libs or programs above to run.
559But it would be quite useless without these programs. 564But it would be quite useless without these programs.
560NOTE: 565NOTE:
561If you get a 566If you get a
562"This application depends on other programs" 567"This application depends on other programs"
563during installation of 568during installation of
564--kmicrokdelibs_1.9.2_arm.ipk 569--kmicrokdelibs_1.9.2_arm.ipk
565you probably do not have to care about that. 570you probably do not have to care about that.
566kmicrokdelibs_1.9.2 will come with some 571kmicrokdelibs_1.9.2 will come with some
567resource plugins, which needs additional libraries. 572resource plugins, which needs additional libraries.
568(E.g. libopie1, if you want to use the 573(E.g. libopie1, if you want to use the
569opie resource connector in KA/Pi). 574opie resource connector in KA/Pi).
570If you do not have this libraries installed, 575If you do not have this libraries installed,
571you simply cannot use the resource. 576you simply cannot use the resource.
572To make it clear: 577To make it clear:
573If the libraries are missing, the applications 578If the libraries are missing, the applications
574using kmicrokdelibs will start, 579using kmicrokdelibs will start,
575because the resources are plugins. 580because the resources are plugins.
5763) 5813)
577KO/Pi and friends are now installable on SD-Card! 582KO/Pi and friends are now installable on SD-Card!
578It is recommended to install all libs and apps 583It is recommended to install all libs and apps
579on the SD card or all in the internal storage. 584on the SD card or all in the internal storage.
580There may be problems, if this is mixed. 585There may be problems, if this is mixed.
5814) 5864)
582Fixed two bugs in the alarm notification on Windows. 587Fixed two bugs in the alarm notification on Windows.
5835) 5885)
584Great improvement! 589Great improvement!
585KO/Pi uses now the latest version of libical. 590KO/Pi uses now the latest version of libical.
586Libical is the library which actually reads 591Libical is the library which actually reads
587the calendar files and extract the data from it. 592the calendar files and extract the data from it.
588With the old version, there were problems 593With the old version, there were problems
589(crashes or program hangs) when licical did read 594(crashes or program hangs) when licical did read
590files, which were not stored from KO/Pi. 595files, which were not stored from KO/Pi.
591I do not know, if the new libical works perfect, 596I do not know, if the new libical works perfect,
592but actually it works much better than 597but actually it works much better than
593the old version. 598the old version.
594There are no problems with compatibility with 599There are no problems with compatibility with
595old calendar files of KO/Pi, of course! 600old calendar files of KO/Pi, of course!
5966) 6016)
597New in KA/Pi: 602New in KA/Pi:
598Opie addressbook resource connector available! 603Opie addressbook resource connector available!
599You will need libopie1 and the opie addressbook, 604You will need libopie1 and the opie addressbook,
600of course. 605of course.
601With the Opie addressbook resource connector, 606With the Opie addressbook resource connector,
602you can access the Opie addressbook readonly in KA/Pi. 607you can access the Opie addressbook readonly in KA/Pi.
603If you want to edit or import the data into KA/Pi, 608If you want to edit or import the data into KA/Pi,
604do this: 609do this:
605a) Create an Opie resource. 610a) Create an Opie resource.
606 (Menu: Settings-Configure Resources). 611 (Menu: Settings-Configure Resources).
607After configuration and restarting KA/Pi you should see 612After configuration and restarting KA/Pi you should see
608the Opie contacts in KA/Pi. 613the Opie contacts in KA/Pi.
609b) Select some or all Opie contacts. 614b) Select some or all Opie contacts.
610(NOTE: +++++ 615(NOTE: +++++
611To know exactly, what contacts are Opie contacts, 616To know exactly, what contacts are Opie contacts,
612do this: Choose menu: 617do this: Choose menu:
613View-Modify View - TAB Fields. 618View-Modify View - TAB Fields.
614Select in the above list "Resource" and click 619Select in the above list "Resource" and click
615down arrow to add it to the "Selected fields". 620down arrow to add it to the "Selected fields".
616Click OK. 621Click OK.
617Now you have a new column "Resource" in your list, 622Now you have a new column "Resource" in your list,
618where you can see, what an Opie resource is. 623where you can see, what an Opie resource is.
619++++ NOTE end.) 624++++ NOTE end.)
620Ok, we do have now some Opie contacts seleted. 625Ok, we do have now some Opie contacts seleted.
621(Use SHIFT or CTRL key in order to multiple select). 626(Use SHIFT or CTRL key in order to multiple select).
622c) Choose menu: Edit-Copy. 627c) Choose menu: Edit-Copy.
623d) Choose menu: Edit-Paste. 628d) Choose menu: Edit-Paste.
624e) Select the resource, you want to add the contacts to. 629e) Select the resource, you want to add the contacts to.
625Congrats! Now you have read/write access to the copied 630Congrats! Now you have read/write access to the copied
626opie contacts as "real" KA/Pi contacts. 631opie contacts as "real" KA/Pi contacts.
627 632
628 633
629********** VERSION 1.9.1 ************ 634********** VERSION 1.9.1 ************
6301) 6351)
631 +++ IMPORTANT 1 +++ 636 +++ IMPORTANT 1 +++
632 637
633The storing place of the default calendar 638The storing place of the default calendar
634file has changed! 639file has changed!
635The default calendar file was 640The default calendar file was
636Applications/korganizer/mycalendar.ics 641Applications/korganizer/mycalendar.ics
637on Zaurus and 642on Zaurus and
638(yourHomeDir)/korganizer/mycalendar.ics 643(yourHomeDir)/korganizer/mycalendar.ics
639on Windows/Linux desktop. Now it is 644on Windows/Linux desktop. Now it is
640(yourHomeDir)/kdepim/korganizer/mycalendar.ics 645(yourHomeDir)/kdepim/korganizer/mycalendar.ics
641on Zaurus, Windows and Linux. 646on Zaurus, Windows and Linux.
642To load the old file, choose menu 647To load the old file, choose menu
643File-Load calendar backup. 648File-Load calendar backup.
644(It should be loaded automatically 649(It should be loaded automatically
645at startup with a warning message displayed). 650at startup with a warning message displayed).
646The place of the configuration file has changed too. 651The place of the configuration file has changed too.
647If you want to use your old KO/Pi config, 652If you want to use your old KO/Pi config,
648copy it to 653copy it to
649(yourHomeDir)/kdepim/config/korganizerrc 654(yourHomeDir)/kdepim/config/korganizerrc
650Please read VERSION 1.9.0 - topic 3) as well! 655Please read VERSION 1.9.0 - topic 3) as well!
651 656
652 +++ IMPORTANT 2 +++ 657 +++ IMPORTANT 2 +++
653 658
654Because of the new paths, you will need 659Because of the new paths, you will need
655a new version of the KO/Pi alarm applet 660a new version of the KO/Pi alarm applet
656for Zaurus. 661for Zaurus.
657Use version >= 1.9.1 662Use version >= 1.9.1
658 663
6592) 6642)
660Now the QWhat'sThis Icon works for items 665Now the QWhat'sThis Icon works for items
661in the month view as well. 666in the month view as well.
662(See VERSION 1.7.8 Topic 1) ). 667(See VERSION 1.7.8 Topic 1) ).
6633) 6683)
664You can import birtsdays/anniversaries 669You can import birtsdays/anniversaries
665from KA/Pi into KO/Pi. 670from KA/Pi into KO/Pi.
666Choose menu File-Import birthdays. 671Choose menu File-Import birthdays.
667If you import twice, already imported items 672If you import twice, already imported items
668will not be imported again, if they 673will not be imported again, if they
669have not been changed in KO/Pi. 674have not been changed in KO/Pi.
6704) 6754)
671When syncing with sharp DTM, now a progress 676When syncing with sharp DTM, now a progress
672is shown, when the data is written back. 677is shown, when the data is written back.
673If there is much data in KO/Pi and no data 678If there is much data in KO/Pi and no data
674in DTM, that can take a long time. 679in DTM, that can take a long time.
675(But only for the first time ). 680(But only for the first time ).
6765) 6815)
677In the search dialog, you can search 682In the search dialog, you can search
678now for the name/email of an attendee 683now for the name/email of an attendee
679of an event/todo. 684of an event/todo.
680To get more space for displaying 685To get more space for displaying
681search results, the buttons 686search results, the buttons
682for "search" and "close" on the 687for "search" and "close" on the
683bottom are removed in the PDA version. 688bottom are removed in the PDA version.
684You have to click OK in the top right 689You have to click OK in the top right
685corner to do a search. 690corner to do a search.
6866) 6916)
687Now it is possible to disable the displaying 692Now it is possible to disable the displaying
688of todo items in the Allday part of the Agenda. 693of todo items in the Allday part of the Agenda.
689Choose Menu Action-Configure, 694Choose Menu Action-Configure,
690TAB Todo View, checkbox 695TAB Todo View, checkbox
691"Allday Agenda view shows todos" 696"Allday Agenda view shows todos"
6927) 6977)
693If FastLoad is enabled, now the settings and the 698If FastLoad is enabled, now the settings and the
694calendar data are saved, when KO/Pi is closed. 699calendar data are saved, when KO/Pi is closed.
695(If no Fastload is enabled, KO/Pi saves 700(If no Fastload is enabled, KO/Pi saves
696the data as well, of course) 701the data as well, of course)
6978) 7028)
698The Agenda View has a minimize-splitter now, 703The Agenda View has a minimize-splitter now,
699such that the height of the allday part can be 704such that the height of the allday part can be
700changed quickly. 705changed quickly.
701 706
702********** VERSION 1.9.0 ************ 707********** VERSION 1.9.0 ************
7031) 7081)
704KO/Pi is now merged with the new microKDE from KA/Pi. 709KO/Pi is now merged with the new microKDE from KA/Pi.
705KO/Pi accesses now KA/Pi as the addressbook. 710KO/Pi accesses now KA/Pi as the addressbook.
706The other ddressbook-plugins are not working any longer. 711The other ddressbook-plugins are not working any longer.
707(It is planned, that later KA/Pi itself uses these plugins) 712(It is planned, that later KA/Pi itself uses these plugins)
708New versions of KO/Pi are only available 713New versions of KO/Pi are only available
709together with KA/Pi as the KDE-Pim/Pi package. 714together with KA/Pi as the KDE-Pim/Pi package.
7102) 7152)
711If you click on an attendee of a meeting in the 716If you click on an attendee of a meeting in the
712event viewer, a detailed summary of the 717event viewer, a detailed summary of the
713attendee is shown. 718attendee is shown.
7143) 7193)
715The place of the configuration file has changed. 720The place of the configuration file has changed.
716If you want to use your old KO/Pi config, copy 721If you want to use your old KO/Pi config, copy
717Applications/korganizer/config_korganizerrc 722Applications/korganizer/config_korganizerrc
718to 723to
719Applications/korganizer/config/korganizerrc 724Applications/korganizer/config/korganizerrc
720 725
721********** VERSION 1.7.8 ************ 726********** VERSION 1.7.8 ************
7221) 7271)
723Now the QWhat'sThis ist working. 728Now the QWhat'sThis ist working.
724Enable the QWhat'sThis icon in the toolbar. 729Enable the QWhat'sThis icon in the toolbar.
725(You have to restart to reload the changed toolbar config). 730(You have to restart to reload the changed toolbar config).
726Now click on the QWhat'sThis Icon 731Now click on the QWhat'sThis Icon
727in the top right corner of KO/Pi. 732in the top right corner of KO/Pi.
728Then click on an item in the Agenda View: 733Then click on an item in the Agenda View:
729You will get a detailed display of the items content. 734You will get a detailed display of the items content.
7302) 7352)
731Some other very minor changes. 736Some other very minor changes.
732But I have forgotten the details ... 737But I have forgotten the details ...
733For that reason I start this log here: 738For that reason I start this log here:
734To document my changes, when I am doing it. 739To document my changes, when I am doing it.
735 740
736********** VERSION 1.7.7 ************ 741********** VERSION 1.7.7 ************
737Stable Version of KO/Pi 742Stable Version of KO/Pi
diff --git a/kaddressbook/filter.cpp b/kaddressbook/filter.cpp
index 39d2ae4..9cb4c2d 100644
--- a/kaddressbook/filter.cpp
+++ b/kaddressbook/filter.cpp
@@ -1,206 +1,228 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <kconfig.h> 24#include <kconfig.h>
25#include <kconfigbase.h> 25#include <kconfigbase.h>
26#include <kdebug.h> 26#include <kdebug.h>
27 27
28#include "kabprefs.h" 28#include "kabprefs.h"
29 29
30#include "filter.h" 30#include "filter.h"
31#include <secrecy.h>
31 32
32Filter::Filter() 33Filter::Filter()
33 : mName( QString::null ), mMatchRule( Matching ), mEnabled( true ), 34 : mName( QString::null ), mMatchRule( Matching ), mEnabled( true ),
34 mInternal( false ) 35 mInternal( false )
35{ 36{
37 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
36} 38}
37 39
38Filter::Filter( const QString &name ) 40Filter::Filter( const QString &name )
39 : mName( name ), mMatchRule( Matching ), mEnabled( true ), 41 : mName( name ), mMatchRule( Matching ), mEnabled( true ),
40 mInternal( false ) 42 mInternal( false )
41{ 43{
44 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
42} 45}
43 46
44Filter::~Filter() 47Filter::~Filter()
45{ 48{
46} 49}
47 50
48void Filter::setName( const QString &name ) 51void Filter::setName( const QString &name )
49{ 52{
50 mName = name; 53 mName = name;
51} 54}
52 55
53const QString &Filter::name() const 56const QString &Filter::name() const
54{ 57{
55 return mName; 58 return mName;
56} 59}
57 60
58bool Filter::isInternal() const 61bool Filter::isInternal() const
59{ 62{
60 return mInternal; 63 return mInternal;
61} 64}
62 65
63void Filter::apply( KABC::Addressee::List &addresseeList ) 66void Filter::apply( KABC::Addressee::List &addresseeList )
64{ 67{
65 KABC::Addressee::List::Iterator iter; 68 KABC::Addressee::List::Iterator iter;
66 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ) { 69 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ) {
67 if ( filterAddressee( *iter ) ) 70 if ( filterAddressee( *iter ) )
68 ++iter; 71 ++iter;
69 else 72 else
70 { 73 {
71#ifndef KAB_EMBEDDED 74#ifndef KAB_EMBEDDED
72 iter = addresseeList.erase( iter ); 75 iter = addresseeList.erase( iter );
73#else //KAB_EMBEDDED 76#else //KAB_EMBEDDED
74 iter = addresseeList.remove( iter ); 77 iter = addresseeList.remove( iter );
75#endif //KAB_EMBEDDED 78#endif //KAB_EMBEDDED
76 } 79 }
77 } 80 }
78} 81}
79 82
80bool Filter::filterAddressee( const KABC::Addressee &a ) 83bool Filter::filterAddressee( const KABC::Addressee &a )
81{ 84{
85 switch ( a.secrecy().type()) {
86 case KABC::Secrecy::Public:
87 if (! (mCriteria & ShowPublic ))
88 return false;
89 break;
90 case KABC::Secrecy::Private:
91 if (! (mCriteria & ShowPrivate ))
92 return false;
93 break;
94 case KABC::Secrecy::Confidential:
95 if (! (mCriteria & ShowConfidential ))
96 return false;
97 break;
98 default:
99 return false;
100 break;
101 }
82 QStringList::Iterator iter; 102 QStringList::Iterator iter;
83 iter = mCategoryList.begin(); 103 iter = mCategoryList.begin();
84 // empty filter always matches 104 // empty filter always matches
85 105
86 if ( iter == mCategoryList.end() ) 106 if ( iter == mCategoryList.end() )
87 return true; 107 return true;
88 108
89 for ( ; iter != mCategoryList.end(); ++iter ) { 109 for ( ; iter != mCategoryList.end(); ++iter ) {
90 if ( a.hasCategory( *iter ) ) 110 if ( a.hasCategory( *iter ) )
91 return ( mMatchRule == Matching ); 111 return ( mMatchRule == Matching );
92 } 112 }
93 113
94 return !( mMatchRule == Matching ); 114 return !( mMatchRule == Matching );
95} 115}
96 116
97void Filter::setEnabled( bool on ) 117void Filter::setEnabled( bool on )
98{ 118{
99 mEnabled = on; 119 mEnabled = on;
100} 120}
101 121
102bool Filter::isEnabled() const 122bool Filter::isEnabled() const
103{ 123{
104 return mEnabled; 124 return mEnabled;
105} 125}
106 126
107void Filter::setCategories( const QStringList &list ) 127void Filter::setCategories( const QStringList &list )
108{ 128{
109 mCategoryList = list; 129 mCategoryList = list;
110} 130}
111 131
112const QStringList &Filter::categories() const 132const QStringList &Filter::categories() const
113{ 133{
114 return mCategoryList; 134 return mCategoryList;
115} 135}
116 136
117void Filter::save( KConfig *config ) 137void Filter::save( KConfig *config )
118{ 138{
119 config->writeEntry( "Name", mName ); 139 config->writeEntry( "Name", mName );
120 config->writeEntry( "Enabled", mEnabled ); 140 config->writeEntry( "Enabled", mEnabled );
121 config->writeEntry( "Categories", mCategoryList ); 141 config->writeEntry( "Categories", mCategoryList );
122 config->writeEntry( "MatchRule", (int)mMatchRule ); 142 config->writeEntry( "MatchRule", (int)mMatchRule );
143 config->writeEntry( "Criteria", (int)mCriteria );
123} 144}
124 145
125void Filter::restore( KConfig *config ) 146void Filter::restore( KConfig *config )
126{ 147{
127 mName = config->readEntry( "Name", "<internal error>" ); 148 mName = config->readEntry( "Name", "<internal error>" );
128 mEnabled = config->readBoolEntry( "Enabled", true ); 149 mEnabled = config->readBoolEntry( "Enabled", true );
129 mCategoryList = config->readListEntry( "Categories" ); 150 mCategoryList = config->readListEntry( "Categories" );
130 mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching ); 151 mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching );
152 mCriteria = config->readNumEntry( "Criteria", (ShowPublic | ShowPrivate| ShowConfidential) );
131} 153}
132 154
133void Filter::save( KConfig *config, QString baseGroup, Filter::List &list ) 155void Filter::save( KConfig *config, QString baseGroup, Filter::List &list )
134{ 156{
135 { 157 {
136 KConfigGroupSaver s( config, baseGroup ); 158 KConfigGroupSaver s( config, baseGroup );
137 159
138 // remove the old filters 160 // remove the old filters
139 uint count = config->readNumEntry( "Count" ); 161 uint count = config->readNumEntry( "Count" );
140 /* // memory access violation here 162 /* // memory access violation here
141 for ( uint i = 0; i < count; ++i ) 163 for ( uint i = 0; i < count; ++i )
142 config->deleteGroup( QString( "%1_%2" ).arg( baseGroup ).arg( i ) ); 164 config->deleteGroup( QString( "%1_%2" ).arg( baseGroup ).arg( i ) );
143 */ 165 */
144 } 166 }
145 167
146 int index = 0; 168 int index = 0;
147 Filter::List::Iterator iter; 169 Filter::List::Iterator iter;
148 for ( iter = list.begin(); iter != list.end(); ++iter ) { 170 for ( iter = list.begin(); iter != list.end(); ++iter ) {
149 if ( !(*iter).mInternal ) { 171 if ( !(*iter).mInternal ) {
150 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( index ) ); 172 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( index ) );
151 173
152 (*iter).save( config ); 174 (*iter).save( config );
153 index++; 175 index++;
154 } 176 }
155 } 177 }
156 178
157 KConfigGroupSaver s( config, baseGroup ); 179 KConfigGroupSaver s( config, baseGroup );
158 180
159 config->writeEntry( "Count", index ); 181 config->writeEntry( "Count", index );
160 182
161} 183}
162 184
163Filter::List Filter::restore( KConfig *config, QString baseGroup ) 185Filter::List Filter::restore( KConfig *config, QString baseGroup )
164{ 186{
165 Filter::List list; 187 Filter::List list;
166 int count = 0; 188 int count = 0;
167 Filter f; 189 Filter f;
168 190
169 { 191 {
170 KConfigGroupSaver s( config, baseGroup ); 192 KConfigGroupSaver s( config, baseGroup );
171 count = config->readNumEntry( "Count", 0 ); 193 count = config->readNumEntry( "Count", 0 );
172 } 194 }
173 195
174 for ( int i = 0; i < count; i++ ) { 196 for ( int i = 0; i < count; i++ ) {
175 { 197 {
176 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( i ) ); 198 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( i ) );
177 f.restore( config ); 199 f.restore( config );
178 } 200 }
179 201
180 list.append( f ); 202 list.append( f );
181 } 203 }
182 204
183 if ( list.isEmpty()) { 205 if ( list.isEmpty()) {
184 QStringList cats = KABPrefs::instance()->mCustomCategories; 206 QStringList cats = KABPrefs::instance()->mCustomCategories;
185 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { 207 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
186 Filter filter; 208 Filter filter;
187 filter.mName = *it; 209 filter.mName = *it;
188 filter.mEnabled = true; 210 filter.mEnabled = true;
189 filter.mCategoryList = *it; 211 filter.mCategoryList = *it;
190 filter.mMatchRule = Matching; 212 filter.mMatchRule = Matching;
191 filter.mInternal = true; 213 filter.mInternal = true;
192 list.append( filter ); 214 list.append( filter );
193 } 215 }
194 } 216 }
195 return list; 217 return list;
196} 218}
197 219
198void Filter::setMatchRule( MatchRule rule ) 220void Filter::setMatchRule( MatchRule rule )
199{ 221{
200 mMatchRule = rule; 222 mMatchRule = rule;
201} 223}
202 224
203Filter::MatchRule Filter::matchRule() const 225Filter::MatchRule Filter::matchRule() const
204{ 226{
205 return mMatchRule; 227 return mMatchRule;
206} 228}
diff --git a/kaddressbook/filter.h b/kaddressbook/filter.h
index cf2c0a1..26870d7 100644
--- a/kaddressbook/filter.h
+++ b/kaddressbook/filter.h
@@ -1,153 +1,157 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef FILTER_H 24#ifndef FILTER_H
25#define FILTER_H 25#define FILTER_H
26 26
27#include <qstring.h> 27#include <qstring.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <qvaluelist.h> 29#include <qvaluelist.h>
30 30
31#include <kabc/addressee.h> 31#include <kabc/addressee.h>
32#include <kconfig.h> 32#include <kconfig.h>
33 33
34/** 34/**
35 Filter for AddressBook related objects (Addressees) 35 Filter for AddressBook related objects (Addressees)
36 36
37 @todo This class should be switched to use shared data. 37 @todo This class should be switched to use shared data.
38 */ 38 */
39class Filter 39class Filter
40{ 40{
41 public: 41 public:
42 enum { ShowPublic = 1, ShowPrivate = 2, ShowConfidential = 4};
43 void setCriteria(int c) { mCriteria = c ;}
44 int criteria() const { return mCriteria;}
42 typedef QValueList<Filter> List; 45 typedef QValueList<Filter> List;
43 46
44 enum MatchRule { Matching = 0, NotMatching = 1 }; 47 enum MatchRule { Matching = 0, NotMatching = 1 };
45 48
46 Filter(); 49 Filter();
47 Filter( const QString& name ); 50 Filter( const QString& name );
48 ~Filter(); 51 ~Filter();
49 52
50 /** 53 /**
51 Set the name of the filter. 54 Set the name of the filter.
52 */ 55 */
53 void setName( const QString &name ); 56 void setName( const QString &name );
54 57
55 /** 58 /**
56 @return The name of the filter. 59 @return The name of the filter.
57 */ 60 */
58 const QString &name() const; 61 const QString &name() const;
59 62
60 /** 63 /**
61 @return Whether the filter is an internal one. 64 @return Whether the filter is an internal one.
62 */ 65 */
63 bool isInternal() const; 66 bool isInternal() const;
64 67
65 /** 68 /**
66 Apply the filter to the addressee list. All addressees not passing 69 Apply the filter to the addressee list. All addressees not passing
67 the filter criterias will be removed from the list. 70 the filter criterias will be removed from the list.
68 71
69 If the MatchRule is NotMatch, then all the addressees matching the 72 If the MatchRule is NotMatch, then all the addressees matching the
70 filter will be removed from the list. 73 filter will be removed from the list.
71 */ 74 */
72 void apply( KABC::Addressee::List &addresseeList ); 75 void apply( KABC::Addressee::List &addresseeList );
73 76
74 /** 77 /**
75 Apply the filter to the addressee. 78 Apply the filter to the addressee.
76 79
77 @return True if the addressee passes the criteria, false otherwise. 80 @return True if the addressee passes the criteria, false otherwise.
78 The return values are opposite if the MatchRule is NotMatch. 81 The return values are opposite if the MatchRule is NotMatch.
79 */ 82 */
80 bool filterAddressee( const KABC::Addressee &a ); 83 bool filterAddressee( const KABC::Addressee &a );
81 84
82 /** 85 /**
83 Enable or disable the filter 86 Enable or disable the filter
84 */ 87 */
85 void setEnabled( bool on ); 88 void setEnabled( bool on );
86 89
87 /** 90 /**
88 @return True if this filter is enabled, false otherwise. 91 @return True if this filter is enabled, false otherwise.
89 */ 92 */
90 bool isEnabled() const; 93 bool isEnabled() const;
91 94
92 /** 95 /**
93 Set the list of categories. This list is used to filter addressees. 96 Set the list of categories. This list is used to filter addressees.
94 */ 97 */
95 void setCategories( const QStringList &list ); 98 void setCategories( const QStringList &list );
96 99
97 /** 100 /**
98 @return The list of categories. 101 @return The list of categories.
99 */ 102 */
100 const QStringList &categories() const; 103 const QStringList &categories() const;
101 104
102 /** 105 /**
103 Saves the filter to the config file. The group should already be set. 106 Saves the filter to the config file. The group should already be set.
104 */ 107 */
105 void save( KConfig *config ); 108 void save( KConfig *config );
106 109
107 /** 110 /**
108 Loads the filter from the config file. The group should already be set. 111 Loads the filter from the config file. The group should already be set.
109 */ 112 */
110 void restore( KConfig *config ); 113 void restore( KConfig *config );
111 114
112 /** 115 /**
113 Saves a list of filters to the config file. 116 Saves a list of filters to the config file.
114 117
115 @param config The config file to use 118 @param config The config file to use
116 @param baseGroup The base groupname to use. The number of filters 119 @param baseGroup The base groupname to use. The number of filters
117 will be written to this group, then a _1, _2, etc 120 will be written to this group, then a _1, _2, etc
118 will be append for each filter saved. 121 will be append for each filter saved.
119 @param list The list of filters to be saved. 122 @param list The list of filters to be saved.
120 */ 123 */
121 static void save( KConfig *config, QString baseGroup, Filter::List &list ); 124 static void save( KConfig *config, QString baseGroup, Filter::List &list );
122 125
123 /** 126 /**
124 Restores a list of filters from a config file. 127 Restores a list of filters from a config file.
125 128
126 @param config The config file to read from. 129 @param config The config file to read from.
127 @param baseGroup The base group name to be used to find the filters 130 @param baseGroup The base group name to be used to find the filters
128 131
129 @return The list of filters. 132 @return The list of filters.
130 */ 133 */
131 static Filter::List restore( KConfig *config, QString baseGroup ); 134 static Filter::List restore( KConfig *config, QString baseGroup );
132 135
133 /** 136 /**
134 Sets the filter rule. If the rule is Filter::Matching (default), 137 Sets the filter rule. If the rule is Filter::Matching (default),
135 then the filter will return true on items that match the filter. 138 then the filter will return true on items that match the filter.
136 If the rule is Filter::NotMatching, then the filter will return 139 If the rule is Filter::NotMatching, then the filter will return
137 true on items that do not match the filter. 140 true on items that do not match the filter.
138 */ 141 */
139 void setMatchRule( MatchRule rule ); 142 void setMatchRule( MatchRule rule );
140 143
141 /** @return The current match rule. 144 /** @return The current match rule.
142 */ 145 */
143 MatchRule matchRule() const; 146 MatchRule matchRule() const;
144 147
145 private: 148 private:
149 int mCriteria;
146 QString mName; 150 QString mName;
147 QStringList mCategoryList; 151 QStringList mCategoryList;
148 MatchRule mMatchRule; 152 MatchRule mMatchRule;
149 bool mEnabled; 153 bool mEnabled;
150 bool mInternal; 154 bool mInternal;
151}; 155};
152 156
153#endif 157#endif
diff --git a/kaddressbook/filtereditdialog.cpp b/kaddressbook/filtereditdialog.cpp
index 063585a..987f234 100644
--- a/kaddressbook/filtereditdialog.cpp
+++ b/kaddressbook/filtereditdialog.cpp
@@ -1,302 +1,316 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include <qbuttongroup.h> 31#include <qbuttongroup.h>
32#include <qhbox.h> 32#include <qhbox.h>
33#include <qlabel.h> 33#include <qlabel.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qpushbutton.h> 35#include <qpushbutton.h>
36#include <qradiobutton.h> 36#include <qradiobutton.h>
37#include <qcheckbox.h>
37#include <qregexp.h> 38#include <qregexp.h>
38#include <qstring.h> 39#include <qstring.h>
39#include <qtoolbutton.h> 40#include <qtoolbutton.h>
40#include <qtooltip.h> 41#include <qtooltip.h>
41#include <qwidget.h> 42#include <qwidget.h>
42 43
43#include <kapplication.h> 44#include <kapplication.h>
44#include <kbuttonbox.h> 45#include <kbuttonbox.h>
45#include <kdebug.h> 46#include <kdebug.h>
46#include <kiconloader.h> 47#include <kiconloader.h>
47#include <klineedit.h> 48#include <klineedit.h>
48#include <klistbox.h> 49#include <klistbox.h>
49#include <klistview.h> 50#include <klistview.h>
50#include <klocale.h> 51#include <klocale.h>
51#include <kglobal.h> 52#include <kglobal.h>
52 53
53#include "kabprefs.h" 54#include "kabprefs.h"
54#include "filtereditdialog.h" 55#include "filtereditdialog.h"
55 56
56FilterEditDialog::FilterEditDialog( QWidget *parent, const char *name ) 57FilterEditDialog::FilterEditDialog( QWidget *parent, const char *name )
57 : KDialogBase( Plain, i18n( "Edit Address Book Filter" ), 58 : KDialogBase( Plain, i18n( "Edit Address Book Filter" ),
58 Help | Ok | Cancel, Ok, parent, name, /*US false*/ true, true ) 59 Help | Ok | Cancel, Ok, parent, name, /*US false*/ true, true )
59{ 60{
60 initGUI(); 61 initGUI();
61 62
62 QStringList cats = KABPrefs::instance()->mCustomCategories; 63 QStringList cats = KABPrefs::instance()->mCustomCategories;
63 64
64 QStringList::Iterator iter; 65 QStringList::Iterator iter;
65 for ( iter = cats.begin(); iter != cats.end(); ++iter ) 66 for ( iter = cats.begin(); iter != cats.end(); ++iter )
66 mCategoriesView->insertItem( new QCheckListItem( mCategoriesView, (*iter), QCheckListItem::CheckBox ) ); 67 mCategoriesView->insertItem( new QCheckListItem( mCategoriesView, (*iter), QCheckListItem::CheckBox ) );
67 filterNameTextChanged( mNameEdit->text() ); 68 filterNameTextChanged( mNameEdit->text() );
68} 69}
69 70
70FilterEditDialog::~FilterEditDialog() 71FilterEditDialog::~FilterEditDialog()
71{ 72{
72} 73}
73 74
74void FilterEditDialog::setFilter( const Filter &filter ) 75void FilterEditDialog::setFilter( const Filter &filter )
75{ 76{
76 mNameEdit->setText( filter.name() ); 77 mNameEdit->setText( filter.name() );
77 78
78 QStringList categories = filter.categories(); 79 QStringList categories = filter.categories();
79 QListViewItem *item = mCategoriesView->firstChild(); 80 QListViewItem *item = mCategoriesView->firstChild();
80 while ( item != 0 ) { 81 while ( item != 0 ) {
81 if ( categories.contains( item->text( 0 ) ) ) { 82 if ( categories.contains( item->text( 0 ) ) ) {
82 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item ); 83 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item );
83 checkItem->setOn( true ); 84 checkItem->setOn( true );
84 } 85 }
85 86
86 item = item->nextSibling(); 87 item = item->nextSibling();
87 } 88 }
88 89
89 if ( filter.matchRule() == Filter::Matching ) 90 if ( filter.matchRule() == Filter::Matching )
90 mMatchRuleGroup->setButton( 0 ); 91 mMatchRuleGroup->setButton( 0 );
91 else 92 else
92 mMatchRuleGroup->setButton( 1 ); 93 mMatchRuleGroup->setButton( 1 );
94
95 int c = filter.criteria() ;
96 mPublic->setChecked(c &Filter::ShowPublic);
97 mPrivate->setChecked(c & Filter::ShowPrivate);
98 mConfidential->setChecked(c & Filter::ShowConfidential);
99
93} 100}
94 101
95Filter FilterEditDialog::filter() 102Filter FilterEditDialog::filter()
96{ 103{
97 Filter filter; 104 Filter filter;
98 105
99 filter.setName( mNameEdit->text() ); 106 filter.setName( mNameEdit->text() );
100 107
101 QStringList categories; 108 QStringList categories;
102 QListViewItem *item = mCategoriesView->firstChild(); 109 QListViewItem *item = mCategoriesView->firstChild();
103 while ( item != 0 ) { 110 while ( item != 0 ) {
104 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item ); 111 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item );
105 if ( checkItem->isOn() ) 112 if ( checkItem->isOn() )
106 categories.append( item->text( 0 ) ); 113 categories.append( item->text( 0 ) );
107 114
108 item = item->nextSibling(); 115 item = item->nextSibling();
109 } 116 }
110 filter.setCategories( categories ); 117 filter.setCategories( categories );
111 118
112 if ( mMatchRuleGroup->find( 0 )->isOn() ) 119 if ( mMatchRuleGroup->find( 0 )->isOn() )
113 filter.setMatchRule( Filter::Matching ); 120 filter.setMatchRule( Filter::Matching );
114 else 121 else
115 filter.setMatchRule( Filter::NotMatching ); 122 filter.setMatchRule( Filter::NotMatching );
116 123
124 int c = 0;
125 if (mPublic->isChecked()) c |= Filter::ShowPublic;
126 if (mPrivate->isChecked()) c |= Filter::ShowPrivate;
127 if (mConfidential->isChecked()) c |= Filter::ShowConfidential;
128 filter.setCriteria( c ) ;
129
117 return filter; 130 return filter;
118} 131}
119 132
120void FilterEditDialog::initGUI() 133void FilterEditDialog::initGUI()
121{ 134{
122#ifndef KAB_EMBEDDED 135#ifndef KAB_EMBEDDED
123 resize( 490, 300 ); 136 resize( 490, 300 );
124#else //KAB_EMBEDDED 137#else //KAB_EMBEDDED
125 resize( KMIN(KGlobal::getDesktopWidth()-10, 490), KMIN(KGlobal::getDesktopHeight()-50, 300)); 138 resize( KMIN(KGlobal::getDesktopWidth()-10, 490), KMIN(KGlobal::getDesktopHeight()-50, 300));
126#endif //KAB_EMBEDDED 139#endif //KAB_EMBEDDED
127 140
128 141
129 QWidget *page = plainPage(); 142 QWidget *page = plainPage();
130 QLabel *label; 143 QLabel *label;
131 144
132 QGridLayout *topLayout = new QGridLayout( page, 3, 2, 0, spacingHint() ); 145 QGridLayout *topLayout = new QGridLayout( page, 3, 2, 0, spacingHint() );
133 146
134 label = new QLabel( i18n( "Name" ), page ); 147 label = new QLabel( i18n( "Name" ), page );
135 mNameEdit = new KLineEdit( page ); 148 mNameEdit = new KLineEdit( page );
136 mNameEdit->setFocus(); 149 mNameEdit->setFocus();
137 topLayout->addWidget( label, 0, 0 ); 150 topLayout->addWidget( label, 0, 0 );
138 topLayout->addWidget( mNameEdit, 0, 1 ); 151 topLayout->addWidget( mNameEdit, 0, 1 );
139 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ), 152 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
140 SLOT( filterNameTextChanged( const QString&) ) ); 153 SLOT( filterNameTextChanged( const QString&) ) );
141 154
142 mCategoriesView = new KListView( page ); 155 mCategoriesView = new KListView( page );
143 mCategoriesView->addColumn( i18n( "Categories" ) ); 156 mCategoriesView->addColumn( i18n( "Categories" ) );
144 topLayout->addMultiCellWidget( mCategoriesView, 1, 1, 0, 1 ); 157 topLayout->addMultiCellWidget( mCategoriesView, 1, 1, 0, 1 );
145 158
146 mMatchRuleGroup = new QButtonGroup( page ); 159 mMatchRuleGroup = new QHButtonGroup( i18n( "Category rule" ), page );
147 mMatchRuleGroup->setExclusive( true ); 160 mMatchRuleGroup->setExclusive( true );
148 161 QRadioButton *radio = new QRadioButton( i18n( "Include categories" ), mMatchRuleGroup );
149 QBoxLayout *gbLayout = new QVBoxLayout( mMatchRuleGroup );
150 gbLayout->setSpacing( KDialog::spacingHint() );
151 gbLayout->setMargin( KDialog::marginHint() );
152
153 QRadioButton *radio = new QRadioButton( i18n( "Show only contacts matching\n the selected categories" ), mMatchRuleGroup );
154 radio->setChecked( true ); 162 radio->setChecked( true );
155 mMatchRuleGroup->insert( radio ); 163 //mMatchRuleGroup->insert( radio );
156 gbLayout->addWidget( radio ); 164 radio = new QRadioButton( i18n( "Exclude categories" ), mMatchRuleGroup );
165 //mMatchRuleGroup->insert( radio );
166 topLayout->addMultiCellWidget( mMatchRuleGroup, 2, 2, 0, 1 );
157 167
158 radio = new QRadioButton( i18n( "Show all contacts except those\n matching the selected categories" ), mMatchRuleGroup ); 168 QHButtonGroup * mMatchPPCGroup = new QHButtonGroup(i18n( "Include contacts, that are:" ), page );
159 mMatchRuleGroup->insert( radio ); 169 mPublic = new QCheckBox( i18n( "public" ), mMatchPPCGroup );
160 gbLayout->addWidget( radio ); 170 mPrivate = new QCheckBox( i18n( "private" ), mMatchPPCGroup );
171 mConfidential = new QCheckBox( i18n( "confidential" ), mMatchPPCGroup );
172 mPublic->setChecked( true );
173 mPrivate->setChecked( true );
174 mConfidential->setChecked( true );
175 topLayout->addMultiCellWidget( mMatchPPCGroup, 3, 3, 0, 1 );
161 176
162 topLayout->addMultiCellWidget( mMatchRuleGroup, 2, 2, 0, 1 );
163} 177}
164 178
165void FilterEditDialog::filterNameTextChanged( const QString &text ) 179void FilterEditDialog::filterNameTextChanged( const QString &text )
166{ 180{
167 enableButtonOK( !text.isEmpty() ); 181 enableButtonOK( !text.isEmpty() );
168} 182}
169 183
170void FilterEditDialog::slotHelp() 184void FilterEditDialog::slotHelp()
171{ 185{
172#ifndef KAB_EMBEDDED 186#ifndef KAB_EMBEDDED
173 kapp->invokeHelp( "using-filters" ); 187 kapp->invokeHelp( "using-filters" );
174#endif //KAB_EMBEDDED 188#endif //KAB_EMBEDDED
175} 189}
176 190
177FilterDialog::FilterDialog( QWidget *parent, const char *name ) 191FilterDialog::FilterDialog( QWidget *parent, const char *name )
178 : KDialogBase( Plain, i18n( "Edit Address Book Filters" ), 192 : KDialogBase( Plain, i18n( "Edit Address Book Filters" ),
179 Ok | Cancel, Ok, parent, name, /*US false*/true, true ) 193 Ok | Cancel, Ok, parent, name, /*US false*/true, true )
180{ 194{
181 initGUI(); 195 initGUI();
182} 196}
183 197
184FilterDialog::~FilterDialog() 198FilterDialog::~FilterDialog()
185{ 199{
186} 200}
187 201
188void FilterDialog::setFilters( const Filter::List &list ) 202void FilterDialog::setFilters( const Filter::List &list )
189{ 203{
190 mFilterList.clear(); 204 mFilterList.clear();
191 mInternalFilterList.clear(); 205 mInternalFilterList.clear();
192 206
193 Filter::List::ConstIterator it; 207 Filter::List::ConstIterator it;
194 for ( it = list.begin(); it != list.end(); ++it ) { 208 for ( it = list.begin(); it != list.end(); ++it ) {
195 if ( (*it).isInternal() ) 209 if ( (*it).isInternal() )
196 mInternalFilterList.append( *it ); 210 mInternalFilterList.append( *it );
197 else 211 else
198 mFilterList.append( *it ); 212 mFilterList.append( *it );
199 } 213 }
200 214
201 refresh(); 215 refresh();
202} 216}
203 217
204Filter::List FilterDialog::filters() const 218Filter::List FilterDialog::filters() const
205{ 219{
206 Filter::List list = mFilterList + mInternalFilterList; 220 Filter::List list = mFilterList + mInternalFilterList;
207 return list; 221 return list;
208} 222}
209 223
210void FilterDialog::add() 224void FilterDialog::add()
211{ 225{
212#ifndef KAB_EMBEDDED 226#ifndef KAB_EMBEDDED
213 FilterEditDialog dlg( this ); 227 FilterEditDialog dlg( this );
214#else //KAB_EMBEDDED 228#else //KAB_EMBEDDED
215 FilterEditDialog dlg( this->parentWidget() ); 229 FilterEditDialog dlg( this->parentWidget() );
216#endif //KAB_EMBEDDED 230#endif //KAB_EMBEDDED
217 231
218 if ( dlg.exec() ) 232 if ( dlg.exec() )
219 mFilterList.append( dlg.filter() ); 233 mFilterList.append( dlg.filter() );
220 234
221 refresh(); 235 refresh();
222 236
223 mFilterListBox->setCurrentItem( mFilterListBox->count() - 1 ); 237 mFilterListBox->setCurrentItem( mFilterListBox->count() - 1 );
224} 238}
225 239
226void FilterDialog::edit() 240void FilterDialog::edit()
227{ 241{
228 FilterEditDialog dlg( this ); 242 FilterEditDialog dlg( this );
229 243
230 uint pos = mFilterListBox->currentItem(); 244 uint pos = mFilterListBox->currentItem();
231 245
232 dlg.setFilter( mFilterList[ pos ] ); 246 dlg.setFilter( mFilterList[ pos ] );
233 247
234 if ( dlg.exec() ) { 248 if ( dlg.exec() ) {
235 mFilterList.remove( mFilterList.at( pos ) ); 249 mFilterList.remove( mFilterList.at( pos ) );
236 mFilterList.insert( mFilterList.at( pos ), dlg.filter() ); 250 mFilterList.insert( mFilterList.at( pos ), dlg.filter() );
237 } 251 }
238 252
239 refresh(); 253 refresh();
240 254
241 mFilterListBox->setCurrentItem( pos ); 255 mFilterListBox->setCurrentItem( pos );
242} 256}
243 257
244void FilterDialog::remove() 258void FilterDialog::remove()
245{ 259{
246 mFilterList.remove( mFilterList.at( mFilterListBox->currentItem() ) ); 260 mFilterList.remove( mFilterList.at( mFilterListBox->currentItem() ) );
247 261
248 selectionChanged( 0 ); 262 selectionChanged( 0 );
249 263
250 refresh(); 264 refresh();
251} 265}
252 266
253void FilterDialog::refresh() 267void FilterDialog::refresh()
254{ 268{
255 mFilterListBox->clear(); 269 mFilterListBox->clear();
256 270
257 Filter::List::Iterator iter; 271 Filter::List::Iterator iter;
258 for ( iter = mFilterList.begin(); iter != mFilterList.end(); ++iter ) 272 for ( iter = mFilterList.begin(); iter != mFilterList.end(); ++iter )
259 mFilterListBox->insertItem( (*iter).name() ); 273 mFilterListBox->insertItem( (*iter).name() );
260} 274}
261 275
262void FilterDialog::selectionChanged( QListBoxItem *item ) 276void FilterDialog::selectionChanged( QListBoxItem *item )
263{ 277{
264 bool state = ( item != 0 ); 278 bool state = ( item != 0 );
265 279
266 mEditButton->setEnabled( state ); 280 mEditButton->setEnabled( state );
267 mRemoveButton->setEnabled( state ); 281 mRemoveButton->setEnabled( state );
268} 282}
269 283
270void FilterDialog::initGUI() 284void FilterDialog::initGUI()
271{ 285{
272#ifndef KAB_EMBEDDED 286#ifndef KAB_EMBEDDED
273 resize( 330, 200 ); 287 resize( 330, 200 );
274#else //KAB_EMBEDDED 288#else //KAB_EMBEDDED
275 resize( KMIN(KGlobal::getDesktopWidth()-10, 330), KMIN(KGlobal::getDesktopHeight()-50, 200)); 289 resize( KMIN(KGlobal::getDesktopWidth()-10, 330), KMIN(KGlobal::getDesktopHeight()-50, 200));
276#endif //KAB_EMBEDDED 290#endif //KAB_EMBEDDED
277 291
278 QWidget *page = plainPage(); 292 QWidget *page = plainPage();
279 293
280 QGridLayout *topLayout = new QGridLayout( page, 1, 2, 0, spacingHint() ); 294 QGridLayout *topLayout = new QGridLayout( page, 1, 2, 0, spacingHint() );
281 295
282 mFilterListBox = new KListBox( page ); 296 mFilterListBox = new KListBox( page );
283 topLayout->addWidget( mFilterListBox, 0, 0 ); 297 topLayout->addWidget( mFilterListBox, 0, 0 );
284 connect( mFilterListBox, SIGNAL( selectionChanged( QListBoxItem * ) ), 298 connect( mFilterListBox, SIGNAL( selectionChanged( QListBoxItem * ) ),
285 SLOT( selectionChanged( QListBoxItem * ) ) ); 299 SLOT( selectionChanged( QListBoxItem * ) ) );
286 connect( mFilterListBox, SIGNAL( doubleClicked ( QListBoxItem * ) ), 300 connect( mFilterListBox, SIGNAL( doubleClicked ( QListBoxItem * ) ),
287 SLOT( edit() ) ); 301 SLOT( edit() ) );
288 302
289 KButtonBox *buttonBox = new KButtonBox( page, Vertical ); 303 KButtonBox *buttonBox = new KButtonBox( page, Vertical );
290 buttonBox->addButton( i18n( "&Add..." ), this, SLOT( add() ) ); 304 buttonBox->addButton( i18n( "&Add..." ), this, SLOT( add() ) );
291 mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( edit() ) ); 305 mEditButton = buttonBox->addButton( i18n( "&Edit..." ), this, SLOT( edit() ) );
292 mEditButton->setEnabled( false ); 306 mEditButton->setEnabled( false );
293 mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( remove() ) ); 307 mRemoveButton = buttonBox->addButton( i18n( "&Remove" ), this, SLOT( remove() ) );
294 mRemoveButton->setEnabled( false ); 308 mRemoveButton->setEnabled( false );
295 309
296 buttonBox->layout(); 310 buttonBox->layout();
297 topLayout->addWidget( buttonBox, 0, 1 ); 311 topLayout->addWidget( buttonBox, 0, 1 );
298} 312}
299 313
300#ifndef KAB_EMBEDDED 314#ifndef KAB_EMBEDDED
301#include "filtereditdialog.moc" 315#include "filtereditdialog.moc"
302#endif //KAB_EMBEDDED 316#endif //KAB_EMBEDDED
diff --git a/kaddressbook/filtereditdialog.h b/kaddressbook/filtereditdialog.h
index 4dd75e4..5a8bad1 100644
--- a/kaddressbook/filtereditdialog.h
+++ b/kaddressbook/filtereditdialog.h
@@ -1,104 +1,109 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#ifndef FILTEREDITDIALOG_H 31#ifndef FILTEREDITDIALOG_H
32#define FILTEREDITDIALOG_H 32#define FILTEREDITDIALOG_H
33 33
34class QButtonGroup; 34class QButtonGroup;
35class QString; 35class QString;
36class QToolButton; 36class QToolButton;
37class QWidget; 37class QWidget;
38class QListBoxItem; 38class QListBoxItem;
39class QCheckBox;
39 40
40class KLineEdit; 41class KLineEdit;
41class KListBox; 42class KListBox;
42class KListView; 43class KListView;
43 44
44#include <kdialogbase.h> 45#include <kdialogbase.h>
46#include <qhbuttongroup.h>
45 47
46#include "filter.h" 48#include "filter.h"
47 49
48class FilterDialog : public KDialogBase 50class FilterDialog : public KDialogBase
49{ 51{
50 Q_OBJECT 52 Q_OBJECT
51 53
52 public: 54 public:
53 FilterDialog( QWidget *parent, const char *name = 0 ); 55 FilterDialog( QWidget *parent, const char *name = 0 );
54 ~FilterDialog(); 56 ~FilterDialog();
55 57
56 void setFilters( const Filter::List &list ); 58 void setFilters( const Filter::List &list );
57 Filter::List filters() const; 59 Filter::List filters() const;
58 60
59 protected slots: 61 protected slots:
60 void add(); 62 void add();
61 void edit(); 63 void edit();
62 void remove(); 64 void remove();
63 void selectionChanged( QListBoxItem* ); 65 void selectionChanged( QListBoxItem* );
64 66
65 private: 67 private:
66 void initGUI(); 68 void initGUI();
67 void refresh(); 69 void refresh();
68 70
69 Filter::List mFilterList; 71 Filter::List mFilterList;
70 Filter::List mInternalFilterList; 72 Filter::List mInternalFilterList;
71 73
72 KListBox *mFilterListBox; 74 KListBox *mFilterListBox;
73 QPushButton *mAddButton; 75 QPushButton *mAddButton;
74 QPushButton *mEditButton; 76 QPushButton *mEditButton;
75 QPushButton *mRemoveButton; 77 QPushButton *mRemoveButton;
76}; 78};
77 79
78class FilterEditDialog : public KDialogBase 80class FilterEditDialog : public KDialogBase
79{ 81{
80 Q_OBJECT 82 Q_OBJECT
81 public: 83 public:
82 FilterEditDialog( QWidget *parent, const char *name = 0 ); 84 FilterEditDialog( QWidget *parent, const char *name = 0 );
83 ~FilterEditDialog(); 85 ~FilterEditDialog();
84 86
85 void setFilter( const Filter &filter ); 87 void setFilter( const Filter &filter );
86 Filter filter(); 88 Filter filter();
87 89
88 protected slots: 90 protected slots:
89 void filterNameTextChanged( const QString& ); 91 void filterNameTextChanged( const QString& );
90 void slotHelp(); 92 void slotHelp();
91 93
92 private: 94 private:
93 void initGUI(); 95 void initGUI();
94 96
95 Filter mFilter; 97 Filter mFilter;
96 98
97 KLineEdit *mNameEdit; 99 KLineEdit *mNameEdit;
98 KListView *mCategoriesView; 100 KListView *mCategoriesView;
99 QButtonGroup *mMatchRuleGroup; 101 QHButtonGroup *mMatchRuleGroup;
102 QCheckBox *mPrivate;
103 QCheckBox *mPublic;
104 QCheckBox *mConfidential;
100 QPushButton *mEditButton; 105 QPushButton *mEditButton;
101 QPushButton *mRemoveButton; 106 QPushButton *mRemoveButton;
102}; 107};
103 108
104#endif 109#endif