author | zautrix <zautrix> | 2005-01-16 23:41:18 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-01-16 23:41:18 (UTC) |
commit | 33c04477896c52e9cfea2a29facd959f82cbf17a (patch) (unidiff) | |
tree | d7e5a882604b3bfb64087738dd61d702d2d96a60 | |
parent | 507b362d42d5eed6277ad17422b6ba61acca636e (diff) | |
download | kdepimpi-33c04477896c52e9cfea2a29facd959f82cbf17a.zip kdepimpi-33c04477896c52e9cfea2a29facd959f82cbf17a.tar.gz kdepimpi-33c04477896c52e9cfea2a29facd959f82cbf17a.tar.bz2 |
several fixes
-rw-r--r-- | bin/kdepim/WhatsNew.txt | 3 | ||||
-rw-r--r-- | kabc/addresseedialog.cpp | 2 | ||||
-rw-r--r-- | kaddressbook/addresseeeditorwidget.cpp | 12 | ||||
-rw-r--r-- | kaddressbook/imagewidget.cpp | 28 | ||||
-rw-r--r-- | kaddressbook/imagewidget.h | 2 |
5 files changed, 40 insertions, 7 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index d8f8323..e53127c 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,284 +1,287 @@ | |||
1 | Info about the changes in new versions of KDE-Pim/Pi | 1 | Info about the changes in new versions of KDE-Pim/Pi |
2 | 2 | ||
3 | ********** VERSION 1.9.18 ************ | 3 | ********** VERSION 1.9.18 ************ |
4 | 4 | ||
5 | FYI: The VERSION 1.9.17 was a testing release only. | 5 | FYI: The VERSION 1.9.17 was a testing release only. |
6 | Please read the changelog of VERSION 1.9.17 as well. | 6 | Please read the changelog of VERSION 1.9.17 as well. |
7 | 7 | ||
8 | Cleaned up the syncing config dialog. | 8 | Cleaned up the syncing config dialog. |
9 | Added sync config options for date range for events. | 9 | Added sync config options for date range for events. |
10 | Added sync config options for filters on incoming data. | 10 | Added sync config options for filters on incoming data. |
11 | Added sync config options for filters on outgoing data. | 11 | Added sync config options for filters on outgoing data. |
12 | Please read the updated SyncHowTo about the new filter settings. | 12 | Please read the updated SyncHowTo about the new filter settings. |
13 | These filter settings make it now possible to sync with shared | 13 | These filter settings make it now possible to sync with shared |
14 | calendars without writing back private or confidential data | 14 | calendars without writing back private or confidential data |
15 | (via the outgoing filters). | 15 | (via the outgoing filters). |
16 | To sync only with particular parts of a shared calendar, | 16 | To sync only with particular parts of a shared calendar, |
17 | the incoming filter settings can be used. | 17 | the incoming filter settings can be used. |
18 | An example can be found in the SyncHowTo. | 18 | An example can be found in the SyncHowTo. |
19 | 19 | ||
20 | KO/Pi: | 20 | KO/Pi: |
21 | The timeedit input has a pulldown list for times. | 21 | The timeedit input has a pulldown list for times. |
22 | If opened, this pulldown list should now has the right time highlighted. | 22 | If opened, this pulldown list should now has the right time highlighted. |
23 | Added the possibility to exclude events/todos/journals in a filter. | 23 | Added the possibility to exclude events/todos/journals in a filter. |
24 | You should exclude journals, if you do not want them to sync with a public calendar. | 24 | You should exclude journals, if you do not want them to sync with a public calendar. |
25 | 25 | ||
26 | KA/Pi: | 26 | KA/Pi: |
27 | Added the possibility to in/exclude public/private/confidential contacts to a filter. | 27 | Added the possibility to in/exclude public/private/confidential contacts to a filter. |
28 | If 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 ... | 28 | If 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 ... |
29 | Added printing of card view and details view on desktop. | ||
30 | Printing of list view is not working... | ||
31 | Added button for removing pictures in contact editor. | ||
29 | 32 | ||
30 | 33 | ||
31 | ********** VERSION 1.9.17 ************ | 34 | ********** VERSION 1.9.17 ************ |
32 | 35 | ||
33 | KO/Pi: | 36 | KO/Pi: |
34 | Fixed that tooltips were not updated after moving an item in agenda view. | 37 | Fixed that tooltips were not updated after moving an item in agenda view. |
35 | Fixed a bug in sorting start date for recurring events in list view. | 38 | Fixed a bug in sorting start date for recurring events in list view. |
36 | Changed the left button in todo viewer from "Agenda" to "Set completed". | 39 | Changed the left button in todo viewer from "Agenda" to "Set completed". |
37 | This 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. | 40 | This 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. |
38 | Added more info in the todo viewer: Startdate, parent/sub todos. | 41 | Added more info in the todo viewer: Startdate, parent/sub todos. |
39 | 42 | ||
40 | 43 | ||
41 | KA/Pi: | 44 | KA/Pi: |
42 | All fields search does now actually search all the (possible) fields, | 45 | All fields search does now actually search all the (possible) fields, |
43 | not only those listed in the contact list. | 46 | not only those listed in the contact list. |
44 | Made is possible to inline a picture in a vcard on the Z. | 47 | Made is possible to inline a picture in a vcard on the Z. |
45 | This was only possible on the desktop, now is it possible on the Z as well. | 48 | This was only possible on the desktop, now is it possible on the Z as well. |
46 | Fixed of missing save settings after filter configuration. | 49 | Fixed of missing save settings after filter configuration. |
47 | Made saving of addressbook much faster. | 50 | Made saving of addressbook much faster. |
48 | Fixed extension widget layout problem. | 51 | Fixed extension widget layout problem. |
49 | Fixed saving of default formatted name settings. | 52 | Fixed saving of default formatted name settings. |
50 | Fixed formatted name handling in edit dialog. | 53 | Fixed formatted name handling in edit dialog. |
51 | Added an option for changing formatted names of many contacts | 54 | Added an option for changing formatted names of many contacts |
52 | (menu: File - Change - Set formatted name). | 55 | (menu: File - Change - Set formatted name). |
53 | 56 | ||
54 | QWhatsThis was not working on the Z ( only black rectangle was shown). | 57 | QWhatsThis was not working on the Z ( only black rectangle was shown). |
55 | This is Fixed. | 58 | This is Fixed. |
56 | 59 | ||
57 | KDE-Sync: | 60 | KDE-Sync: |
58 | Now readonly KDE resources are synced as well. | 61 | Now readonly KDE resources are synced as well. |
59 | (They are not changed in KDE itself, of course). | 62 | (They are not changed in KDE itself, of course). |
60 | 63 | ||
61 | 64 | ||
62 | 65 | ||
63 | ********** VERSION 1.9.16 ************ | 66 | ********** VERSION 1.9.16 ************ |
64 | 67 | ||
65 | KO/Pi: | 68 | KO/Pi: |
66 | Fixed search dialog size on Z 6000 (480x640 display). | 69 | Fixed search dialog size on Z 6000 (480x640 display). |
67 | Added setting to hide/show time in agenda items. | 70 | Added setting to hide/show time in agenda items. |
68 | Added setting to hide not running todos in todo view. | 71 | Added setting to hide not running todos in todo view. |
69 | Added columns for start date/time in todo view. | 72 | Added columns for start date/time in todo view. |
70 | Replaced the solid half-hour lines in agenda view by dot lines. | 73 | Replaced the solid half-hour lines in agenda view by dot lines. |
71 | Added possibility of printing the What's Next View on the desktop | 74 | Added possibility of printing the What's Next View on the desktop |
72 | (i.e. Windows and Linux). | 75 | (i.e. Windows and Linux). |
73 | Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. | 76 | Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. |
74 | Added tooltips in month view.(Tooltips only available on desktop) | 77 | Added tooltips in month view.(Tooltips only available on desktop) |
75 | 78 | ||
76 | Fixed a strange problem in KO/Pi alarm applet. | 79 | Fixed a strange problem in KO/Pi alarm applet. |
77 | Did not find the actual problem, | 80 | Did not find the actual problem, |
78 | such that now Qtopia reboots again if deinstalling the alarm applet. | 81 | such that now Qtopia reboots again if deinstalling the alarm applet. |
79 | But the alarm applet should work again. | 82 | But the alarm applet should work again. |
80 | 83 | ||
81 | KA/Pi: | 84 | KA/Pi: |
82 | Fixed the problem, that internal pictures were not saved. | 85 | Fixed the problem, that internal pictures were not saved. |
83 | 86 | ||
84 | Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. | 87 | Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. |
85 | 88 | ||
86 | Fixed some minor problems. (Like word wrap in help text windows). | 89 | Fixed some minor problems. (Like word wrap in help text windows). |
87 | 90 | ||
88 | Fixed a compiling problem in microkde/kresources. | 91 | Fixed a compiling problem in microkde/kresources. |
89 | 92 | ||
90 | KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. | 93 | KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. |
91 | This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) | 94 | This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) |
92 | such that now syncing KO/Pi with Sharp DTM should work on the | 95 | such that now syncing KO/Pi with Sharp DTM should work on the |
93 | Zaurus C 3000 model. | 96 | Zaurus C 3000 model. |
94 | 97 | ||
95 | ********** VERSION 1.9.15 ************ | 98 | ********** VERSION 1.9.15 ************ |
96 | 99 | ||
97 | Usebilty enhancements in KO/Pi: | 100 | Usebilty enhancements in KO/Pi: |
98 | When clicking on the date in a month view cell, the day view is shown. | 101 | When clicking on the date in a month view cell, the day view is shown. |
99 | Old behaviour was, that the "new event" dialog popped up. | 102 | Old behaviour was, that the "new event" dialog popped up. |
100 | 103 | ||
101 | Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). | 104 | Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). |
102 | That means, you can restore the latest | 105 | That means, you can restore the latest |
103 | event/todo/journal you have deleted. | 106 | event/todo/journal you have deleted. |
104 | A journal is deleted, if you clear all the text of the journal. | 107 | A journal is deleted, if you clear all the text of the journal. |
105 | 108 | ||
106 | Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. | 109 | Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. |
107 | 110 | ||
108 | KA/Pi starting in 480x640 resolution: | 111 | KA/Pi starting in 480x640 resolution: |
109 | Hide the filter action in toolbar | 112 | Hide the filter action in toolbar |
110 | and added icons for undo/delete/redo in toolbar. | 113 | and added icons for undo/delete/redo in toolbar. |
111 | 114 | ||
112 | Change in OM/Pi ViewMail dialog: | 115 | Change in OM/Pi ViewMail dialog: |
113 | When clicking on the "delete" icon the mail is deleted after confirmation as usual. | 116 | When clicking on the "delete" icon the mail is deleted after confirmation as usual. |
114 | But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). | 117 | But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). |
115 | 118 | ||
116 | Fixed a crash when deleting mail-accounts in OM/Pi. | 119 | Fixed a crash when deleting mail-accounts in OM/Pi. |
117 | 120 | ||
118 | 121 | ||
119 | ********** VERSION 1.9.14 ************ | 122 | ********** VERSION 1.9.14 ************ |
120 | 123 | ||
121 | Fixed some problems with the dialog sizes when switching | 124 | Fixed some problems with the dialog sizes when switching |
122 | portrait/landscape mode on 640x480 PDA display. | 125 | portrait/landscape mode on 640x480 PDA display. |
123 | 126 | ||
124 | Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. | 127 | Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. |
125 | 128 | ||
126 | Fixed an ugly bug in KOpieMail: | 129 | Fixed an ugly bug in KOpieMail: |
127 | KOpieMail was not able to write files (mails) to MSDOS file system, | 130 | KOpieMail was not able to write files (mails) to MSDOS file system, |
128 | like on an usual preformatted SD card. That should work now. | 131 | like on an usual preformatted SD card. That should work now. |
129 | To save your mail data on the Sd card do the following: | 132 | To save your mail data on the Sd card do the following: |
130 | Create a dir on the SD card: | 133 | Create a dir on the SD card: |
131 | mkdir /mnt/card/localmail | 134 | mkdir /mnt/card/localmail |
132 | Go to your home dir: | 135 | Go to your home dir: |
133 | cd | 136 | cd |
134 | Go to kopiemail data storage dir: | 137 | Go to kopiemail data storage dir: |
135 | cd kdepim/apps/kopiemail | 138 | cd kdepim/apps/kopiemail |
136 | Create a symlink to the SD card: | 139 | Create a symlink to the SD card: |
137 | ls -s /mnt/card/localmail | 140 | ls -s /mnt/card/localmail |
138 | Now KOpieMail will store all mails on the SD card. | 141 | Now KOpieMail will store all mails on the SD card. |
139 | 142 | ||
140 | KO/Pi Monthview: | 143 | KO/Pi Monthview: |
141 | Now "Go to Today" selects the current month from day 1-end, | 144 | Now "Go to Today" selects the current month from day 1-end, |
142 | not the current date + some days. | 145 | not the current date + some days. |
143 | I.e. "Go to Today" shows now always | 146 | I.e. "Go to Today" shows now always |
144 | the current month with first day of month in the first row. | 147 | the current month with first day of month in the first row. |
145 | 148 | ||
146 | Added missing German translation. | 149 | Added missing German translation. |
147 | 150 | ||
148 | Fixed icons of executeable on Wintendo. | 151 | Fixed icons of executeable on Wintendo. |
149 | 152 | ||
150 | Added a "Show next Mail" button to the OM/Pi | 153 | Added a "Show next Mail" button to the OM/Pi |
151 | mail viewer such that the mail below the current mail | 154 | mail viewer such that the mail below the current mail |
152 | in the mail list view of the current folder | 155 | in the mail list view of the current folder |
153 | can be read with a single click. | 156 | can be read with a single click. |
154 | 157 | ||
155 | 158 | ||
156 | ********** VERSION 1.9.13 ************ | 159 | ********** VERSION 1.9.13 ************ |
157 | 160 | ||
158 | Fixed nasty PwM/Pi file reading bug, when | 161 | Fixed nasty PwM/Pi file reading bug, when |
159 | the used hash algo of file is different then the global | 162 | the used hash algo of file is different then the global |
160 | hash algo. | 163 | hash algo. |
161 | 164 | ||
162 | Added KA/Pi support for opie mailit mailapplication. | 165 | Added KA/Pi support for opie mailit mailapplication. |
163 | 166 | ||
164 | Fixed some bugs in OM/Pi. | 167 | Fixed some bugs in OM/Pi. |
165 | Now character conversion tables are available for the Zaurus | 168 | Now character conversion tables are available for the Zaurus |
166 | to make OM/Pi working properly. | 169 | to make OM/Pi working properly. |
167 | To get the character conversion in OM/Pi working, please download | 170 | To get the character conversion in OM/Pi working, please download |
168 | at the sourceforge project site the package | 171 | at the sourceforge project site the package |
169 | sr-character-conversion_SharpROM_arm.ipk.zip | 172 | sr-character-conversion_SharpROM_arm.ipk.zip |
170 | (or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) | 173 | (or oz-character-conversion_OZ-gcc3xx_arm.ipk.zip for OZ roms) |
171 | from the section "general files for KDE/Pim" | 174 | from the section "general files for KDE/Pim" |
172 | Instructions how to install this package are in a ReadMe in this file. | 175 | Instructions how to install this package are in a ReadMe in this file. |
173 | 176 | ||
174 | 177 | ||
175 | Fixed the orientation change problem in KA/Pi when switching | 178 | Fixed the orientation change problem in KA/Pi when switching |
176 | portrait/landscape mode. | 179 | portrait/landscape mode. |
177 | 180 | ||
178 | French translation available for KA/Pi and OM/Pi. | 181 | French translation available for KA/Pi and OM/Pi. |
179 | 182 | ||
180 | Fixed some problems with categories in KO/Pi in DTM sync. | 183 | Fixed some problems with categories in KO/Pi in DTM sync. |
181 | 184 | ||
182 | Added selection dialog for export to phone in KA/Pi. | 185 | Added selection dialog for export to phone in KA/Pi. |
183 | 186 | ||
184 | If in KO/Pi is an attendee selected to add to a meeting and this | 187 | If in KO/Pi is an attendee selected to add to a meeting and this |
185 | attendee is already in the list of attendees, this person is not added | 188 | attendee is already in the list of attendees, this person is not added |
186 | again. | 189 | again. |
187 | 190 | ||
188 | Some menu cleanup in KA/Pi. | 191 | Some menu cleanup in KA/Pi. |
189 | 192 | ||
190 | ********** VERSION 1.9.12 ************ | 193 | ********** VERSION 1.9.12 ************ |
191 | 194 | ||
192 | Fix for the bug in KO/Pi What's Next view of version 1.9.11. | 195 | Fix for the bug in KO/Pi What's Next view of version 1.9.11. |
193 | 196 | ||
194 | Bugfix: Licence file is now shown again. | 197 | Bugfix: Licence file is now shown again. |
195 | 198 | ||
196 | OM/Pi now supports Unicode (utf8 charset). | 199 | OM/Pi now supports Unicode (utf8 charset). |
197 | Fixed some bugs in OM/Pi. | 200 | Fixed some bugs in OM/Pi. |
198 | 201 | ||
199 | KA/Pi has more German translation. | 202 | KA/Pi has more German translation. |
200 | 203 | ||
201 | 204 | ||
202 | ********** VERSION 1.9.11 ************ | 205 | ********** VERSION 1.9.11 ************ |
203 | 206 | ||
204 | Fixed several problems in PWM/Pi, like | 207 | Fixed several problems in PWM/Pi, like |
205 | asking the user, if unsaved changed are pending | 208 | asking the user, if unsaved changed are pending |
206 | when closing the app. | 209 | when closing the app. |
207 | And PwM/Pi handles now different texts for the | 210 | And PwM/Pi handles now different texts for the |
208 | fields Description, Username, Password, configurable per category. | 211 | fields Description, Username, Password, configurable per category. |
209 | 212 | ||
210 | Fixed a crash in KO/Pi , when importing/loading vcs files | 213 | Fixed a crash in KO/Pi , when importing/loading vcs files |
211 | which have an entry with an attendee with state: | 214 | which have an entry with an attendee with state: |
212 | NEEDS ACTION | 215 | NEEDS ACTION |
213 | 216 | ||
214 | Fixed some problems in the German translation of OM/Pi, | 217 | Fixed some problems in the German translation of OM/Pi, |
215 | which makes some dialogs not fitting on the screen | 218 | which makes some dialogs not fitting on the screen |
216 | of the Z 5500. | 219 | of the Z 5500. |
217 | 220 | ||
218 | Fixed Qtopia crash, when disabling/deinstalling | 221 | Fixed Qtopia crash, when disabling/deinstalling |
219 | KO/Pi alarm applet. | 222 | KO/Pi alarm applet. |
220 | 223 | ||
221 | Implemented direct KDE<->KA/Pi sync for KA/Pi running | 224 | Implemented direct KDE<->KA/Pi sync for KA/Pi running |
222 | on Linux desktop. | 225 | on Linux desktop. |
223 | 226 | ||
224 | Added feature "remove sync info" to sync menu. | 227 | Added feature "remove sync info" to sync menu. |
225 | 228 | ||
226 | Tweaked the KO/Pi What's next view a bit, added | 229 | Tweaked the KO/Pi What's next view a bit, added |
227 | setting to hide events that are done. | 230 | setting to hide events that are done. |
228 | 231 | ||
229 | Disabled "beam receive enabled" on startup to | 232 | Disabled "beam receive enabled" on startup to |
230 | avoid problems if Fastload is enabled. | 233 | avoid problems if Fastload is enabled. |
231 | Please set "beam receive enabled", | 234 | Please set "beam receive enabled", |
232 | if you want to receive data via IR. | 235 | if you want to receive data via IR. |
233 | 236 | ||
234 | Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running | 237 | Fixed bug in direct KDE<->KO/Pi sync for KO/Pi running |
235 | on Linux desktop. | 238 | on Linux desktop. |
236 | 239 | ||
237 | Made in KA/Pi scrolling possible, if details view is selected. | 240 | Made in KA/Pi scrolling possible, if details view is selected. |
238 | (The keyboard focus is set automatically to the search line) | 241 | (The keyboard focus is set automatically to the search line) |
239 | 242 | ||
240 | Fixed a bug in DMT sync, that a new entry in DTM was added | 243 | Fixed a bug in DMT sync, that a new entry in DTM was added |
241 | on every sync to Kx/Pi. | 244 | on every sync to Kx/Pi. |
242 | 245 | ||
243 | Fixed missing writing of KA/Pi categories to DMT entries when syncing. | 246 | Fixed missing writing of KA/Pi categories to DMT entries when syncing. |
244 | 247 | ||
245 | Fixed a bug in DMT sync with todos created in KO/Pi containing | 248 | Fixed a bug in DMT sync with todos created in KO/Pi containing |
246 | non-latin1 characters. | 249 | non-latin1 characters. |
247 | 250 | ||
248 | Rearranged package contents of Sharp-ipks and made all | 251 | Rearranged package contents of Sharp-ipks and made all |
249 | packages installable on SD again. | 252 | packages installable on SD again. |
250 | 253 | ||
251 | Fixed the writing of addressbook data in DTM sync. | 254 | Fixed the writing of addressbook data in DTM sync. |
252 | Empty fields in KA/Pi were not removed. | 255 | Empty fields in KA/Pi were not removed. |
253 | 256 | ||
254 | Added better category handling in KA/Pi: | 257 | Added better category handling in KA/Pi: |
255 | Added item | 258 | Added item |
256 | Edit Categories and | 259 | Edit Categories and |
257 | Manage new categories | 260 | Manage new categories |
258 | to the settings menu. | 261 | to the settings menu. |
259 | Possible to configure a view to display categories. | 262 | Possible to configure a view to display categories. |
260 | 263 | ||
261 | Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. | 264 | Added detailed "KDE Sync Howto" and "Multi Sync Howto" to Help menu. |
262 | 265 | ||
263 | Fixed displaying of "free" days and time in KO Monthview and Agendaview. | 266 | Fixed displaying of "free" days and time in KO Monthview and Agendaview. |
264 | 267 | ||
265 | ... and many other bugfixes. | 268 | ... and many other bugfixes. |
266 | 269 | ||
267 | ********** VERSION 1.9.10 ************ | 270 | ********** VERSION 1.9.10 ************ |
268 | 271 | ||
269 | Many internal small bugfixes. | 272 | Many internal small bugfixes. |
270 | And fix of the "big" bug in KO/Pi, | 273 | And fix of the "big" bug in KO/Pi, |
271 | that after Syncing the appointments had an offset by several hours. | 274 | that after Syncing the appointments had an offset by several hours. |
272 | That was a problem with the internal timezone setting, | 275 | That was a problem with the internal timezone setting, |
273 | introduced by the changed timezone configuration settings. | 276 | introduced by the changed timezone configuration settings. |
274 | 277 | ||
275 | German translation for OM/Pi is now available. | 278 | German translation for OM/Pi is now available. |
276 | 279 | ||
277 | 280 | ||
278 | ********** VERSION 1.9.9 ************ | 281 | ********** VERSION 1.9.9 ************ |
279 | 282 | ||
280 | KDE-Pim/Pi has a new Member! | 283 | KDE-Pim/Pi has a new Member! |
281 | It is called PWM/Pi (Passwordmanager/platform-independent) | 284 | It is called PWM/Pi (Passwordmanager/platform-independent) |
282 | and it is available for the Zaurus. | 285 | and it is available for the Zaurus. |
283 | It is planned, that it will be available later for Windows. | 286 | It is planned, that it will be available later for Windows. |
284 | (And for Linux, of course). | 287 | (And for Linux, of course). |
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp index ae67968..9ea9d04 100644 --- a/kabc/addresseedialog.cpp +++ b/kabc/addresseedialog.cpp | |||
@@ -1,293 +1,293 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of libkabc. | 2 | This file is part of libkabc. |
3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> | 3 | Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> |
4 | 4 | ||
5 | This library is free software; you can redistribute it and/or | 5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public | 6 | modify it under the terms of the GNU Library General Public |
7 | License as published by the Free Software Foundation; either | 7 | License as published by the Free Software Foundation; either |
8 | version 2 of the License, or (at your option) any later version. | 8 | version 2 of the License, or (at your option) any later version. |
9 | 9 | ||
10 | This library is distributed in the hope that it will be useful, | 10 | This library 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 GNU | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Library General Public License for more details. | 13 | Library General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU Library General Public License | 15 | You should have received a copy of the GNU Library General Public License |
16 | along with this library; see the file COPYING.LIB. If not, write to | 16 | along with this library; see the file COPYING.LIB. If not, write to |
17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, | 17 | the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
18 | Boston, MA 02111-1307, USA. | 18 | Boston, MA 02111-1307, USA. |
19 | */ | 19 | */ |
20 | 20 | ||
21 | #include <qlayout.h> | 21 | #include <qlayout.h> |
22 | #include <qpushbutton.h> | 22 | #include <qpushbutton.h> |
23 | #include <qgroupbox.h> | 23 | #include <qgroupbox.h> |
24 | #include <qapplication.h> | 24 | #include <qapplication.h> |
25 | #include <qregexp.h> | 25 | #include <qregexp.h> |
26 | 26 | ||
27 | #include <klocale.h> | 27 | #include <klocale.h> |
28 | #include <kdebug.h> | 28 | #include <kdebug.h> |
29 | #include <kglobalsettings.h> | 29 | #include <kglobalsettings.h> |
30 | 30 | ||
31 | #include "stdaddressbook.h" | 31 | #include "stdaddressbook.h" |
32 | 32 | ||
33 | #include "addresseedialog.h" | 33 | #include "addresseedialog.h" |
34 | //#include "addresseedialog.moc" | 34 | //#include "addresseedialog.moc" |
35 | 35 | ||
36 | using namespace KABC; | 36 | using namespace KABC; |
37 | 37 | ||
38 | AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : | 38 | AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : |
39 | QListViewItem( parent ), | 39 | QListViewItem( parent ), |
40 | mAddressee( addressee ) | 40 | mAddressee( addressee ) |
41 | { | 41 | { |
42 | QString name = addressee.familyName()+", "+ addressee.givenName(); | 42 | QString name = addressee.familyName()+", "+ addressee.givenName(); |
43 | if ( name.length() == 2 ) | 43 | if ( name.length() == 2 ) |
44 | name = addressee.realName(); | 44 | name = addressee.organization(); |
45 | setText( Name,name); | 45 | setText( Name,name); |
46 | setText( Email, addressee.preferredEmail() ); | 46 | setText( Email, addressee.preferredEmail() ); |
47 | } | 47 | } |
48 | 48 | ||
49 | QString AddresseeItem::key( int column, bool ) const | 49 | QString AddresseeItem::key( int column, bool ) const |
50 | { | 50 | { |
51 | 51 | ||
52 | if (column == Email) { | 52 | if (column == Email) { |
53 | QString value = text(Email); | 53 | QString value = text(Email); |
54 | int val = value.findRev("@"); | 54 | int val = value.findRev("@"); |
55 | return value.mid( val) + value.left( val ); | 55 | return value.mid( val) + value.left( val ); |
56 | } | 56 | } |
57 | return text(column).lower(); | 57 | return text(column).lower(); |
58 | } | 58 | } |
59 | 59 | ||
60 | AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : | 60 | AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : |
61 | KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), | 61 | KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), |
62 | Ok|Cancel, Ok, parent ), mMultiple( multiple ) | 62 | Ok|Cancel, Ok, parent ), mMultiple( multiple ) |
63 | { | 63 | { |
64 | QWidget *topWidget = plainPage(); | 64 | QWidget *topWidget = plainPage(); |
65 | 65 | ||
66 | QBoxLayout *topLayout = new QHBoxLayout( topWidget ); | 66 | QBoxLayout *topLayout = new QHBoxLayout( topWidget ); |
67 | QBoxLayout *listLayout = new QVBoxLayout; | 67 | QBoxLayout *listLayout = new QVBoxLayout; |
68 | topLayout->addLayout( listLayout ); | 68 | topLayout->addLayout( listLayout ); |
69 | 69 | ||
70 | mAddresseeList = new KListView( topWidget ); | 70 | mAddresseeList = new KListView( topWidget ); |
71 | mAddresseeList->addColumn( i18n("Name") ); | 71 | mAddresseeList->addColumn( i18n("Name") ); |
72 | mAddresseeList->addColumn( i18n("Email") ); | 72 | mAddresseeList->addColumn( i18n("Email") ); |
73 | mAddresseeList->setAllColumnsShowFocus( true ); | 73 | mAddresseeList->setAllColumnsShowFocus( true ); |
74 | mAddresseeList->setFullWidth( true ); | 74 | mAddresseeList->setFullWidth( true ); |
75 | listLayout->addWidget( mAddresseeList ); | 75 | listLayout->addWidget( mAddresseeList ); |
76 | connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), | 76 | connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), |
77 | SLOT( slotOk() ) ); | 77 | SLOT( slotOk() ) ); |
78 | 78 | ||
79 | mAddresseeEdit = new QLineEdit( topWidget ); | 79 | mAddresseeEdit = new QLineEdit( topWidget ); |
80 | connect( mAddresseeEdit, SIGNAL( returnPressed() ), | 80 | connect( mAddresseeEdit, SIGNAL( returnPressed() ), |
81 | SLOT( loadAddressBook() ) ); | 81 | SLOT( loadAddressBook() ) ); |
82 | mAddresseeEdit->setFocus(); | 82 | mAddresseeEdit->setFocus(); |
83 | 83 | ||
84 | listLayout->addWidget( mAddresseeEdit ); | 84 | listLayout->addWidget( mAddresseeEdit ); |
85 | 85 | ||
86 | if ( mMultiple ) { | 86 | if ( mMultiple ) { |
87 | QBoxLayout *selectedLayout = new QVBoxLayout; | 87 | QBoxLayout *selectedLayout = new QVBoxLayout; |
88 | topLayout->addLayout( selectedLayout ); | 88 | topLayout->addLayout( selectedLayout ); |
89 | topLayout->setSpacing( spacingHint() ); | 89 | topLayout->setSpacing( spacingHint() ); |
90 | 90 | ||
91 | QGroupBox *selectedGroup = new QGroupBox( 1, Horizontal, i18n("Selected"), | 91 | QGroupBox *selectedGroup = new QGroupBox( 1, Horizontal, i18n("Selected"), |
92 | topWidget ); | 92 | topWidget ); |
93 | selectedLayout->addWidget( selectedGroup ); | 93 | selectedLayout->addWidget( selectedGroup ); |
94 | 94 | ||
95 | mSelectedList = new KListView( selectedGroup ); | 95 | mSelectedList = new KListView( selectedGroup ); |
96 | mSelectedList->addColumn( i18n("Name") ); | 96 | mSelectedList->addColumn( i18n("Name") ); |
97 | mSelectedList->addColumn( i18n("Email") ); | 97 | mSelectedList->addColumn( i18n("Email") ); |
98 | mSelectedList->setAllColumnsShowFocus( true ); | 98 | mSelectedList->setAllColumnsShowFocus( true ); |
99 | mSelectedList->setFullWidth( true ); | 99 | mSelectedList->setFullWidth( true ); |
100 | connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), | 100 | connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), |
101 | SLOT( removeSelected() ) ); | 101 | SLOT( removeSelected() ) ); |
102 | 102 | ||
103 | QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup ); | 103 | QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup ); |
104 | connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) ); | 104 | connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) ); |
105 | 105 | ||
106 | connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), | 106 | connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), |
107 | SLOT( addSelected( QListViewItem * ) ) ); | 107 | SLOT( addSelected( QListViewItem * ) ) ); |
108 | connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ), | 108 | connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ), |
109 | SLOT( selectNextItem( QListViewItem * ) ) ); | 109 | SLOT( selectNextItem( QListViewItem * ) ) ); |
110 | 110 | ||
111 | } | 111 | } |
112 | 112 | ||
113 | mAddressBook = StdAddressBook::self( true ); | 113 | mAddressBook = StdAddressBook::self( true ); |
114 | connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ), | 114 | connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ), |
115 | SLOT( addressBookChanged() ) ); | 115 | SLOT( addressBookChanged() ) ); |
116 | connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ), | 116 | connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ), |
117 | SLOT( addressBookChanged() ) ); | 117 | SLOT( addressBookChanged() ) ); |
118 | 118 | ||
119 | loadAddressBook(); | 119 | loadAddressBook(); |
120 | } | 120 | } |
121 | 121 | ||
122 | AddresseeDialog::~AddresseeDialog() | 122 | AddresseeDialog::~AddresseeDialog() |
123 | { | 123 | { |
124 | } | 124 | } |
125 | 125 | ||
126 | void AddresseeDialog::loadAddressBook() | 126 | void AddresseeDialog::loadAddressBook() |
127 | { | 127 | { |
128 | mAddresseeList->clear(); | 128 | mAddresseeList->clear(); |
129 | mItemDict.clear(); | 129 | mItemDict.clear(); |
130 | if ( mAddresseeEdit->text().isEmpty() ) { | 130 | if ( mAddresseeEdit->text().isEmpty() ) { |
131 | AddressBook::Iterator it; | 131 | AddressBook::Iterator it; |
132 | for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { | 132 | for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { |
133 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 133 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
134 | continue; | 134 | continue; |
135 | new AddresseeItem( mAddresseeList, (*it) ); | 135 | new AddresseeItem( mAddresseeList, (*it) ); |
136 | } | 136 | } |
137 | return; | 137 | return; |
138 | } | 138 | } |
139 | //mAddresseeEdit->completionObject()->clear(); | 139 | //mAddresseeEdit->completionObject()->clear(); |
140 | QRegExp re; | 140 | QRegExp re; |
141 | re.setWildcard(true); // most people understand these better. | 141 | re.setWildcard(true); // most people understand these better. |
142 | re.setCaseSensitive(false); | 142 | re.setCaseSensitive(false); |
143 | re.setPattern( "*"+ mAddresseeEdit->text() + "*"); | 143 | re.setPattern( "*"+ mAddresseeEdit->text() + "*"); |
144 | 144 | ||
145 | AddressBook::Iterator it; | 145 | AddressBook::Iterator it; |
146 | for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { | 146 | for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { |
147 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 147 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
148 | continue; | 148 | continue; |
149 | QString name = (*it).familyName()+", "+ (*it).givenName(); | 149 | QString name = (*it).familyName()+", "+ (*it).givenName(); |
150 | if ( name.length() == 2 ) | 150 | if ( name.length() == 2 ) |
151 | name = (*it).realName(); | 151 | name = (*it).realName(); |
152 | name += (*it).preferredEmail(); | 152 | name += (*it).preferredEmail(); |
153 | #if QT_VERSION >= 300 | 153 | #if QT_VERSION >= 300 |
154 | if (re.search(name) != -1) | 154 | if (re.search(name) != -1) |
155 | #else | 155 | #else |
156 | if (re.match(name) != -1) | 156 | if (re.match(name) != -1) |
157 | #endif | 157 | #endif |
158 | AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); | 158 | AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); |
159 | } | 159 | } |
160 | } | 160 | } |
161 | 161 | ||
162 | void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) | 162 | void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) |
163 | { | 163 | { |
164 | if ( str.isEmpty() ) return; | 164 | if ( str.isEmpty() ) return; |
165 | 165 | ||
166 | mItemDict.insert( str, item ); | 166 | mItemDict.insert( str, item ); |
167 | //mAddresseeEdit->completionObject()->addItem( str ); | 167 | //mAddresseeEdit->completionObject()->addItem( str ); |
168 | } | 168 | } |
169 | 169 | ||
170 | void AddresseeDialog::selectItem( const QString &str ) | 170 | void AddresseeDialog::selectItem( const QString &str ) |
171 | { | 171 | { |
172 | if ( str.isEmpty() ) return; | 172 | if ( str.isEmpty() ) return; |
173 | 173 | ||
174 | QListViewItem *item = mItemDict.find( str ); | 174 | QListViewItem *item = mItemDict.find( str ); |
175 | if ( item ) { | 175 | if ( item ) { |
176 | mAddresseeList->blockSignals( true ); | 176 | mAddresseeList->blockSignals( true ); |
177 | mAddresseeList->setSelected( item, true ); | 177 | mAddresseeList->setSelected( item, true ); |
178 | mAddresseeList->ensureItemVisible( item ); | 178 | mAddresseeList->ensureItemVisible( item ); |
179 | mAddresseeList->blockSignals( false ); | 179 | mAddresseeList->blockSignals( false ); |
180 | } | 180 | } |
181 | } | 181 | } |
182 | 182 | ||
183 | void AddresseeDialog::updateEdit( QListViewItem *item ) | 183 | void AddresseeDialog::updateEdit( QListViewItem *item ) |
184 | { | 184 | { |
185 | mAddresseeEdit->setText( item->text( 0 ) ); | 185 | mAddresseeEdit->setText( item->text( 0 ) ); |
186 | mAddresseeEdit->setSelection( 0, item->text( 0 ).length() ); | 186 | mAddresseeEdit->setSelection( 0, item->text( 0 ).length() ); |
187 | } | 187 | } |
188 | 188 | ||
189 | void AddresseeDialog::selectNextItem( QListViewItem *item ) | 189 | void AddresseeDialog::selectNextItem( QListViewItem *item ) |
190 | { | 190 | { |
191 | addSelected( item ); | 191 | addSelected( item ); |
192 | QListViewItem *next = item->nextSibling(); | 192 | QListViewItem *next = item->nextSibling(); |
193 | if ( next ) { | 193 | if ( next ) { |
194 | next->setSelected( true ); | 194 | next->setSelected( true ); |
195 | item->setSelected( false ); | 195 | item->setSelected( false ); |
196 | mAddresseeList->setCurrentItem( next ); | 196 | mAddresseeList->setCurrentItem( next ); |
197 | } | 197 | } |
198 | } | 198 | } |
199 | void AddresseeDialog::addSelected( QListViewItem *item ) | 199 | void AddresseeDialog::addSelected( QListViewItem *item ) |
200 | { | 200 | { |
201 | AddresseeItem *addrItem = (AddresseeItem *)( item ); | 201 | AddresseeItem *addrItem = (AddresseeItem *)( item ); |
202 | if ( !addrItem ) return; | 202 | if ( !addrItem ) return; |
203 | 203 | ||
204 | Addressee a = addrItem->addressee(); | 204 | Addressee a = addrItem->addressee(); |
205 | 205 | ||
206 | QListViewItem *selectedItem = mSelectedDict.find( a.uid() ); | 206 | QListViewItem *selectedItem = mSelectedDict.find( a.uid() ); |
207 | if ( !selectedItem ) { | 207 | if ( !selectedItem ) { |
208 | selectedItem = new AddresseeItem( mSelectedList, a ); | 208 | selectedItem = new AddresseeItem( mSelectedList, a ); |
209 | mSelectedDict.insert( a.uid(), selectedItem ); | 209 | mSelectedDict.insert( a.uid(), selectedItem ); |
210 | } | 210 | } |
211 | 211 | ||
212 | } | 212 | } |
213 | 213 | ||
214 | void AddresseeDialog::removeSelected() | 214 | void AddresseeDialog::removeSelected() |
215 | { | 215 | { |
216 | QListViewItem *item = mSelectedList->selectedItem(); | 216 | QListViewItem *item = mSelectedList->selectedItem(); |
217 | AddresseeItem *addrItem = (AddresseeItem *)( item ); | 217 | AddresseeItem *addrItem = (AddresseeItem *)( item ); |
218 | if ( !addrItem ) return; | 218 | if ( !addrItem ) return; |
219 | QListViewItem *next = item->nextSibling(); | 219 | QListViewItem *next = item->nextSibling(); |
220 | mSelectedDict.remove( addrItem->addressee().uid() ); | 220 | mSelectedDict.remove( addrItem->addressee().uid() ); |
221 | delete addrItem; | 221 | delete addrItem; |
222 | if ( next ) | 222 | if ( next ) |
223 | next->setSelected( true ); | 223 | next->setSelected( true ); |
224 | } | 224 | } |
225 | 225 | ||
226 | Addressee AddresseeDialog::addressee() | 226 | Addressee AddresseeDialog::addressee() |
227 | { | 227 | { |
228 | AddresseeItem *aItem = 0; | 228 | AddresseeItem *aItem = 0; |
229 | 229 | ||
230 | if ( mMultiple ) | 230 | if ( mMultiple ) |
231 | aItem = (AddresseeItem *)( mSelectedList->firstChild() ); | 231 | aItem = (AddresseeItem *)( mSelectedList->firstChild() ); |
232 | else | 232 | else |
233 | aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); | 233 | aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); |
234 | 234 | ||
235 | if (aItem) return aItem->addressee(); | 235 | if (aItem) return aItem->addressee(); |
236 | return Addressee(); | 236 | return Addressee(); |
237 | } | 237 | } |
238 | 238 | ||
239 | Addressee::List AddresseeDialog::addressees() | 239 | Addressee::List AddresseeDialog::addressees() |
240 | { | 240 | { |
241 | Addressee::List al; | 241 | Addressee::List al; |
242 | AddresseeItem *aItem = 0; | 242 | AddresseeItem *aItem = 0; |
243 | 243 | ||
244 | if ( mMultiple ) { | 244 | if ( mMultiple ) { |
245 | QListViewItem *item = mSelectedList->firstChild(); | 245 | QListViewItem *item = mSelectedList->firstChild(); |
246 | while( item ) { | 246 | while( item ) { |
247 | aItem = (AddresseeItem *)( item ); | 247 | aItem = (AddresseeItem *)( item ); |
248 | if ( aItem ) al.append( aItem->addressee() ); | 248 | if ( aItem ) al.append( aItem->addressee() ); |
249 | item = item->nextSibling(); | 249 | item = item->nextSibling(); |
250 | } | 250 | } |
251 | } | 251 | } |
252 | else | 252 | else |
253 | { | 253 | { |
254 | aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); | 254 | aItem = (AddresseeItem *)( mAddresseeList->selectedItem() ); |
255 | if (aItem) al.append( aItem->addressee() ); | 255 | if (aItem) al.append( aItem->addressee() ); |
256 | } | 256 | } |
257 | 257 | ||
258 | return al; | 258 | return al; |
259 | } | 259 | } |
260 | 260 | ||
261 | Addressee AddresseeDialog::getAddressee( QWidget *parent ) | 261 | Addressee AddresseeDialog::getAddressee( QWidget *parent ) |
262 | { | 262 | { |
263 | AddresseeDialog *dlg = new AddresseeDialog( parent ); | 263 | AddresseeDialog *dlg = new AddresseeDialog( parent ); |
264 | Addressee addressee; | 264 | Addressee addressee; |
265 | int result = dlg->exec(); | 265 | int result = dlg->exec(); |
266 | 266 | ||
267 | if ( result == QDialog::Accepted ) { | 267 | if ( result == QDialog::Accepted ) { |
268 | addressee = dlg->addressee(); | 268 | addressee = dlg->addressee(); |
269 | } | 269 | } |
270 | 270 | ||
271 | delete dlg; | 271 | delete dlg; |
272 | return addressee; | 272 | return addressee; |
273 | } | 273 | } |
274 | 274 | ||
275 | Addressee::List AddresseeDialog::getAddressees( QWidget *parent ) | 275 | Addressee::List AddresseeDialog::getAddressees( QWidget *parent ) |
276 | { | 276 | { |
277 | AddresseeDialog *dlg = new AddresseeDialog( parent, true ); | 277 | AddresseeDialog *dlg = new AddresseeDialog( parent, true ); |
278 | Addressee::List addressees; | 278 | Addressee::List addressees; |
279 | if ( QApplication::desktop()->width() <= 640 ) | 279 | if ( QApplication::desktop()->width() <= 640 ) |
280 | dlg->showMaximized(); | 280 | dlg->showMaximized(); |
281 | int result = dlg->exec(); | 281 | int result = dlg->exec(); |
282 | if ( result == QDialog::Accepted ) { | 282 | if ( result == QDialog::Accepted ) { |
283 | addressees = dlg->addressees(); | 283 | addressees = dlg->addressees(); |
284 | } | 284 | } |
285 | 285 | ||
286 | delete dlg; | 286 | delete dlg; |
287 | return addressees; | 287 | return addressees; |
288 | } | 288 | } |
289 | 289 | ||
290 | void AddresseeDialog::addressBookChanged() | 290 | void AddresseeDialog::addressBookChanged() |
291 | { | 291 | { |
292 | loadAddressBook(); | 292 | loadAddressBook(); |
293 | } | 293 | } |
diff --git a/kaddressbook/addresseeeditorwidget.cpp b/kaddressbook/addresseeeditorwidget.cpp index c6993e9..bd32859 100644 --- a/kaddressbook/addresseeeditorwidget.cpp +++ b/kaddressbook/addresseeeditorwidget.cpp | |||
@@ -745,604 +745,614 @@ void AddresseeEditorWidget::setupTab2_1() | |||
745 | 745 | ||
746 | label = new QLabel( i18n( "Department:" ), tab2 ); | 746 | label = new QLabel( i18n( "Department:" ), tab2 ); |
747 | layout->addWidget( label, 0, 1 ); | 747 | layout->addWidget( label, 0, 1 ); |
748 | mDepartmentEdit = new KLineEdit( tab2 ); | 748 | mDepartmentEdit = new KLineEdit( tab2 ); |
749 | connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ), | 749 | connect( mDepartmentEdit, SIGNAL( textChanged( const QString& ) ), |
750 | SLOT( textChanged( const QString& ) ) ); | 750 | SLOT( textChanged( const QString& ) ) ); |
751 | label->setBuddy( mDepartmentEdit ); | 751 | label->setBuddy( mDepartmentEdit ); |
752 | layout->addWidget( mDepartmentEdit, 0, 2 ); | 752 | layout->addWidget( mDepartmentEdit, 0, 2 ); |
753 | 753 | ||
754 | label = new QLabel( i18n( "Office:" ), tab2 ); | 754 | label = new QLabel( i18n( "Office:" ), tab2 ); |
755 | layout->addWidget( label, 1, 1 ); | 755 | layout->addWidget( label, 1, 1 ); |
756 | mOfficeEdit = new KLineEdit( tab2 ); | 756 | mOfficeEdit = new KLineEdit( tab2 ); |
757 | connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ), | 757 | connect( mOfficeEdit, SIGNAL( textChanged( const QString& ) ), |
758 | SLOT( textChanged( const QString& ) ) ); | 758 | SLOT( textChanged( const QString& ) ) ); |
759 | label->setBuddy( mOfficeEdit ); | 759 | label->setBuddy( mOfficeEdit ); |
760 | layout->addWidget( mOfficeEdit, 1, 2 ); | 760 | layout->addWidget( mOfficeEdit, 1, 2 ); |
761 | 761 | ||
762 | label = new QLabel( i18n( "Profession:" ), tab2 ); | 762 | label = new QLabel( i18n( "Profession:" ), tab2 ); |
763 | layout->addWidget( label, 2, 1 ); | 763 | layout->addWidget( label, 2, 1 ); |
764 | mProfessionEdit = new KLineEdit( tab2 ); | 764 | mProfessionEdit = new KLineEdit( tab2 ); |
765 | connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ), | 765 | connect( mProfessionEdit, SIGNAL( textChanged( const QString& ) ), |
766 | SLOT( textChanged( const QString& ) ) ); | 766 | SLOT( textChanged( const QString& ) ) ); |
767 | label->setBuddy( mProfessionEdit ); | 767 | label->setBuddy( mProfessionEdit ); |
768 | layout->addWidget( mProfessionEdit, 2, 2 ); | 768 | layout->addWidget( mProfessionEdit, 2, 2 ); |
769 | 769 | ||
770 | label = new QLabel( i18n( "Manager\'s name:" ), tab2 ); | 770 | label = new QLabel( i18n( "Manager\'s name:" ), tab2 ); |
771 | layout->addWidget( label, 0, 3 ); | 771 | layout->addWidget( label, 0, 3 ); |
772 | mManagerEdit = new KLineEdit( tab2 ); | 772 | mManagerEdit = new KLineEdit( tab2 ); |
773 | connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ), | 773 | connect( mManagerEdit, SIGNAL( textChanged( const QString& ) ), |
774 | SLOT( textChanged( const QString& ) ) ); | 774 | SLOT( textChanged( const QString& ) ) ); |
775 | label->setBuddy( mManagerEdit ); | 775 | label->setBuddy( mManagerEdit ); |
776 | layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 ); | 776 | layout->addMultiCellWidget( mManagerEdit, 0, 0, 4, 5 ); |
777 | 777 | ||
778 | label = new QLabel( i18n( "Assistant's name:" ), tab2 ); | 778 | label = new QLabel( i18n( "Assistant's name:" ), tab2 ); |
779 | layout->addWidget( label, 1, 3 ); | 779 | layout->addWidget( label, 1, 3 ); |
780 | mAssistantEdit = new KLineEdit( tab2 ); | 780 | mAssistantEdit = new KLineEdit( tab2 ); |
781 | connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ), | 781 | connect( mAssistantEdit, SIGNAL( textChanged( const QString& ) ), |
782 | SLOT( textChanged( const QString& ) ) ); | 782 | SLOT( textChanged( const QString& ) ) ); |
783 | label->setBuddy( mAssistantEdit ); | 783 | label->setBuddy( mAssistantEdit ); |
784 | layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 ); | 784 | layout->addMultiCellWidget( mAssistantEdit, 1, 1, 4, 5 ); |
785 | 785 | ||
786 | bar = new KSeparator( KSeparator::HLine, tab2 ); | 786 | bar = new KSeparator( KSeparator::HLine, tab2 ); |
787 | layout->addMultiCellWidget( bar, 3, 3, 0, 5 ); | 787 | layout->addMultiCellWidget( bar, 3, 3, 0, 5 ); |
788 | 788 | ||
789 | ///////////////////////////////////////////////// | 789 | ///////////////////////////////////////////////// |
790 | // Personal info | 790 | // Personal info |
791 | 791 | ||
792 | label = new QLabel( tab2 ); | 792 | label = new QLabel( tab2 ); |
793 | //US loadIcon call is ambiguous. Add one more parameter | 793 | //US loadIcon call is ambiguous. Add one more parameter |
794 | //US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); | 794 | //US label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop ) ); |
795 | label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); | 795 | label->setPixmap( KGlobal::iconLoader()->loadIcon( "personal", KIcon::Desktop, 0 ) ); |
796 | layout->addMultiCellWidget( label, 4, 5, 0, 0 ); | 796 | layout->addMultiCellWidget( label, 4, 5, 0, 0 ); |
797 | 797 | ||
798 | label = new QLabel( i18n( "Nick name:" ), tab2 ); | 798 | label = new QLabel( i18n( "Nick name:" ), tab2 ); |
799 | layout->addWidget( label, 4, 1 ); | 799 | layout->addWidget( label, 4, 1 ); |
800 | mNicknameEdit = new KLineEdit( tab2 ); | 800 | mNicknameEdit = new KLineEdit( tab2 ); |
801 | connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), | 801 | connect( mNicknameEdit, SIGNAL( textChanged( const QString& ) ), |
802 | SLOT( textChanged( const QString& ) ) ); | 802 | SLOT( textChanged( const QString& ) ) ); |
803 | label->setBuddy( mNicknameEdit ); | 803 | label->setBuddy( mNicknameEdit ); |
804 | layout->addWidget( mNicknameEdit, 4, 2 ); | 804 | layout->addWidget( mNicknameEdit, 4, 2 ); |
805 | 805 | ||
806 | label = new QLabel( i18n( "Spouse's name:" ), tab2 ); | 806 | label = new QLabel( i18n( "Spouse's name:" ), tab2 ); |
807 | layout->addWidget( label, 5, 1 ); | 807 | layout->addWidget( label, 5, 1 ); |
808 | mSpouseEdit = new KLineEdit( tab2 ); | 808 | mSpouseEdit = new KLineEdit( tab2 ); |
809 | connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), | 809 | connect( mSpouseEdit, SIGNAL( textChanged( const QString& ) ), |
810 | SLOT( textChanged( const QString& ) ) ); | 810 | SLOT( textChanged( const QString& ) ) ); |
811 | label->setBuddy( mSpouseEdit ); | 811 | label->setBuddy( mSpouseEdit ); |
812 | layout->addWidget( mSpouseEdit, 5, 2 ); | 812 | layout->addWidget( mSpouseEdit, 5, 2 ); |
813 | 813 | ||
814 | label = new QLabel( i18n( "Birthday:" ), tab2 ); | 814 | label = new QLabel( i18n( "Birthday:" ), tab2 ); |
815 | layout->addWidget( label, 4, 3 ); | 815 | layout->addWidget( label, 4, 3 ); |
816 | mBirthdayPicker = new KDateEdit( tab2 ); | 816 | mBirthdayPicker = new KDateEdit( tab2 ); |
817 | mBirthdayPicker->setHandleInvalid( true ); | 817 | mBirthdayPicker->setHandleInvalid( true ); |
818 | connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), | 818 | connect( mBirthdayPicker, SIGNAL( dateChanged( QDate ) ), |
819 | SLOT( dateChanged( QDate ) ) ); | 819 | SLOT( dateChanged( QDate ) ) ); |
820 | connect( mBirthdayPicker, SIGNAL( invalidDateEntered() ), | 820 | connect( mBirthdayPicker, SIGNAL( invalidDateEntered() ), |
821 | SLOT( invalidDate() ) ); | 821 | SLOT( invalidDate() ) ); |
822 | connect( mBirthdayPicker, SIGNAL( textChanged( const QString& ) ), | 822 | connect( mBirthdayPicker, SIGNAL( textChanged( const QString& ) ), |
823 | SLOT( emitModified() ) ); | 823 | SLOT( emitModified() ) ); |
824 | label->setBuddy( mBirthdayPicker ); | 824 | label->setBuddy( mBirthdayPicker ); |
825 | layout->addWidget( mBirthdayPicker, 4, 4 ); | 825 | layout->addWidget( mBirthdayPicker, 4, 4 ); |
826 | 826 | ||
827 | label = new QLabel( i18n( "Anniversary:" ), tab2 ); | 827 | label = new QLabel( i18n( "Anniversary:" ), tab2 ); |
828 | layout->addWidget( label, 5, 3 ); | 828 | layout->addWidget( label, 5, 3 ); |
829 | mAnniversaryPicker = new KDateEdit( tab2 ); | 829 | mAnniversaryPicker = new KDateEdit( tab2 ); |
830 | mAnniversaryPicker->setHandleInvalid( true ); | 830 | mAnniversaryPicker->setHandleInvalid( true ); |
831 | connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), | 831 | connect( mAnniversaryPicker, SIGNAL( dateChanged( QDate ) ), |
832 | SLOT( dateChanged( QDate ) ) ); | 832 | SLOT( dateChanged( QDate ) ) ); |
833 | connect( mAnniversaryPicker, SIGNAL( invalidDateEntered() ), | 833 | connect( mAnniversaryPicker, SIGNAL( invalidDateEntered() ), |
834 | SLOT( invalidDate() ) ); | 834 | SLOT( invalidDate() ) ); |
835 | connect( mAnniversaryPicker, SIGNAL( textChanged( const QString& ) ), | 835 | connect( mAnniversaryPicker, SIGNAL( textChanged( const QString& ) ), |
836 | SLOT( emitModified() ) ); | 836 | SLOT( emitModified() ) ); |
837 | label->setBuddy( mAnniversaryPicker ); | 837 | label->setBuddy( mAnniversaryPicker ); |
838 | layout->addWidget( mAnniversaryPicker, 5, 4 ); | 838 | layout->addWidget( mAnniversaryPicker, 5, 4 ); |
839 | 839 | ||
840 | bar = new KSeparator( KSeparator::HLine, tab2 ); | 840 | bar = new KSeparator( KSeparator::HLine, tab2 ); |
841 | layout->addMultiCellWidget( bar, 6, 6, 0, 5 ); | 841 | layout->addMultiCellWidget( bar, 6, 6, 0, 5 ); |
842 | */ | 842 | */ |
843 | ////////////////////////////////////// | 843 | ////////////////////////////////////// |
844 | // Notes | 844 | // Notes |
845 | label = new QLabel( i18n( "Note:" ), tab2_2 ); | 845 | label = new QLabel( i18n( "Note:" ), tab2_2 ); |
846 | label->setAlignment( Qt::AlignTop | Qt::AlignLeft ); | 846 | label->setAlignment( Qt::AlignTop | Qt::AlignLeft ); |
847 | //US layout->addWidget( label, 7, 0 ); | 847 | //US layout->addWidget( label, 7, 0 ); |
848 | layout->addWidget( label, 0, 0 ); | 848 | layout->addWidget( label, 0, 0 ); |
849 | #ifndef KAB_EMBEDDED | 849 | #ifndef KAB_EMBEDDED |
850 | mNoteEdit = new QTextEdit( tab2_2 ); | 850 | mNoteEdit = new QTextEdit( tab2_2 ); |
851 | mNoteEdit->setWordWrap( QTextEdit::WidgetWidth ); | 851 | mNoteEdit->setWordWrap( QTextEdit::WidgetWidth ); |
852 | mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() ); | 852 | mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() ); |
853 | #else //KAB_EMBEDDED | 853 | #else //KAB_EMBEDDED |
854 | mNoteEdit = new QMultiLineEdit( tab2_2 ); | 854 | mNoteEdit = new QMultiLineEdit( tab2_2 ); |
855 | mNoteEdit->setWordWrap( QMultiLineEdit::WidgetWidth ); | 855 | mNoteEdit->setWordWrap( QMultiLineEdit::WidgetWidth ); |
856 | mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() ); | 856 | mNoteEdit->setMinimumSize( mNoteEdit->sizeHint() ); |
857 | #endif //KAB_EMBEDDED | 857 | #endif //KAB_EMBEDDED |
858 | 858 | ||
859 | connect( mNoteEdit, SIGNAL( textChanged() ), SLOT( emitModified() ) ); | 859 | connect( mNoteEdit, SIGNAL( textChanged() ), SLOT( emitModified() ) ); |
860 | label->setBuddy( mNoteEdit ); | 860 | label->setBuddy( mNoteEdit ); |
861 | //US layout->addMultiCellWidget( mNoteEdit, 7, 7, 1, 5 ); | 861 | //US layout->addMultiCellWidget( mNoteEdit, 7, 7, 1, 5 ); |
862 | layout->addWidget( mNoteEdit, 1, 0); | 862 | layout->addWidget( mNoteEdit, 1, 0); |
863 | 863 | ||
864 | // Build the layout and add to the tab widget | 864 | // Build the layout and add to the tab widget |
865 | layout->activate(); // required | 865 | layout->activate(); // required |
866 | 866 | ||
867 | mTabWidget->addTab( tab2_2, i18n( "&Notes" ) ); | 867 | mTabWidget->addTab( tab2_2, i18n( "&Notes" ) ); |
868 | } | 868 | } |
869 | 869 | ||
870 | 870 | ||
871 | 871 | ||
872 | void AddresseeEditorWidget::setupTab3() | 872 | void AddresseeEditorWidget::setupTab3() |
873 | { | 873 | { |
874 | // This is the Misc tab | 874 | // This is the Misc tab |
875 | QWidget *tab3 = new QWidget( mTabWidget ); | 875 | QWidget *tab3 = new QWidget( mTabWidget ); |
876 | 876 | ||
877 | QGridLayout *layout = new QGridLayout( tab3, 1, 1 ); | 877 | QGridLayout *layout = new QGridLayout( tab3, 1, 1 ); |
878 | layout->setMargin( KDialogBase::marginHintSmall() ); | 878 | layout->setMargin( KDialogBase::marginHintSmall() ); |
879 | layout->setSpacing( KDialogBase::spacingHintSmall() ); | 879 | layout->setSpacing( KDialogBase::spacingHintSmall() ); |
880 | //US layout->setColStretch( 2, 1 ); | 880 | //US layout->setColStretch( 2, 1 ); |
881 | 881 | ||
882 | ////////////////////////////////////// | 882 | ////////////////////////////////////// |
883 | // Geo | 883 | // Geo |
884 | mGeoWidget = new GeoWidget( tab3 ); | 884 | mGeoWidget = new GeoWidget( tab3 ); |
885 | // mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() ); | 885 | // mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() ); |
886 | connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 886 | connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
887 | layout->addWidget( mGeoWidget, 0, 0 ); | 887 | layout->addWidget( mGeoWidget, 0, 0 ); |
888 | /*US | 888 | /*US |
889 | ////////////////////////////////////// | 889 | ////////////////////////////////////// |
890 | // Sound | 890 | // Sound |
891 | #ifndef KAB_EMBEDDED | 891 | #ifndef KAB_EMBEDDED |
892 | mSoundWidget = new SoundWidget( tab3 ); | 892 | mSoundWidget = new SoundWidget( tab3 ); |
893 | mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() ); | 893 | mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() ); |
894 | connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 894 | connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
895 | layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop ); | 895 | layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop ); |
896 | #else //KAB_EMBEDDED | 896 | #else //KAB_EMBEDDED |
897 | qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed"); | 897 | qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed"); |
898 | #endif //KAB_EMBEDDED | 898 | #endif //KAB_EMBEDDED |
899 | 899 | ||
900 | ////////////////////////////////////// | 900 | ////////////////////////////////////// |
901 | // Images | 901 | // Images |
902 | mImageWidget = new ImageWidget( tab3 ); | 902 | mImageWidget = new ImageWidget( tab3 ); |
903 | mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); | 903 | mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); |
904 | connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 904 | connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
905 | layout->addWidget( mImageWidget, 1, 0, Qt::AlignTop ); | 905 | layout->addWidget( mImageWidget, 1, 0, Qt::AlignTop ); |
906 | */ | 906 | */ |
907 | //US | 907 | //US |
908 | /* | 908 | /* |
909 | KSeparator* bar = new KSeparator( KSeparator::HLine, tab3 ); | 909 | KSeparator* bar = new KSeparator( KSeparator::HLine, tab3 ); |
910 | layout->addMultiCellWidget( bar, 1, 1, 0, 0 ); | 910 | layout->addMultiCellWidget( bar, 1, 1, 0, 0 ); |
911 | */ | 911 | */ |
912 | ////////////////////////////////////// | 912 | ////////////////////////////////////// |
913 | // Keys | 913 | // Keys |
914 | mKeyWidget = new KeyWidget( tab3 ); | 914 | mKeyWidget = new KeyWidget( tab3 ); |
915 | //mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); | 915 | //mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); |
916 | connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 916 | connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
917 | //US layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); | 917 | //US layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); |
918 | layout->addWidget( mKeyWidget, 1, 0 ); | 918 | layout->addWidget( mKeyWidget, 1, 0 ); |
919 | 919 | ||
920 | mTabWidget->addTab( tab3, i18n( "&Misc" ) ); | 920 | mTabWidget->addTab( tab3, i18n( "&Misc" ) ); |
921 | } | 921 | } |
922 | 922 | ||
923 | void AddresseeEditorWidget::setupTab3_1() | 923 | void AddresseeEditorWidget::setupTab3_1() |
924 | { | 924 | { |
925 | // This is the Misc tab | 925 | // This is the Misc tab |
926 | QWidget *tab3 = new QWidget( mTabWidget ); | 926 | QWidget *tab3 = new QWidget( mTabWidget ); |
927 | 927 | ||
928 | //US QGridLayout *layout = new QGridLayout( tab3, 2, 3 ); | 928 | //US QGridLayout *layout = new QGridLayout( tab3, 2, 3 ); |
929 | QGridLayout *layout = new QGridLayout( tab3, 1, 1 ); | 929 | QGridLayout *layout = new QGridLayout( tab3, 1, 1 ); |
930 | layout->setMargin( KDialogBase::marginHint() ); | 930 | layout->setMargin( KDialogBase::marginHint() ); |
931 | layout->setSpacing( KDialogBase::spacingHint() ); | 931 | layout->setSpacing( KDialogBase::spacingHint() ); |
932 | //US layout->setColStretch( 2, 1 ); | 932 | //US layout->setColStretch( 2, 1 ); |
933 | 933 | ||
934 | /*US | 934 | /*US |
935 | ////////////////////////////////////// | 935 | ////////////////////////////////////// |
936 | // Geo | 936 | // Geo |
937 | mGeoWidget = new GeoWidget( tab3 ); | 937 | mGeoWidget = new GeoWidget( tab3 ); |
938 | mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() ); | 938 | mGeoWidget->setMinimumSize( mGeoWidget->sizeHint() ); |
939 | connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 939 | connect( mGeoWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
940 | layout->addWidget( mGeoWidget, 0, 0, Qt::AlignTop ); | 940 | layout->addWidget( mGeoWidget, 0, 0, Qt::AlignTop ); |
941 | */ | 941 | */ |
942 | ////////////////////////////////////// | 942 | ////////////////////////////////////// |
943 | // Sound | 943 | // Sound |
944 | #ifndef KAB_EMBEDDED | 944 | #ifndef KAB_EMBEDDED |
945 | mSoundWidget = new SoundWidget( tab3 ); | 945 | mSoundWidget = new SoundWidget( tab3 ); |
946 | mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() ); | 946 | mSoundWidget->setMinimumSize( mSoundWidget->sizeHint() ); |
947 | connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 947 | connect( mSoundWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
948 | layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop ); | 948 | layout->addWidget( mSoundWidget, 0, 1, Qt::AlignTop ); |
949 | #else //KAB_EMBEDDED | 949 | #else //KAB_EMBEDDED |
950 | //US qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed"); | 950 | //US qDebug("AddresseeEditorWidget::setupTab2 sound part is not supported = has to be changed"); |
951 | #endif //KAB_EMBEDDED | 951 | #endif //KAB_EMBEDDED |
952 | 952 | ||
953 | ////////////////////////////////////// | 953 | ////////////////////////////////////// |
954 | // Images | 954 | // Images |
955 | mImageWidget = new ImageWidget( tab3 ); | 955 | mImageWidget = new ImageWidget( tab3 ); |
956 | mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); | 956 | mImageWidget->setMinimumSize( mImageWidget->sizeHint() ); |
957 | connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 957 | connect( mImageWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
958 | layout->addWidget( mImageWidget, 0, 0, Qt::AlignTop ); | 958 | layout->addWidget( mImageWidget, 0, 0, Qt::AlignTop ); |
959 | /*US | 959 | /*US |
960 | ////////////////////////////////////// | 960 | ////////////////////////////////////// |
961 | // Keys | 961 | // Keys |
962 | mKeyWidget = new KeyWidget( tab3 ); | 962 | mKeyWidget = new KeyWidget( tab3 ); |
963 | mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); | 963 | mKeyWidget->setMinimumSize( mKeyWidget->sizeHint() ); |
964 | connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); | 964 | connect( mKeyWidget, SIGNAL( changed() ), SLOT( emitModified() ) ); |
965 | layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); | 965 | layout->addWidget( mKeyWidget, 1, 1, Qt::AlignTop ); |
966 | */ | 966 | */ |
967 | mTabWidget->addTab( tab3, i18n( "&Images" ) ); | 967 | mTabWidget->addTab( tab3, i18n( "&Images" ) ); |
968 | } | 968 | } |
969 | 969 | ||
970 | 970 | ||
971 | void AddresseeEditorWidget::load() | 971 | void AddresseeEditorWidget::load() |
972 | { | 972 | { |
973 | 973 | ||
974 | // Block signals in case anything tries to emit modified | 974 | // Block signals in case anything tries to emit modified |
975 | // CS: This doesn't seem to work. | 975 | // CS: This doesn't seem to work. |
976 | bool block = signalsBlocked(); | 976 | bool block = signalsBlocked(); |
977 | blockSignals( true ); | 977 | blockSignals( true ); |
978 | mBlockSignals = true; // used for internal signal blocking | 978 | mBlockSignals = true; // used for internal signal blocking |
979 | 979 | ||
980 | mNameEdit->setText( mAddressee.assembledName() ); | 980 | mNameEdit->setText( mAddressee.assembledName() ); |
981 | 981 | ||
982 | if ( mAddressee.formattedName().isEmpty() ) { | 982 | if ( mAddressee.formattedName().isEmpty() ) { |
983 | //US KConfig config( "kaddressbookrc" ); | 983 | //US KConfig config( "kaddressbookrc" ); |
984 | KConfig config( locateLocal("config", "kabcrc") ); | 984 | KConfig config( locateLocal("config", "kabcrc") ); |
985 | config.setGroup( "General" ); | 985 | config.setGroup( "General" ); |
986 | mFormattedNameType = config.readNumEntry( "FormattedNameType", 1 ); | 986 | mFormattedNameType = config.readNumEntry( "FormattedNameType", 1 ); |
987 | mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); | 987 | mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); |
988 | } else {; | 988 | } else {; |
989 | if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::SimpleName ) ) | 989 | if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::SimpleName ) ) |
990 | mFormattedNameType = NameEditDialog::SimpleName; | 990 | mFormattedNameType = NameEditDialog::SimpleName; |
991 | else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::FullName ) ) | 991 | else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::FullName ) ) |
992 | mFormattedNameType = NameEditDialog::FullName; | 992 | mFormattedNameType = NameEditDialog::FullName; |
993 | else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::ReverseName ) ) | 993 | else if ( mAddressee.formattedName() == NameEditDialog::formattedName( mAddressee, NameEditDialog::ReverseName ) ) |
994 | mFormattedNameType = NameEditDialog::ReverseName; | 994 | mFormattedNameType = NameEditDialog::ReverseName; |
995 | else | 995 | else |
996 | mFormattedNameType = NameEditDialog::CustomName; | 996 | mFormattedNameType = NameEditDialog::CustomName; |
997 | } | 997 | } |
998 | 998 | ||
999 | mFormattedNameLabel->setText( mAddressee.formattedName() ); | 999 | mFormattedNameLabel->setText( mAddressee.formattedName() ); |
1000 | 1000 | ||
1001 | mAConfig->setUid( mAddressee.uid() ); | ||
1002 | if ( mAConfig->automaticNameParsing() ) { | ||
1003 | mNameLabel->hide(); | ||
1004 | mNameEdit->show(); | ||
1005 | } else { | ||
1006 | mNameEdit->hide(); | ||
1007 | mNameLabel->setText( mNameEdit->text() ); | ||
1008 | mNameLabel->show(); | ||
1009 | } | ||
1010 | |||
1001 | mRoleEdit->setText( mAddressee.role() ); | 1011 | mRoleEdit->setText( mAddressee.role() ); |
1002 | mOrgEdit->setText( mAddressee.organization() ); | 1012 | mOrgEdit->setText( mAddressee.organization() ); |
1003 | 1013 | ||
1004 | //US mURLEdit->setURL( mAddressee.url().url() ); | 1014 | //US mURLEdit->setURL( mAddressee.url().url() ); |
1005 | mURLEdit->setText( mAddressee.url().prettyURL() ); | 1015 | mURLEdit->setText( mAddressee.url().prettyURL() ); |
1006 | //US?? mURLEdit->home( false ); | 1016 | //US?? mURLEdit->home( false ); |
1007 | 1017 | ||
1008 | // mNoteEdit->setText( mAddressee.note() ); | 1018 | // mNoteEdit->setText( mAddressee.note() ); |
1009 | mNoteEdit->setText( mAddressee.note() ); | 1019 | mNoteEdit->setText( mAddressee.note() ); |
1010 | mEmailWidget->setEmails( mAddressee.emails() ); | 1020 | mEmailWidget->setEmails( mAddressee.emails() ); |
1011 | mPhoneEditWidget->setPhoneNumbers( mAddressee.phoneNumbers() ); | 1021 | mPhoneEditWidget->setPhoneNumbers( mAddressee.phoneNumbers() ); |
1012 | mAddressEditWidget->setAddresses( mAddressee, mAddressee.addresses() ); | 1022 | mAddressEditWidget->setAddresses( mAddressee, mAddressee.addresses() ); |
1013 | mBirthdayPicker->setDate( mAddressee.birthday().date() ); | 1023 | mBirthdayPicker->setDate( mAddressee.birthday().date() ); |
1014 | 1024 | ||
1015 | //US mAnniversaryPicker->setDate( QDate::fromString( mAddressee.custom( | 1025 | //US mAnniversaryPicker->setDate( QDate::fromString( mAddressee.custom( |
1016 | //US "KADDRESSBOOK", "X-Anniversary" ), Qt::ISODate) ); | 1026 | //US "KADDRESSBOOK", "X-Anniversary" ), Qt::ISODate) ); |
1017 | QDate dt = KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), | 1027 | QDate dt = KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), |
1018 | "%Y-%m-%d"); // = Qt::ISODate | 1028 | "%Y-%m-%d"); // = Qt::ISODate |
1019 | mAnniversaryPicker->setDate( dt ); | 1029 | mAnniversaryPicker->setDate( dt ); |
1020 | 1030 | ||
1021 | 1031 | ||
1022 | mNicknameEdit->setText( mAddressee.nickName() ); | 1032 | mNicknameEdit->setText( mAddressee.nickName() ); |
1023 | mCategoryEdit->setText( mAddressee.categories().join( "," ) ); | 1033 | mCategoryEdit->setText( mAddressee.categories().join( "," ) ); |
1024 | 1034 | ||
1025 | mGeoWidget->setGeo( mAddressee.geo() ); | 1035 | mGeoWidget->setGeo( mAddressee.geo() ); |
1026 | mImageWidget->setPhoto( mAddressee.photo() ); | 1036 | mImageWidget->setPhoto( mAddressee.photo() ); |
1027 | mImageWidget->setLogo( mAddressee.logo() ); | 1037 | mImageWidget->setLogo( mAddressee.logo() ); |
1028 | mKeyWidget->setKeys( mAddressee.keys() ); | 1038 | mKeyWidget->setKeys( mAddressee.keys() ); |
1029 | mSecrecyWidget->setSecrecy( mAddressee.secrecy() ); | 1039 | mSecrecyWidget->setSecrecy( mAddressee.secrecy() ); |
1030 | #ifndef KAB_EMBEDDED | 1040 | #ifndef KAB_EMBEDDED |
1031 | mSoundWidget->setSound( mAddressee.sound() ); | 1041 | mSoundWidget->setSound( mAddressee.sound() ); |
1032 | #else //KAB_EMBEDDED | 1042 | #else //KAB_EMBEDDED |
1033 | //US qDebug("AddresseeEditorWidget::load has to be changed 2"); | 1043 | //US qDebug("AddresseeEditorWidget::load has to be changed 2"); |
1034 | #endif //KAB_EMBEDDED | 1044 | #endif //KAB_EMBEDDED |
1035 | 1045 | ||
1036 | // Load customs | 1046 | // Load customs |
1037 | mIMAddressEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ) ); | 1047 | mIMAddressEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-IMAddress" ) ); |
1038 | mSpouseEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ) ); | 1048 | mSpouseEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-SpousesName" ) ); |
1039 | mChildEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Children" ) ); | 1049 | mChildEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Children" ) ); |
1040 | mManagerEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ) ); | 1050 | mManagerEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-ManagersName" ) ); |
1041 | mAssistantEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ) ); | 1051 | mAssistantEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-AssistantsName" ) ); |
1042 | mDepartmentEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Department" ) ); | 1052 | mDepartmentEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Department" ) ); |
1043 | mOfficeEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Office" ) ); | 1053 | mOfficeEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Office" ) ); |
1044 | mProfessionEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Profession" ) ); | 1054 | mProfessionEdit->setText( mAddressee.custom( "KADDRESSBOOK", "X-Profession" ) ); |
1045 | QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" ); | 1055 | QString gen = mAddressee.custom( "KADDRESSBOOK", "X-Gender" ); |
1046 | if ( gen == "female" ) | 1056 | if ( gen == "female" ) |
1047 | mGenderBox->setCurrentItem ( 1 ); | 1057 | mGenderBox->setCurrentItem ( 1 ); |
1048 | else if ( gen == "male" ) | 1058 | else if ( gen == "male" ) |
1049 | mGenderBox->setCurrentItem ( 2 ); | 1059 | mGenderBox->setCurrentItem ( 2 ); |
1050 | else | 1060 | else |
1051 | mGenderBox->setCurrentItem ( 0 ); | 1061 | mGenderBox->setCurrentItem ( 0 ); |
1052 | blockSignals( block ); | 1062 | blockSignals( block ); |
1053 | mBlockSignals = false; | 1063 | mBlockSignals = false; |
1054 | 1064 | ||
1055 | mDirty = false; | 1065 | mDirty = false; |
1056 | } | 1066 | } |
1057 | 1067 | ||
1058 | void AddresseeEditorWidget::save() | 1068 | void AddresseeEditorWidget::save() |
1059 | { | 1069 | { |
1060 | if ( !dirty() ) { | 1070 | if ( !dirty() ) { |
1061 | return; | 1071 | return; |
1062 | } | 1072 | } |
1063 | 1073 | ||
1064 | mAddressee.setRevision( QDateTime::currentDateTime() ); | 1074 | mAddressee.setRevision( QDateTime::currentDateTime() ); |
1065 | 1075 | ||
1066 | mAddressee.setRole( mRoleEdit->text() ); | 1076 | mAddressee.setRole( mRoleEdit->text() ); |
1067 | mAddressee.setOrganization( mOrgEdit->text() ); | 1077 | mAddressee.setOrganization( mOrgEdit->text() ); |
1068 | mAddressee.setUrl( KURL( mURLEdit->text() ) ); | 1078 | mAddressee.setUrl( KURL( mURLEdit->text() ) ); |
1069 | mAddressee.setNote( mNoteEdit->text() ); | 1079 | mAddressee.setNote( mNoteEdit->text() ); |
1070 | if ( mBirthdayPicker->inputIsValid() ) { | 1080 | if ( mBirthdayPicker->inputIsValid() ) { |
1071 | QDate da = mBirthdayPicker->date(); | 1081 | QDate da = mBirthdayPicker->date(); |
1072 | if ( da > QDate::currentDate() ) | 1082 | if ( da > QDate::currentDate() ) |
1073 | da.setYMD(da.year()-100, da.month(), da.day() ); | 1083 | da.setYMD(da.year()-100, da.month(), da.day() ); |
1074 | mAddressee.setBirthday( QDateTime( da ) ); | 1084 | mAddressee.setBirthday( QDateTime( da ) ); |
1075 | //qDebug("bday %s ",da.toString().latin1()); | 1085 | //qDebug("bday %s ",da.toString().latin1()); |
1076 | } | 1086 | } |
1077 | else { | 1087 | else { |
1078 | mAddressee.setBirthday( QDateTime() ); | 1088 | mAddressee.setBirthday( QDateTime() ); |
1079 | mBirthdayPicker->clear(); | 1089 | mBirthdayPicker->clear(); |
1080 | } | 1090 | } |
1081 | mAddressee.setNickName( mNicknameEdit->text() ); | 1091 | mAddressee.setNickName( mNicknameEdit->text() ); |
1082 | mAddressee.setCategories( QStringList::split( ",", mCategoryEdit->text() ) ); | 1092 | mAddressee.setCategories( QStringList::split( ",", mCategoryEdit->text() ) ); |
1083 | 1093 | ||
1084 | mAddressee.setGeo( mGeoWidget->geo() ); | 1094 | mAddressee.setGeo( mGeoWidget->geo() ); |
1085 | mAddressee.setPhoto( mImageWidget->photo() ); | 1095 | mAddressee.setPhoto( mImageWidget->photo() ); |
1086 | mAddressee.setLogo( mImageWidget->logo() ); | 1096 | mAddressee.setLogo( mImageWidget->logo() ); |
1087 | mAddressee.setKeys( mKeyWidget->keys() ); | 1097 | mAddressee.setKeys( mKeyWidget->keys() ); |
1088 | #ifndef KAB_EMBEDDED | 1098 | #ifndef KAB_EMBEDDED |
1089 | mAddressee.setSound( mSoundWidget->sound() ); | 1099 | mAddressee.setSound( mSoundWidget->sound() ); |
1090 | #else //KAB_EMBEDDED | 1100 | #else //KAB_EMBEDDED |
1091 | //US qDebug("AddresseeEditorWidget::save sound not supported"); | 1101 | //US qDebug("AddresseeEditorWidget::save sound not supported"); |
1092 | #endif //KAB_EMBEDDED | 1102 | #endif //KAB_EMBEDDED |
1093 | mAddressee.setSecrecy( mSecrecyWidget->secrecy() ); | 1103 | mAddressee.setSecrecy( mSecrecyWidget->secrecy() ); |
1094 | 1104 | ||
1095 | // save custom fields | 1105 | // save custom fields |
1096 | mAddressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", mIMAddressEdit->text() ); | 1106 | mAddressee.insertCustom( "KADDRESSBOOK", "X-IMAddress", mIMAddressEdit->text() ); |
1097 | mAddressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", mSpouseEdit->text() ); | 1107 | mAddressee.insertCustom( "KADDRESSBOOK", "X-SpousesName", mSpouseEdit->text() ); |
1098 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Children", mChildEdit->text() ); | 1108 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Children", mChildEdit->text() ); |
1099 | mAddressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", mManagerEdit->text() ); | 1109 | mAddressee.insertCustom( "KADDRESSBOOK", "X-ManagersName", mManagerEdit->text() ); |
1100 | mAddressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", mAssistantEdit->text() ); | 1110 | mAddressee.insertCustom( "KADDRESSBOOK", "X-AssistantsName", mAssistantEdit->text() ); |
1101 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Department", mDepartmentEdit->text() ); | 1111 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Department", mDepartmentEdit->text() ); |
1102 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Office", mOfficeEdit->text() ); | 1112 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Office", mOfficeEdit->text() ); |
1103 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Profession", mProfessionEdit->text() ); | 1113 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Profession", mProfessionEdit->text() ); |
1104 | if ( mAnniversaryPicker->inputIsValid() ) { | 1114 | if ( mAnniversaryPicker->inputIsValid() ) { |
1105 | QString dt = KGlobal::locale()->formatDate(mAnniversaryPicker->date(), true, KLocale::ISODate); | 1115 | QString dt = KGlobal::locale()->formatDate(mAnniversaryPicker->date(), true, KLocale::ISODate); |
1106 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); | 1116 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Anniversary", dt); |
1107 | } | 1117 | } |
1108 | else { | 1118 | else { |
1109 | mAddressee.removeCustom( "KADDRESSBOOK", "X-Anniversary" ); | 1119 | mAddressee.removeCustom( "KADDRESSBOOK", "X-Anniversary" ); |
1110 | mAnniversaryPicker->clear(); | 1120 | mAnniversaryPicker->clear(); |
1111 | } | 1121 | } |
1112 | int gen = mGenderBox->currentItem (); | 1122 | int gen = mGenderBox->currentItem (); |
1113 | if ( gen == 1 ) | 1123 | if ( gen == 1 ) |
1114 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "female"); | 1124 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "female"); |
1115 | else if ( gen == 2 ) | 1125 | else if ( gen == 2 ) |
1116 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "male"); | 1126 | mAddressee.insertCustom( "KADDRESSBOOK", "X-Gender", "male"); |
1117 | else | 1127 | else |
1118 | mAddressee.removeCustom( "KADDRESSBOOK", "X-Gender" ); | 1128 | mAddressee.removeCustom( "KADDRESSBOOK", "X-Gender" ); |
1119 | 1129 | ||
1120 | // Save the email addresses | 1130 | // Save the email addresses |
1121 | QStringList emails = mAddressee.emails(); | 1131 | QStringList emails = mAddressee.emails(); |
1122 | QStringList::Iterator iter; | 1132 | QStringList::Iterator iter; |
1123 | for ( iter = emails.begin(); iter != emails.end(); ++iter ) | 1133 | for ( iter = emails.begin(); iter != emails.end(); ++iter ) |
1124 | mAddressee.removeEmail( *iter ); | 1134 | mAddressee.removeEmail( *iter ); |
1125 | 1135 | ||
1126 | emails = mEmailWidget->emails(); | 1136 | emails = mEmailWidget->emails(); |
1127 | bool first = true; | 1137 | bool first = true; |
1128 | for ( iter = emails.begin(); iter != emails.end(); ++iter ) { | 1138 | for ( iter = emails.begin(); iter != emails.end(); ++iter ) { |
1129 | mAddressee.insertEmail( *iter, first ); | 1139 | mAddressee.insertEmail( *iter, first ); |
1130 | first = false; | 1140 | first = false; |
1131 | } | 1141 | } |
1132 | 1142 | ||
1133 | // Save the phone numbers | 1143 | // Save the phone numbers |
1134 | KABC::PhoneNumber::List phoneNumbers; | 1144 | KABC::PhoneNumber::List phoneNumbers; |
1135 | KABC::PhoneNumber::List::Iterator phoneIter; | 1145 | KABC::PhoneNumber::List::Iterator phoneIter; |
1136 | phoneNumbers = mAddressee.phoneNumbers(); | 1146 | phoneNumbers = mAddressee.phoneNumbers(); |
1137 | for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); | 1147 | for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); |
1138 | ++phoneIter ) | 1148 | ++phoneIter ) |
1139 | mAddressee.removePhoneNumber( *phoneIter ); | 1149 | mAddressee.removePhoneNumber( *phoneIter ); |
1140 | 1150 | ||
1141 | phoneNumbers = mPhoneEditWidget->phoneNumbers(); | 1151 | phoneNumbers = mPhoneEditWidget->phoneNumbers(); |
1142 | for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); | 1152 | for ( phoneIter = phoneNumbers.begin(); phoneIter != phoneNumbers.end(); |
1143 | ++phoneIter ) | 1153 | ++phoneIter ) |
1144 | mAddressee.insertPhoneNumber( *phoneIter ); | 1154 | mAddressee.insertPhoneNumber( *phoneIter ); |
1145 | 1155 | ||
1146 | // Save the addresses | 1156 | // Save the addresses |
1147 | KABC::Address::List addresses; | 1157 | KABC::Address::List addresses; |
1148 | KABC::Address::List::Iterator addressIter; | 1158 | KABC::Address::List::Iterator addressIter; |
1149 | addresses = mAddressee.addresses(); | 1159 | addresses = mAddressee.addresses(); |
1150 | for ( addressIter = addresses.begin(); addressIter != addresses.end(); | 1160 | for ( addressIter = addresses.begin(); addressIter != addresses.end(); |
1151 | ++addressIter ) | 1161 | ++addressIter ) |
1152 | mAddressee.removeAddress( *addressIter ); | 1162 | mAddressee.removeAddress( *addressIter ); |
1153 | 1163 | ||
1154 | addresses = mAddressEditWidget->addresses(); | 1164 | addresses = mAddressEditWidget->addresses(); |
1155 | for ( addressIter = addresses.begin(); addressIter != addresses.end(); | 1165 | for ( addressIter = addresses.begin(); addressIter != addresses.end(); |
1156 | ++addressIter ) | 1166 | ++addressIter ) |
1157 | mAddressee.insertAddress( *addressIter ); | 1167 | mAddressee.insertAddress( *addressIter ); |
1158 | mDirty = false; | 1168 | mDirty = false; |
1159 | } | 1169 | } |
1160 | 1170 | ||
1161 | bool AddresseeEditorWidget::dirty() | 1171 | bool AddresseeEditorWidget::dirty() |
1162 | { | 1172 | { |
1163 | 1173 | ||
1164 | if ( ! mDirty ) { | 1174 | if ( ! mDirty ) { |
1165 | if ( mBirthdayPicker->inputIsValid() ) { | 1175 | if ( mBirthdayPicker->inputIsValid() ) { |
1166 | QDate da = mBirthdayPicker->date(); | 1176 | QDate da = mBirthdayPicker->date(); |
1167 | if ( !(da == mAddressee.birthday().date())) | 1177 | if ( !(da == mAddressee.birthday().date())) |
1168 | mDirty = true; | 1178 | mDirty = true; |
1169 | } | 1179 | } |
1170 | else { | 1180 | else { |
1171 | mBirthdayPicker->clear(); | 1181 | mBirthdayPicker->clear(); |
1172 | } | 1182 | } |
1173 | if ( mAnniversaryPicker->inputIsValid() ) { | 1183 | if ( mAnniversaryPicker->inputIsValid() ) { |
1174 | QDate da = mAnniversaryPicker->date(); | 1184 | QDate da = mAnniversaryPicker->date(); |
1175 | if ( da != KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), | 1185 | if ( da != KGlobal::locale()->readDate( mAddressee.custom("KADDRESSBOOK", "X-Anniversary" ), |
1176 | "%Y-%m-%d")) | 1186 | "%Y-%m-%d")) |
1177 | mDirty = true; | 1187 | mDirty = true; |
1178 | } | 1188 | } |
1179 | else { | 1189 | else { |
1180 | mAnniversaryPicker->clear(); | 1190 | mAnniversaryPicker->clear(); |
1181 | } | 1191 | } |
1182 | } | 1192 | } |
1183 | return mDirty; | 1193 | return mDirty; |
1184 | } | 1194 | } |
1185 | 1195 | ||
1186 | void AddresseeEditorWidget::nameTextChanged( const QString &text ) | 1196 | void AddresseeEditorWidget::nameTextChanged( const QString &text ) |
1187 | { | 1197 | { |
1188 | if ( mBlockSignals ) | 1198 | if ( mBlockSignals ) |
1189 | return; | 1199 | return; |
1190 | // use the addressee class to parse the name for us | 1200 | // use the addressee class to parse the name for us |
1191 | mAConfig->setUid( mAddressee.uid() ); | 1201 | mAConfig->setUid( mAddressee.uid() ); |
1192 | if ( mAConfig->automaticNameParsing() ) { | 1202 | if ( mAConfig->automaticNameParsing() ) { |
1193 | if ( !mAddressee.formattedName().isEmpty() ) { | 1203 | if ( !mAddressee.formattedName().isEmpty() ) { |
1194 | QString fn = mAddressee.formattedName(); | 1204 | QString fn = mAddressee.formattedName(); |
1195 | mAddressee.setNameFromString( text ); | 1205 | mAddressee.setNameFromString( text ); |
1196 | mAddressee.setFormattedName( fn ); | 1206 | mAddressee.setFormattedName( fn ); |
1197 | } else { | 1207 | } else { |
1198 | // use extra addressee to avoid a formatted name assignment | 1208 | // use extra addressee to avoid a formatted name assignment |
1199 | Addressee addr; | 1209 | Addressee addr; |
1200 | addr.setNameFromString( text ); | 1210 | addr.setNameFromString( text ); |
1201 | mAddressee.setPrefix( addr.prefix() ); | 1211 | mAddressee.setPrefix( addr.prefix() ); |
1202 | mAddressee.setGivenName( addr.givenName() ); | 1212 | mAddressee.setGivenName( addr.givenName() ); |
1203 | mAddressee.setAdditionalName( addr.additionalName() ); | 1213 | mAddressee.setAdditionalName( addr.additionalName() ); |
1204 | mAddressee.setFamilyName( addr.familyName() ); | 1214 | mAddressee.setFamilyName( addr.familyName() ); |
1205 | mAddressee.setSuffix( addr.suffix() ); | 1215 | mAddressee.setSuffix( addr.suffix() ); |
1206 | } | 1216 | } |
1207 | } | 1217 | } |
1208 | |||
1209 | nameBoxChanged(); | 1218 | nameBoxChanged(); |
1210 | 1219 | ||
1220 | |||
1211 | emitModified(); | 1221 | emitModified(); |
1212 | } | 1222 | } |
1213 | 1223 | ||
1214 | void AddresseeEditorWidget::nameBoxChanged() | 1224 | void AddresseeEditorWidget::nameBoxChanged() |
1215 | { | 1225 | { |
1216 | KABC::Addressee addr; | 1226 | KABC::Addressee addr; |
1217 | mAConfig->setUid( mAddressee.uid() ); | 1227 | mAConfig->setUid( mAddressee.uid() ); |
1218 | if ( mAConfig->automaticNameParsing() ) { | 1228 | if ( mAConfig->automaticNameParsing() ) { |
1219 | addr.setNameFromString( mNameEdit->text() ); | 1229 | addr.setNameFromString( mNameEdit->text() ); |
1220 | mNameLabel->hide(); | 1230 | mNameLabel->hide(); |
1221 | mNameEdit->show(); | 1231 | mNameEdit->show(); |
1222 | } else { | 1232 | } else { |
1223 | addr = mAddressee; | 1233 | addr = mAddressee; |
1224 | mNameEdit->hide(); | 1234 | mNameEdit->hide(); |
1225 | mNameLabel->setText( mNameEdit->text() ); | 1235 | mNameLabel->setText( mNameEdit->text() ); |
1226 | mNameLabel->show(); | 1236 | mNameLabel->show(); |
1227 | } | 1237 | } |
1228 | 1238 | ||
1229 | if ( mFormattedNameType != NameEditDialog::CustomName ) { | 1239 | if ( mFormattedNameType != NameEditDialog::CustomName ) { |
1230 | mFormattedNameLabel->setText( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); | 1240 | mFormattedNameLabel->setText( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); |
1231 | mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); | 1241 | mAddressee.setFormattedName( NameEditDialog::formattedName( mAddressee, mFormattedNameType ) ); |
1232 | } | 1242 | } |
1233 | } | 1243 | } |
1234 | 1244 | ||
1235 | void AddresseeEditorWidget::nameButtonClicked() | 1245 | void AddresseeEditorWidget::nameButtonClicked() |
1236 | { | 1246 | { |
1237 | // show the name dialog. | 1247 | // show the name dialog. |
1238 | NameEditDialog dialog( mAddressee, mFormattedNameType, this ); | 1248 | NameEditDialog dialog( mAddressee, mFormattedNameType, this ); |
1239 | 1249 | ||
1240 | if ( KApplication::execDialog( &dialog) ) { | 1250 | if ( KApplication::execDialog( &dialog) ) { |
1241 | if ( dialog.changed() ) { | 1251 | if ( dialog.changed() ) { |
1242 | mAddressee.setFamilyName( dialog.familyName() ); | 1252 | mAddressee.setFamilyName( dialog.familyName() ); |
1243 | mAddressee.setGivenName( dialog.givenName() ); | 1253 | mAddressee.setGivenName( dialog.givenName() ); |
1244 | mAddressee.setPrefix( dialog.prefix() ); | 1254 | mAddressee.setPrefix( dialog.prefix() ); |
1245 | mAddressee.setSuffix( dialog.suffix() ); | 1255 | mAddressee.setSuffix( dialog.suffix() ); |
1246 | mAddressee.setAdditionalName( dialog.additionalName() ); | 1256 | mAddressee.setAdditionalName( dialog.additionalName() ); |
1247 | mFormattedNameType = dialog.formattedNameType(); | 1257 | mFormattedNameType = dialog.formattedNameType(); |
1248 | if ( mFormattedNameType == NameEditDialog::CustomName ) { | 1258 | if ( mFormattedNameType == NameEditDialog::CustomName ) { |
1249 | mFormattedNameLabel->setText( dialog.customFormattedName() ); | 1259 | mFormattedNameLabel->setText( dialog.customFormattedName() ); |
1250 | mAddressee.setFormattedName( dialog.customFormattedName() ); | 1260 | mAddressee.setFormattedName( dialog.customFormattedName() ); |
1251 | } | 1261 | } |
1252 | // Update the name edit. | 1262 | // Update the name edit. |
1253 | bool block = mNameEdit->signalsBlocked(); | 1263 | bool block = mNameEdit->signalsBlocked(); |
1254 | mNameEdit->blockSignals( true ); | 1264 | mNameEdit->blockSignals( true ); |
1255 | mNameEdit->setText( mAddressee.assembledName() ); | 1265 | mNameEdit->setText( mAddressee.assembledName() ); |
1256 | mNameEdit->blockSignals( block ); | 1266 | mNameEdit->blockSignals( block ); |
1257 | 1267 | ||
1258 | // Update the combo box. | 1268 | // Update the combo box. |
1259 | nameBoxChanged(); | 1269 | nameBoxChanged(); |
1260 | 1270 | ||
1261 | emitModified(); | 1271 | emitModified(); |
1262 | } | 1272 | } |
1263 | } | 1273 | } |
1264 | } | 1274 | } |
1265 | 1275 | ||
1266 | void AddresseeEditorWidget::categoryButtonClicked() | 1276 | void AddresseeEditorWidget::categoryButtonClicked() |
1267 | { | 1277 | { |
1268 | // Show the category dialog | 1278 | // Show the category dialog |
1269 | if ( mCategoryDialog == 0 ) { | 1279 | if ( mCategoryDialog == 0 ) { |
1270 | mCategoryDialog = new KPIM::CategorySelectDialog( KABPrefs::instance(), this ); | 1280 | mCategoryDialog = new KPIM::CategorySelectDialog( KABPrefs::instance(), this ); |
1271 | connect( mCategoryDialog, SIGNAL( categoriesSelected( const QStringList& ) ), | 1281 | connect( mCategoryDialog, SIGNAL( categoriesSelected( const QStringList& ) ), |
1272 | SLOT(categoriesSelected( const QStringList& ) ) ); | 1282 | SLOT(categoriesSelected( const QStringList& ) ) ); |
1273 | connect( mCategoryDialog, SIGNAL( editCategories() ), SLOT( editCategories() ) ); | 1283 | connect( mCategoryDialog, SIGNAL( editCategories() ), SLOT( editCategories() ) ); |
1274 | } | 1284 | } |
1275 | 1285 | ||
1276 | mCategoryDialog->setCategories(); | 1286 | mCategoryDialog->setCategories(); |
1277 | mCategoryDialog->setSelected( QStringList::split( ",", mCategoryEdit->text() ) ); | 1287 | mCategoryDialog->setSelected( QStringList::split( ",", mCategoryEdit->text() ) ); |
1278 | mCategoryDialog->show(); | 1288 | mCategoryDialog->show(); |
1279 | mCategoryDialog->raise(); | 1289 | mCategoryDialog->raise(); |
1280 | } | 1290 | } |
1281 | 1291 | ||
1282 | void AddresseeEditorWidget::categoriesSelected( const QStringList &list ) | 1292 | void AddresseeEditorWidget::categoriesSelected( const QStringList &list ) |
1283 | { | 1293 | { |
1284 | mCategoryEdit->setText( list.join( "," ) ); | 1294 | mCategoryEdit->setText( list.join( "," ) ); |
1285 | } | 1295 | } |
1286 | 1296 | ||
1287 | void AddresseeEditorWidget::editCategories() | 1297 | void AddresseeEditorWidget::editCategories() |
1288 | { | 1298 | { |
1289 | if ( mCategoryEditDialog == 0 ) { | 1299 | if ( mCategoryEditDialog == 0 ) { |
1290 | mCategoryEditDialog = new KPIM::CategoryEditDialog( KABPrefs::instance(), this ); | 1300 | mCategoryEditDialog = new KPIM::CategoryEditDialog( KABPrefs::instance(), this ); |
1291 | connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ), | 1301 | connect( mCategoryEditDialog, SIGNAL( categoryConfigChanged() ), |
1292 | SLOT( categoryButtonClicked() ) ); | 1302 | SLOT( categoryButtonClicked() ) ); |
1293 | } | 1303 | } |
1294 | 1304 | ||
1295 | mCategoryEditDialog->show(); | 1305 | mCategoryEditDialog->show(); |
1296 | mCategoryEditDialog->raise(); | 1306 | mCategoryEditDialog->raise(); |
1297 | } | 1307 | } |
1298 | 1308 | ||
1299 | void AddresseeEditorWidget::emitModified() | 1309 | void AddresseeEditorWidget::emitModified() |
1300 | { | 1310 | { |
1301 | mDirty = true; | 1311 | mDirty = true; |
1302 | 1312 | ||
1303 | KABC::Addressee::List list; | 1313 | KABC::Addressee::List list; |
1304 | 1314 | ||
1305 | if ( mIsExtension && !mBlockSignals ) { | 1315 | if ( mIsExtension && !mBlockSignals ) { |
1306 | save(); | 1316 | save(); |
1307 | list.append( mAddressee ); | 1317 | list.append( mAddressee ); |
1308 | } | 1318 | } |
1309 | 1319 | ||
1310 | emit modified( list ); | 1320 | emit modified( list ); |
1311 | } | 1321 | } |
1312 | 1322 | ||
1313 | void AddresseeEditorWidget::dateChanged( QDate ) | 1323 | void AddresseeEditorWidget::dateChanged( QDate ) |
1314 | { | 1324 | { |
1315 | emitModified(); | 1325 | emitModified(); |
1316 | } | 1326 | } |
1317 | 1327 | ||
1318 | //US invalid dates are handdled by the KDateEdit widget itself | 1328 | //US invalid dates are handdled by the KDateEdit widget itself |
1319 | void AddresseeEditorWidget::invalidDate() | 1329 | void AddresseeEditorWidget::invalidDate() |
1320 | { | 1330 | { |
1321 | KMessageBox::sorry( this, i18n( "You must specify a valid date" ) ); | 1331 | KMessageBox::sorry( this, i18n( "You must specify a valid date" ) ); |
1322 | } | 1332 | } |
1323 | 1333 | ||
1324 | 1334 | ||
1325 | void AddresseeEditorWidget::pageChanged( QWidget *wdg ) | 1335 | void AddresseeEditorWidget::pageChanged( QWidget *wdg ) |
1326 | { | 1336 | { |
1327 | #ifndef KAB_EMBEDDED | 1337 | #ifndef KAB_EMBEDDED |
1328 | if ( wdg ) | 1338 | if ( wdg ) |
1329 | KAcceleratorManager::manage( wdg ); | 1339 | KAcceleratorManager::manage( wdg ); |
1330 | #else //KAB_EMBEDDED | 1340 | #else //KAB_EMBEDDED |
1331 | //US | 1341 | //US |
1332 | #endif //KAB_EMBEDDED | 1342 | #endif //KAB_EMBEDDED |
1333 | 1343 | ||
1334 | } | 1344 | } |
1335 | 1345 | ||
1336 | QString AddresseeEditorWidget::title() const | 1346 | QString AddresseeEditorWidget::title() const |
1337 | { | 1347 | { |
1338 | return i18n( "Contact Editor" ); | 1348 | return i18n( "Contact Editor" ); |
1339 | } | 1349 | } |
1340 | 1350 | ||
1341 | QString AddresseeEditorWidget::identifier() const | 1351 | QString AddresseeEditorWidget::identifier() const |
1342 | { | 1352 | { |
1343 | return i18n( "contact_editor" ); | 1353 | return i18n( "contact_editor" ); |
1344 | } | 1354 | } |
1345 | 1355 | ||
1346 | #ifndef KAB_EMBEDDED | 1356 | #ifndef KAB_EMBEDDED |
1347 | #include "addresseeeditorwidget.moc" | 1357 | #include "addresseeeditorwidget.moc" |
1348 | #endif //KAB_EMBEDDED | 1358 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/imagewidget.cpp b/kaddressbook/imagewidget.cpp index 48370e3..9ee4eac 100644 --- a/kaddressbook/imagewidget.cpp +++ b/kaddressbook/imagewidget.cpp | |||
@@ -1,294 +1,312 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> | 3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> |
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 <kabc/picture.h> | 24 | #include <kabc/picture.h> |
25 | 25 | ||
26 | #ifndef KAB_EMBEDDED | 26 | #ifndef KAB_EMBEDDED |
27 | #include <kaccelmanager.h> | 27 | #include <kaccelmanager.h> |
28 | #include <kio/netaccess.h> | 28 | #include <kio/netaccess.h> |
29 | #include <kimageio.h> | 29 | #include <kimageio.h> |
30 | #endif //KAB_EMBEDDED | 30 | #endif //KAB_EMBEDDED |
31 | 31 | ||
32 | #include <kdebug.h> | 32 | #include <kdebug.h> |
33 | #include <kdialog.h> | 33 | #include <kdialog.h> |
34 | #include <kiconloader.h> | 34 | #include <kiconloader.h> |
35 | #include <klocale.h> | 35 | #include <klocale.h> |
36 | #include <kurlrequester.h> | 36 | #include <kurlrequester.h> |
37 | #include <kurl.h> | 37 | #include <kurl.h> |
38 | 38 | ||
39 | #include <qcheckbox.h> | 39 | #include <qcheckbox.h> |
40 | #include <qgroupbox.h> | 40 | #include <qgroupbox.h> |
41 | #include <qlabel.h> | 41 | #include <qlabel.h> |
42 | #include <qlayout.h> | 42 | #include <qlayout.h> |
43 | #include <qpixmap.h> | 43 | #include <qpixmap.h> |
44 | #include <qpushbutton.h> | ||
44 | #include <qapplication.h> | 45 | #include <qapplication.h> |
45 | 46 | ||
46 | #include "imagewidget.h" | 47 | #include "imagewidget.h" |
47 | 48 | ||
48 | ImageWidget::ImageWidget( QWidget *parent, const char *name ) | 49 | ImageWidget::ImageWidget( QWidget *parent, const char *name ) |
49 | : QWidget( parent, name ) | 50 | : QWidget( parent, name ) |
50 | { | 51 | { |
51 | QGridLayout *topLayout = new QGridLayout( this, 2, 1, KDialog::marginHint(), | 52 | QGridLayout *topLayout = new QGridLayout( this, 2, 1, KDialog::marginHint(), |
52 | KDialog::spacingHint() ); | 53 | KDialog::spacingHint() ); |
53 | 54 | ||
54 | QGroupBox *photoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Photo" ), this ); | 55 | QGroupBox *photoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Photo" ), this ); |
55 | QGridLayout *boxLayout = new QGridLayout( photoBox->layout(), 3, 2, | 56 | QGridLayout *boxLayout = new QGridLayout( photoBox->layout(), 4, 2, |
56 | KDialog::spacingHint() ); | 57 | KDialog::spacingHint() ); |
57 | boxLayout->setRowStretch( 2, 1 ); | 58 | boxLayout->setRowStretch( 2, 1 ); |
58 | 59 | ||
59 | mPhotoLabel = new QLabel( photoBox ); | 60 | mPhotoLabel = new QLabel( photoBox ); |
60 | int fac = 9; | 61 | int fac = 9; |
61 | if ( QApplication::desktop()->width() > 320 ) | 62 | if ( QApplication::desktop()->width() > 320 ) |
62 | fac = 6; | 63 | fac = 6; |
63 | mPhotoLabel->setFixedSize( 50*9/fac, 70*9/fac ); | 64 | mPhotoLabel->setFixedSize( 50*9/fac, 70*9/fac ); |
64 | mPhotoLabel->setScaledContents( true ); | 65 | mPhotoLabel->setScaledContents( true ); |
65 | mPhotoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 66 | mPhotoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
66 | boxLayout->addMultiCellWidget( mPhotoLabel, 0, 2, 0, 0 ); | 67 | boxLayout->addMultiCellWidget( mPhotoLabel, 0, 3, 0, 0 ); |
67 | 68 | ||
68 | mPhotoUrl = new KURLRequester( photoBox ); | 69 | mPhotoUrl = new KURLRequester( photoBox ); |
69 | #ifndef KAB_EMBEDDED | 70 | #ifndef KAB_EMBEDDED |
70 | mPhotoUrl->setFilter( KImageIO::pattern() ); | 71 | mPhotoUrl->setFilter( KImageIO::pattern() ); |
71 | #else //KAB_EMBEDDED | 72 | #else //KAB_EMBEDDED |
72 | //US qDebug("ImageWidget::ImageWidget KImageIO not defined. Does this harm ???"); | 73 | //US qDebug("ImageWidget::ImageWidget KImageIO not defined. Does this harm ???"); |
73 | #endif //KAB_EMBEDDED | 74 | #endif //KAB_EMBEDDED |
74 | 75 | ||
75 | 76 | ||
76 | boxLayout->addWidget( mPhotoUrl, 0, 1 ); | 77 | boxLayout->addWidget( mPhotoUrl, 0, 1 ); |
77 | 78 | ||
78 | mUsePhotoUrl = new QCheckBox( i18n( "Store as URL" ), photoBox ); | 79 | mUsePhotoUrl = new QCheckBox( i18n( "Store as URL" ), photoBox ); |
79 | mUsePhotoUrl->setEnabled( false ); | 80 | mUsePhotoUrl->setEnabled( false ); |
80 | boxLayout->addWidget( mUsePhotoUrl, 1, 1 ); | 81 | boxLayout->addWidget( mUsePhotoUrl, 1, 1 ); |
81 | 82 | ||
83 | QPushButton * pb = new QPushButton( i18n( "Remove" ), photoBox ); | ||
84 | connect( pb, SIGNAL( clicked() ),this, SLOT( removePhoto() ) ); | ||
85 | boxLayout->addWidget( pb, 2, 1 ); | ||
86 | boxLayout->addWidget( new QLabel( photoBox ), 3, 1 ); | ||
87 | |||
82 | topLayout->addWidget( photoBox, 0, 0 ); | 88 | topLayout->addWidget( photoBox, 0, 0 ); |
83 | 89 | ||
84 | QGroupBox *logoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Logo" ), this ); | 90 | QGroupBox *logoBox = new QGroupBox( 0, Qt::Vertical, i18n( "Logo" ), this ); |
85 | boxLayout = new QGridLayout( logoBox->layout(), 3, 2, KDialog::spacingHint() ); | 91 | boxLayout = new QGridLayout( logoBox->layout(), 4, 2, KDialog::spacingHint() ); |
86 | boxLayout->setRowStretch( 2, 1 ); | 92 | boxLayout->setRowStretch( 2, 1 ); |
87 | 93 | ||
88 | mLogoLabel = new QLabel( logoBox ); | 94 | mLogoLabel = new QLabel( logoBox ); |
89 | mLogoLabel->setFixedSize( 50*9/fac, 70*9/fac ); | 95 | mLogoLabel->setFixedSize( 50*9/fac, 70*9/fac ); |
90 | mLogoLabel->setScaledContents( true ); | 96 | mLogoLabel->setScaledContents( true ); |
91 | mLogoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); | 97 | mLogoLabel->setFrameStyle( QFrame::Panel | QFrame::Sunken ); |
92 | boxLayout->addMultiCellWidget( mLogoLabel, 0, 2, 0, 0 ); | 98 | boxLayout->addMultiCellWidget( mLogoLabel, 0, 3, 0, 0 ); |
93 | 99 | ||
94 | mLogoUrl = new KURLRequester( logoBox ); | 100 | mLogoUrl = new KURLRequester( logoBox ); |
95 | #ifndef KAB_EMBEDDED | 101 | #ifndef KAB_EMBEDDED |
96 | mLogoUrl->setFilter( KImageIO::pattern() ); | 102 | mLogoUrl->setFilter( KImageIO::pattern() ); |
97 | #else //KAB_EMBEDDED | 103 | #else //KAB_EMBEDDED |
98 | //US qDebug("ImageWidget::ImageWidget KImageIO not defined 2"); | 104 | //US qDebug("ImageWidget::ImageWidget KImageIO not defined 2"); |
99 | #endif //KAB_EMBEDDED | 105 | #endif //KAB_EMBEDDED |
100 | boxLayout->addWidget( mLogoUrl, 0, 1 ); | 106 | boxLayout->addWidget( mLogoUrl, 0, 1 ); |
101 | 107 | ||
102 | mUseLogoUrl = new QCheckBox( i18n( "Store as URL" ), logoBox ); | 108 | mUseLogoUrl = new QCheckBox( i18n( "Store as URL" ), logoBox ); |
103 | mUseLogoUrl->setEnabled( false ); | 109 | mUseLogoUrl->setEnabled( false ); |
104 | boxLayout->addWidget( mUseLogoUrl, 1, 1 ); | 110 | boxLayout->addWidget( mUseLogoUrl, 1, 1 ); |
105 | 111 | ||
112 | pb = new QPushButton( i18n( "Remove" ), logoBox ); | ||
113 | connect( pb, SIGNAL( clicked() ),this, SLOT( removeLogo() ) ); | ||
114 | boxLayout->addWidget( pb, 2, 1 ); | ||
115 | boxLayout->addWidget( new QLabel( logoBox ), 3, 1 ); | ||
106 | topLayout->addWidget( logoBox, 1, 0 ); | 116 | topLayout->addWidget( logoBox, 1, 0 ); |
107 | 117 | ||
108 | connect( mPhotoUrl, SIGNAL( textChanged( const QString& ) ), | 118 | connect( mPhotoUrl, SIGNAL( textChanged( const QString& ) ), |
109 | SIGNAL( changed() ) ); | 119 | SIGNAL( changed() ) ); |
110 | connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), | 120 | connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), |
111 | SLOT( loadPhoto() ) ); | 121 | SLOT( loadPhoto() ) ); |
112 | connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), | 122 | connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), |
113 | SIGNAL( changed() ) ); | 123 | SIGNAL( changed() ) ); |
114 | connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), | 124 | connect( mPhotoUrl, SIGNAL( urlSelected( const QString& ) ), |
115 | SLOT( updateGUI() ) ); | 125 | SLOT( updateGUI() ) ); |
116 | connect( mUsePhotoUrl, SIGNAL( toggled( bool ) ), | 126 | connect( mUsePhotoUrl, SIGNAL( toggled( bool ) ), |
117 | SIGNAL( changed() ) ); | 127 | SIGNAL( changed() ) ); |
118 | 128 | ||
119 | connect( mLogoUrl, SIGNAL( textChanged( const QString& ) ), | 129 | connect( mLogoUrl, SIGNAL( textChanged( const QString& ) ), |
120 | SIGNAL( changed() ) ); | 130 | SIGNAL( changed() ) ); |
121 | connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), | 131 | connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), |
122 | SLOT( loadLogo() ) ); | 132 | SLOT( loadLogo() ) ); |
123 | connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), | 133 | connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), |
124 | SIGNAL( changed() ) ); | 134 | SIGNAL( changed() ) ); |
125 | connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), | 135 | connect( mLogoUrl, SIGNAL( urlSelected( const QString& ) ), |
126 | SLOT( updateGUI() ) ); | 136 | SLOT( updateGUI() ) ); |
127 | connect( mUseLogoUrl, SIGNAL( toggled( bool ) ), | 137 | connect( mUseLogoUrl, SIGNAL( toggled( bool ) ), |
128 | SIGNAL( changed() ) ); | 138 | SIGNAL( changed() ) ); |
129 | 139 | ||
130 | #ifndef KAB_EMBEDDED | 140 | #ifndef KAB_EMBEDDED |
131 | KAcceleratorManager::manage( this ); | 141 | KAcceleratorManager::manage( this ); |
132 | #endif //KAB_EMBEDDED | 142 | #endif //KAB_EMBEDDED |
133 | 143 | ||
134 | } | 144 | } |
135 | 145 | ||
136 | ImageWidget::~ImageWidget() | 146 | ImageWidget::~ImageWidget() |
137 | { | 147 | { |
138 | } | 148 | } |
139 | 149 | ||
140 | void ImageWidget::setPhoto( const KABC::Picture &photo ) | 150 | void ImageWidget::setPhoto( const KABC::Picture &photo ) |
141 | { | 151 | { |
142 | bool blocked = signalsBlocked(); | 152 | bool blocked = signalsBlocked(); |
143 | blockSignals( true ); | 153 | blockSignals( true ); |
144 | 154 | ||
145 | if ( photo.isIntern() ) { | 155 | if ( photo.isIntern() ) { |
146 | //US | 156 | //US |
147 | //US mPhotoLabel->setPixmap( photo.data() ); | 157 | //US mPhotoLabel->setPixmap( photo.data() ); |
148 | if (photo.data().isNull() != true) | 158 | if (photo.data().isNull() != true) |
149 | { | 159 | { |
150 | QPixmap pm; | 160 | QPixmap pm; |
151 | pm.convertFromImage(photo.data()); | 161 | pm.convertFromImage(photo.data()); |
152 | 162 | ||
153 | mPhotoLabel->setPixmap( pm ); | 163 | mPhotoLabel->setPixmap( pm ); |
154 | } | 164 | } |
155 | 165 | ||
156 | mUsePhotoUrl->setChecked( false ); | 166 | mUsePhotoUrl->setChecked( false ); |
157 | } else { | 167 | } else { |
158 | mPhotoUrl->setURL( photo.url() ); | 168 | mPhotoUrl->setURL( photo.url() ); |
159 | if ( !photo.url().isEmpty() ) | 169 | if ( !photo.url().isEmpty() ) |
160 | mUsePhotoUrl->setChecked( true ); | 170 | mUsePhotoUrl->setChecked( true ); |
161 | loadPhoto(); | 171 | loadPhoto(); |
162 | } | 172 | } |
163 | 173 | ||
164 | blockSignals( blocked ); | 174 | blockSignals( blocked ); |
165 | } | 175 | } |
166 | 176 | ||
167 | KABC::Picture ImageWidget::photo() const | 177 | KABC::Picture ImageWidget::photo() const |
168 | { | 178 | { |
169 | KABC::Picture photo; | 179 | KABC::Picture photo; |
170 | 180 | ||
171 | if ( mUsePhotoUrl->isChecked() ) | 181 | if ( mUsePhotoUrl->isChecked() ) |
172 | photo.setUrl( mPhotoUrl->url() ); | 182 | photo.setUrl( mPhotoUrl->url() ); |
173 | else { | 183 | else { |
174 | QPixmap *px = mPhotoLabel->pixmap(); | 184 | QPixmap *px = mPhotoLabel->pixmap(); |
175 | if ( px ) { | 185 | if ( px ) { |
176 | #ifndef KAB_EMBEDDED | 186 | #ifndef KAB_EMBEDDED |
177 | if ( px->height() > px->width() ) | 187 | if ( px->height() > px->width() ) |
178 | photo.setData( px->convertToImage().scaleHeight( 140 ) ); | 188 | photo.setData( px->convertToImage().scaleHeight( 140 ) ); |
179 | else | 189 | else |
180 | photo.setData( px->convertToImage().scaleWidth( 100 ) ); | 190 | photo.setData( px->convertToImage().scaleWidth( 100 ) ); |
181 | #else //KAB_EMBEDDED | 191 | #else //KAB_EMBEDDED |
182 | //US add teh nullcheck | 192 | //US add teh nullcheck |
183 | if (px->isNull() != true ) | 193 | if (px->isNull() != true ) |
184 | photo.setData( px->convertToImage() ); | 194 | photo.setData( px->convertToImage() ); |
185 | #endif //KAB_EMBEDDED | 195 | #endif //KAB_EMBEDDED |
186 | 196 | ||
187 | photo.setType( "PNG" ); | 197 | photo.setType( "PNG" ); |
188 | } | 198 | } |
189 | } | 199 | } |
190 | 200 | ||
191 | return photo; | 201 | return photo; |
192 | } | 202 | } |
193 | 203 | ||
194 | void ImageWidget::setLogo( const KABC::Picture &logo ) | 204 | void ImageWidget::setLogo( const KABC::Picture &logo ) |
195 | { | 205 | { |
196 | bool blocked = signalsBlocked(); | 206 | bool blocked = signalsBlocked(); |
197 | blockSignals( true ); | 207 | blockSignals( true ); |
198 | 208 | ||
199 | if ( logo.isIntern() ) { | 209 | if ( logo.isIntern() ) { |
200 | //US | 210 | //US |
201 | //US mLogoLabel->setPixmap( logo.data() ); | 211 | //US mLogoLabel->setPixmap( logo.data() ); |
202 | if (logo.data().isNull() != true) | 212 | if (logo.data().isNull() != true) |
203 | { | 213 | { |
204 | QPixmap pm; | 214 | QPixmap pm; |
205 | pm.convertFromImage(logo.data()); | 215 | pm.convertFromImage(logo.data()); |
206 | mLogoLabel->setPixmap( pm ); | 216 | mLogoLabel->setPixmap( pm ); |
207 | } | 217 | } |
208 | mUseLogoUrl->setChecked( false ); | 218 | mUseLogoUrl->setChecked( false ); |
209 | } else { | 219 | } else { |
210 | mLogoUrl->setURL( logo.url() ); | 220 | mLogoUrl->setURL( logo.url() ); |
211 | if ( !logo.url().isEmpty() ) | 221 | if ( !logo.url().isEmpty() ) |
212 | mUseLogoUrl->setChecked( true ); | 222 | mUseLogoUrl->setChecked( true ); |
213 | loadLogo(); | 223 | loadLogo(); |
214 | } | 224 | } |
215 | 225 | ||
216 | blockSignals( blocked ); | 226 | blockSignals( blocked ); |
217 | } | 227 | } |
218 | 228 | ||
219 | KABC::Picture ImageWidget::logo() const | 229 | KABC::Picture ImageWidget::logo() const |
220 | { | 230 | { |
221 | KABC::Picture logo; | 231 | KABC::Picture logo; |
222 | 232 | ||
223 | if ( mUseLogoUrl->isChecked() ) | 233 | if ( mUseLogoUrl->isChecked() ) |
224 | logo.setUrl( mLogoUrl->url() ); | 234 | logo.setUrl( mLogoUrl->url() ); |
225 | else { | 235 | else { |
226 | QPixmap *px = mLogoLabel->pixmap(); | 236 | QPixmap *px = mLogoLabel->pixmap(); |
227 | if ( px ) { | 237 | if ( px ) { |
228 | #ifndef KAB_EMBEDDED | 238 | #ifndef KAB_EMBEDDED |
229 | if ( px->height() > px->width() ) | 239 | if ( px->height() > px->width() ) |
230 | logo.setData( px->convertToImage().scaleHeight( 140 ) ); | 240 | logo.setData( px->convertToImage().scaleHeight( 140 ) ); |
231 | else | 241 | else |
232 | logo.setData( px->convertToImage().scaleWidth( 100 ) ); | 242 | logo.setData( px->convertToImage().scaleWidth( 100 ) ); |
233 | #else //KAB_EMBEDDED | 243 | #else //KAB_EMBEDDED |
234 | logo.setData( px->convertToImage() ); | 244 | logo.setData( px->convertToImage() ); |
235 | #endif //KAB_EMBEDDED | 245 | #endif //KAB_EMBEDDED |
236 | 246 | ||
237 | logo.setType( "PNG" ); | 247 | logo.setType( "PNG" ); |
238 | 248 | ||
239 | } | 249 | } |
240 | } | 250 | } |
241 | |||
242 | return logo; | 251 | return logo; |
243 | } | 252 | } |
253 | void ImageWidget::removePhoto() | ||
254 | { | ||
255 | setPhoto(KABC::Picture() ); | ||
256 | } | ||
257 | |||
258 | void ImageWidget::removeLogo() | ||
259 | { | ||
260 | setLogo(KABC::Picture() ); | ||
261 | } | ||
244 | 262 | ||
245 | void ImageWidget::loadPhoto() | 263 | void ImageWidget::loadPhoto() |
246 | { | 264 | { |
247 | mPhotoLabel->setPixmap( loadPixmap( mPhotoUrl->url() ) ); | 265 | mPhotoLabel->setPixmap( loadPixmap( mPhotoUrl->url() ) ); |
248 | } | 266 | } |
249 | 267 | ||
250 | void ImageWidget::loadLogo() | 268 | void ImageWidget::loadLogo() |
251 | { | 269 | { |
252 | mLogoLabel->setPixmap( loadPixmap( mLogoUrl->url() ) ); | 270 | mLogoLabel->setPixmap( loadPixmap( mLogoUrl->url() ) ); |
253 | } | 271 | } |
254 | 272 | ||
255 | void ImageWidget::updateGUI() | 273 | void ImageWidget::updateGUI() |
256 | { | 274 | { |
257 | KURLRequester *ptr = (KURLRequester*)sender(); | 275 | KURLRequester *ptr = (KURLRequester*)sender(); |
258 | 276 | ||
259 | 277 | ||
260 | if ( ptr == mPhotoUrl ) | 278 | if ( ptr == mPhotoUrl ) |
261 | mUsePhotoUrl->setEnabled( true ); | 279 | mUsePhotoUrl->setEnabled( true ); |
262 | else if ( ptr == mLogoUrl ) | 280 | else if ( ptr == mLogoUrl ) |
263 | mUseLogoUrl->setEnabled( true ); | 281 | mUseLogoUrl->setEnabled( true ); |
264 | } | 282 | } |
265 | 283 | ||
266 | QPixmap ImageWidget::loadPixmap( const KURL &url ) | 284 | QPixmap ImageWidget::loadPixmap( const KURL &url ) |
267 | { | 285 | { |
268 | QString tempFile; | 286 | QString tempFile; |
269 | QPixmap pixmap; | 287 | QPixmap pixmap; |
270 | 288 | ||
271 | if ( url.isEmpty() ) | 289 | if ( url.isEmpty() ) |
272 | return pixmap; | 290 | return pixmap; |
273 | 291 | ||
274 | if ( url.isLocalFile() ) | 292 | if ( url.isLocalFile() ) |
275 | pixmap = QPixmap( url.path() ); | 293 | pixmap = QPixmap( url.path() ); |
276 | else | 294 | else |
277 | { | 295 | { |
278 | #ifndef KAB_EMBEDDED | 296 | #ifndef KAB_EMBEDDED |
279 | if ( KIO::NetAccess::download( url, tempFile ) ) { | 297 | if ( KIO::NetAccess::download( url, tempFile ) ) { |
280 | pixmap = QPixmap( tempFile ); | 298 | pixmap = QPixmap( tempFile ); |
281 | KIO::NetAccess::removeTempFile( tempFile ); | 299 | KIO::NetAccess::removeTempFile( tempFile ); |
282 | } | 300 | } |
283 | #else //KAB_EMBEDDED | 301 | #else //KAB_EMBEDDED |
284 | qDebug("ImageWidget::loadPixmap : only local pixmaps are allowed"); | 302 | qDebug("ImageWidget::loadPixmap : only local pixmaps are allowed"); |
285 | #endif //KAB_EMBEDDED | 303 | #endif //KAB_EMBEDDED |
286 | 304 | ||
287 | } | 305 | } |
288 | 306 | ||
289 | return pixmap; | 307 | return pixmap; |
290 | } | 308 | } |
291 | 309 | ||
292 | #ifndef KAB_EMBEDDED | 310 | #ifndef KAB_EMBEDDED |
293 | #include "imagewidget.moc" | 311 | #include "imagewidget.moc" |
294 | #endif //KAB_EMBEDDED | 312 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/imagewidget.h b/kaddressbook/imagewidget.h index b3ca0bd..afb9aa7 100644 --- a/kaddressbook/imagewidget.h +++ b/kaddressbook/imagewidget.h | |||
@@ -1,86 +1,88 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> | 3 | Copyright (c) 2003 Tobias Koenig <tokoe@kde.org> |
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 IMAGEWIDGET_H | 24 | #ifndef IMAGEWIDGET_H |
25 | #define IMAGEWIDGET_H | 25 | #define IMAGEWIDGET_H |
26 | 26 | ||
27 | #include <qwidget.h> | 27 | #include <qwidget.h> |
28 | 28 | ||
29 | #include <kabc/picture.h> | 29 | #include <kabc/picture.h> |
30 | #include <kdialogbase.h> | 30 | #include <kdialogbase.h> |
31 | 31 | ||
32 | class KURL; | 32 | class KURL; |
33 | class KURLRequester; | 33 | class KURLRequester; |
34 | 34 | ||
35 | class QCheckBox; | 35 | class QCheckBox; |
36 | class QLabel; | 36 | class QLabel; |
37 | 37 | ||
38 | class ImageWidget : public QWidget | 38 | class ImageWidget : public QWidget |
39 | { | 39 | { |
40 | Q_OBJECT | 40 | Q_OBJECT |
41 | 41 | ||
42 | public: | 42 | public: |
43 | ImageWidget( QWidget *parent, const char *name = 0 ); | 43 | ImageWidget( QWidget *parent, const char *name = 0 ); |
44 | ~ImageWidget(); | 44 | ~ImageWidget(); |
45 | 45 | ||
46 | /** | 46 | /** |
47 | Sets the photo object. | 47 | Sets the photo object. |
48 | */ | 48 | */ |
49 | void setPhoto( const KABC::Picture &photo ); | 49 | void setPhoto( const KABC::Picture &photo ); |
50 | 50 | ||
51 | /** | 51 | /** |
52 | Returns a photo object. | 52 | Returns a photo object. |
53 | */ | 53 | */ |
54 | KABC::Picture photo() const; | 54 | KABC::Picture photo() const; |
55 | 55 | ||
56 | /** | 56 | /** |
57 | Sets the logo object. | 57 | Sets the logo object. |
58 | */ | 58 | */ |
59 | void setLogo( const KABC::Picture &photo ); | 59 | void setLogo( const KABC::Picture &photo ); |
60 | 60 | ||
61 | /** | 61 | /** |
62 | Returns a logo object. | 62 | Returns a logo object. |
63 | */ | 63 | */ |
64 | KABC::Picture logo() const; | 64 | KABC::Picture logo() const; |
65 | 65 | ||
66 | signals: | 66 | signals: |
67 | void changed(); | 67 | void changed(); |
68 | 68 | ||
69 | private slots: | 69 | private slots: |
70 | void loadPhoto(); | 70 | void loadPhoto(); |
71 | void loadLogo(); | 71 | void loadLogo(); |
72 | void removePhoto(); | ||
73 | void removeLogo(); | ||
72 | void updateGUI(); | 74 | void updateGUI(); |
73 | 75 | ||
74 | private: | 76 | private: |
75 | QPixmap loadPixmap( const KURL &url ); | 77 | QPixmap loadPixmap( const KURL &url ); |
76 | 78 | ||
77 | KURLRequester *mPhotoUrl; | 79 | KURLRequester *mPhotoUrl; |
78 | KURLRequester *mLogoUrl; | 80 | KURLRequester *mLogoUrl; |
79 | 81 | ||
80 | QCheckBox *mUsePhotoUrl; | 82 | QCheckBox *mUsePhotoUrl; |
81 | QCheckBox *mUseLogoUrl; | 83 | QCheckBox *mUseLogoUrl; |
82 | QLabel *mPhotoLabel; | 84 | QLabel *mPhotoLabel; |
83 | QLabel *mLogoLabel; | 85 | QLabel *mLogoLabel; |
84 | }; | 86 | }; |
85 | 87 | ||
86 | #endif | 88 | #endif |