-rw-r--r-- | kaddressbook/kaddressbookview.cpp | 4 | ||||
-rw-r--r-- | kaddressbook/kaddressbookview.h | 6 | ||||
-rw-r--r-- | kaddressbook/views/cardview.cpp | 31 | ||||
-rw-r--r-- | kaddressbook/views/cardview.h | 7 | ||||
-rw-r--r-- | kaddressbook/views/contactlistview.cpp | 29 | ||||
-rw-r--r-- | kaddressbook/views/contactlistview.h | 4 | ||||
-rw-r--r-- | kaddressbook/views/kaddressbookcardview.cpp | 4 | ||||
-rw-r--r-- | kaddressbook/views/kaddressbooktableview.cpp | 4 |
8 files changed, 83 insertions, 6 deletions
diff --git a/kaddressbook/kaddressbookview.cpp b/kaddressbook/kaddressbookview.cpp index 09859c2..86898e2 100644 --- a/kaddressbook/kaddressbookview.cpp +++ b/kaddressbook/kaddressbookview.cpp | |||
@@ -1,94 +1,94 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> | 3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #ifndef KAB_EMBEDDED | 24 | #ifndef KAB_EMBEDDED |
25 | #include <qapplication.h> | 25 | #include <qapplication.h> |
26 | 26 | ||
27 | #include <kabc/distributionlistdialog.h> | 27 | #include <kabc/distributionlistdialog.h> |
28 | #include <kconfig.h> | 28 | #include <kconfig.h> |
29 | #include <klocale.h> | 29 | #include <klocale.h> |
30 | 30 | ||
31 | #include "viewmanager.h" | 31 | #include "viewmanager.h" |
32 | 32 | ||
33 | #endif //KAB_EMBEDDED | 33 | #endif //KAB_EMBEDDED |
34 | #include <qlayout.h> | 34 | #include <qlayout.h> |
35 | 35 | ||
36 | #include <kabc/distributionlistdialog.h> | 36 | #include <kabc/distributionlistdialog.h> |
37 | #include <kabc/addressbook.h> | 37 | #include <kabc/addressbook.h> |
38 | #include <kdebug.h> | 38 | #include <kdebug.h> |
39 | 39 | ||
40 | #include "kaddressbookview.h" | 40 | #include "kaddressbookview.h" |
41 | 41 | ||
42 | KAddressBookView::KAddressBookView( KABC::AddressBook *ab, QWidget *parent, | 42 | KAddressBookView::KAddressBookView( KABC::AddressBook *ab, QWidget *parent, |
43 | const char *name ) | 43 | const char *name ) |
44 | : QWidget( parent, name ), mAddressBook( ab ), mFieldList() | 44 | : QWidget( parent, name ), mAddressBook( ab ), mFieldList() |
45 | { | 45 | { |
46 | 46 | ||
47 | initGUI(); | 47 | initGUI(); |
48 | } | 48 | } |
49 | 49 | ||
50 | KAddressBookView::~KAddressBookView() | 50 | KAddressBookView::~KAddressBookView() |
51 | { | 51 | { |
52 | 52 | ||
53 | } | 53 | } |
54 | 54 | ||
55 | QRegExp KAddressBookView::getRegExp( const QString s ) | 55 | QRegExp KAddressBookView::getRegExp( const QString s ) |
56 | { | 56 | { |
57 | QRegExp re; | 57 | QRegExp re; |
58 | 58 | ||
59 | if ( s.length() == 3 && s.mid(1,1) == "-" ) { | 59 | if ( s.length() == 3 && s.mid(1,1) == "-" ) { |
60 | QString pattern = "^[" + s.lower() +"]"; | 60 | QString pattern = "^[" + s.lower() +"]"; |
61 | re.setCaseSensitive(false); | 61 | re.setCaseSensitive(false); |
62 | re.setPattern( pattern ); | 62 | re.setPattern( pattern ); |
63 | } else { | 63 | } else { |
64 | QString pattern = s.lower()+"*"; | 64 | QString pattern = s.lower()+"*"; |
65 | re.setWildcard(true); // most people understand these better. | 65 | re.setWildcard(true); // most people understand these better. |
66 | re.setCaseSensitive(false); | 66 | re.setCaseSensitive(false); |
67 | re.setPattern( pattern ); | 67 | re.setPattern( pattern ); |
68 | } | 68 | } |
69 | return re; | 69 | return re; |
70 | } | 70 | } |
71 | 71 | ||
72 | void KAddressBookView::readConfig( KConfig *config ) | 72 | void KAddressBookView::readConfig( KConfig *config ) |
73 | { | 73 | { |
74 | mFieldList = KABC::Field::restoreFields( config, "KABCFields" ); | 74 | mFieldList = KABC::Field::restoreFields( config, "KABCFields" ); |
75 | 75 | ||
76 | if ( mFieldList.isEmpty() ) | 76 | if ( mFieldList.isEmpty() ) |
77 | mFieldList = KABC::Field::defaultFields(); | 77 | mFieldList = KABC::Field::defaultFields(); |
78 | 78 | ||
79 | mDefaultFilterType = (DefaultFilterType)config->readNumEntry( "DefaultFilterType", 1 ); | 79 | mDefaultFilterType = (DefaultFilterType)config->readNumEntry( "DefaultFilterType", 1 ); |
80 | mDefaultFilterName = config->readEntry( "DefaultFilterName", QString::null ); | 80 | mDefaultFilterName = config->readEntry( "DefaultFilterName", QString::null ); |
81 | } | 81 | } |
82 | 82 | ||
83 | void KAddressBookView::writeConfig( KConfig* ) | 83 | void KAddressBookView::writeConfig( KConfig* ) |
84 | { | 84 | { |
85 | // Most of writing the config is handled by the ConfigureViewDialog | 85 | // Most of writing the config is handled by the ConfigureViewDialog |
86 | } | 86 | } |
87 | 87 | ||
88 | QString KAddressBookView::selectedEmails() | 88 | QString KAddressBookView::selectedEmails() |
89 | { | 89 | { |
90 | bool first = true; | 90 | bool first = true; |
91 | QString emailAddrs; | 91 | QString emailAddrs; |
92 | QStringList uidList = selectedUids(); | 92 | QStringList uidList = selectedUids(); |
93 | KABC::Addressee addr; | 93 | KABC::Addressee addr; |
94 | QString email; | 94 | QString email; |
@@ -136,51 +136,53 @@ void KAddressBookView::initGUI() | |||
136 | QVBoxLayout *layout = new QVBoxLayout( this ); | 136 | QVBoxLayout *layout = new QVBoxLayout( this ); |
137 | 137 | ||
138 | // Add the view widget | 138 | // Add the view widget |
139 | mViewWidget = new QWidget( this ); | 139 | mViewWidget = new QWidget( this ); |
140 | layout->addWidget( mViewWidget ); | 140 | layout->addWidget( mViewWidget ); |
141 | } | 141 | } |
142 | 142 | ||
143 | KABC::Field::List KAddressBookView::fields() const | 143 | KABC::Field::List KAddressBookView::fields() const |
144 | { | 144 | { |
145 | return mFieldList; | 145 | return mFieldList; |
146 | } | 146 | } |
147 | KABC::Field::List KAddressBookView::allFields() const | 147 | KABC::Field::List KAddressBookView::allFields() const |
148 | { | 148 | { |
149 | return KABC::Field::allFields(); | 149 | return KABC::Field::allFields(); |
150 | } | 150 | } |
151 | 151 | ||
152 | void KAddressBookView::setFilter( const Filter &filter ) | 152 | void KAddressBookView::setFilter( const Filter &filter ) |
153 | { | 153 | { |
154 | mFilter = filter; | 154 | mFilter = filter; |
155 | } | 155 | } |
156 | 156 | ||
157 | KAddressBookView::DefaultFilterType KAddressBookView::defaultFilterType() const | 157 | KAddressBookView::DefaultFilterType KAddressBookView::defaultFilterType() const |
158 | { | 158 | { |
159 | return mDefaultFilterType; | 159 | return mDefaultFilterType; |
160 | } | 160 | } |
161 | 161 | ||
162 | const QString &KAddressBookView::defaultFilterName() const | 162 | const QString &KAddressBookView::defaultFilterName() const |
163 | { | 163 | { |
164 | return mDefaultFilterName; | 164 | return mDefaultFilterName; |
165 | } | 165 | } |
166 | 166 | ||
167 | KABC::AddressBook *KAddressBookView::addressBook() const | 167 | KABC::AddressBook *KAddressBookView::addressBook() const |
168 | { | 168 | { |
169 | return mAddressBook; | 169 | return mAddressBook; |
170 | } | 170 | } |
171 | 171 | ||
172 | QWidget *KAddressBookView::viewWidget() | 172 | QWidget *KAddressBookView::viewWidget() |
173 | { | 173 | { |
174 | return mViewWidget; | 174 | return mViewWidget; |
175 | } | 175 | } |
176 | 176 | ||
177 | ViewConfigureWidget *ViewFactory::configureWidget( KABC::AddressBook *ab, | 177 | ViewConfigureWidget *ViewFactory::configureWidget( KABC::AddressBook *ab, |
178 | QWidget *parent, | 178 | QWidget *parent, |
179 | const char *name ) | 179 | const char *name ) |
180 | { | 180 | { |
181 | return new ViewConfigureWidget( ab, parent, name ); | 181 | return new ViewConfigureWidget( ab, parent, name ); |
182 | } | 182 | } |
183 | 183 | ||
184 | |||
185 | |||
184 | #ifndef KAB_EMBEDDED | 186 | #ifndef KAB_EMBEDDED |
185 | #include "kaddressbookview.moc" | 187 | #include "kaddressbookview.moc" |
186 | #endif //KAB_EMBEDDED | 188 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/kaddressbookview.h b/kaddressbook/kaddressbookview.h index 6bbb9c2..3a3f71a 100644 --- a/kaddressbook/kaddressbookview.h +++ b/kaddressbook/kaddressbookview.h | |||
@@ -185,128 +185,130 @@ class KAddressBookView : public QWidget | |||
185 | 185 | ||
186 | signals: | 186 | signals: |
187 | 187 | ||
188 | void printView(); | 188 | void printView(); |
189 | /** | 189 | /** |
190 | This signal should be emitted by a subclass whenever an addressee | 190 | This signal should be emitted by a subclass whenever an addressee |
191 | is modified. | 191 | is modified. |
192 | */ | 192 | */ |
193 | void modified(); | 193 | void modified(); |
194 | 194 | ||
195 | /** | 195 | /** |
196 | This signal should be emitted by a subclass whenever an addressee | 196 | This signal should be emitted by a subclass whenever an addressee |
197 | is selected. Selected means that the addressee was given the focus. | 197 | is selected. Selected means that the addressee was given the focus. |
198 | Some widgets may call this 'highlighted'. The view is responsible for | 198 | Some widgets may call this 'highlighted'. The view is responsible for |
199 | emitting this signal multiple times if multiple items are selected, | 199 | emitting this signal multiple times if multiple items are selected, |
200 | with the last item selected being the last emit. | 200 | with the last item selected being the last emit. |
201 | 201 | ||
202 | @param uid The uid of the selected addressee. | 202 | @param uid The uid of the selected addressee. |
203 | 203 | ||
204 | @see KListView | 204 | @see KListView |
205 | */ | 205 | */ |
206 | void selected( const QString &uid ); | 206 | void selected( const QString &uid ); |
207 | void deleteRequest(); | 207 | void deleteRequest(); |
208 | /** | 208 | /** |
209 | This signal should be emitted by a subclass whenever an addressee | 209 | This signal should be emitted by a subclass whenever an addressee |
210 | is executed. This is defined by the KDE system wide config, but it | 210 | is executed. This is defined by the KDE system wide config, but it |
211 | either means single or doubleclicked. | 211 | either means single or doubleclicked. |
212 | 212 | ||
213 | @param ui The uid of the selected addressee | 213 | @param ui The uid of the selected addressee |
214 | 214 | ||
215 | @see KListView | 215 | @see KListView |
216 | */ | 216 | */ |
217 | void executed( const QString &uid ); | 217 | void executed( const QString &uid ); |
218 | 218 | ||
219 | /** | 219 | /** |
220 | This signal is emitted whenever a user attempts to start a drag | 220 | This signal is emitted whenever a user attempts to start a drag |
221 | in the view. The slot connected to this signal would usually want | 221 | in the view. The slot connected to this signal would usually want |
222 | to create a QDragObject. | 222 | to create a QDragObject. |
223 | */ | 223 | */ |
224 | void startDrag(); | 224 | void startDrag(); |
225 | 225 | ||
226 | /** | 226 | /** |
227 | This signal is emitted whenever the user drops something on the | 227 | This signal is emitted whenever the user drops something on the |
228 | view. The individual view should handle checking if the item is | 228 | view. The individual view should handle checking if the item is |
229 | droppable (ie: if it is a vcard). | 229 | droppable (ie: if it is a vcard). |
230 | */ | 230 | */ |
231 | void dropped( QDropEvent* ); | 231 | void dropped( QDropEvent* ); |
232 | 232 | ||
233 | protected: | 233 | protected: |
234 | |||
234 | /** | 235 | /** |
235 | Returns a list of the addressees that should be displayed. This method | 236 | Returns a list of the addressees that should be displayed. This method |
236 | should always be used by the subclass to get a list of addressees. This | 237 | should always be used by the subclass to get a list of addressees. This |
237 | method internally takes many factors into account, including the current | 238 | method internally takes many factors into account, including the current |
238 | filter. | 239 | filter. |
239 | */ | 240 | */ |
240 | KABC::Addressee::List addressees(); | 241 | KABC::Addressee::List addressees(); |
241 | 242 | ||
242 | /** | 243 | /** |
243 | This method returns the widget that should be used as the parent for | 244 | This method returns the widget that should be used as the parent for |
244 | all view components. By using this widget as the parent and not | 245 | all view components. By using this widget as the parent and not |
245 | 'this', the view subclass has the option of placing other widgets | 246 | 'this', the view subclass has the option of placing other widgets |
246 | around the view (ie: search fields, etc). Do not delete this widget! | 247 | around the view (ie: search fields, etc). Do not delete this widget! |
247 | */ | 248 | */ |
248 | QWidget *viewWidget(); | 249 | QWidget *viewWidget(); |
249 | QRegExp getRegExp( const QString ); | 250 | QRegExp getRegExp( const QString ); |
250 | 251 | ||
251 | private: | 252 | private: |
252 | void initGUI(); | 253 | void initGUI(); |
253 | 254 | ||
254 | DefaultFilterType mDefaultFilterType; | 255 | DefaultFilterType mDefaultFilterType; |
255 | Filter mFilter; | 256 | Filter mFilter; |
256 | QString mDefaultFilterName; | 257 | QString mDefaultFilterName; |
257 | KABC::AddressBook *mAddressBook; | 258 | KABC::AddressBook *mAddressBook; |
258 | KABC::Field::List mFieldList; | 259 | KABC::Field::List mFieldList; |
259 | 260 | ||
260 | QWidget *mViewWidget; | 261 | QWidget *mViewWidget; |
261 | }; | 262 | }; |
262 | 263 | ||
263 | #ifndef KAB_EMBEDDED | 264 | #ifndef KAB_EMBEDDED |
264 | //MOC_SKIP_BEGIN | 265 | //MOC_SKIP_BEGIN |
265 | class ViewFactory : public KLibFactory | 266 | class ViewFactory : public KLibFactory |
266 | //MOC_SKIP_END | 267 | //MOC_SKIP_END |
267 | #else //KAB_EMBEDDED | 268 | #else //KAB_EMBEDDED |
268 | class ViewFactory | 269 | class ViewFactory |
269 | #endif //KAB_EMBEDDED | 270 | #endif //KAB_EMBEDDED |
270 | { | 271 | { |
271 | 272 | ||
272 | public: | 273 | public: |
273 | virtual KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, | 274 | virtual KAddressBookView *view( KABC::AddressBook *ab, QWidget *parent, |
274 | const char *name = 0 ) = 0; | 275 | const char *name = 0 ) = 0; |
275 | 276 | ||
276 | /** | 277 | /** |
277 | @return The type of the view. This is normally a small one word | 278 | @return The type of the view. This is normally a small one word |
278 | string (ie: Table, Icon, Tree, etc). | 279 | string (ie: Table, Icon, Tree, etc). |
279 | */ | 280 | */ |
280 | virtual QString type() const = 0; | 281 | virtual QString type() const = 0; |
281 | 282 | ||
282 | /** | 283 | /** |
283 | @return The description of the view. This should be a 3 to | 284 | @return The description of the view. This should be a 3 to |
284 | 4 line string (don't actually use return characters in the string) | 285 | 4 line string (don't actually use return characters in the string) |
285 | describing the features offered by the view. | 286 | describing the features offered by the view. |
286 | */ | 287 | */ |
287 | virtual QString description() const = 0; | 288 | virtual QString description() const = 0; |
288 | 289 | ||
289 | /** | 290 | /** |
290 | Creates a config dialog for the view type. The default | 291 | Creates a config dialog for the view type. The default |
291 | implementation will return a ViewConfigDialog. This default | 292 | implementation will return a ViewConfigDialog. This default |
292 | dialog will allow the user to set the visible fields only. If | 293 | dialog will allow the user to set the visible fields only. If |
293 | you need more config options (as most views will), this method | 294 | you need more config options (as most views will), this method |
294 | can be overloaded to return your sublcass of ViewConfigDialog. | 295 | can be overloaded to return your sublcass of ViewConfigDialog. |
295 | If this method is over loaded the base classes method should | 296 | If this method is over loaded the base classes method should |
296 | <B>not</B> be called. | 297 | <B>not</B> be called. |
297 | */ | 298 | */ |
298 | virtual ViewConfigureWidget *configureWidget( KABC::AddressBook *ab, | 299 | virtual ViewConfigureWidget *configureWidget( KABC::AddressBook *ab, |
299 | QWidget *parent, | 300 | QWidget *parent, |
300 | const char *name = 0 ); | 301 | const char *name = 0 ); |
301 | 302 | ||
302 | protected: | 303 | protected: |
303 | virtual QObject* createObject( QObject*, const char*, const char*, | 304 | virtual QObject* createObject( QObject*, const char*, const char*, |
304 | const QStringList & ) | 305 | const QStringList & ) |
305 | { | 306 | { |
306 | return 0; | 307 | return 0; |
307 | } | 308 | } |
309 | |||
308 | 310 | ||
309 | }; | 311 | }; |
310 | 312 | ||
311 | 313 | ||
312 | #endif | 314 | #endif |
diff --git a/kaddressbook/views/cardview.cpp b/kaddressbook/views/cardview.cpp index 03df444..84d3116 100644 --- a/kaddressbook/views/cardview.cpp +++ b/kaddressbook/views/cardview.cpp | |||
@@ -1,83 +1,84 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> | 3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | //BEGIN Includes | 24 | //BEGIN Includes |
25 | #include "cardview.h" | 25 | #include "cardview.h" |
26 | 26 | ||
27 | #include <limits.h> | 27 | #include <limits.h> |
28 | 28 | ||
29 | #include <qpainter.h> | 29 | #include <qpainter.h> |
30 | #include <qtimer.h> | 30 | #include <qtimer.h> |
31 | #include <qdatetime.h> | 31 | #include <qdatetime.h> |
32 | #include <qlabel.h> | 32 | #include <qlabel.h> |
33 | #include <qstyle.h> | 33 | #include <qstyle.h> |
34 | #include <qcursor.h> | 34 | #include <qcursor.h> |
35 | #include <qtooltip.h> | 35 | #include <qtooltip.h> |
36 | #include <qapplication.h> | ||
36 | 37 | ||
37 | #include "kabprefs.h" | 38 | #include "kabprefs.h" |
38 | #include <kdebug.h> | 39 | #include <kdebug.h> |
39 | #include <kglobalsettings.h> | 40 | #include <kglobalsettings.h> |
40 | //END includes | 41 | //END includes |
41 | 42 | ||
42 | #define MIN_ITEM_WIDTH 80 | 43 | #define MIN_ITEM_WIDTH 80 |
43 | 44 | ||
44 | //BEGIN Helpers | 45 | //BEGIN Helpers |
45 | ////////////////////////////////////// | 46 | ////////////////////////////////////// |
46 | // CardViewTip | 47 | // CardViewTip |
47 | class CardViewTip : public QLabel { | 48 | class CardViewTip : public QLabel { |
48 | public: | 49 | public: |
49 | CardViewTip(QWidget *parent=0, const char *name=0) : QLabel( parent, name ) | 50 | CardViewTip(QWidget *parent=0, const char *name=0) : QLabel( parent, name ) |
50 | { | 51 | { |
51 | setPalette( QToolTip::palette() ); | 52 | setPalette( QToolTip::palette() ); |
52 | setFrameStyle( Panel|Plain ); | 53 | setFrameStyle( Panel|Plain ); |
53 | setMidLineWidth(0); | 54 | setMidLineWidth(0); |
54 | setIndent(1); | 55 | setIndent(1); |
55 | } | 56 | } |
56 | 57 | ||
57 | ~CardViewTip() {}; | 58 | ~CardViewTip() {}; |
58 | protected: | 59 | protected: |
59 | void leaveEvent( QEvent * ) | 60 | void leaveEvent( QEvent * ) |
60 | { | 61 | { |
61 | hide(); | 62 | hide(); |
62 | } | 63 | } |
63 | }; | 64 | }; |
64 | 65 | ||
65 | ////////////////////////////////////// | 66 | ////////////////////////////////////// |
66 | // CardViewItemList | 67 | // CardViewItemList |
67 | 68 | ||
68 | 69 | ||
69 | // | 70 | // |
70 | // Warning: make sure you use findRef() instead of find() to find an | 71 | // Warning: make sure you use findRef() instead of find() to find an |
71 | // item! Only the pointer value is unique in the list. | 72 | // item! Only the pointer value is unique in the list. |
72 | // | 73 | // |
73 | class CardViewItemList : public QPtrList<CardViewItem> | 74 | class CardViewItemList : public QPtrList<CardViewItem> |
74 | { | 75 | { |
75 | protected: | 76 | protected: |
76 | virtual int compareItems(QPtrCollection::Item item1, | 77 | virtual int compareItems(QPtrCollection::Item item1, |
77 | QPtrCollection::Item item2) | 78 | QPtrCollection::Item item2) |
78 | { | 79 | { |
79 | CardViewItem *cItem1 = (CardViewItem*)item1; | 80 | CardViewItem *cItem1 = (CardViewItem*)item1; |
80 | CardViewItem *cItem2 = (CardViewItem*)item2; | 81 | CardViewItem *cItem2 = (CardViewItem*)item2; |
81 | 82 | ||
82 | if ( cItem1 == cItem2 ) | 83 | if ( cItem1 == cItem2 ) |
83 | return 0; | 84 | return 0; |
@@ -594,96 +595,98 @@ void CardViewItem::showFullString( const QPoint &itempos, CardViewTip *tip ) | |||
594 | tip->setText( s ); | 595 | tip->setText( s ); |
595 | tip->adjustSize(); | 596 | tip->adjustSize(); |
596 | // find a proper position | 597 | // find a proper position |
597 | int lx; | 598 | int lx; |
598 | lx = isLabel || !drawLabels ? mrg : lw + mrg + 2 /*-1*/; | 599 | lx = isLabel || !drawLabels ? mrg : lw + mrg + 2 /*-1*/; |
599 | QPoint pnt(mView->contentsToViewport( QPoint(d->x, d->y) )); | 600 | QPoint pnt(mView->contentsToViewport( QPoint(d->x, d->y) )); |
600 | pnt += QPoint(lx, y); | 601 | pnt += QPoint(lx, y); |
601 | if ( pnt.x() < 0 ) | 602 | if ( pnt.x() < 0 ) |
602 | pnt.setX( 0 ); | 603 | pnt.setX( 0 ); |
603 | if ( pnt.x() + tip->width() > mView->visibleWidth() ) | 604 | if ( pnt.x() + tip->width() > mView->visibleWidth() ) |
604 | pnt.setX( mView->visibleWidth() - tip->width() ); | 605 | pnt.setX( mView->visibleWidth() - tip->width() ); |
605 | if ( pnt.y() + tip->height() > mView->visibleHeight() ) | 606 | if ( pnt.y() + tip->height() > mView->visibleHeight() ) |
606 | pnt.setY( QMAX( 0, mView->visibleHeight() - tip->height() ) ); | 607 | pnt.setY( QMAX( 0, mView->visibleHeight() - tip->height() ) ); |
607 | // show | 608 | // show |
608 | tip->move( pnt ); | 609 | tip->move( pnt ); |
609 | tip->show(); | 610 | tip->show(); |
610 | } | 611 | } |
611 | } | 612 | } |
612 | 613 | ||
613 | CardViewItem::Field *CardViewItem::fieldAt( const QPoint & itempos ) const | 614 | CardViewItem::Field *CardViewItem::fieldAt( const QPoint & itempos ) const |
614 | { | 615 | { |
615 | int ypos = mView->d->mBFm->height() + 7 + mView->d->mItemMargin; | 616 | int ypos = mView->d->mBFm->height() + 7 + mView->d->mItemMargin; |
616 | int iy = itempos.y(); | 617 | int iy = itempos.y(); |
617 | // skip below caption | 618 | // skip below caption |
618 | if ( iy <= ypos ) | 619 | if ( iy <= ypos ) |
619 | return 0; | 620 | return 0; |
620 | // try find a field | 621 | // try find a field |
621 | bool showEmpty = mView->showEmptyFields(); | 622 | bool showEmpty = mView->showEmptyFields(); |
622 | int fh = mView->d->mFm->height(); | 623 | int fh = mView->d->mFm->height(); |
623 | int maxLines = mView->maxFieldLines(); | 624 | int maxLines = mView->maxFieldLines(); |
624 | Field *f; | 625 | Field *f; |
625 | for ( f = d->mFieldList.first(); f; f = d->mFieldList.next() ) | 626 | for ( f = d->mFieldList.first(); f; f = d->mFieldList.next() ) |
626 | { | 627 | { |
627 | if ( showEmpty || !f->second.isEmpty() ) | 628 | if ( showEmpty || !f->second.isEmpty() ) |
628 | ypos += ( QMIN( f->second.contains('\n')+1, maxLines ) *fh)+2; | 629 | ypos += ( QMIN( f->second.contains('\n')+1, maxLines ) *fh)+2; |
629 | if ( iy <= ypos ) | 630 | if ( iy <= ypos ) |
630 | break; | 631 | break; |
631 | } | 632 | } |
632 | return f ? f : 0; | 633 | return f ? f : 0; |
633 | } | 634 | } |
634 | //END CardViewItem | 635 | //END CardViewItem |
635 | 636 | ||
636 | //BEGIN CardView | 637 | //BEGIN CardView |
637 | 638 | ||
638 | CardView::CardView(QWidget *parent, const char *name) | 639 | CardView::CardView(QWidget *parent, const char *name) |
639 | : QScrollView(parent, name), | 640 | : QScrollView(parent, name), |
640 | d(new CardViewPrivate()) | 641 | d(new CardViewPrivate()) |
641 | { | 642 | { |
643 | mFlagKeyPressed = false; | ||
644 | mFlagBlockKeyPressed = false; | ||
642 | d->mItemList.setAutoDelete(true); | 645 | d->mItemList.setAutoDelete(true); |
643 | d->mSeparatorList.setAutoDelete(true); | 646 | d->mSeparatorList.setAutoDelete(true); |
644 | 647 | ||
645 | QFont f = font(); | 648 | QFont f = font(); |
646 | d->mFm = new QFontMetrics(f); | 649 | d->mFm = new QFontMetrics(f); |
647 | f.setBold(true); | 650 | f.setBold(true); |
648 | d->mHeaderFont = f; | 651 | d->mHeaderFont = f; |
649 | d->mBFm = new QFontMetrics(f); | 652 | d->mBFm = new QFontMetrics(f); |
650 | d->mTip = ( new CardViewTip( viewport() ) ), | 653 | d->mTip = ( new CardViewTip( viewport() ) ), |
651 | d->mTip->hide(); | 654 | d->mTip->hide(); |
652 | d->mTimer = ( new QTimer(this, "mouseTimer") ), | 655 | d->mTimer = ( new QTimer(this, "mouseTimer") ), |
653 | 656 | ||
654 | viewport()->setMouseTracking( true ); | 657 | viewport()->setMouseTracking( true ); |
655 | viewport()->setFocusProxy(this); | 658 | viewport()->setFocusProxy(this); |
656 | viewport()->setFocusPolicy(WheelFocus); | 659 | viewport()->setFocusPolicy(WheelFocus); |
657 | viewport()->setBackgroundMode(PaletteBase); | 660 | viewport()->setBackgroundMode(PaletteBase); |
658 | 661 | ||
659 | connect( d->mTimer, SIGNAL(timeout()), this, SLOT(tryShowFullText()) ); | 662 | connect( d->mTimer, SIGNAL(timeout()), this, SLOT(tryShowFullText()) ); |
660 | 663 | ||
661 | //US setBackgroundMode(PaletteBackground, PaletteBase); | 664 | //US setBackgroundMode(PaletteBackground, PaletteBase); |
662 | setBackgroundMode(PaletteBackground); | 665 | setBackgroundMode(PaletteBackground); |
663 | 666 | ||
664 | // no reason for a vertical scrollbar | 667 | // no reason for a vertical scrollbar |
665 | setVScrollBarMode(AlwaysOff); | 668 | setVScrollBarMode(AlwaysOff); |
666 | } | 669 | } |
667 | 670 | ||
668 | CardView::~CardView() | 671 | CardView::~CardView() |
669 | { | 672 | { |
670 | delete d->mFm; | 673 | delete d->mFm; |
671 | delete d->mBFm; | 674 | delete d->mBFm; |
672 | delete d; | 675 | delete d; |
673 | d = 0; | 676 | d = 0; |
674 | } | 677 | } |
675 | 678 | ||
676 | void CardView::insertItem(CardViewItem *item) | 679 | void CardView::insertItem(CardViewItem *item) |
677 | { | 680 | { |
678 | d->mItemList.inSort(item); | 681 | d->mItemList.inSort(item); |
679 | setLayoutDirty(true); | 682 | setLayoutDirty(true); |
680 | } | 683 | } |
681 | 684 | ||
682 | void CardView::takeItem(CardViewItem *item) | 685 | void CardView::takeItem(CardViewItem *item) |
683 | { | 686 | { |
684 | if ( d->mCurrentItem == item ) | 687 | if ( d->mCurrentItem == item ) |
685 | d->mCurrentItem = item->nextItem(); | 688 | d->mCurrentItem = item->nextItem(); |
686 | d->mItemList.take(d->mItemList.findRef(item)); | 689 | d->mItemList.take(d->mItemList.findRef(item)); |
687 | 690 | ||
688 | setLayoutDirty(true); | 691 | setLayoutDirty(true); |
689 | } | 692 | } |
@@ -1306,97 +1309,105 @@ void CardView::contentsMouseMoveEvent( QMouseEvent *e ) | |||
1306 | else | 1309 | else |
1307 | { | 1310 | { |
1308 | setCursor( ArrowCursor ); | 1311 | setCursor( ArrowCursor ); |
1309 | d->mOnSeparator = false; | 1312 | d->mOnSeparator = false; |
1310 | } | 1313 | } |
1311 | } | 1314 | } |
1312 | } | 1315 | } |
1313 | 1316 | ||
1314 | void CardView::enterEvent( QEvent * ) | 1317 | void CardView::enterEvent( QEvent * ) |
1315 | { | 1318 | { |
1316 | d->mTimer->start( 500 ); | 1319 | d->mTimer->start( 500 ); |
1317 | } | 1320 | } |
1318 | 1321 | ||
1319 | void CardView::leaveEvent( QEvent * ) | 1322 | void CardView::leaveEvent( QEvent * ) |
1320 | { | 1323 | { |
1321 | d->mTimer->stop(); | 1324 | d->mTimer->stop(); |
1322 | if (d->mOnSeparator) | 1325 | if (d->mOnSeparator) |
1323 | { | 1326 | { |
1324 | d->mOnSeparator = false; | 1327 | d->mOnSeparator = false; |
1325 | setCursor( ArrowCursor ); | 1328 | setCursor( ArrowCursor ); |
1326 | } | 1329 | } |
1327 | } | 1330 | } |
1328 | 1331 | ||
1329 | void CardView::focusInEvent( QFocusEvent * ) | 1332 | void CardView::focusInEvent( QFocusEvent * ) |
1330 | { | 1333 | { |
1331 | if (!d->mCurrentItem && d->mItemList.count() ) | 1334 | if (!d->mCurrentItem && d->mItemList.count() ) |
1332 | { | 1335 | { |
1333 | setCurrentItem( d->mItemList.first() ); | 1336 | setCurrentItem( d->mItemList.first() ); |
1334 | } | 1337 | } |
1335 | else if ( d->mCurrentItem ) | 1338 | else if ( d->mCurrentItem ) |
1336 | { | 1339 | { |
1337 | d->mCurrentItem->repaintCard(); | 1340 | d->mCurrentItem->repaintCard(); |
1338 | } | 1341 | } |
1339 | } | 1342 | } |
1340 | 1343 | ||
1341 | void CardView::focusOutEvent( QFocusEvent * ) | 1344 | void CardView::focusOutEvent( QFocusEvent * ) |
1342 | { | 1345 | { |
1343 | if (d->mCurrentItem) | 1346 | if (d->mCurrentItem) |
1344 | d->mCurrentItem->repaintCard(); | 1347 | d->mCurrentItem->repaintCard(); |
1345 | } | 1348 | } |
1346 | 1349 | ||
1347 | void CardView::keyPressEvent( QKeyEvent *e ) | 1350 | void CardView::keyPressEvent( QKeyEvent *e ) |
1348 | { | 1351 | { |
1349 | if ( ! ( childCount() && d->mCurrentItem ) ) | 1352 | if ( ! ( childCount() && d->mCurrentItem ) ) |
1350 | { | 1353 | { |
1351 | e->ignore(); | 1354 | e->ignore(); |
1352 | return; | 1355 | return; |
1353 | } | 1356 | } |
1354 | 1357 | if ( mFlagBlockKeyPressed ) | |
1358 | return; | ||
1359 | qApp->processEvents(); | ||
1360 | if ( e->isAutoRepeat() && !mFlagKeyPressed ) { | ||
1361 | e->accept(); | ||
1362 | return; | ||
1363 | } | ||
1364 | if (! e->isAutoRepeat() ) | ||
1365 | mFlagKeyPressed = true; | ||
1355 | uint pos = d->mItemList.findRef( d->mCurrentItem ); | 1366 | uint pos = d->mItemList.findRef( d->mCurrentItem ); |
1356 | CardViewItem *aItem = 0L; // item that gets the focus | 1367 | CardViewItem *aItem = 0L; // item that gets the focus |
1357 | CardViewItem *old = d->mCurrentItem; | 1368 | CardViewItem *old = d->mCurrentItem; |
1358 | 1369 | ||
1359 | switch ( e->key() ) | 1370 | switch ( e->key() ) |
1360 | { | 1371 | { |
1361 | case Key_Up: | 1372 | case Key_Up: |
1362 | if ( pos > 0 ) | 1373 | if ( pos > 0 ) |
1363 | { | 1374 | { |
1364 | aItem = d->mItemList.at( pos - 1 ); | 1375 | aItem = d->mItemList.at( pos - 1 ); |
1365 | setCurrentItem( aItem ); | 1376 | setCurrentItem( aItem ); |
1366 | } | 1377 | } |
1367 | break; | 1378 | break; |
1368 | case Key_Down: | 1379 | case Key_Down: |
1369 | if ( pos < d->mItemList.count() - 1 ) | 1380 | if ( pos < d->mItemList.count() - 1 ) |
1370 | { | 1381 | { |
1371 | aItem = d->mItemList.at( pos + 1 ); | 1382 | aItem = d->mItemList.at( pos + 1 ); |
1372 | setCurrentItem( aItem ); | 1383 | setCurrentItem( aItem ); |
1373 | } | 1384 | } |
1374 | break; | 1385 | break; |
1375 | case Key_Left: | 1386 | case Key_Left: |
1376 | { | 1387 | { |
1377 | // look for an item in the previous/next column, starting from | 1388 | // look for an item in the previous/next column, starting from |
1378 | // the vertical middle of the current item. | 1389 | // the vertical middle of the current item. |
1379 | // FIXME use nice calculatd measures!!! | 1390 | // FIXME use nice calculatd measures!!! |
1380 | QPoint aPoint( d->mCurrentItem->d->x, d->mCurrentItem->d->y ); | 1391 | QPoint aPoint( d->mCurrentItem->d->x, d->mCurrentItem->d->y ); |
1381 | aPoint -= QPoint( 30,-(d->mCurrentItem->height()/2) ); | 1392 | aPoint -= QPoint( 30,-(d->mCurrentItem->height()/2) ); |
1382 | aItem = itemAt( aPoint ); | 1393 | aItem = itemAt( aPoint ); |
1383 | // maybe we hit some space below an item | 1394 | // maybe we hit some space below an item |
1384 | while ( !aItem && aPoint.y() > 27 ) | 1395 | while ( !aItem && aPoint.y() > 27 ) |
1385 | { | 1396 | { |
1386 | aPoint -= QPoint( 0, 16 ); | 1397 | aPoint -= QPoint( 0, 16 ); |
1387 | aItem = itemAt( aPoint ); | 1398 | aItem = itemAt( aPoint ); |
1388 | } | 1399 | } |
1389 | if ( aItem ) | 1400 | if ( aItem ) |
1390 | setCurrentItem( aItem ); | 1401 | setCurrentItem( aItem ); |
1391 | } | 1402 | } |
1392 | break; | 1403 | break; |
1393 | case Key_Right: | 1404 | case Key_Right: |
1394 | { | 1405 | { |
1395 | // FIXME use nice calculated measures!!! | 1406 | // FIXME use nice calculated measures!!! |
1396 | QPoint aPoint( d->mCurrentItem->d->x + d->mItemWidth, d->mCurrentItem->d->y ); | 1407 | QPoint aPoint( d->mCurrentItem->d->x + d->mItemWidth, d->mCurrentItem->d->y ); |
1397 | aPoint += QPoint( 30,(d->mCurrentItem->height()/2) ); | 1408 | aPoint += QPoint( 30,(d->mCurrentItem->height()/2) ); |
1398 | aItem = itemAt( aPoint ); | 1409 | aItem = itemAt( aPoint ); |
1399 | while ( !aItem && aPoint.y() > 27 ) | 1410 | while ( !aItem && aPoint.y() > 27 ) |
1400 | { | 1411 | { |
1401 | aPoint -= QPoint( 0, 16 ); | 1412 | aPoint -= QPoint( 0, 16 ); |
1402 | aItem = itemAt( aPoint ); | 1413 | aItem = itemAt( aPoint ); |
@@ -1670,53 +1681,71 @@ void CardView::setItemWidth( int w ) | |||
1670 | updateContents(); | 1681 | updateContents(); |
1671 | #else //KAB_EMBEDDED | 1682 | #else //KAB_EMBEDDED |
1672 | //US updateContents( d->contentsX(), d->contentsY(), visibleWidth(), visibleHeight() ); | 1683 | //US updateContents( d->contentsX(), d->contentsY(), visibleWidth(), visibleHeight() ); |
1673 | qDebug("CardView::setItemWidth has to be verified"); | 1684 | qDebug("CardView::setItemWidth has to be verified"); |
1674 | updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); | 1685 | updateContents( contentsX(), contentsY(), visibleWidth(), visibleHeight() ); |
1675 | #endif //KAB_EMBEDDED | 1686 | #endif //KAB_EMBEDDED |
1676 | } | 1687 | } |
1677 | 1688 | ||
1678 | void CardView::setHeaderFont( const QFont &fnt ) | 1689 | void CardView::setHeaderFont( const QFont &fnt ) |
1679 | { | 1690 | { |
1680 | d->mHeaderFont = fnt; | 1691 | d->mHeaderFont = fnt; |
1681 | delete d->mBFm; | 1692 | delete d->mBFm; |
1682 | d->mBFm = new QFontMetrics( fnt ); | 1693 | d->mBFm = new QFontMetrics( fnt ); |
1683 | } | 1694 | } |
1684 | 1695 | ||
1685 | QFont CardView::headerFont() const | 1696 | QFont CardView::headerFont() const |
1686 | { | 1697 | { |
1687 | return d->mHeaderFont; | 1698 | return d->mHeaderFont; |
1688 | } | 1699 | } |
1689 | 1700 | ||
1690 | void CardView::setFont( const QFont &fnt ) | 1701 | void CardView::setFont( const QFont &fnt ) |
1691 | { | 1702 | { |
1692 | QScrollView::setFont( fnt ); | 1703 | QScrollView::setFont( fnt ); |
1693 | delete d->mFm; | 1704 | delete d->mFm; |
1694 | d->mFm = new QFontMetrics( fnt ); | 1705 | d->mFm = new QFontMetrics( fnt ); |
1695 | } | 1706 | } |
1696 | 1707 | ||
1697 | int CardView::separatorWidth() | 1708 | int CardView::separatorWidth() |
1698 | { | 1709 | { |
1699 | return d->mSepWidth; | 1710 | return d->mSepWidth; |
1700 | } | 1711 | } |
1701 | 1712 | ||
1702 | void CardView::setSeparatorWidth( int width ) | 1713 | void CardView::setSeparatorWidth( int width ) |
1703 | { | 1714 | { |
1704 | d->mSepWidth = width; | 1715 | d->mSepWidth = width; |
1705 | setLayoutDirty( true ); // hmm, actually I could just adjust the x'es... | 1716 | setLayoutDirty( true ); // hmm, actually I could just adjust the x'es... |
1706 | } | 1717 | } |
1707 | 1718 | ||
1708 | int CardView::maxFieldLines() const | 1719 | int CardView::maxFieldLines() const |
1709 | { | 1720 | { |
1710 | return d->mMaxFieldLines; | 1721 | return d->mMaxFieldLines; |
1711 | } | 1722 | } |
1712 | 1723 | ||
1713 | void CardView::setMaxFieldLines( int howmany ) | 1724 | void CardView::setMaxFieldLines( int howmany ) |
1714 | { | 1725 | { |
1715 | d->mMaxFieldLines = howmany ? howmany : INT_MAX; | 1726 | d->mMaxFieldLines = howmany ? howmany : INT_MAX; |
1716 | // FIXME update, forcing the items to recalc height!! | 1727 | // FIXME update, forcing the items to recalc height!! |
1717 | } | 1728 | } |
1729 | |||
1730 | void CardView::keyReleaseEvent ( QKeyEvent * e ) | ||
1731 | { | ||
1732 | if ( mFlagBlockKeyPressed ) | ||
1733 | return; | ||
1734 | if ( !e->isAutoRepeat() ) { | ||
1735 | mFlagBlockKeyPressed = true; | ||
1736 | qApp->processEvents(); | ||
1737 | mFlagBlockKeyPressed = false; | ||
1738 | mFlagKeyPressed = false; | ||
1739 | } | ||
1740 | QScrollView::keyReleaseEvent ( e ); | ||
1741 | } | ||
1742 | |||
1743 | |||
1744 | |||
1745 | |||
1746 | |||
1718 | //END Cardview | 1747 | //END Cardview |
1719 | 1748 | ||
1720 | #ifndef KAB_EMBEDDED | 1749 | #ifndef KAB_EMBEDDED |
1721 | #include "cardview.moc" | 1750 | #include "cardview.moc" |
1722 | #endif //KAB_EMBEDDED | 1751 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/views/cardview.h b/kaddressbook/views/cardview.h index 37dddb6..2ea3771 100644 --- a/kaddressbook/views/cardview.h +++ b/kaddressbook/views/cardview.h | |||
@@ -360,114 +360,117 @@ class CardView : public QScrollView | |||
360 | /** Sets the column separator width */ | 360 | /** Sets the column separator width */ |
361 | void setSeparatorWidth( int width ); | 361 | void setSeparatorWidth( int width ); |
362 | 362 | ||
363 | /** @return the column separator width */ | 363 | /** @return the column separator width */ |
364 | int separatorWidth(); | 364 | int separatorWidth(); |
365 | 365 | ||
366 | /** Sets the maximum number of lines to display pr field. | 366 | /** Sets the maximum number of lines to display pr field. |
367 | If set to 0 (the default) all lines will be displayed. | 367 | If set to 0 (the default) all lines will be displayed. |
368 | */ | 368 | */ |
369 | void setMaxFieldLines( int howmany ); | 369 | void setMaxFieldLines( int howmany ); |
370 | 370 | ||
371 | /** @return the maximum number of lines pr field */ | 371 | /** @return the maximum number of lines pr field */ |
372 | int maxFieldLines() const; | 372 | int maxFieldLines() const; |
373 | 373 | ||
374 | signals: | 374 | signals: |
375 | /** Emitted whenever the selection changes. This means a user highlighted | 375 | /** Emitted whenever the selection changes. This means a user highlighted |
376 | * a new item or unhighlighted a currently selected item. | 376 | * a new item or unhighlighted a currently selected item. |
377 | */ | 377 | */ |
378 | void selectionChanged(); | 378 | void selectionChanged(); |
379 | 379 | ||
380 | /** Same as above method, only it carries the item that was selected. This | 380 | /** Same as above method, only it carries the item that was selected. This |
381 | * method will only be emitted in single select mode, since it defineds | 381 | * method will only be emitted in single select mode, since it defineds |
382 | * which item was selected. | 382 | * which item was selected. |
383 | */ | 383 | */ |
384 | void selectionChanged(CardViewItem *); | 384 | void selectionChanged(CardViewItem *); |
385 | 385 | ||
386 | /** This method is emitted whenever an item is clicked. | 386 | /** This method is emitted whenever an item is clicked. |
387 | */ | 387 | */ |
388 | void clicked(CardViewItem *); | 388 | void clicked(CardViewItem *); |
389 | 389 | ||
390 | /** Emitted whenever the user 'executes' an item. This is dependant on | 390 | /** Emitted whenever the user 'executes' an item. This is dependant on |
391 | * the KDE global config. This could be a single click or a doubleclick. | 391 | * the KDE global config. This could be a single click or a doubleclick. |
392 | * Also emitted when the return key is pressed on an item. | 392 | * Also emitted when the return key is pressed on an item. |
393 | */ | 393 | */ |
394 | void executed(CardViewItem *); | 394 | void executed(CardViewItem *); |
395 | 395 | ||
396 | /** Emitted whenever the user double clicks on an item. | 396 | /** Emitted whenever the user double clicks on an item. |
397 | */ | 397 | */ |
398 | void doubleClicked(CardViewItem *); | 398 | void doubleClicked(CardViewItem *); |
399 | 399 | ||
400 | /** Emitted when the current item changes | 400 | /** Emitted when the current item changes |
401 | */ | 401 | */ |
402 | void currentChanged( CardViewItem * ); | 402 | void currentChanged( CardViewItem * ); |
403 | 403 | ||
404 | /** Emitted when the return key is pressed in an item. | 404 | /** Emitted when the return key is pressed in an item. |
405 | */ | 405 | */ |
406 | void returnPressed( CardViewItem * ); | 406 | void returnPressed( CardViewItem * ); |
407 | 407 | ||
408 | protected: | 408 | protected: |
409 | bool mFlagKeyPressed; | ||
410 | bool mFlagBlockKeyPressed; | ||
411 | virtual void keyPressEvent ( QKeyEvent * ); | ||
412 | virtual void keyReleaseEvent ( QKeyEvent * ); | ||
409 | /** Determines which cards intersect that region and tells them to paint | 413 | /** Determines which cards intersect that region and tells them to paint |
410 | * themselves. | 414 | * themselves. |
411 | */ | 415 | */ |
412 | void drawContents(QPainter *p, int clipx, int clipy, int clipw, int cliph); | 416 | void drawContents(QPainter *p, int clipx, int clipy, int clipw, int cliph); |
413 | 417 | ||
414 | /** Sets the layout to dirty and repaints. | 418 | /** Sets the layout to dirty and repaints. |
415 | */ | 419 | */ |
416 | void resizeEvent(QResizeEvent *e); | 420 | void resizeEvent(QResizeEvent *e); |
417 | 421 | ||
418 | /** Changes the direction the canvas scolls. | 422 | /** Changes the direction the canvas scolls. |
419 | */ | 423 | */ |
420 | void contentsWheelEvent(QWheelEvent *e); | 424 | void contentsWheelEvent(QWheelEvent *e); |
421 | 425 | ||
422 | /** Sets the layout to dirty and calls for a repaint. | 426 | /** Sets the layout to dirty and calls for a repaint. |
423 | */ | 427 | */ |
424 | void setLayoutDirty(bool dirty); | 428 | void setLayoutDirty(bool dirty); |
425 | 429 | ||
426 | /** Does the math based on the bounding rect of the cards to properly | 430 | /** Does the math based on the bounding rect of the cards to properly |
427 | * lay the cards out on the screen. This is only done if the layout is | 431 | * lay the cards out on the screen. This is only done if the layout is |
428 | * marked as dirty. | 432 | * marked as dirty. |
429 | */ | 433 | */ |
430 | void calcLayout(); | 434 | void calcLayout(); |
431 | 435 | ||
432 | // virtual void mousePressEvent(QMouseEvent *e); | 436 | // virtual void mousePressEvent(QMouseEvent *e); |
433 | // virtual void mouseReleaseEvent(QMouseEvent *e); | 437 | // virtual void mouseReleaseEvent(QMouseEvent *e); |
434 | // virtual void mouseMoveEvent(QMouseEvent *e); | 438 | // virtual void mouseMoveEvent(QMouseEvent *e); |
435 | 439 | ||
436 | virtual void contentsMousePressEvent(QMouseEvent *e); | 440 | virtual void contentsMousePressEvent(QMouseEvent *e); |
437 | virtual void contentsMouseMoveEvent(QMouseEvent *e); | 441 | virtual void contentsMouseMoveEvent(QMouseEvent *e); |
438 | virtual void contentsMouseReleaseEvent(QMouseEvent *e); | 442 | virtual void contentsMouseReleaseEvent(QMouseEvent *e); |
439 | virtual void contentsMouseDoubleClickEvent(QMouseEvent *e); | 443 | virtual void contentsMouseDoubleClickEvent(QMouseEvent *e); |
440 | 444 | ||
441 | virtual void enterEvent( QEvent * ); | 445 | virtual void enterEvent( QEvent * ); |
442 | virtual void leaveEvent( QEvent * ); | 446 | virtual void leaveEvent( QEvent * ); |
443 | 447 | ||
444 | virtual void focusInEvent( QFocusEvent * ); | 448 | virtual void focusInEvent( QFocusEvent * ); |
445 | virtual void focusOutEvent( QFocusEvent * ); | 449 | virtual void focusOutEvent( QFocusEvent * ); |
446 | 450 | ||
447 | virtual void keyPressEvent( QKeyEvent * ); | ||
448 | 451 | ||
449 | /** Overload this method to be told when a drag should be started. | 452 | /** Overload this method to be told when a drag should be started. |
450 | * In most cases you will want to start a drag event with the currently | 453 | * In most cases you will want to start a drag event with the currently |
451 | * selected item. | 454 | * selected item. |
452 | */ | 455 | */ |
453 | virtual void startDrag(); | 456 | virtual void startDrag(); |
454 | 457 | ||
455 | private slots: | 458 | private slots: |
456 | /** Called by a timer to display a label with truncated text. | 459 | /** Called by a timer to display a label with truncated text. |
457 | * Pop up a label, if there is a field with obscured text or | 460 | * Pop up a label, if there is a field with obscured text or |
458 | * label at the cursor position. | 461 | * label at the cursor position. |
459 | */ | 462 | */ |
460 | void tryShowFullText(); | 463 | void tryShowFullText(); |
461 | 464 | ||
462 | private: | 465 | private: |
463 | /** draws and erases the rubber bands while columns are resized. | 466 | /** draws and erases the rubber bands while columns are resized. |
464 | * @p pos is the horizontal position inside the viewport to use as | 467 | * @p pos is the horizontal position inside the viewport to use as |
465 | * the anchor. | 468 | * the anchor. |
466 | * If pos is 0, only erase is done. | 469 | * If pos is 0, only erase is done. |
467 | */ | 470 | */ |
468 | void drawRubberBands( int pos ); | 471 | void drawRubberBands( int pos ); |
469 | 472 | ||
470 | CardViewPrivate *d; | 473 | CardViewPrivate *d; |
471 | }; | 474 | }; |
472 | 475 | ||
473 | #endif | 476 | #endif |
diff --git a/kaddressbook/views/contactlistview.cpp b/kaddressbook/views/contactlistview.cpp index e75810e..09d9c03 100644 --- a/kaddressbook/views/contactlistview.cpp +++ b/kaddressbook/views/contactlistview.cpp | |||
@@ -1,79 +1,80 @@ | |||
1 | /* | 1 | /* |
2 | This file is part of KAddressBook. | 2 | This file is part of KAddressBook. |
3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> | 3 | Copyright (c) 2002 Mike Pilone <mpilone@slac.com> |
4 | 4 | ||
5 | This program is free software; you can redistribute it and/or modify | 5 | This program is free software; you can redistribute it and/or modify |
6 | it under the terms of the GNU General Public License as published by | 6 | it under the terms of the GNU General Public License as published by |
7 | the Free Software Foundation; either version 2 of the License, or | 7 | the Free Software Foundation; either version 2 of the License, or |
8 | (at your option) any later version. | 8 | (at your option) any later version. |
9 | 9 | ||
10 | This program is distributed in the hope that it will be useful, | 10 | This program is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
13 | GNU General Public License for more details. | 13 | GNU General Public License for more details. |
14 | 14 | ||
15 | You should have received a copy of the GNU General Public License | 15 | You should have received a copy of the GNU General Public License |
16 | along with this program; if not, write to the Free Software | 16 | along with this program; if not, write to the Free Software |
17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | 17 | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
18 | 18 | ||
19 | As a special exception, permission is given to link this program | 19 | As a special exception, permission is given to link this program |
20 | with any edition of Qt, and distribute the resulting executable, | 20 | with any edition of Qt, and distribute the resulting executable, |
21 | without including the source code for Qt in the source distribution. | 21 | without including the source code for Qt in the source distribution. |
22 | */ | 22 | */ |
23 | 23 | ||
24 | #include <qheader.h> | 24 | #include <qheader.h> |
25 | #include <qiconset.h> | 25 | #include <qiconset.h> |
26 | #include <qimage.h> | 26 | #include <qimage.h> |
27 | #include <qdragobject.h> | 27 | #include <qdragobject.h> |
28 | #include <qcombobox.h> | 28 | #include <qcombobox.h> |
29 | #include <qpainter.h> | 29 | #include <qpainter.h> |
30 | #include <qbrush.h> | 30 | #include <qbrush.h> |
31 | #include <qevent.h> | 31 | #include <qevent.h> |
32 | #include <qapplication.h> | ||
32 | 33 | ||
33 | #include <klocale.h> | 34 | #include <klocale.h> |
34 | #include <kglobalsettings.h> | 35 | #include <kglobalsettings.h> |
35 | #include <kiconloader.h> | 36 | #include <kiconloader.h> |
36 | #include <kdebug.h> | 37 | #include <kdebug.h> |
37 | #include <kconfig.h> | 38 | #include <kconfig.h> |
38 | #include <kapplication.h> | 39 | #include <kapplication.h> |
39 | #include <kurl.h> | 40 | #include <kurl.h> |
40 | 41 | ||
41 | #include "kaddressbooktableview.h" | 42 | #include "kaddressbooktableview.h" |
42 | 43 | ||
43 | #include "contactlistview.h" | 44 | #include "contactlistview.h" |
44 | 45 | ||
45 | ///////////////////////////////// | 46 | ///////////////////////////////// |
46 | // DynamicTip Methods | 47 | // DynamicTip Methods |
47 | 48 | ||
48 | DynamicTip::DynamicTip( ContactListView *parent) | 49 | DynamicTip::DynamicTip( ContactListView *parent) |
49 | : QToolTip( parent ) | 50 | : QToolTip( parent ) |
50 | { | 51 | { |
51 | } | 52 | } |
52 | 53 | ||
53 | void DynamicTip::maybeTip( const QPoint &pos ) | 54 | void DynamicTip::maybeTip( const QPoint &pos ) |
54 | { | 55 | { |
55 | static bool ishidden = true; | 56 | static bool ishidden = true; |
56 | if (!parentWidget()->inherits( "ContactListView" )) | 57 | if (!parentWidget()->inherits( "ContactListView" )) |
57 | return; | 58 | return; |
58 | 59 | ||
59 | ContactListView *plv = (ContactListView*)parentWidget(); | 60 | ContactListView *plv = (ContactListView*)parentWidget(); |
60 | if (!plv->tooltips()) | 61 | if (!plv->tooltips()) |
61 | return; | 62 | return; |
62 | 63 | ||
63 | QPoint posVp = plv->viewport()->pos(); | 64 | QPoint posVp = plv->viewport()->pos(); |
64 | 65 | ||
65 | QListViewItem *lvi = plv->itemAt( pos - posVp ); | 66 | QListViewItem *lvi = plv->itemAt( pos - posVp ); |
66 | if (!lvi) | 67 | if (!lvi) |
67 | return; | 68 | return; |
68 | 69 | ||
69 | #ifndef KAB_EMBEDDED | 70 | #ifndef KAB_EMBEDDED |
70 | ContactListViewItem *plvi = dynamic_cast< ContactListViewItem* >(lvi); | 71 | ContactListViewItem *plvi = dynamic_cast< ContactListViewItem* >(lvi); |
71 | #else //KAB_EMBEDDED | 72 | #else //KAB_EMBEDDED |
72 | ContactListViewItem *plvi = (ContactListViewItem*)(lvi); | 73 | ContactListViewItem *plvi = (ContactListViewItem*)(lvi); |
73 | #endif //KAB_EMBEDDED | 74 | #endif //KAB_EMBEDDED |
74 | 75 | ||
75 | if (!plvi) | 76 | if (!plvi) |
76 | return; | 77 | return; |
77 | 78 | ||
78 | if (ishidden) { | 79 | if (ishidden) { |
79 | QString s; | 80 | QString s; |
@@ -203,96 +204,98 @@ void ContactListViewItem::paintCell(QPainter * p, | |||
203 | const QColorGroup & cg, | 204 | const QColorGroup & cg, |
204 | int column, | 205 | int column, |
205 | int width, | 206 | int width, |
206 | int align) | 207 | int align) |
207 | { | 208 | { |
208 | KListViewItem::paintCell(p, cg, column, width, align); | 209 | KListViewItem::paintCell(p, cg, column, width, align); |
209 | 210 | ||
210 | if ( !p ) | 211 | if ( !p ) |
211 | return; | 212 | return; |
212 | 213 | ||
213 | if (parentListView->singleLine()) { | 214 | if (parentListView->singleLine()) { |
214 | p->setPen( parentListView->alternateColor() ); | 215 | p->setPen( parentListView->alternateColor() ); |
215 | p->drawLine( 0, height() - 1, width, height() - 1 ); | 216 | p->drawLine( 0, height() - 1, width, height() - 1 ); |
216 | } | 217 | } |
217 | } | 218 | } |
218 | 219 | ||
219 | 220 | ||
220 | ContactListView *ContactListViewItem::parent() | 221 | ContactListView *ContactListViewItem::parent() |
221 | { | 222 | { |
222 | return parentListView; | 223 | return parentListView; |
223 | } | 224 | } |
224 | 225 | ||
225 | 226 | ||
226 | void ContactListViewItem::refresh() | 227 | void ContactListViewItem::refresh() |
227 | { | 228 | { |
228 | // Update our addressee, since it may have changed else were | 229 | // Update our addressee, since it may have changed else were |
229 | mAddressee = mDocument->findByUid(mAddressee.uid()); | 230 | mAddressee = mDocument->findByUid(mAddressee.uid()); |
230 | if (mAddressee.isEmpty()) | 231 | if (mAddressee.isEmpty()) |
231 | return; | 232 | return; |
232 | 233 | ||
233 | int i = 0; | 234 | int i = 0; |
234 | KABC::Field::List::ConstIterator it; | 235 | KABC::Field::List::ConstIterator it; |
235 | for( it = mFields.begin(); it != mFields.end(); ++it ) { | 236 | for( it = mFields.begin(); it != mFields.end(); ++it ) { |
236 | setText( i++, (*it)->value( mAddressee ) ); | 237 | setText( i++, (*it)->value( mAddressee ) ); |
237 | } | 238 | } |
238 | } | 239 | } |
239 | 240 | ||
240 | /////////////////////////////// | 241 | /////////////////////////////// |
241 | // ContactListView | 242 | // ContactListView |
242 | 243 | ||
243 | ContactListView::ContactListView(KAddressBookTableView *view, | 244 | ContactListView::ContactListView(KAddressBookTableView *view, |
244 | KABC::AddressBook* /* doc */, | 245 | KABC::AddressBook* /* doc */, |
245 | QWidget *parent, | 246 | QWidget *parent, |
246 | const char *name ) | 247 | const char *name ) |
247 | : KListView( parent, name ), | 248 | : KListView( parent, name ), |
248 | pabWidget( view ), | 249 | pabWidget( view ), |
249 | oldColumn( 0 ) | 250 | oldColumn( 0 ) |
250 | { | 251 | { |
252 | mFlagBlockKeyPressed = false; | ||
253 | mFlagKeyPressed = false; | ||
251 | mABackground = true; | 254 | mABackground = true; |
252 | mSingleLine = false; | 255 | mSingleLine = false; |
253 | mToolTips = true; | 256 | mToolTips = true; |
254 | #ifndef KAB_EMBEDDED | 257 | #ifndef KAB_EMBEDDED |
255 | mAlternateColor = KGlobalSettings::alternateBackgroundColor(); | 258 | mAlternateColor = KGlobalSettings::alternateBackgroundColor(); |
256 | #else //KAB_EMBEDDED | 259 | #else //KAB_EMBEDDED |
257 | mAlternateColor = QColor(240, 240, 240); | 260 | mAlternateColor = QColor(240, 240, 240); |
258 | #endif //KAB_EMBEDDED | 261 | #endif //KAB_EMBEDDED |
259 | 262 | ||
260 | setAlternateBackgroundEnabled(mABackground); | 263 | setAlternateBackgroundEnabled(mABackground); |
261 | setAcceptDrops( true ); | 264 | setAcceptDrops( true ); |
262 | viewport()->setAcceptDrops( true ); | 265 | viewport()->setAcceptDrops( true ); |
263 | setAllColumnsShowFocus( true ); | 266 | setAllColumnsShowFocus( true ); |
264 | setShowSortIndicator(true); | 267 | setShowSortIndicator(true); |
265 | 268 | ||
266 | setSelectionModeExt( KListView::Extended ); | 269 | setSelectionModeExt( KListView::Extended ); |
267 | setDropVisualizer(false); | 270 | setDropVisualizer(false); |
268 | // setFrameStyle(QFrame::NoFrame); | 271 | // setFrameStyle(QFrame::NoFrame); |
269 | //setLineWidth ( 0 ); | 272 | //setLineWidth ( 0 ); |
270 | //setMidLineWidth ( 0 ); | 273 | //setMidLineWidth ( 0 ); |
271 | //setMargin ( 0 ); | 274 | //setMargin ( 0 ); |
272 | #ifndef KAB_EMBEDDED | 275 | #ifndef KAB_EMBEDDED |
273 | connect(this, SIGNAL(dropped(QDropEvent*)), | 276 | connect(this, SIGNAL(dropped(QDropEvent*)), |
274 | this, SLOT(itemDropped(QDropEvent*))); | 277 | this, SLOT(itemDropped(QDropEvent*))); |
275 | #endif //KAB_EMBEDDED | 278 | #endif //KAB_EMBEDDED |
276 | 279 | ||
277 | 280 | ||
278 | new DynamicTip( this ); | 281 | new DynamicTip( this ); |
279 | } | 282 | } |
280 | void ContactListView::printMe() | 283 | void ContactListView::printMe() |
281 | { | 284 | { |
282 | #ifdef DESKTOP_VERSION | 285 | #ifdef DESKTOP_VERSION |
283 | QPrinter printer; | 286 | QPrinter printer; |
284 | if (!printer.setup() ) | 287 | if (!printer.setup() ) |
285 | return; | 288 | return; |
286 | QPainter p; | 289 | QPainter p; |
287 | p.begin ( &printer ); | 290 | p.begin ( &printer ); |
288 | QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); | 291 | QPaintDeviceMetrics m = QPaintDeviceMetrics ( &printer ); |
289 | float dx, dy; | 292 | float dx, dy; |
290 | int wid = (m.width() * 9)/10; | 293 | int wid = (m.width() * 9)/10; |
291 | dx = (float) wid/(float)contentsWidth (); | 294 | dx = (float) wid/(float)contentsWidth (); |
292 | dy = (float)(m.height()) / (float)contentsHeight (); | 295 | dy = (float)(m.height()) / (float)contentsHeight (); |
293 | float scale; | 296 | float scale; |
294 | // scale to fit the width or height of the paper | 297 | // scale to fit the width or height of the paper |
295 | if ( dx < dy ) | 298 | if ( dx < dy ) |
296 | scale = dx; | 299 | scale = dx; |
297 | else | 300 | else |
298 | scale = dy; | 301 | scale = dy; |
@@ -350,51 +353,77 @@ void ContactListView::contentsMouseMoveEvent( QMouseEvent *e ) | |||
350 | bool ContactListView::acceptDrag(QDropEvent *e) const | 353 | bool ContactListView::acceptDrag(QDropEvent *e) const |
351 | { | 354 | { |
352 | #ifndef KAB_EMBEDDED | 355 | #ifndef KAB_EMBEDDED |
353 | return QTextDrag::canDecode(e); | 356 | return QTextDrag::canDecode(e); |
354 | #else //KAB_EMBEDDED | 357 | #else //KAB_EMBEDDED |
355 | qDebug("ContactListView::acceptDrag has to be fixed"); | 358 | qDebug("ContactListView::acceptDrag has to be fixed"); |
356 | return false; | 359 | return false; |
357 | #endif //KAB_EMBEDDED | 360 | #endif //KAB_EMBEDDED |
358 | } | 361 | } |
359 | 362 | ||
360 | void ContactListView::itemDropped(QDropEvent *e) | 363 | void ContactListView::itemDropped(QDropEvent *e) |
361 | { | 364 | { |
362 | contentsDropEvent(e); | 365 | contentsDropEvent(e); |
363 | } | 366 | } |
364 | 367 | ||
365 | void ContactListView::contentsDropEvent( QDropEvent *e ) | 368 | void ContactListView::contentsDropEvent( QDropEvent *e ) |
366 | { | 369 | { |
367 | emit addresseeDropped(e); | 370 | emit addresseeDropped(e); |
368 | } | 371 | } |
369 | 372 | ||
370 | void ContactListView::setAlternateBackgroundEnabled(bool enabled) | 373 | void ContactListView::setAlternateBackgroundEnabled(bool enabled) |
371 | { | 374 | { |
372 | mABackground = enabled; | 375 | mABackground = enabled; |
373 | 376 | ||
374 | if (mABackground) | 377 | if (mABackground) |
375 | { | 378 | { |
376 | setAlternateBackground(mAlternateColor); | 379 | setAlternateBackground(mAlternateColor); |
377 | } | 380 | } |
378 | else | 381 | else |
379 | { | 382 | { |
380 | setAlternateBackground(QColor()); | 383 | setAlternateBackground(QColor()); |
381 | } | 384 | } |
382 | } | 385 | } |
383 | 386 | ||
384 | void ContactListView::setBackgroundPixmap(const QString &filename) | 387 | void ContactListView::setBackgroundPixmap(const QString &filename) |
385 | { | 388 | { |
386 | if (filename.isEmpty()) | 389 | if (filename.isEmpty()) |
387 | { | 390 | { |
388 | unsetPalette(); | 391 | unsetPalette(); |
389 | } | 392 | } |
390 | else | 393 | else |
391 | { | 394 | { |
392 | qDebug("ContactListView::setBackgroundPixmap has to be verified"); | 395 | qDebug("ContactListView::setBackgroundPixmap has to be verified"); |
393 | //US setPaletteBackgroundPixmap(QPixmap(filename)); | 396 | //US setPaletteBackgroundPixmap(QPixmap(filename)); |
394 | KListView::setBackgroundPixmap((const QPixmap&)QPixmap(filename)); | 397 | KListView::setBackgroundPixmap((const QPixmap&)QPixmap(filename)); |
395 | } | 398 | } |
396 | 399 | ||
397 | } | 400 | } |
401 | |||
402 | void ContactListView::keyPressEvent ( QKeyEvent * e ) | ||
403 | { | ||
404 | if ( mFlagBlockKeyPressed ) | ||
405 | return; | ||
406 | qApp->processEvents(); | ||
407 | if ( e->isAutoRepeat() && !mFlagKeyPressed ) { | ||
408 | e->accept(); | ||
409 | return; | ||
410 | } | ||
411 | if (! e->isAutoRepeat() ) | ||
412 | mFlagKeyPressed = true; | ||
413 | KListView::keyPressEvent ( e ); | ||
414 | } | ||
415 | void ContactListView::keyReleaseEvent ( QKeyEvent * e ) | ||
416 | { | ||
417 | if ( mFlagBlockKeyPressed ) | ||
418 | return; | ||
419 | if ( !e->isAutoRepeat() ) { | ||
420 | mFlagBlockKeyPressed = true; | ||
421 | qApp->processEvents(); | ||
422 | mFlagBlockKeyPressed = false; | ||
423 | mFlagKeyPressed = false; | ||
424 | } | ||
425 | KListView::keyReleaseEvent ( e ); | ||
426 | } | ||
398 | #ifndef KAB_EMBEDDED | 427 | #ifndef KAB_EMBEDDED |
399 | #include "contactlistview.moc" | 428 | #include "contactlistview.moc" |
400 | #endif //KAB_EMBEDDED | 429 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/views/contactlistview.h b/kaddressbook/views/contactlistview.h index 9d1a672..46477e1 100644 --- a/kaddressbook/views/contactlistview.h +++ b/kaddressbook/views/contactlistview.h | |||
@@ -47,84 +47,88 @@ public: | |||
47 | */ | 47 | */ |
48 | virtual void paintCell(QPainter * p, const QColorGroup & cg, | 48 | virtual void paintCell(QPainter * p, const QColorGroup & cg, |
49 | int column, int width, int align ); | 49 | int column, int width, int align ); |
50 | 50 | ||
51 | private: | 51 | private: |
52 | KABC::Addressee mAddressee; | 52 | KABC::Addressee mAddressee; |
53 | KABC::Field::List mFields; | 53 | KABC::Field::List mFields; |
54 | ContactListView *parentListView; | 54 | ContactListView *parentListView; |
55 | KABC::AddressBook *mDocument; | 55 | KABC::AddressBook *mDocument; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | 58 | ||
59 | ///////////////////////////////////////////// | 59 | ///////////////////////////////////////////// |
60 | // ContactListView | 60 | // ContactListView |
61 | 61 | ||
62 | class ContactListView : public KListView | 62 | class ContactListView : public KListView |
63 | { | 63 | { |
64 | Q_OBJECT | 64 | Q_OBJECT |
65 | 65 | ||
66 | public: | 66 | public: |
67 | ContactListView(KAddressBookTableView *view, | 67 | ContactListView(KAddressBookTableView *view, |
68 | KABC::AddressBook *doc, | 68 | KABC::AddressBook *doc, |
69 | QWidget *parent, | 69 | QWidget *parent, |
70 | const char *name = 0L ); | 70 | const char *name = 0L ); |
71 | virtual ~ContactListView() {} | 71 | virtual ~ContactListView() {} |
72 | //void resort(); | 72 | //void resort(); |
73 | 73 | ||
74 | /** Returns true if tooltips should be displayed, false otherwise | 74 | /** Returns true if tooltips should be displayed, false otherwise |
75 | */ | 75 | */ |
76 | bool tooltips() const { return mToolTips; } | 76 | bool tooltips() const { return mToolTips; } |
77 | void setToolTipsEnabled(bool enabled) { mToolTips = enabled; } | 77 | void setToolTipsEnabled(bool enabled) { mToolTips = enabled; } |
78 | 78 | ||
79 | bool alternateBackground() const { return mABackground; } | 79 | bool alternateBackground() const { return mABackground; } |
80 | void setAlternateBackgroundEnabled(bool enabled); | 80 | void setAlternateBackgroundEnabled(bool enabled); |
81 | 81 | ||
82 | bool singleLine() const { return mSingleLine; } | 82 | bool singleLine() const { return mSingleLine; } |
83 | void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; } | 83 | void setSingleLineEnabled(bool enabled) { mSingleLine = enabled; } |
84 | 84 | ||
85 | const QColor &alternateColor() const { return mAlternateColor; } | 85 | const QColor &alternateColor() const { return mAlternateColor; } |
86 | void setAlternateColor(const QColor &mAlternateColor); | 86 | void setAlternateColor(const QColor &mAlternateColor); |
87 | 87 | ||
88 | /** Sets the background pixmap to <i>filename</i>. If the | 88 | /** Sets the background pixmap to <i>filename</i>. If the |
89 | * QString is empty (QString::isEmpty()), then the background | 89 | * QString is empty (QString::isEmpty()), then the background |
90 | * pixmap will be disabled. | 90 | * pixmap will be disabled. |
91 | */ | 91 | */ |
92 | void setBackgroundPixmap(const QString &filename); | 92 | void setBackgroundPixmap(const QString &filename); |
93 | 93 | ||
94 | protected: | 94 | protected: |
95 | bool mFlagKeyPressed; | ||
96 | bool mFlagBlockKeyPressed; | ||
97 | virtual void keyPressEvent ( QKeyEvent * ); | ||
98 | virtual void keyReleaseEvent ( QKeyEvent * ); | ||
95 | /** Paints the background pixmap in the empty area. This method is needed | 99 | /** Paints the background pixmap in the empty area. This method is needed |
96 | * since Qt::FixedPixmap will not scroll with the list view. | 100 | * since Qt::FixedPixmap will not scroll with the list view. |
97 | */ | 101 | */ |
98 | virtual void paintEmptyArea( QPainter * p, const QRect & rect ); | 102 | virtual void paintEmptyArea( QPainter * p, const QRect & rect ); |
99 | virtual void contentsMousePressEvent(QMouseEvent*); | 103 | virtual void contentsMousePressEvent(QMouseEvent*); |
100 | void contentsMouseMoveEvent( QMouseEvent *e ); | 104 | void contentsMouseMoveEvent( QMouseEvent *e ); |
101 | void contentsDropEvent( QDropEvent *e ); | 105 | void contentsDropEvent( QDropEvent *e ); |
102 | virtual bool acceptDrag(QDropEvent *e) const; | 106 | virtual bool acceptDrag(QDropEvent *e) const; |
103 | 107 | ||
104 | protected slots: | 108 | protected slots: |
105 | void itemDropped(QDropEvent *e); | 109 | void itemDropped(QDropEvent *e); |
106 | 110 | ||
107 | public slots: | 111 | public slots: |
108 | void printMe(); | 112 | void printMe(); |
109 | 113 | ||
110 | signals: | 114 | signals: |
111 | void startAddresseeDrag(); | 115 | void startAddresseeDrag(); |
112 | void addresseeDropped(QDropEvent *); | 116 | void addresseeDropped(QDropEvent *); |
113 | 117 | ||
114 | private: | 118 | private: |
115 | KAddressBookTableView *pabWidget; | 119 | KAddressBookTableView *pabWidget; |
116 | int oldColumn; | 120 | int oldColumn; |
117 | int column; | 121 | int column; |
118 | bool ascending; | 122 | bool ascending; |
119 | 123 | ||
120 | bool mABackground; | 124 | bool mABackground; |
121 | bool mSingleLine; | 125 | bool mSingleLine; |
122 | bool mToolTips; | 126 | bool mToolTips; |
123 | 127 | ||
124 | QColor mAlternateColor; | 128 | QColor mAlternateColor; |
125 | 129 | ||
126 | QPoint presspos; | 130 | QPoint presspos; |
127 | }; | 131 | }; |
128 | 132 | ||
129 | 133 | ||
130 | #endif | 134 | #endif |
diff --git a/kaddressbook/views/kaddressbookcardview.cpp b/kaddressbook/views/kaddressbookcardview.cpp index cce68b9..9c35fd6 100644 --- a/kaddressbook/views/kaddressbookcardview.cpp +++ b/kaddressbook/views/kaddressbookcardview.cpp | |||
@@ -163,102 +163,106 @@ void AddresseeCardView::dropEvent(QDropEvent *e) | |||
163 | void AddresseeCardView::startDrag() | 163 | void AddresseeCardView::startDrag() |
164 | { | 164 | { |
165 | emit startAddresseeDrag(); | 165 | emit startAddresseeDrag(); |
166 | } | 166 | } |
167 | 167 | ||
168 | 168 | ||
169 | /////////////////////////////// | 169 | /////////////////////////////// |
170 | // KAddressBookCardView | 170 | // KAddressBookCardView |
171 | 171 | ||
172 | KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab, | 172 | KAddressBookCardView::KAddressBookCardView( KABC::AddressBook *ab, |
173 | QWidget *parent, const char *name ) | 173 | QWidget *parent, const char *name ) |
174 | : KAddressBookView( ab, parent, name ) | 174 | : KAddressBookView( ab, parent, name ) |
175 | { | 175 | { |
176 | mShowEmptyFields = false; | 176 | mShowEmptyFields = false; |
177 | 177 | ||
178 | // Init the GUI | 178 | // Init the GUI |
179 | QVBoxLayout *layout = new QVBoxLayout(viewWidget()); | 179 | QVBoxLayout *layout = new QVBoxLayout(viewWidget()); |
180 | 180 | ||
181 | mCardView = new AddresseeCardView(viewWidget(), "mCardView"); | 181 | mCardView = new AddresseeCardView(viewWidget(), "mCardView"); |
182 | mCardView->setSelectionMode(CardView::Extended); | 182 | mCardView->setSelectionMode(CardView::Extended); |
183 | layout->addWidget(mCardView); | 183 | layout->addWidget(mCardView); |
184 | 184 | ||
185 | // Connect up the signals | 185 | // Connect up the signals |
186 | connect(mCardView, SIGNAL(executed(CardViewItem *)), | 186 | connect(mCardView, SIGNAL(executed(CardViewItem *)), |
187 | this, SLOT(addresseeExecuted(CardViewItem *))); | 187 | this, SLOT(addresseeExecuted(CardViewItem *))); |
188 | connect(mCardView, SIGNAL(selectionChanged()), | 188 | connect(mCardView, SIGNAL(selectionChanged()), |
189 | this, SLOT(addresseeSelected())); | 189 | this, SLOT(addresseeSelected())); |
190 | connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)), | 190 | connect(mCardView, SIGNAL(addresseeDropped(QDropEvent*)), |
191 | this, SIGNAL(dropped(QDropEvent*))); | 191 | this, SIGNAL(dropped(QDropEvent*))); |
192 | connect(mCardView, SIGNAL(startAddresseeDrag()), | 192 | connect(mCardView, SIGNAL(startAddresseeDrag()), |
193 | this, SIGNAL(startDrag())); | 193 | this, SIGNAL(startDrag())); |
194 | connect(this, SIGNAL(printView()), | 194 | connect(this, SIGNAL(printView()), |
195 | mCardView , SLOT(printMe())); | 195 | mCardView , SLOT(printMe())); |
196 | } | 196 | } |
197 | 197 | ||
198 | KAddressBookCardView::~KAddressBookCardView() | 198 | KAddressBookCardView::~KAddressBookCardView() |
199 | { | 199 | { |
200 | } | 200 | } |
201 | void KAddressBookCardView::setFocusAV() | 201 | void KAddressBookCardView::setFocusAV() |
202 | { | 202 | { |
203 | if ( mCardView ) | 203 | if ( mCardView ) |
204 | mCardView->setFocus(); | 204 | mCardView->setFocus(); |
205 | 205 | ||
206 | } | 206 | } |
207 | void KAddressBookCardView::scrollUP() | 207 | void KAddressBookCardView::scrollUP() |
208 | { | 208 | { |
209 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); | 209 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); |
210 | QApplication::postEvent( mCardView, ev ); | 210 | QApplication::postEvent( mCardView, ev ); |
211 | ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Up, 0,0 ); | ||
212 | QApplication::postEvent( mCardView, ev ); | ||
211 | 213 | ||
212 | } | 214 | } |
213 | void KAddressBookCardView::scrollDOWN() | 215 | void KAddressBookCardView::scrollDOWN() |
214 | { | 216 | { |
215 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); | 217 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); |
216 | QApplication::postEvent( mCardView, ev ); | 218 | QApplication::postEvent( mCardView, ev ); |
219 | ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Down, 0,0 ); | ||
220 | QApplication::postEvent( mCardView, ev ); | ||
217 | } | 221 | } |
218 | void KAddressBookCardView::readConfig(KConfig *config) | 222 | void KAddressBookCardView::readConfig(KConfig *config) |
219 | { | 223 | { |
220 | KAddressBookView::readConfig(config); | 224 | KAddressBookView::readConfig(config); |
221 | 225 | ||
222 | // costum colors? | 226 | // costum colors? |
223 | if ( config->readBoolEntry( "EnableCustomColors", false ) ) | 227 | if ( config->readBoolEntry( "EnableCustomColors", false ) ) |
224 | { | 228 | { |
225 | QPalette p( mCardView->palette() ); | 229 | QPalette p( mCardView->palette() ); |
226 | QColor c = p.color(QPalette::Normal, QColorGroup::Base ); | 230 | QColor c = p.color(QPalette::Normal, QColorGroup::Base ); |
227 | p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); | 231 | p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); |
228 | c = p.color(QPalette::Normal, QColorGroup::Text ); | 232 | c = p.color(QPalette::Normal, QColorGroup::Text ); |
229 | p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); | 233 | p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); |
230 | c = p.color(QPalette::Normal, QColorGroup::Button ); | 234 | c = p.color(QPalette::Normal, QColorGroup::Button ); |
231 | p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); | 235 | p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); |
232 | c = p.color(QPalette::Normal, QColorGroup::ButtonText ); | 236 | c = p.color(QPalette::Normal, QColorGroup::ButtonText ); |
233 | p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); | 237 | p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); |
234 | c = p.color(QPalette::Normal, QColorGroup::Highlight ); | 238 | c = p.color(QPalette::Normal, QColorGroup::Highlight ); |
235 | p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); | 239 | p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); |
236 | c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); | 240 | c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); |
237 | p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); | 241 | p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); |
238 | mCardView->viewport()->setPalette( p ); | 242 | mCardView->viewport()->setPalette( p ); |
239 | } | 243 | } |
240 | else | 244 | else |
241 | { | 245 | { |
242 | // needed if turned off during a session. | 246 | // needed if turned off during a session. |
243 | mCardView->viewport()->setPalette( mCardView->palette() ); | 247 | mCardView->viewport()->setPalette( mCardView->palette() ); |
244 | } | 248 | } |
245 | 249 | ||
246 | //custom fonts? | 250 | //custom fonts? |
247 | QFont f( font() ); | 251 | QFont f( font() ); |
248 | if ( config->readBoolEntry( "EnableCustomFonts", false ) ) | 252 | if ( config->readBoolEntry( "EnableCustomFonts", false ) ) |
249 | { | 253 | { |
250 | mCardView->setFont( config->readFontEntry( "TextFont", &f) ); | 254 | mCardView->setFont( config->readFontEntry( "TextFont", &f) ); |
251 | f.setBold( true ); | 255 | f.setBold( true ); |
252 | mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); | 256 | mCardView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); |
253 | } | 257 | } |
254 | else | 258 | else |
255 | { | 259 | { |
256 | mCardView->setFont( f ); | 260 | mCardView->setFont( f ); |
257 | f.setBold( true ); | 261 | f.setBold( true ); |
258 | mCardView->setHeaderFont( f ); | 262 | mCardView->setHeaderFont( f ); |
259 | } | 263 | } |
260 | 264 | ||
261 | mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true)); | 265 | mCardView->setDrawCardBorder(config->readBoolEntry("DrawBorder", true)); |
262 | mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators", | 266 | mCardView->setDrawColSeparators(config->readBoolEntry("DrawSeparators", |
263 | true)); | 267 | true)); |
264 | mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); | 268 | mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); |
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp index f4b008c..e322473 100644 --- a/kaddressbook/views/kaddressbooktableview.cpp +++ b/kaddressbook/views/kaddressbooktableview.cpp | |||
@@ -16,101 +16,105 @@ | |||
16 | #include <kapplication.h> | 16 | #include <kapplication.h> |
17 | #include <kconfig.h> | 17 | #include <kconfig.h> |
18 | #include <kcolorbutton.h> | 18 | #include <kcolorbutton.h> |
19 | #include <kdebug.h> | 19 | #include <kdebug.h> |
20 | #include <kglobal.h> | 20 | #include <kglobal.h> |
21 | #include <kiconloader.h> | 21 | #include <kiconloader.h> |
22 | #include <klineedit.h> | 22 | #include <klineedit.h> |
23 | #include <klocale.h> | 23 | #include <klocale.h> |
24 | #include <kmessagebox.h> | 24 | #include <kmessagebox.h> |
25 | #include <kurl.h> | 25 | #include <kurl.h> |
26 | #include <kurlrequester.h> | 26 | #include <kurlrequester.h> |
27 | 27 | ||
28 | //US#include "configuretableviewdialog.h" | 28 | //US#include "configuretableviewdialog.h" |
29 | #include "contactlistview.h" | 29 | #include "contactlistview.h" |
30 | #include "kabprefs.h" | 30 | #include "kabprefs.h" |
31 | #include "undocmds.h" | 31 | #include "undocmds.h" |
32 | #include "viewmanager.h" | 32 | #include "viewmanager.h" |
33 | 33 | ||
34 | #include <qlayout.h> | 34 | #include <qlayout.h> |
35 | #include <qheader.h> | 35 | #include <qheader.h> |
36 | #include <qregexp.h> | 36 | #include <qregexp.h> |
37 | 37 | ||
38 | #include "kaddressbooktableview.h" | 38 | #include "kaddressbooktableview.h" |
39 | 39 | ||
40 | 40 | ||
41 | KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab, | 41 | KAddressBookTableView::KAddressBookTableView( KABC::AddressBook *ab, |
42 | QWidget *parent, const char *name ) | 42 | QWidget *parent, const char *name ) |
43 | : KAddressBookView( ab, parent, name ) | 43 | : KAddressBookView( ab, parent, name ) |
44 | { | 44 | { |
45 | mainLayout = new QVBoxLayout( viewWidget(), 2 ); | 45 | mainLayout = new QVBoxLayout( viewWidget(), 2 ); |
46 | 46 | ||
47 | // The list view will be created when the config is read. | 47 | // The list view will be created when the config is read. |
48 | mListView = 0; | 48 | mListView = 0; |
49 | } | 49 | } |
50 | 50 | ||
51 | KAddressBookTableView::~KAddressBookTableView() | 51 | KAddressBookTableView::~KAddressBookTableView() |
52 | { | 52 | { |
53 | } | 53 | } |
54 | void KAddressBookTableView::setFocusAV() | 54 | void KAddressBookTableView::setFocusAV() |
55 | { | 55 | { |
56 | if ( mListView ) | 56 | if ( mListView ) |
57 | mListView->setFocus(); | 57 | mListView->setFocus(); |
58 | 58 | ||
59 | } | 59 | } |
60 | void KAddressBookTableView::scrollUP() | 60 | void KAddressBookTableView::scrollUP() |
61 | { | 61 | { |
62 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); | 62 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); |
63 | QApplication::postEvent( mListView, ev ); | 63 | QApplication::postEvent( mListView, ev ); |
64 | ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Up, 0,0 ); | ||
65 | QApplication::postEvent( mListView, ev ); | ||
64 | } | 66 | } |
65 | void KAddressBookTableView::scrollDOWN() | 67 | void KAddressBookTableView::scrollDOWN() |
66 | { | 68 | { |
67 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); | 69 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); |
68 | QApplication::postEvent( mListView, ev ); | 70 | QApplication::postEvent( mListView, ev ); |
71 | ev = new QKeyEvent ( QEvent::KeyRelease, Qt::Key_Down, 0,0 ); | ||
72 | QApplication::postEvent( mListView, ev ); | ||
69 | } | 73 | } |
70 | void KAddressBookTableView::reconstructListView() | 74 | void KAddressBookTableView::reconstructListView() |
71 | { | 75 | { |
72 | if (mListView) | 76 | if (mListView) |
73 | { | 77 | { |
74 | disconnect(mListView, SIGNAL(selectionChanged()), | 78 | disconnect(mListView, SIGNAL(selectionChanged()), |
75 | this, SLOT(addresseeSelected())); | 79 | this, SLOT(addresseeSelected())); |
76 | disconnect(mListView, SIGNAL(executed(QListViewItem*)), | 80 | disconnect(mListView, SIGNAL(executed(QListViewItem*)), |
77 | this, SLOT(addresseeExecuted(QListViewItem*))); | 81 | this, SLOT(addresseeExecuted(QListViewItem*))); |
78 | disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), | 82 | disconnect(mListView, SIGNAL(doubleClicked(QListViewItem*)), |
79 | this, SLOT(addresseeExecuted(QListViewItem*))); | 83 | this, SLOT(addresseeExecuted(QListViewItem*))); |
80 | disconnect(mListView, SIGNAL(startAddresseeDrag()), this, | 84 | disconnect(mListView, SIGNAL(startAddresseeDrag()), this, |
81 | SIGNAL(startDrag())); | 85 | SIGNAL(startDrag())); |
82 | disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), | 86 | disconnect(mListView, SIGNAL(returnPressed(QListViewItem*)), |
83 | this, SLOT(addresseeExecuted(QListViewItem*))); | 87 | this, SLOT(addresseeExecuted(QListViewItem*))); |
84 | 88 | ||
85 | disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, | 89 | disconnect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, |
86 | SIGNAL(dropped(QDropEvent*))); | 90 | SIGNAL(dropped(QDropEvent*))); |
87 | delete mListView; | 91 | delete mListView; |
88 | } | 92 | } |
89 | 93 | ||
90 | mListView = new ContactListView( this, addressBook(), viewWidget() ); | 94 | mListView = new ContactListView( this, addressBook(), viewWidget() ); |
91 | 95 | ||
92 | connect(this, SIGNAL(printView()), | 96 | connect(this, SIGNAL(printView()), |
93 | mListView , SLOT(printMe())); | 97 | mListView , SLOT(printMe())); |
94 | //US set singleClick manually, because it is no global configparameter in embedded space | 98 | //US set singleClick manually, because it is no global configparameter in embedded space |
95 | mListView->setSingleClick(KABPrefs::instance()->mHonorSingleClick); | 99 | mListView->setSingleClick(KABPrefs::instance()->mHonorSingleClick); |
96 | 100 | ||
97 | // Add the columns | 101 | // Add the columns |
98 | KABC::Field::List fieldList = fields(); | 102 | KABC::Field::List fieldList = fields(); |
99 | KABC::Field::List::ConstIterator it; | 103 | KABC::Field::List::ConstIterator it; |
100 | 104 | ||
101 | int c = 0; | 105 | int c = 0; |
102 | for( it = fieldList.begin(); it != fieldList.end(); ++it ) { | 106 | for( it = fieldList.begin(); it != fieldList.end(); ++it ) { |
103 | mListView->addColumn( (*it)->label() ); | 107 | mListView->addColumn( (*it)->label() ); |
104 | mListView->setColumnWidthMode(c++, QListView::Manual); | 108 | mListView->setColumnWidthMode(c++, QListView::Manual); |
105 | //US | 109 | //US |
106 | // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); | 110 | // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); |
107 | } | 111 | } |
108 | 112 | ||
109 | connect(mListView, SIGNAL(selectionChanged()), | 113 | connect(mListView, SIGNAL(selectionChanged()), |
110 | this, SLOT(addresseeSelected())); | 114 | this, SLOT(addresseeSelected())); |
111 | connect(mListView, SIGNAL(startAddresseeDrag()), this, | 115 | connect(mListView, SIGNAL(startAddresseeDrag()), this, |
112 | SIGNAL(startDrag())); | 116 | SIGNAL(startDrag())); |
113 | connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, | 117 | connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, |
114 | SIGNAL(dropped(QDropEvent*))); | 118 | SIGNAL(dropped(QDropEvent*))); |
115 | 119 | ||
116 | if (KABPrefs::instance()->mHonorSingleClick) { | 120 | if (KABPrefs::instance()->mHonorSingleClick) { |