author | zautrix <zautrix> | 2005-01-12 20:38:44 (UTC) |
---|---|---|
committer | zautrix <zautrix> | 2005-01-12 20:38:44 (UTC) |
commit | 7a4a866cded40032766acb4fe8d02b6347b1d12e (patch) (unidiff) | |
tree | 14cced6e387842839616cd6727b40a522586c364 | |
parent | ffa81b34b0d7b3c53f46869a05194072a339a69d (diff) | |
download | kdepimpi-7a4a866cded40032766acb4fe8d02b6347b1d12e.zip kdepimpi-7a4a866cded40032766acb4fe8d02b6347b1d12e.tar.gz kdepimpi-7a4a866cded40032766acb4fe8d02b6347b1d12e.tar.bz2 |
search fixes
-rw-r--r-- | bin/kdepim/WhatsNew.txt | 9 | ||||
-rw-r--r-- | kaddressbook/kaddressbookview.cpp | 4 | ||||
-rw-r--r-- | kaddressbook/kaddressbookview.h | 2 | ||||
-rw-r--r-- | kaddressbook/views/kaddressbookcardview.cpp | 2 | ||||
-rw-r--r-- | kaddressbook/views/kaddressbookiconview.cpp | 2 | ||||
-rw-r--r-- | kaddressbook/views/kaddressbooktableview.cpp | 6 |
6 files changed, 18 insertions, 7 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt index a425311..2fd63e7 100644 --- a/bin/kdepim/WhatsNew.txt +++ b/bin/kdepim/WhatsNew.txt | |||
@@ -1,66 +1,75 @@ | |||
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.17 ************ | ||
4 | |||
5 | KO/Pi: | ||
6 | Fixed that tooltips were not updated after moving an item in agenda view. | ||
7 | |||
8 | KA/Pi: | ||
9 | All fields search does now actually search all the (possible) fields, | ||
10 | not only those listed in the contact list. | ||
11 | |||
3 | ********** VERSION 1.9.16 ************ | 12 | ********** VERSION 1.9.16 ************ |
4 | 13 | ||
5 | KO/Pi: | 14 | KO/Pi: |
6 | Fixed search dialog size on Z 6000 (480x640 display). | 15 | Fixed search dialog size on Z 6000 (480x640 display). |
7 | Added setting to hide/show time in agenda items. | 16 | Added setting to hide/show time in agenda items. |
8 | Added setting to hide not running todos in todo view. | 17 | Added setting to hide not running todos in todo view. |
9 | Added columns for start date/time in todo view. | 18 | Added columns for start date/time in todo view. |
10 | Replaced the solid half-hour lines in agenda view by dot lines. | 19 | Replaced the solid half-hour lines in agenda view by dot lines. |
11 | Added possibility of printing the What's Next View on the desktop | 20 | Added possibility of printing the What's Next View on the desktop |
12 | (i.e. Windows and Linux). | 21 | (i.e. Windows and Linux). |
13 | Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. | 22 | Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. |
14 | Added tooltips in month view.(Tooltips only available on desktop) | 23 | Added tooltips in month view.(Tooltips only available on desktop) |
15 | 24 | ||
16 | Fixed a strange problem in KO/Pi alarm applet. | 25 | Fixed a strange problem in KO/Pi alarm applet. |
17 | Did not find the actual problem, | 26 | Did not find the actual problem, |
18 | such that now Qtopia reboots again if deinstalling the alarm applet. | 27 | such that now Qtopia reboots again if deinstalling the alarm applet. |
19 | But the alarm applet should work again. | 28 | But the alarm applet should work again. |
20 | 29 | ||
21 | KA/Pi: | 30 | KA/Pi: |
22 | Fixed the problem, that internal pictures were not saved. | 31 | Fixed the problem, that internal pictures were not saved. |
23 | 32 | ||
24 | Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. | 33 | Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. |
25 | 34 | ||
26 | Fixed some minor problems. (Like word wrap in help text windows). | 35 | Fixed some minor problems. (Like word wrap in help text windows). |
27 | 36 | ||
28 | Fixed a compiling problem in microkde/kresources. | 37 | Fixed a compiling problem in microkde/kresources. |
29 | 38 | ||
30 | KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. | 39 | KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. |
31 | This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) | 40 | This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) |
32 | such that now syncing KO/Pi with Sharp DTM should work on the | 41 | such that now syncing KO/Pi with Sharp DTM should work on the |
33 | Zaurus C 3000 model. | 42 | Zaurus C 3000 model. |
34 | 43 | ||
35 | ********** VERSION 1.9.15 ************ | 44 | ********** VERSION 1.9.15 ************ |
36 | 45 | ||
37 | Usebilty enhancements in KO/Pi: | 46 | Usebilty enhancements in KO/Pi: |
38 | When clicking on the date in a month view cell, the day view is shown. | 47 | When clicking on the date in a month view cell, the day view is shown. |
39 | Old behaviour was, that the "new event" dialog popped up. | 48 | Old behaviour was, that the "new event" dialog popped up. |
40 | 49 | ||
41 | Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). | 50 | Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). |
42 | That means, you can restore the latest | 51 | That means, you can restore the latest |
43 | event/todo/journal you have deleted. | 52 | event/todo/journal you have deleted. |
44 | A journal is deleted, if you clear all the text of the journal. | 53 | A journal is deleted, if you clear all the text of the journal. |
45 | 54 | ||
46 | Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. | 55 | Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. |
47 | 56 | ||
48 | KA/Pi starting in 480x640 resolution: | 57 | KA/Pi starting in 480x640 resolution: |
49 | Hide the filter action in toolbar | 58 | Hide the filter action in toolbar |
50 | and added icons for undo/delete/redo in toolbar. | 59 | and added icons for undo/delete/redo in toolbar. |
51 | 60 | ||
52 | Change in OM/Pi ViewMail dialog: | 61 | Change in OM/Pi ViewMail dialog: |
53 | When clicking on the "delete" icon the mail is deleted after confirmation as usual. | 62 | When clicking on the "delete" icon the mail is deleted after confirmation as usual. |
54 | But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). | 63 | But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). |
55 | 64 | ||
56 | Fixed a crash when deleting mail-accounts in OM/Pi. | 65 | Fixed a crash when deleting mail-accounts in OM/Pi. |
57 | 66 | ||
58 | 67 | ||
59 | ********** VERSION 1.9.14 ************ | 68 | ********** VERSION 1.9.14 ************ |
60 | 69 | ||
61 | Fixed some problems with the dialog sizes when switching | 70 | Fixed some problems with the dialog sizes when switching |
62 | portrait/landscape mode on 640x480 PDA display. | 71 | portrait/landscape mode on 640x480 PDA display. |
63 | 72 | ||
64 | Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. | 73 | Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. |
65 | 74 | ||
66 | Fixed an ugly bug in KOpieMail: | 75 | Fixed an ugly bug in KOpieMail: |
diff --git a/kaddressbook/kaddressbookview.cpp b/kaddressbook/kaddressbookview.cpp index 8062354..424d52a 100644 --- a/kaddressbook/kaddressbookview.cpp +++ b/kaddressbook/kaddressbookview.cpp | |||
@@ -67,100 +67,104 @@ void KAddressBookView::readConfig( KConfig *config ) | |||
67 | void KAddressBookView::writeConfig( KConfig* ) | 67 | void KAddressBookView::writeConfig( KConfig* ) |
68 | { | 68 | { |
69 | // Most of writing the config is handled by the ConfigureViewDialog | 69 | // Most of writing the config is handled by the ConfigureViewDialog |
70 | } | 70 | } |
71 | 71 | ||
72 | QString KAddressBookView::selectedEmails() | 72 | QString KAddressBookView::selectedEmails() |
73 | { | 73 | { |
74 | bool first = true; | 74 | bool first = true; |
75 | QString emailAddrs; | 75 | QString emailAddrs; |
76 | QStringList uidList = selectedUids(); | 76 | QStringList uidList = selectedUids(); |
77 | KABC::Addressee addr; | 77 | KABC::Addressee addr; |
78 | QString email; | 78 | QString email; |
79 | 79 | ||
80 | QStringList::Iterator it; | 80 | QStringList::Iterator it; |
81 | for ( it = uidList.begin(); it != uidList.end(); ++it ) { | 81 | for ( it = uidList.begin(); it != uidList.end(); ++it ) { |
82 | addr = mAddressBook->findByUid( *it ); | 82 | addr = mAddressBook->findByUid( *it ); |
83 | 83 | ||
84 | if ( !addr.isEmpty() ) { | 84 | if ( !addr.isEmpty() ) { |
85 | QString m = QString::null; | 85 | QString m = QString::null; |
86 | 86 | ||
87 | if ( addr.emails().count() > 1 ) | 87 | if ( addr.emails().count() > 1 ) |
88 | m = KABC::EmailSelector::getEmail( addr.emails(), addr.preferredEmail(), this ); | 88 | m = KABC::EmailSelector::getEmail( addr.emails(), addr.preferredEmail(), this ); |
89 | 89 | ||
90 | email = addr.fullEmail( m ); | 90 | email = addr.fullEmail( m ); |
91 | 91 | ||
92 | if ( !first ) | 92 | if ( !first ) |
93 | emailAddrs += ", "; | 93 | emailAddrs += ", "; |
94 | else | 94 | else |
95 | first = false; | 95 | first = false; |
96 | 96 | ||
97 | emailAddrs += email; | 97 | emailAddrs += email; |
98 | } | 98 | } |
99 | } | 99 | } |
100 | 100 | ||
101 | return emailAddrs; | 101 | return emailAddrs; |
102 | } | 102 | } |
103 | 103 | ||
104 | KABC::Addressee::List KAddressBookView::addressees() | 104 | KABC::Addressee::List KAddressBookView::addressees() |
105 | { | 105 | { |
106 | KABC::Addressee::List addresseeList; | 106 | KABC::Addressee::List addresseeList; |
107 | 107 | ||
108 | KABC::AddressBook::Iterator it; | 108 | KABC::AddressBook::Iterator it; |
109 | for (it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { | 109 | for (it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { |
110 | if ( mFilter.filterAddressee( *it ) ) | 110 | if ( mFilter.filterAddressee( *it ) ) |
111 | addresseeList.append( *it ); | 111 | addresseeList.append( *it ); |
112 | } | 112 | } |
113 | 113 | ||
114 | return addresseeList; | 114 | return addresseeList; |
115 | } | 115 | } |
116 | 116 | ||
117 | void KAddressBookView::initGUI() | 117 | void KAddressBookView::initGUI() |
118 | { | 118 | { |
119 | // Create the layout | 119 | // Create the layout |
120 | QVBoxLayout *layout = new QVBoxLayout( this ); | 120 | QVBoxLayout *layout = new QVBoxLayout( this ); |
121 | 121 | ||
122 | // Add the view widget | 122 | // Add the view widget |
123 | mViewWidget = new QWidget( this ); | 123 | mViewWidget = new QWidget( this ); |
124 | layout->addWidget( mViewWidget ); | 124 | layout->addWidget( mViewWidget ); |
125 | } | 125 | } |
126 | 126 | ||
127 | KABC::Field::List KAddressBookView::fields() const | 127 | KABC::Field::List KAddressBookView::fields() const |
128 | { | 128 | { |
129 | return mFieldList; | 129 | return mFieldList; |
130 | } | 130 | } |
131 | KABC::Field::List KAddressBookView::allFields() const | ||
132 | { | ||
133 | return KABC::Field::allFields(); | ||
134 | } | ||
131 | 135 | ||
132 | void KAddressBookView::setFilter( const Filter &filter ) | 136 | void KAddressBookView::setFilter( const Filter &filter ) |
133 | { | 137 | { |
134 | mFilter = filter; | 138 | mFilter = filter; |
135 | } | 139 | } |
136 | 140 | ||
137 | KAddressBookView::DefaultFilterType KAddressBookView::defaultFilterType() const | 141 | KAddressBookView::DefaultFilterType KAddressBookView::defaultFilterType() const |
138 | { | 142 | { |
139 | return mDefaultFilterType; | 143 | return mDefaultFilterType; |
140 | } | 144 | } |
141 | 145 | ||
142 | const QString &KAddressBookView::defaultFilterName() const | 146 | const QString &KAddressBookView::defaultFilterName() const |
143 | { | 147 | { |
144 | return mDefaultFilterName; | 148 | return mDefaultFilterName; |
145 | } | 149 | } |
146 | 150 | ||
147 | KABC::AddressBook *KAddressBookView::addressBook() const | 151 | KABC::AddressBook *KAddressBookView::addressBook() const |
148 | { | 152 | { |
149 | return mAddressBook; | 153 | return mAddressBook; |
150 | } | 154 | } |
151 | 155 | ||
152 | QWidget *KAddressBookView::viewWidget() | 156 | QWidget *KAddressBookView::viewWidget() |
153 | { | 157 | { |
154 | return mViewWidget; | 158 | return mViewWidget; |
155 | } | 159 | } |
156 | 160 | ||
157 | ViewConfigureWidget *ViewFactory::configureWidget( KABC::AddressBook *ab, | 161 | ViewConfigureWidget *ViewFactory::configureWidget( KABC::AddressBook *ab, |
158 | QWidget *parent, | 162 | QWidget *parent, |
159 | const char *name ) | 163 | const char *name ) |
160 | { | 164 | { |
161 | return new ViewConfigureWidget( ab, parent, name ); | 165 | return new ViewConfigureWidget( ab, parent, name ); |
162 | } | 166 | } |
163 | 167 | ||
164 | #ifndef KAB_EMBEDDED | 168 | #ifndef KAB_EMBEDDED |
165 | #include "kaddressbookview.moc" | 169 | #include "kaddressbookview.moc" |
166 | #endif //KAB_EMBEDDED | 170 | #endif //KAB_EMBEDDED |
diff --git a/kaddressbook/kaddressbookview.h b/kaddressbook/kaddressbookview.h index 2e91cbc..8646136 100644 --- a/kaddressbook/kaddressbookview.h +++ b/kaddressbook/kaddressbookview.h | |||
@@ -61,128 +61,130 @@ class KAddressBookView : public QWidget | |||
61 | 61 | ||
62 | /** | 62 | /** |
63 | Must be overloaded in subclasses. Should return a list of | 63 | Must be overloaded in subclasses. Should return a list of |
64 | all the uids of selected contacts. | 64 | all the uids of selected contacts. |
65 | */ | 65 | */ |
66 | virtual QStringList selectedUids() = 0; | 66 | virtual QStringList selectedUids() = 0; |
67 | virtual void doSearch( const QString& s ,KABC::Field *field ) = 0; | 67 | virtual void doSearch( const QString& s ,KABC::Field *field ) = 0; |
68 | virtual void scrollUP() = 0; | 68 | virtual void scrollUP() = 0; |
69 | virtual void scrollDOWN() = 0; | 69 | virtual void scrollDOWN() = 0; |
70 | virtual void setFocusAV() = 0; | 70 | virtual void setFocusAV() = 0; |
71 | 71 | ||
72 | /** | 72 | /** |
73 | Called whenever this view should read the config. This can be used | 73 | Called whenever this view should read the config. This can be used |
74 | as a sign that the config has changed, therefore the view should | 74 | as a sign that the config has changed, therefore the view should |
75 | assume the worst and rebuild itself if necessary. For example, | 75 | assume the worst and rebuild itself if necessary. For example, |
76 | in a table view this method may be called when the user adds or | 76 | in a table view this method may be called when the user adds or |
77 | removes columns from the view. | 77 | removes columns from the view. |
78 | 78 | ||
79 | If overloaded in the subclass, do not forget to call super class's | 79 | If overloaded in the subclass, do not forget to call super class's |
80 | method. | 80 | method. |
81 | 81 | ||
82 | @param config The KConfig object to read from. The group will already | 82 | @param config The KConfig object to read from. The group will already |
83 | be set, so do not change the group. | 83 | be set, so do not change the group. |
84 | */ | 84 | */ |
85 | virtual void readConfig( KConfig *config ); | 85 | virtual void readConfig( KConfig *config ); |
86 | 86 | ||
87 | /** | 87 | /** |
88 | Called whenever this view should write the config. The view should not | 88 | Called whenever this view should write the config. The view should not |
89 | write out information handled by the application, such as which fields | 89 | write out information handled by the application, such as which fields |
90 | are visible. The view should only write out information specific | 90 | are visible. The view should only write out information specific |
91 | to itself (i.e.: All information in the ViewConfigWidget) | 91 | to itself (i.e.: All information in the ViewConfigWidget) |
92 | 92 | ||
93 | If overloaded in the subclass, do not forget to call the super class's | 93 | If overloaded in the subclass, do not forget to call the super class's |
94 | method. | 94 | method. |
95 | 95 | ||
96 | @param config The KConfig object to read from. The group will already | 96 | @param config The KConfig object to read from. The group will already |
97 | be set, so do not change the group. | 97 | be set, so do not change the group. |
98 | */ | 98 | */ |
99 | virtual void writeConfig( KConfig *config ); | 99 | virtual void writeConfig( KConfig *config ); |
100 | 100 | ||
101 | /** | 101 | /** |
102 | Returns a QString with all the selected email addresses concatenated | 102 | Returns a QString with all the selected email addresses concatenated |
103 | together with a ',' seperator. | 103 | together with a ',' seperator. |
104 | */ | 104 | */ |
105 | virtual QString selectedEmails(); | 105 | virtual QString selectedEmails(); |
106 | 106 | ||
107 | /** | 107 | /** |
108 | Return the type of the view: Icon, Table, etc. Please make sure that | 108 | Return the type of the view: Icon, Table, etc. Please make sure that |
109 | this is the same value that ViewWrapper::type() will return for your | 109 | this is the same value that ViewWrapper::type() will return for your |
110 | view. | 110 | view. |
111 | */ | 111 | */ |
112 | virtual QString type() const = 0; | 112 | virtual QString type() const = 0; |
113 | 113 | ||
114 | /** | 114 | /** |
115 | Returns a list of the fields that should be displayed. The list | 115 | Returns a list of the fields that should be displayed. The list |
116 | is composed of the fields proper names (ie: Home Address), so | 116 | is composed of the fields proper names (ie: Home Address), so |
117 | the view may need to translate them in order to get the | 117 | the view may need to translate them in order to get the |
118 | value from the addressee. | 118 | value from the addressee. |
119 | 119 | ||
120 | This list is generated from the config file, so it is advisable to call | 120 | This list is generated from the config file, so it is advisable to call |
121 | this method whenever a readConfig() is called in order to get the newest | 121 | this method whenever a readConfig() is called in order to get the newest |
122 | list of fields. | 122 | list of fields. |
123 | */ | 123 | */ |
124 | KABC::Field::List fields() const; | 124 | KABC::Field::List fields() const; |
125 | |||
126 | KABC::Field::List allFields() const; | ||
125 | 127 | ||
126 | /** | 128 | /** |
127 | Sets the active filter. This filter will be used for filtering | 129 | Sets the active filter. This filter will be used for filtering |
128 | the list of addressees to display. The view will <b>not</b> | 130 | the list of addressees to display. The view will <b>not</b> |
129 | automatically refresh itself, so in most cases you will want to call | 131 | automatically refresh itself, so in most cases you will want to call |
130 | KAddressBookView::refresh() after this method. | 132 | KAddressBookView::refresh() after this method. |
131 | */ | 133 | */ |
132 | void setFilter( const Filter& ); | 134 | void setFilter( const Filter& ); |
133 | 135 | ||
134 | /** | 136 | /** |
135 | @return The default filter type selection. If the selection | 137 | @return The default filter type selection. If the selection |
136 | is SpecificFilter, the name of the filter can be retrieved with | 138 | is SpecificFilter, the name of the filter can be retrieved with |
137 | defaultFilterName() | 139 | defaultFilterName() |
138 | */ | 140 | */ |
139 | DefaultFilterType defaultFilterType() const; | 141 | DefaultFilterType defaultFilterType() const; |
140 | 142 | ||
141 | /** | 143 | /** |
142 | @return The name of the default filter. This string is | 144 | @return The name of the default filter. This string is |
143 | only valid if defaultFilterType() is returning SpecificFilter. | 145 | only valid if defaultFilterType() is returning SpecificFilter. |
144 | */ | 146 | */ |
145 | const QString &defaultFilterName() const; | 147 | const QString &defaultFilterName() const; |
146 | 148 | ||
147 | /** | 149 | /** |
148 | @return The address book. | 150 | @return The address book. |
149 | */ | 151 | */ |
150 | KABC::AddressBook *addressBook() const; | 152 | KABC::AddressBook *addressBook() const; |
151 | 153 | ||
152 | public slots: | 154 | public slots: |
153 | /** | 155 | /** |
154 | Must be overloaded in subclasses to refresh the view. | 156 | Must be overloaded in subclasses to refresh the view. |
155 | Refreshing includes updating the view to ensure that only items | 157 | Refreshing includes updating the view to ensure that only items |
156 | in the document are visible. If <i>uid</i> is valid, only the | 158 | in the document are visible. If <i>uid</i> is valid, only the |
157 | addressee with uid needs to be refreshed. This is an optimization | 159 | addressee with uid needs to be refreshed. This is an optimization |
158 | only. | 160 | only. |
159 | */ | 161 | */ |
160 | virtual void refresh( QString uid = QString::null ) = 0; | 162 | virtual void refresh( QString uid = QString::null ) = 0; |
161 | 163 | ||
162 | /** | 164 | /** |
163 | This method must be overloaded in subclasses. Select (highlight) | 165 | This method must be overloaded in subclasses. Select (highlight) |
164 | the addressee matching <i>uid</i>. If uid | 166 | the addressee matching <i>uid</i>. If uid |
165 | is equal to QString::null, then all addressees should be selected. | 167 | is equal to QString::null, then all addressees should be selected. |
166 | */ | 168 | */ |
167 | #ifndef KAB_EMBEDDED | 169 | #ifndef KAB_EMBEDDED |
168 | //MOC_SKIP_BEGIN | 170 | //MOC_SKIP_BEGIN |
169 | virtual void setSelected( QString uid = QString::null, bool selected = true ) = 0; | 171 | virtual void setSelected( QString uid = QString::null, bool selected = true ) = 0; |
170 | //MOC_SKIP_END | 172 | //MOC_SKIP_END |
171 | #else //KAB_EMBEDDED | 173 | #else //KAB_EMBEDDED |
172 | //US my moc can not handle the default parameters. Is this a problem ??? | 174 | //US my moc can not handle the default parameters. Is this a problem ??? |
173 | virtual void setSelected( QString uid, bool selected) = 0; | 175 | virtual void setSelected( QString uid, bool selected) = 0; |
174 | #endif //KAB_EMBEDDED | 176 | #endif //KAB_EMBEDDED |
175 | 177 | ||
176 | signals: | 178 | signals: |
177 | /** | 179 | /** |
178 | This signal should be emitted by a subclass whenever an addressee | 180 | This signal should be emitted by a subclass whenever an addressee |
179 | is modified. | 181 | is modified. |
180 | */ | 182 | */ |
181 | void modified(); | 183 | void modified(); |
182 | 184 | ||
183 | /** | 185 | /** |
184 | This signal should be emitted by a subclass whenever an addressee | 186 | This signal should be emitted by a subclass whenever an addressee |
185 | is selected. Selected means that the addressee was given the focus. | 187 | is selected. Selected means that the addressee was given the focus. |
186 | Some widgets may call this 'highlighted'. The view is responsible for | 188 | Some widgets may call this 'highlighted'. The view is responsible for |
187 | emitting this signal multiple times if multiple items are selected, | 189 | emitting this signal multiple times if multiple items are selected, |
188 | with the last item selected being the last emit. | 190 | with the last item selected being the last emit. |
diff --git a/kaddressbook/views/kaddressbookcardview.cpp b/kaddressbook/views/kaddressbookcardview.cpp index 2c9b162..2d7ed08 100644 --- a/kaddressbook/views/kaddressbookcardview.cpp +++ b/kaddressbook/views/kaddressbookcardview.cpp | |||
@@ -234,129 +234,129 @@ void KAddressBookCardView::readConfig(KConfig *config) | |||
234 | true)); | 234 | true)); |
235 | mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); | 235 | mCardView->setDrawFieldLabels(config->readBoolEntry("DrawFieldLabels",false)); |
236 | mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false); | 236 | mShowEmptyFields = config->readBoolEntry("ShowEmptyFields", false); |
237 | 237 | ||
238 | mCardView->setShowEmptyFields( mShowEmptyFields ); | 238 | mCardView->setShowEmptyFields( mShowEmptyFields ); |
239 | 239 | ||
240 | mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) ); | 240 | mCardView->setItemWidth( config->readNumEntry( "ItemWidth", 200 ) ); |
241 | mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) ); | 241 | mCardView->setItemMargin( config->readNumEntry( "ItemMargin", 0 ) ); |
242 | mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) ); | 242 | mCardView->setItemSpacing( config->readNumEntry( "ItemSpacing", 10 ) ); |
243 | mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) ); | 243 | mCardView->setSeparatorWidth( config->readNumEntry( "SeparatorWidth", 2 ) ); |
244 | 244 | ||
245 | #if 0 | 245 | #if 0 |
246 | // LR KABPrefs::instance()->mHonorSingleClick is handled and fixed in cardviews contentsMouseDoubleClickEven | 246 | // LR KABPrefs::instance()->mHonorSingleClick is handled and fixed in cardviews contentsMouseDoubleClickEven |
247 | disconnect(mCardView, SIGNAL(executed(CardViewItem *)), | 247 | disconnect(mCardView, SIGNAL(executed(CardViewItem *)), |
248 | this, SLOT(addresseeExecuted(CardViewItem *))); | 248 | this, SLOT(addresseeExecuted(CardViewItem *))); |
249 | 249 | ||
250 | if (KABPrefs::instance()->mHonorSingleClick) | 250 | if (KABPrefs::instance()->mHonorSingleClick) |
251 | connect(mCardView, SIGNAL(executed(CardViewItem *)), | 251 | connect(mCardView, SIGNAL(executed(CardViewItem *)), |
252 | this, SLOT(addresseeExecuted(CardViewItem *))); | 252 | this, SLOT(addresseeExecuted(CardViewItem *))); |
253 | else | 253 | else |
254 | connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), | 254 | connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), |
255 | this, SLOT(addresseeExecuted(CardViewItem *))); | 255 | this, SLOT(addresseeExecuted(CardViewItem *))); |
256 | #endif | 256 | #endif |
257 | 257 | ||
258 | connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), | 258 | connect(mCardView, SIGNAL(doubleClicked(CardViewItem *)), |
259 | this, SLOT(addresseeExecuted(CardViewItem *))); | 259 | this, SLOT(addresseeExecuted(CardViewItem *))); |
260 | } | 260 | } |
261 | 261 | ||
262 | void KAddressBookCardView::writeConfig( KConfig *config ) | 262 | void KAddressBookCardView::writeConfig( KConfig *config ) |
263 | { | 263 | { |
264 | config->writeEntry( "ItemWidth", mCardView->itemWidth() ); | 264 | config->writeEntry( "ItemWidth", mCardView->itemWidth() ); |
265 | KAddressBookView::writeConfig( config ); | 265 | KAddressBookView::writeConfig( config ); |
266 | } | 266 | } |
267 | void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field ) | 267 | void KAddressBookCardView::doSearch( const QString& s,KABC::Field *field ) |
268 | { | 268 | { |
269 | mCardView->clear(); | 269 | mCardView->clear(); |
270 | if ( s.isEmpty() || s == "*" ) { | 270 | if ( s.isEmpty() || s == "*" ) { |
271 | refresh(); | 271 | refresh(); |
272 | return; | 272 | return; |
273 | } | 273 | } |
274 | QString pattern = s.lower()+"*"; | 274 | QString pattern = s.lower()+"*"; |
275 | QRegExp re; | 275 | QRegExp re; |
276 | re.setWildcard(true); // most people understand these better. | 276 | re.setWildcard(true); // most people understand these better. |
277 | re.setCaseSensitive(false); | 277 | re.setCaseSensitive(false); |
278 | re.setPattern( pattern ); | 278 | re.setPattern( pattern ); |
279 | if (!re.isValid()) | 279 | if (!re.isValid()) |
280 | return; | 280 | return; |
281 | mCardView->viewport()->setUpdatesEnabled( false ); | 281 | mCardView->viewport()->setUpdatesEnabled( false ); |
282 | KABC::Addressee::List addresseeList = addressees(); | 282 | KABC::Addressee::List addresseeList = addressees(); |
283 | KABC::Addressee::List::Iterator it; | 283 | KABC::Addressee::List::Iterator it; |
284 | if ( field ) { | 284 | if ( field ) { |
285 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 285 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
286 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 286 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
287 | continue; | 287 | continue; |
288 | #if QT_VERSION >= 300 | 288 | #if QT_VERSION >= 300 |
289 | if (re.search(field->value( *it ).lower()) != -1) | 289 | if (re.search(field->value( *it ).lower()) != -1) |
290 | #else | 290 | #else |
291 | if (re.match(field->value( *it ).lower()) != -1) | 291 | if (re.match(field->value( *it ).lower()) != -1) |
292 | #endif | 292 | #endif |
293 | new AddresseeCardViewItem(fields(), mShowEmptyFields, | 293 | new AddresseeCardViewItem(fields(), mShowEmptyFields, |
294 | addressBook(), *it, mCardView); | 294 | addressBook(), *it, mCardView); |
295 | 295 | ||
296 | } | 296 | } |
297 | } else { | 297 | } else { |
298 | KABC::Field::List fieldList = fields(); | 298 | KABC::Field::List fieldList = allFields(); |
299 | KABC::Field::List::ConstIterator fieldIt; | 299 | KABC::Field::List::ConstIterator fieldIt; |
300 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 300 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
301 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 301 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
302 | continue; | 302 | continue; |
303 | for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { | 303 | for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { |
304 | #if QT_VERSION >= 300 | 304 | #if QT_VERSION >= 300 |
305 | if (re.search((*fieldIt)->value( *it ).lower()) != -1) | 305 | if (re.search((*fieldIt)->value( *it ).lower()) != -1) |
306 | #else | 306 | #else |
307 | if (re.match((*fieldIt)->value( *it ).lower()) != -1) | 307 | if (re.match((*fieldIt)->value( *it ).lower()) != -1) |
308 | #endif | 308 | #endif |
309 | { | 309 | { |
310 | new AddresseeCardViewItem(fields(), mShowEmptyFields, | 310 | new AddresseeCardViewItem(fields(), mShowEmptyFields, |
311 | addressBook(), *it, mCardView); | 311 | addressBook(), *it, mCardView); |
312 | continue; | 312 | continue; |
313 | } | 313 | } |
314 | } | 314 | } |
315 | } | 315 | } |
316 | } | 316 | } |
317 | mCardView->viewport()->setUpdatesEnabled( true ); | 317 | mCardView->viewport()->setUpdatesEnabled( true ); |
318 | mCardView->viewport()->update(); | 318 | mCardView->viewport()->update(); |
319 | if ( mCardView->firstItem() ) { | 319 | if ( mCardView->firstItem() ) { |
320 | mCardView->setCurrentItem ( mCardView->firstItem() ); | 320 | mCardView->setCurrentItem ( mCardView->firstItem() ); |
321 | mCardView->setSelected ( mCardView->firstItem() , true ); | 321 | mCardView->setSelected ( mCardView->firstItem() , true ); |
322 | } | 322 | } |
323 | else | 323 | else |
324 | emit selected(QString::null); | 324 | emit selected(QString::null); |
325 | } | 325 | } |
326 | QStringList KAddressBookCardView::selectedUids() | 326 | QStringList KAddressBookCardView::selectedUids() |
327 | { | 327 | { |
328 | QStringList uidList; | 328 | QStringList uidList; |
329 | CardViewItem *item; | 329 | CardViewItem *item; |
330 | AddresseeCardViewItem *aItem; | 330 | AddresseeCardViewItem *aItem; |
331 | 331 | ||
332 | for (item = mCardView->firstItem(); item; item = item->nextItem()) | 332 | for (item = mCardView->firstItem(); item; item = item->nextItem()) |
333 | { | 333 | { |
334 | if (item->isSelected()) | 334 | if (item->isSelected()) |
335 | { | 335 | { |
336 | #ifndef KAB_EMBEDDED | 336 | #ifndef KAB_EMBEDDED |
337 | aItem = dynamic_cast<AddresseeCardViewItem*>(item); | 337 | aItem = dynamic_cast<AddresseeCardViewItem*>(item); |
338 | #else //KAB_EMBEDDED | 338 | #else //KAB_EMBEDDED |
339 | aItem = (AddresseeCardViewItem*)(item); | 339 | aItem = (AddresseeCardViewItem*)(item); |
340 | #endif //KAB_EMBEDDED | 340 | #endif //KAB_EMBEDDED |
341 | if (aItem) | 341 | if (aItem) |
342 | uidList << aItem->addressee().uid(); | 342 | uidList << aItem->addressee().uid(); |
343 | } | 343 | } |
344 | } | 344 | } |
345 | 345 | ||
346 | return uidList; | 346 | return uidList; |
347 | } | 347 | } |
348 | 348 | ||
349 | void KAddressBookCardView::refresh(QString uid) | 349 | void KAddressBookCardView::refresh(QString uid) |
350 | { | 350 | { |
351 | CardViewItem *item; | 351 | CardViewItem *item; |
352 | AddresseeCardViewItem *aItem; | 352 | AddresseeCardViewItem *aItem; |
353 | 353 | ||
354 | if (uid.isNull()) | 354 | if (uid.isNull()) |
355 | { | 355 | { |
356 | // Rebuild the view | 356 | // Rebuild the view |
357 | mCardView->viewport()->setUpdatesEnabled( false ); | 357 | mCardView->viewport()->setUpdatesEnabled( false ); |
358 | mCardView->clear(); | 358 | mCardView->clear(); |
359 | 359 | ||
360 | KABC::Addressee::List addresseeList = addressees(); | 360 | KABC::Addressee::List addresseeList = addressees(); |
361 | KABC::Addressee::List::Iterator iter; | 361 | KABC::Addressee::List::Iterator iter; |
362 | for (iter = addresseeList.begin(); iter != addresseeList.end(); ++iter) | 362 | for (iter = addresseeList.begin(); iter != addresseeList.end(); ++iter) |
diff --git a/kaddressbook/views/kaddressbookiconview.cpp b/kaddressbook/views/kaddressbookiconview.cpp index 0ce56c8..faeda06 100644 --- a/kaddressbook/views/kaddressbookiconview.cpp +++ b/kaddressbook/views/kaddressbookiconview.cpp | |||
@@ -221,129 +221,129 @@ void KAddressBookIconView::setFocusAV() | |||
221 | void KAddressBookIconView::scrollUP() | 221 | void KAddressBookIconView::scrollUP() |
222 | { | 222 | { |
223 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); | 223 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Up, 0,0 ); |
224 | QApplication::postEvent( mIconView, ev ); | 224 | QApplication::postEvent( mIconView, ev ); |
225 | } | 225 | } |
226 | void KAddressBookIconView::scrollDOWN() | 226 | void KAddressBookIconView::scrollDOWN() |
227 | { | 227 | { |
228 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); | 228 | QKeyEvent * ev = new QKeyEvent ( QEvent::KeyPress, Qt::Key_Down, 0,0 ); |
229 | QApplication::postEvent( mIconView, ev ); | 229 | QApplication::postEvent( mIconView, ev ); |
230 | } | 230 | } |
231 | void KAddressBookIconView::readConfig(KConfig *config) | 231 | void KAddressBookIconView::readConfig(KConfig *config) |
232 | { | 232 | { |
233 | KAddressBookView::readConfig(config); | 233 | KAddressBookView::readConfig(config); |
234 | 234 | ||
235 | //US method executed is part of KIconView | 235 | //US method executed is part of KIconView |
236 | //US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)), | 236 | //US disconnect(mIconView, SIGNAL(executed(QIconViewItem *)), |
237 | //US this, SLOT(addresseeExecuted(QIconViewItem *))); | 237 | //US this, SLOT(addresseeExecuted(QIconViewItem *))); |
238 | disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), | 238 | disconnect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), |
239 | this, SLOT(addresseeExecuted(QIconViewItem *))); | 239 | this, SLOT(addresseeExecuted(QIconViewItem *))); |
240 | 240 | ||
241 | //US method executed is part of KIconView. Use selectionChanged instead | 241 | //US method executed is part of KIconView. Use selectionChanged instead |
242 | /*US | 242 | /*US |
243 | if (KABPrefs::instance()->mHonorSingleClick) | 243 | if (KABPrefs::instance()->mHonorSingleClick) |
244 | connect(mIconView, SIGNAL(executed(QIconViewItem *)), | 244 | connect(mIconView, SIGNAL(executed(QIconViewItem *)), |
245 | this, SLOT(addresseeExecuted(QIconViewItem *))); | 245 | this, SLOT(addresseeExecuted(QIconViewItem *))); |
246 | else | 246 | else |
247 | connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)), | 247 | connect(mIconView, SIGNAL(doubleClicked(QIconViewItem *)), |
248 | this, SLOT(addresseeExecuted(QIconViewItem *))); | 248 | this, SLOT(addresseeExecuted(QIconViewItem *))); |
249 | */ | 249 | */ |
250 | connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), | 250 | connect(mIconView, SIGNAL(selectionChanged(QIconViewItem *)), |
251 | this, SLOT(addresseeExecuted(QIconViewItem *))); | 251 | this, SLOT(addresseeExecuted(QIconViewItem *))); |
252 | 252 | ||
253 | } | 253 | } |
254 | void KAddressBookIconView::doSearch( const QString& s ,KABC::Field *field ) | 254 | void KAddressBookIconView::doSearch( const QString& s ,KABC::Field *field ) |
255 | { | 255 | { |
256 | mIconView->clear(); | 256 | mIconView->clear(); |
257 | mIconList.clear(); | 257 | mIconList.clear(); |
258 | if ( s.isEmpty() || s == "*" ) { | 258 | if ( s.isEmpty() || s == "*" ) { |
259 | refresh(); | 259 | refresh(); |
260 | return; | 260 | return; |
261 | } | 261 | } |
262 | QString pattern = s.lower()+"*"; | 262 | QString pattern = s.lower()+"*"; |
263 | QRegExp re; | 263 | QRegExp re; |
264 | re.setWildcard(true); // most people understand these better. | 264 | re.setWildcard(true); // most people understand these better. |
265 | re.setCaseSensitive(false); | 265 | re.setCaseSensitive(false); |
266 | re.setPattern( pattern ); | 266 | re.setPattern( pattern ); |
267 | if (!re.isValid()) | 267 | if (!re.isValid()) |
268 | return; | 268 | return; |
269 | KABC::Addressee::List addresseeList = addressees(); | 269 | KABC::Addressee::List addresseeList = addressees(); |
270 | KABC::Addressee::List::Iterator it; | 270 | KABC::Addressee::List::Iterator it; |
271 | if ( field ) { | 271 | if ( field ) { |
272 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 272 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
273 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 273 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
274 | continue; | 274 | continue; |
275 | #if QT_VERSION >= 300 | 275 | #if QT_VERSION >= 300 |
276 | if (re.search(field->value( *it ).lower()) != -1) | 276 | if (re.search(field->value( *it ).lower()) != -1) |
277 | #else | 277 | #else |
278 | if (re.match(field->value( *it ).lower()) != -1) | 278 | if (re.match(field->value( *it ).lower()) != -1) |
279 | #endif | 279 | #endif |
280 | mIconList.append(new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); | 280 | mIconList.append(new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); |
281 | 281 | ||
282 | 282 | ||
283 | } | 283 | } |
284 | } else { | 284 | } else { |
285 | KABC::Field::List fieldList = fields(); | 285 | KABC::Field::List fieldList = allFields(); |
286 | KABC::Field::List::ConstIterator fieldIt; | 286 | KABC::Field::List::ConstIterator fieldIt; |
287 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 287 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
288 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 288 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
289 | continue; | 289 | continue; |
290 | for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { | 290 | for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { |
291 | #if QT_VERSION >= 300 | 291 | #if QT_VERSION >= 300 |
292 | if (re.search((*fieldIt)->value( *it ).lower()) != -1) | 292 | if (re.search((*fieldIt)->value( *it ).lower()) != -1) |
293 | #else | 293 | #else |
294 | if (re.match((*fieldIt)->value( *it ).lower()) != -1) | 294 | if (re.match((*fieldIt)->value( *it ).lower()) != -1) |
295 | #endif | 295 | #endif |
296 | { | 296 | { |
297 | mIconList.append( new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); | 297 | mIconList.append( new AddresseeIconViewItem( fields(), addressBook(), *it, mIconView )); |
298 | continue; | 298 | continue; |
299 | } | 299 | } |
300 | } | 300 | } |
301 | } | 301 | } |
302 | } | 302 | } |
303 | mIconView->arrangeItemsInGrid( true ); | 303 | mIconView->arrangeItemsInGrid( true ); |
304 | if ( mIconView->firstItem() ) { | 304 | if ( mIconView->firstItem() ) { |
305 | mIconView->setCurrentItem ( mIconView->firstItem() ); | 305 | mIconView->setCurrentItem ( mIconView->firstItem() ); |
306 | mIconView->setSelected ( mIconView->firstItem() , true ); | 306 | mIconView->setSelected ( mIconView->firstItem() , true ); |
307 | } | 307 | } |
308 | else | 308 | else |
309 | emit selected(QString::null); | 309 | emit selected(QString::null); |
310 | } | 310 | } |
311 | QStringList KAddressBookIconView::selectedUids() | 311 | QStringList KAddressBookIconView::selectedUids() |
312 | { | 312 | { |
313 | QStringList uidList; | 313 | QStringList uidList; |
314 | QIconViewItem *item; | 314 | QIconViewItem *item; |
315 | AddresseeIconViewItem *aItem; | 315 | AddresseeIconViewItem *aItem; |
316 | 316 | ||
317 | for (item = mIconView->firstItem(); item; item = item->nextItem()) | 317 | for (item = mIconView->firstItem(); item; item = item->nextItem()) |
318 | { | 318 | { |
319 | if (item->isSelected()) | 319 | if (item->isSelected()) |
320 | { | 320 | { |
321 | #ifndef KAB_EMBEDDED | 321 | #ifndef KAB_EMBEDDED |
322 | aItem = dynamic_cast<AddresseeIconViewItem*>(item); | 322 | aItem = dynamic_cast<AddresseeIconViewItem*>(item); |
323 | #else //KAB_EMBEDDED | 323 | #else //KAB_EMBEDDED |
324 | aItem = (AddresseeIconViewItem*)(item); | 324 | aItem = (AddresseeIconViewItem*)(item); |
325 | #endif //KAB_EMBEDDED | 325 | #endif //KAB_EMBEDDED |
326 | if (aItem) | 326 | if (aItem) |
327 | uidList << aItem->addressee().uid(); | 327 | uidList << aItem->addressee().uid(); |
328 | } | 328 | } |
329 | } | 329 | } |
330 | 330 | ||
331 | return uidList; | 331 | return uidList; |
332 | } | 332 | } |
333 | 333 | ||
334 | void KAddressBookIconView::refresh(QString uid) | 334 | void KAddressBookIconView::refresh(QString uid) |
335 | { | 335 | { |
336 | QIconViewItem *item; | 336 | QIconViewItem *item; |
337 | AddresseeIconViewItem *aItem; | 337 | AddresseeIconViewItem *aItem; |
338 | 338 | ||
339 | if ( uid.isNull() ) { | 339 | if ( uid.isNull() ) { |
340 | // Rebuild the view | 340 | // Rebuild the view |
341 | mIconView->clear(); | 341 | mIconView->clear(); |
342 | mIconList.clear(); | 342 | mIconList.clear(); |
343 | 343 | ||
344 | KABC::Addressee::List addresseeList = addressees(); | 344 | KABC::Addressee::List addresseeList = addressees(); |
345 | KABC::Addressee::List::Iterator iter; | 345 | KABC::Addressee::List::Iterator iter; |
346 | for ( iter = addresseeList.begin(); iter != addresseeList.end(); ++iter ) { | 346 | for ( iter = addresseeList.begin(); iter != addresseeList.end(); ++iter ) { |
347 | if ( (*iter).uid().left(2) == "la" && (*iter).uid().left(19) == QString("last-syncAddressee-") ) | 347 | if ( (*iter).uid().left(2) == "la" && (*iter).uid().left(19) == QString("last-syncAddressee-") ) |
348 | continue; | 348 | continue; |
349 | aItem = new AddresseeIconViewItem( fields(), addressBook(), *iter, mIconView ); | 349 | aItem = new AddresseeIconViewItem( fields(), addressBook(), *iter, mIconView ); |
diff --git a/kaddressbook/views/kaddressbooktableview.cpp b/kaddressbook/views/kaddressbooktableview.cpp index 89053c2..61703ee 100644 --- a/kaddressbook/views/kaddressbooktableview.cpp +++ b/kaddressbook/views/kaddressbooktableview.cpp | |||
@@ -102,227 +102,223 @@ void KAddressBookTableView::reconstructListView() | |||
102 | mListView->setColumnWidthMode(c++, QListView::Manual); | 102 | mListView->setColumnWidthMode(c++, QListView::Manual); |
103 | //US | 103 | //US |
104 | // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); | 104 | // qDebug("KAddressBookTableView::reconstructListView: field %s", (*it)->label().latin1()); |
105 | } | 105 | } |
106 | 106 | ||
107 | connect(mListView, SIGNAL(selectionChanged()), | 107 | connect(mListView, SIGNAL(selectionChanged()), |
108 | this, SLOT(addresseeSelected())); | 108 | this, SLOT(addresseeSelected())); |
109 | connect(mListView, SIGNAL(startAddresseeDrag()), this, | 109 | connect(mListView, SIGNAL(startAddresseeDrag()), this, |
110 | SIGNAL(startDrag())); | 110 | SIGNAL(startDrag())); |
111 | connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, | 111 | connect(mListView, SIGNAL(addresseeDropped(QDropEvent*)), this, |
112 | SIGNAL(dropped(QDropEvent*))); | 112 | SIGNAL(dropped(QDropEvent*))); |
113 | 113 | ||
114 | if (KABPrefs::instance()->mHonorSingleClick) { | 114 | if (KABPrefs::instance()->mHonorSingleClick) { |
115 | // qDebug("KAddressBookTableView::reconstructListView single"); | 115 | // qDebug("KAddressBookTableView::reconstructListView single"); |
116 | connect(mListView, SIGNAL(executed(QListViewItem*)), | 116 | connect(mListView, SIGNAL(executed(QListViewItem*)), |
117 | this, SLOT(addresseeExecuted(QListViewItem*))); | 117 | this, SLOT(addresseeExecuted(QListViewItem*))); |
118 | } else { | 118 | } else { |
119 | // qDebug("KAddressBookTableView::reconstructListView double"); | 119 | // qDebug("KAddressBookTableView::reconstructListView double"); |
120 | connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), | 120 | connect(mListView, SIGNAL(doubleClicked(QListViewItem*)), |
121 | this, SLOT(addresseeExecuted(QListViewItem*))); | 121 | this, SLOT(addresseeExecuted(QListViewItem*))); |
122 | } | 122 | } |
123 | connect(mListView, SIGNAL(returnPressed(QListViewItem*)), | 123 | connect(mListView, SIGNAL(returnPressed(QListViewItem*)), |
124 | this, SLOT(addresseeExecuted(QListViewItem*))); | 124 | this, SLOT(addresseeExecuted(QListViewItem*))); |
125 | connect(mListView, SIGNAL(signalDelete()), | 125 | connect(mListView, SIGNAL(signalDelete()), |
126 | this, SLOT(addresseeDeleted())); | 126 | this, SLOT(addresseeDeleted())); |
127 | 127 | ||
128 | //US performceimprovement. Refresh is done from the outside | 128 | //US performceimprovement. Refresh is done from the outside |
129 | //US refresh(); | 129 | //US refresh(); |
130 | 130 | ||
131 | mListView->setSorting( 0, true ); | 131 | mListView->setSorting( 0, true ); |
132 | mainLayout->addWidget( mListView ); | 132 | mainLayout->addWidget( mListView ); |
133 | mainLayout->activate(); | 133 | mainLayout->activate(); |
134 | mListView->show(); | 134 | mListView->show(); |
135 | } | 135 | } |
136 | 136 | ||
137 | void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field ) | 137 | void KAddressBookTableView::doSearch( const QString& s, KABC::Field *field ) |
138 | { | 138 | { |
139 | mListView->clear(); | 139 | mListView->clear(); |
140 | if ( s.isEmpty() || s == "*" ) { | 140 | if ( s.isEmpty() || s == "*" ) { |
141 | refresh(); | 141 | refresh(); |
142 | return; | 142 | return; |
143 | } | 143 | } |
144 | QString pattern = s.lower()+"*"; | 144 | QString pattern = s.lower()+"*"; |
145 | QRegExp re; | 145 | QRegExp re; |
146 | re.setWildcard(true); // most people understand these better. | 146 | re.setWildcard(true); // most people understand these better. |
147 | re.setCaseSensitive(false); | 147 | re.setCaseSensitive(false); |
148 | re.setPattern( pattern ); | 148 | re.setPattern( pattern ); |
149 | if (!re.isValid()) | 149 | if (!re.isValid()) |
150 | return; | 150 | return; |
151 | KABC::Addressee::List addresseeList = addressees(); | 151 | KABC::Addressee::List addresseeList = addressees(); |
152 | KABC::Addressee::List::Iterator it; | 152 | KABC::Addressee::List::Iterator it; |
153 | if ( field ) { | 153 | if ( field ) { |
154 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 154 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
155 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 155 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
156 | continue; | 156 | continue; |
157 | #if QT_VERSION >= 300 | 157 | #if QT_VERSION >= 300 |
158 | if (re.search(field->value( *it ).lower()) != -1) | 158 | if (re.search(field->value( *it ).lower()) != -1) |
159 | #else | 159 | #else |
160 | if (re.match(field->value( *it ).lower()) != -1) | 160 | if (re.match(field->value( *it ).lower()) != -1) |
161 | #endif | 161 | #endif |
162 | ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); | 162 | ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); |
163 | 163 | ||
164 | } | 164 | } |
165 | } else { | 165 | } else { |
166 | KABC::Field::List fieldList = fields(); | 166 | KABC::Field::List fieldList = allFields(); |
167 | KABC::Field::List::ConstIterator fieldIt; | 167 | KABC::Field::List::ConstIterator fieldIt; |
168 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 168 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
169 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 169 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
170 | continue; | 170 | continue; |
171 | for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { | 171 | for ( fieldIt = fieldList.begin(); fieldIt != fieldList.end(); ++fieldIt ) { |
172 | #if QT_VERSION >= 300 | 172 | #if QT_VERSION >= 300 |
173 | if (re.search((*fieldIt)->value( *it ).lower()) != -1) | 173 | if (re.search((*fieldIt)->value( *it ).lower()) != -1) |
174 | #else | 174 | #else |
175 | if (re.match((*fieldIt)->value( *it ).lower()) != -1) | 175 | if (re.match((*fieldIt)->value( *it ).lower()) != -1) |
176 | #endif | 176 | #endif |
177 | { | 177 | { |
178 | ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); | 178 | ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); |
179 | break; | 179 | break; |
180 | } | 180 | } |
181 | } | 181 | } |
182 | } | 182 | } |
183 | } | 183 | } |
184 | // Sometimes the background pixmap gets messed up when we add lots | 184 | // Sometimes the background pixmap gets messed up when we add lots |
185 | // of items. | 185 | // of items. |
186 | mListView->repaint(); | 186 | mListView->repaint(); |
187 | if ( mListView->firstChild() ) { | 187 | if ( mListView->firstChild() ) { |
188 | mListView->setCurrentItem ( mListView->firstChild() ); | 188 | mListView->setCurrentItem ( mListView->firstChild() ); |
189 | mListView->setSelected ( mListView->firstChild(), true ); | 189 | mListView->setSelected ( mListView->firstChild(), true ); |
190 | } | 190 | } |
191 | else | 191 | else |
192 | emit selected(QString::null); | 192 | emit selected(QString::null); |
193 | 193 | ||
194 | } | 194 | } |
195 | void KAddressBookTableView::writeConfig(KConfig *config) | 195 | void KAddressBookTableView::writeConfig(KConfig *config) |
196 | { | 196 | { |
197 | KAddressBookView::writeConfig(config); | 197 | KAddressBookView::writeConfig(config); |
198 | 198 | ||
199 | mListView->saveLayout(config, config->group()); | 199 | mListView->saveLayout(config, config->group()); |
200 | } | 200 | } |
201 | 201 | ||
202 | void KAddressBookTableView::readConfig(KConfig *config) | 202 | void KAddressBookTableView::readConfig(KConfig *config) |
203 | { | 203 | { |
204 | KAddressBookView::readConfig( config ); | 204 | KAddressBookView::readConfig( config ); |
205 | // The config could have changed the fields, so we need to reconstruct | 205 | // The config could have changed the fields, so we need to reconstruct |
206 | // the listview. | 206 | // the listview. |
207 | reconstructListView(); | 207 | reconstructListView(); |
208 | 208 | ||
209 | // costum colors? | 209 | // costum colors? |
210 | if ( config->readBoolEntry( "EnableCustomColors", false ) ) | 210 | if ( config->readBoolEntry( "EnableCustomColors", false ) ) |
211 | { | 211 | { |
212 | QPalette p( mListView->palette() ); | 212 | QPalette p( mListView->palette() ); |
213 | QColor c = p.color(QPalette::Normal, QColorGroup::Base ); | 213 | QColor c = p.color(QPalette::Normal, QColorGroup::Base ); |
214 | p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); | 214 | p.setColor( QPalette::Normal, QColorGroup::Base, config->readColorEntry( "BackgroundColor", &c ) ); |
215 | c = p.color(QPalette::Normal, QColorGroup::Text ); | 215 | c = p.color(QPalette::Normal, QColorGroup::Text ); |
216 | p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); | 216 | p.setColor( QPalette::Normal, QColorGroup::Text, config->readColorEntry( "TextColor", &c ) ); |
217 | c = p.color(QPalette::Normal, QColorGroup::Button ); | 217 | c = p.color(QPalette::Normal, QColorGroup::Button ); |
218 | p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); | 218 | p.setColor( QPalette::Normal, QColorGroup::Button, config->readColorEntry( "HeaderColor", &c ) ); |
219 | c = p.color(QPalette::Normal, QColorGroup::ButtonText ); | 219 | c = p.color(QPalette::Normal, QColorGroup::ButtonText ); |
220 | p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); | 220 | p.setColor( QPalette::Normal, QColorGroup::ButtonText, config->readColorEntry( "HeaderTextColor", &c ) ); |
221 | c = p.color(QPalette::Normal, QColorGroup::Highlight ); | 221 | c = p.color(QPalette::Normal, QColorGroup::Highlight ); |
222 | p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); | 222 | p.setColor( QPalette::Normal, QColorGroup::Highlight, config->readColorEntry( "HighlightColor", &c ) ); |
223 | c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); | 223 | c = p.color(QPalette::Normal, QColorGroup::HighlightedText ); |
224 | p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); | 224 | p.setColor( QPalette::Normal, QColorGroup::HighlightedText, config->readColorEntry( "HighlightedTextColor", &c ) ); |
225 | #ifndef KAB_EMBEDDED | 225 | #ifndef KAB_EMBEDDED |
226 | c = KGlobalSettings::alternateBackgroundColor(); | 226 | c = KGlobalSettings::alternateBackgroundColor(); |
227 | #else //KAB_EMBEDDED | 227 | #else //KAB_EMBEDDED |
228 | c = QColor(240, 240, 240); | 228 | c = QColor(240, 240, 240); |
229 | #endif //KAB_EMBEDDED | 229 | #endif //KAB_EMBEDDED |
230 | c = config->readColorEntry ("AlternatingBackgroundColor", &c); | 230 | c = config->readColorEntry ("AlternatingBackgroundColor", &c); |
231 | mListView->setAlternateColor(c); | 231 | mListView->setAlternateColor(c); |
232 | 232 | ||
233 | 233 | ||
234 | //US mListView->viewport()->setPalette( p ); | 234 | //US mListView->viewport()->setPalette( p ); |
235 | mListView->setPalette( p ); | 235 | mListView->setPalette( p ); |
236 | } | 236 | } |
237 | else | 237 | else |
238 | { | 238 | { |
239 | // needed if turned off during a session. | 239 | // needed if turned off during a session. |
240 | //US mListView->viewport()->setPalette( mListView->palette() ); | 240 | //US mListView->viewport()->setPalette( mListView->palette() ); |
241 | mListView->setPalette( mListView->palette() ); | 241 | mListView->setPalette( mListView->palette() ); |
242 | } | 242 | } |
243 | 243 | ||
244 | //custom fonts? | 244 | //custom fonts? |
245 | QFont f( font() ); | 245 | QFont f( font() ); |
246 | if ( config->readBoolEntry( "EnableCustomFonts", false ) ) | 246 | if ( config->readBoolEntry( "EnableCustomFonts", false ) ) |
247 | { | 247 | { |
248 | mListView->setFont( config->readFontEntry( "TextFont", &f) ); | 248 | mListView->setFont( config->readFontEntry( "TextFont", &f) ); |
249 | f.setBold( true ); | 249 | f.setBold( true ); |
250 | //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); | 250 | //US mListView->setHeaderFont( config->readFontEntry( "HeaderFont", &f ) ); |
251 | mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) ); | 251 | mListView->header()->setFont( config->readFontEntry( "HeaderFont", &f ) ); |
252 | } | 252 | } |
253 | else | 253 | else |
254 | { | 254 | { |
255 | mListView->setFont( f ); | 255 | mListView->setFont( f ); |
256 | f.setBold( true ); | 256 | f.setBold( true ); |
257 | //US mListView->setHeaderFont( f ); | 257 | //US mListView->setHeaderFont( f ); |
258 | mListView->header()->setFont( f ); | 258 | mListView->header()->setFont( f ); |
259 | } | 259 | } |
260 | 260 | ||
261 | |||
262 | |||
263 | |||
264 | |||
265 | // Set the list view options | 261 | // Set the list view options |
266 | mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground", | 262 | mListView->setAlternateBackgroundEnabled(config->readBoolEntry("ABackground", |
267 | true)); | 263 | true)); |
268 | mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false)); | 264 | mListView->setSingleLineEnabled(config->readBoolEntry("SingleLine", false)); |
269 | mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true)); | 265 | mListView->setToolTipsEnabled(config->readBoolEntry("ToolTips", true)); |
270 | 266 | ||
271 | if (config->readBoolEntry("Background", false)) | 267 | if (config->readBoolEntry("Background", false)) |
272 | mListView->setBackgroundPixmap(config->readEntry("BackgroundName")); | 268 | mListView->setBackgroundPixmap(config->readEntry("BackgroundName")); |
273 | 269 | ||
274 | // Restore the layout of the listview | 270 | // Restore the layout of the listview |
275 | mListView->restoreLayout(config, config->group()); | 271 | mListView->restoreLayout(config, config->group()); |
276 | } | 272 | } |
277 | 273 | ||
278 | void KAddressBookTableView::refresh(QString uid) | 274 | void KAddressBookTableView::refresh(QString uid) |
279 | { | 275 | { |
280 | // For now just repopulate. In reality this method should | 276 | // For now just repopulate. In reality this method should |
281 | // check the value of uid, and if valid iterate through | 277 | // check the value of uid, and if valid iterate through |
282 | // the listview to find the entry, then tell it to refresh. | 278 | // the listview to find the entry, then tell it to refresh. |
283 | 279 | ||
284 | if (uid.isNull()) { | 280 | if (uid.isNull()) { |
285 | // Clear the list view | 281 | // Clear the list view |
286 | QString currentUID, nextUID; | 282 | QString currentUID, nextUID; |
287 | #ifndef KAB_EMBEDDED | 283 | #ifndef KAB_EMBEDDED |
288 | ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() ); | 284 | ContactListViewItem *currentItem = dynamic_cast<ContactListViewItem*>( mListView->currentItem() ); |
289 | #else //KAB_EMBEDDED | 285 | #else //KAB_EMBEDDED |
290 | ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() ); | 286 | ContactListViewItem *currentItem = (ContactListViewItem*)( mListView->currentItem() ); |
291 | #endif //KAB_EMBEDDED | 287 | #endif //KAB_EMBEDDED |
292 | 288 | ||
293 | if ( currentItem ) { | 289 | if ( currentItem ) { |
294 | #ifndef KAB_EMBEDDED | 290 | #ifndef KAB_EMBEDDED |
295 | ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() ); | 291 | ContactListViewItem *nextItem = dynamic_cast<ContactListViewItem*>( currentItem->itemBelow() ); |
296 | #else //KAB_EMBEDDED | 292 | #else //KAB_EMBEDDED |
297 | ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() ); | 293 | ContactListViewItem *nextItem = (ContactListViewItem*)( currentItem->itemBelow() ); |
298 | #endif //KAB_EMBEDDED | 294 | #endif //KAB_EMBEDDED |
299 | if ( nextItem ) | 295 | if ( nextItem ) |
300 | nextUID = nextItem->addressee().uid(); | 296 | nextUID = nextItem->addressee().uid(); |
301 | currentUID = currentItem->addressee().uid(); | 297 | currentUID = currentItem->addressee().uid(); |
302 | } | 298 | } |
303 | 299 | ||
304 | mListView->clear(); | 300 | mListView->clear(); |
305 | 301 | ||
306 | currentItem = 0; | 302 | currentItem = 0; |
307 | KABC::Addressee::List addresseeList = addressees(); | 303 | KABC::Addressee::List addresseeList = addressees(); |
308 | KABC::Addressee::List::Iterator it; | 304 | KABC::Addressee::List::Iterator it; |
309 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { | 305 | for (it = addresseeList.begin(); it != addresseeList.end(); ++it ) { |
310 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) | 306 | if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) |
311 | continue; | 307 | continue; |
312 | ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); | 308 | ContactListViewItem *item = new ContactListViewItem(*it, mListView, addressBook(), fields()); |
313 | if ( (*it).uid() == currentUID ) | 309 | if ( (*it).uid() == currentUID ) |
314 | currentItem = item; | 310 | currentItem = item; |
315 | else if ( (*it).uid() == nextUID && !currentItem ) | 311 | else if ( (*it).uid() == nextUID && !currentItem ) |
316 | currentItem = item; | 312 | currentItem = item; |
317 | } | 313 | } |
318 | 314 | ||
319 | // Sometimes the background pixmap gets messed up when we add lots | 315 | // Sometimes the background pixmap gets messed up when we add lots |
320 | // of items. | 316 | // of items. |
321 | mListView->repaint(); | 317 | mListView->repaint(); |
322 | 318 | ||
323 | if ( currentItem ) { | 319 | if ( currentItem ) { |
324 | mListView->setCurrentItem( currentItem ); | 320 | mListView->setCurrentItem( currentItem ); |
325 | mListView->ensureItemVisible( currentItem ); | 321 | mListView->ensureItemVisible( currentItem ); |
326 | } | 322 | } |
327 | } else { | 323 | } else { |
328 | // Only need to update on entry. Iterate through and try to find it | 324 | // Only need to update on entry. Iterate through and try to find it |