author | drw <drw> | 2005-03-16 17:45:28 (UTC) |
---|---|---|
committer | drw <drw> | 2005-03-16 17:45:28 (UTC) |
commit | 44209002d51056e0d198b63463ebc686b41e8cd8 (patch) (unidiff) | |
tree | d61069f16d8382959065cf7fe43d4e68ad448daf | |
parent | d16a2a4e0617f21cba0e399dbe5ffa17d76886b9 (diff) | |
download | opie-44209002d51056e0d198b63463ebc686b41e8cd8.zip opie-44209002d51056e0d198b63463ebc686b41e8cd8.tar.gz opie-44209002d51056e0d198b63463ebc686b41e8cd8.tar.bz2 |
Fixed: 1. Category handling - all other apps and libopie2 use -1 for unfiled and 0 for all, addressbook flipped them, 2. Letter picker record selection, 3. sort resulting records after letter picker selected them
-rw-r--r-- | core/pim/addressbook/abtable.cpp | 1 | ||||
-rw-r--r-- | core/pim/addressbook/abview.cpp | 44 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 7 |
3 files changed, 25 insertions, 27 deletions
diff --git a/core/pim/addressbook/abtable.cpp b/core/pim/addressbook/abtable.cpp index 0be7d1a..49e66ad 100644 --- a/core/pim/addressbook/abtable.cpp +++ b/core/pim/addressbook/abtable.cpp | |||
@@ -154,17 +154,16 @@ void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList ) | |||
154 | odebug << "AbTable::setContacts()" << oendl; | 154 | odebug << "AbTable::setContacts()" << oendl; |
155 | 155 | ||
156 | clear(); | 156 | clear(); |
157 | m_viewList = viewList; | 157 | m_viewList = viewList; |
158 | 158 | ||
159 | setSorting( false ); | 159 | setSorting( false ); |
160 | setPaintingEnabled( FALSE ); | 160 | setPaintingEnabled( FALSE ); |
161 | 161 | ||
162 | Opie::OPimContactAccess::List::Iterator it; | ||
163 | setNumRows( m_viewList.count() ); | 162 | setNumRows( m_viewList.count() ); |
164 | //int row = 0; | 163 | //int row = 0; |
165 | // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) | 164 | // for ( it = m_viewList.begin(); it != m_viewList.end(); ++it ) |
166 | // insertIntoTable( *it, row++ ); | 165 | // insertIntoTable( *it, row++ ); |
167 | 166 | ||
168 | // setSorting( true ); | 167 | // setSorting( true ); |
169 | 168 | ||
170 | // resort(); | 169 | // resort(); |
diff --git a/core/pim/addressbook/abview.cpp b/core/pim/addressbook/abview.cpp index 6be19f8..34035fd 100644 --- a/core/pim/addressbook/abview.cpp +++ b/core/pim/addressbook/abview.cpp | |||
@@ -37,17 +37,17 @@ QString addressbookPersonalVCardName() | |||
37 | } | 37 | } |
38 | 38 | ||
39 | 39 | ||
40 | AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): | 40 | AbView::AbView ( QWidget* parent, const QValueList<int>& ordered ): |
41 | QWidget(parent), | 41 | QWidget(parent), |
42 | mCat(0), | 42 | mCat(0), |
43 | m_inSearch( false ), | 43 | m_inSearch( false ), |
44 | m_inPersonal( false ), | 44 | m_inPersonal( false ), |
45 | m_curr_category( -1 ), | 45 | m_curr_category( 0 ), |
46 | m_curr_View( TableView ), | 46 | m_curr_View( TableView ), |
47 | m_prev_View( TableView ), | 47 | m_prev_View( TableView ), |
48 | m_curr_Contact ( 0 ), | 48 | m_curr_Contact ( 0 ), |
49 | m_contactdb ( 0l ), | 49 | m_contactdb ( 0l ), |
50 | m_storedDB ( 0l ), | 50 | m_storedDB ( 0l ), |
51 | m_viewStack( 0l ), | 51 | m_viewStack( 0l ), |
52 | m_abTable( 0l ), | 52 | m_abTable( 0l ), |
53 | m_orderedFields( ordered ) | 53 | m_orderedFields( ordered ) |
@@ -152,30 +152,19 @@ bool AbView::save() | |||
152 | 152 | ||
153 | void AbView::load() | 153 | void AbView::load() |
154 | { | 154 | { |
155 | odebug << "AbView::Load data" << oendl; | 155 | odebug << "AbView::Load data" << oendl; |
156 | 156 | ||
157 | // Letter Search is stopped at this place | 157 | // Letter Search is stopped at this place |
158 | emit signalClearLetterPicker(); | 158 | emit signalClearLetterPicker(); |
159 | 159 | ||
160 | if ( m_curr_category == 0 ) { | 160 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, |
161 | // Show unfiled | 161 | Opie::OPimContactAccess::FilterCategory, m_curr_category ); |
162 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | 162 | |
163 | Opie::OPimContactAccess::DoNotShowWithCategory, 0 ); | ||
164 | } elseif ( m_curr_category != -1 ){ | ||
165 | // Just show selected category | ||
166 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | ||
167 | Opie::OPimBase::FilterCategory, m_curr_category ); | ||
168 | } else { | ||
169 | // Show all categories | ||
170 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | ||
171 | Opie::OPimBase::FilterOff, 0 ); | ||
172 | } | ||
173 | |||
174 | // if ( m_curr_category != -1 ) | 163 | // if ( m_curr_category != -1 ) |
175 | // clearForCategory(); | 164 | // clearForCategory(); |
176 | 165 | ||
177 | odebug << "Number of contacts: " << m_list.count() << oendl; | 166 | odebug << "Number of contacts: " << m_list.count() << oendl; |
178 | 167 | ||
179 | updateView( true ); | 168 | updateView( true ); |
180 | 169 | ||
181 | } | 170 | } |
@@ -194,32 +183,34 @@ void AbView::clear() | |||
194 | } | 183 | } |
195 | 184 | ||
196 | void AbView::setShowByCategory( const QString& cat ) | 185 | void AbView::setShowByCategory( const QString& cat ) |
197 | { | 186 | { |
198 | odebug << "AbView::setShowCategory( const QString& cat )" << oendl; | 187 | odebug << "AbView::setShowCategory( const QString& cat )" << oendl; |
199 | 188 | ||
200 | int intCat = 0; | 189 | int intCat = 0; |
201 | 190 | ||
202 | // All (cat == NULL) will be stored as -1 | 191 | // Unfiled will be stored as -1 |
203 | if ( cat.isNull() ) | 192 | if ( cat == tr( "Unfiled" ) ) |
204 | intCat = -1; | 193 | intCat = -1; |
194 | else if ( cat.isNull() ) | ||
195 | intCat = 0; | ||
205 | else | 196 | else |
206 | intCat = mCat.id("Contacts", cat ); | 197 | intCat = mCat.id("Contacts", cat ); |
207 | 198 | ||
208 | // Just do anything if we really change the category | 199 | // Just do anything if we really change the category |
209 | if ( intCat != m_curr_category ){ | 200 | if ( intCat != m_curr_category ){ |
210 | // odebug << "Categories: Selected " << cat << ".. Number: " | 201 | // odebug << "Categories: Selected " << cat << ".. Number: " |
211 | // << m_curr_category << oendl; | 202 | // << m_curr_category << oendl; |
212 | 203 | ||
213 | m_curr_category = intCat; | 204 | m_curr_category = intCat; |
214 | emit signalClearLetterPicker(); | 205 | emit signalClearLetterPicker(); |
215 | |||
216 | load(); | 206 | load(); |
217 | } | 207 | } |
208 | m_curr_category = intCat; | ||
218 | 209 | ||
219 | } | 210 | } |
220 | 211 | ||
221 | void AbView::setShowToView( Views view ) | 212 | void AbView::setShowToView( Views view ) |
222 | { | 213 | { |
223 | odebug << "void AbView::setShowToView( View " << view << " )" << oendl; | 214 | odebug << "void AbView::setShowToView( View " << view << " )" << oendl; |
224 | 215 | ||
225 | if ( m_curr_View != view ){ | 216 | if ( m_curr_View != view ){ |
@@ -240,17 +231,17 @@ void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode ) | |||
240 | 231 | ||
241 | Opie::OPimContact query; | 232 | Opie::OPimContact query; |
242 | if ( c == 0 ){ | 233 | if ( c == 0 ){ |
243 | load(); | 234 | load(); |
244 | return; | 235 | return; |
245 | }else{ | 236 | }else{ |
246 | // If the current Backend is unable to solve the query, we will | 237 | // If the current Backend is unable to solve the query, we will |
247 | // ignore the request .. | 238 | // ignore the request .. |
248 | if ( ! m_contactdb->hasQuerySettings( Opie::OPimContactAccess::WildCards | | 239 | if ( ! m_contactdb->hasQuerySettings( Opie::OPimContactAccess::WildCards | |
249 | Opie::OPimContactAccess::IgnoreCase ) ){ | 240 | Opie::OPimContactAccess::IgnoreCase ) ){ |
250 | owarn << "Tried to access queryByExample which is not supported by the current backend!!" << oendl; | 241 | owarn << "Tried to access queryByExample which is not supported by the current backend!!" << oendl; |
251 | owarn << "I have to ignore this access!" << oendl; | 242 | owarn << "I have to ignore this access!" << oendl; |
252 | return; | 243 | return; |
253 | } | 244 | } |
254 | 245 | ||
255 | switch( mode ){ | 246 | switch( mode ){ |
256 | case AbConfig::LastName: | 247 | case AbConfig::LastName: |
@@ -260,18 +251,23 @@ void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode ) | |||
260 | query.setFileAs( QString("%1*").arg(c) ); | 251 | query.setFileAs( QString("%1*").arg(c) ); |
261 | break; | 252 | break; |
262 | default: | 253 | default: |
263 | owarn << "Unknown Searchmode for AbView::setShowByLetter ! -> " << mode << oendl | 254 | owarn << "Unknown Searchmode for AbView::setShowByLetter ! -> " << mode << oendl |
264 | << "I will ignore it.." << oendl; | 255 | << "I will ignore it.." << oendl; |
265 | return; | 256 | return; |
266 | } | 257 | } |
267 | m_list = m_contactdb->queryByExample( query, Opie::OPimContactAccess::WildCards | Opie::OPimContactAccess::IgnoreCase ); | 258 | m_list = m_contactdb->queryByExample( query, Opie::OPimContactAccess::WildCards | Opie::OPimContactAccess::IgnoreCase ); |
268 | if ( m_curr_category != -1 ) | 259 | |
260 | if ( m_curr_category != 0 ) | ||
269 | clearForCategory(); | 261 | clearForCategory(); |
262 | |||
263 | // Sort filtered results | ||
264 | m_list = m_contactdb->sorted( m_list, true, Opie::OPimContactAccess::SortFileAsName, | ||
265 | Opie::OPimContactAccess::FilterCategory, m_curr_category ); | ||
270 | m_curr_Contact = 0; | 266 | m_curr_Contact = 0; |
271 | } | 267 | } |
272 | updateView( true ); | 268 | updateView( true ); |
273 | } | 269 | } |
274 | 270 | ||
275 | void AbView::setListOrder( const QValueList<int>& ordered ) | 271 | void AbView::setListOrder( const QValueList<int>& ordered ) |
276 | { | 272 | { |
277 | m_orderedFields = ordered; | 273 | m_orderedFields = ordered; |
@@ -373,17 +369,17 @@ void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp, | |||
373 | if ( m_list.count() == 0 ){ | 369 | if ( m_list.count() == 0 ){ |
374 | emit signalNotFound(); | 370 | emit signalNotFound(); |
375 | return; | 371 | return; |
376 | } | 372 | } |
377 | 373 | ||
378 | // Now remove all contacts with wrong category (if any selected) | 374 | // Now remove all contacts with wrong category (if any selected) |
379 | // This algorithm is a litte bit ineffective, but | 375 | // This algorithm is a litte bit ineffective, but |
380 | // we will not have a lot of matching entries.. | 376 | // we will not have a lot of matching entries.. |
381 | if ( m_curr_category != -1 ) | 377 | if ( m_curr_category != 0 ) |
382 | clearForCategory(); | 378 | clearForCategory(); |
383 | 379 | ||
384 | // Now show all found entries | 380 | // Now show all found entries |
385 | updateView( true ); | 381 | updateView( true ); |
386 | } | 382 | } |
387 | 383 | ||
388 | void AbView::offSearch() | 384 | void AbView::offSearch() |
389 | { | 385 | { |
@@ -413,17 +409,17 @@ void AbView::slotSwitch(){ | |||
413 | // END: Slots | 409 | // END: Slots |
414 | 410 | ||
415 | void AbView::clearForCategory() | 411 | void AbView::clearForCategory() |
416 | { | 412 | { |
417 | Opie::OPimContactAccess::List::Iterator it; | 413 | Opie::OPimContactAccess::List::Iterator it; |
418 | // Now remove all contacts with wrong category if any category selected | 414 | // Now remove all contacts with wrong category if any category selected |
419 | 415 | ||
420 | Opie::OPimContactAccess::List allList = m_list; | 416 | Opie::OPimContactAccess::List allList = m_list; |
421 | if ( m_curr_category != -1 ){ | 417 | if ( m_curr_category != 0 ){ |
422 | for ( it = allList.begin(); it != allList.end(); ++it ){ | 418 | for ( it = allList.begin(); it != allList.end(); ++it ){ |
423 | if ( !contactCompare( *it, m_curr_category ) ){ | 419 | if ( !contactCompare( *it, m_curr_category ) ){ |
424 | //odebug << "Removing " << (*it).uid() << oendl; | 420 | //odebug << "Removing " << (*it).uid() << oendl; |
425 | m_list.remove( (*it).uid() ); | 421 | m_list.remove( (*it).uid() ); |
426 | } | 422 | } |
427 | } | 423 | } |
428 | } | 424 | } |
429 | 425 | ||
@@ -436,17 +432,17 @@ bool AbView::contactCompare( const Opie::OPimContact &cnt, int category ) | |||
436 | 432 | ||
437 | bool returnMe; | 433 | bool returnMe; |
438 | QArray<int> cats; | 434 | QArray<int> cats; |
439 | cats = cnt.categories(); | 435 | cats = cnt.categories(); |
440 | 436 | ||
441 | //odebug << "Number of categories: " << cats.count() << oendl; | 437 | //odebug << "Number of categories: " << cats.count() << oendl; |
442 | 438 | ||
443 | returnMe = false; | 439 | returnMe = false; |
444 | if ( cats.count() == 0 && category == 0 ) | 440 | if ( cats.count() == 0 && category == -1 ) |
445 | // Contacts with no category will just shown on "All" and "Unfiled" | 441 | // Contacts with no category will just shown on "All" and "Unfiled" |
446 | returnMe = true; | 442 | returnMe = true; |
447 | else { | 443 | else { |
448 | int i; | 444 | int i; |
449 | for ( i = 0; i < int(cats.count()); i++ ) { | 445 | for ( i = 0; i < int(cats.count()); i++ ) { |
450 | //odebug << "Comparing " << cats[i] << " with " << category << oendl; | 446 | //odebug << "Comparing " << cats[i] << " with " << category << oendl; |
451 | if ( cats[i] == category ) { | 447 | if ( cats[i] == category ) { |
452 | returnMe = true; | 448 | returnMe = true; |
diff --git a/core/pim/addressbook/addressbook.cpp b/core/pim/addressbook/addressbook.cpp index 6984501..faae0a9 100644 --- a/core/pim/addressbook/addressbook.cpp +++ b/core/pim/addressbook/addressbook.cpp | |||
@@ -849,18 +849,21 @@ void AddressbookWindow::slotWrapAround() | |||
849 | 849 | ||
850 | } | 850 | } |
851 | 851 | ||
852 | void AddressbookWindow::slotSetCategory( const QString &category ) | 852 | void AddressbookWindow::slotSetCategory( const QString &category ) |
853 | { | 853 | { |
854 | odebug << "void AddressbookWindow::slotSetCategory( " << category << " )" << oendl; | 854 | odebug << "void AddressbookWindow::slotSetCategory( " << category << " )" << oendl; |
855 | 855 | ||
856 | // Tell the view about the selected category | 856 | // Tell the view about the selected category |
857 | m_config.setCategory( category ); | 857 | QString cat = category; |
858 | m_abView -> setShowByCategory( category ); | 858 | if ( cat == tr( "All" ) ) |
859 | cat = QString::null; | ||
860 | m_config.setCategory( cat ); | ||
861 | m_abView -> setShowByCategory( cat ); | ||
859 | } | 862 | } |
860 | 863 | ||
861 | void AddressbookWindow::slotViewSwitched( int view ) | 864 | void AddressbookWindow::slotViewSwitched( int view ) |
862 | { | 865 | { |
863 | odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl; | 866 | odebug << "void AddressbookWindow::slotViewSwitched( " << view << " )" << oendl; |
864 | 867 | ||
865 | // Tell the view about the selected view | 868 | // Tell the view about the selected view |
866 | m_abView -> setShowToView ( (AbView::Views) view ); | 869 | m_abView -> setShowToView ( (AbView::Views) view ); |