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 /core/pim/addressbook | |
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 | 36 | ||||
-rw-r--r-- | core/pim/addressbook/addressbook.cpp | 7 |
3 files changed, 21 insertions, 23 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 | |||
@@ -150,25 +150,24 @@ void AbTable::init() | |||
150 | } | 150 | } |
151 | 151 | ||
152 | void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList ) | 152 | void AbTable::setContacts( const Opie::OPimContactAccess::List& viewList ) |
153 | { | 153 | { |
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(); |
171 | 170 | ||
172 | updateVisible(); | 171 | updateVisible(); |
173 | 172 | ||
174 | setPaintingEnabled( TRUE ); | 173 | setPaintingEnabled( TRUE ); |
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 | |||
@@ -33,25 +33,25 @@ QString addressbookPersonalVCardName() | |||
33 | { | 33 | { |
34 | QString filename = Global::applicationFileName("addressbook", | 34 | QString filename = Global::applicationFileName("addressbook", |
35 | "businesscard.vcf"); | 35 | "businesscard.vcf"); |
36 | return filename; | 36 | return filename; |
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 ) |
54 | { | 54 | { |
55 | odebug << "AbView::c'tor" << oendl; | 55 | odebug << "AbView::c'tor" << oendl; |
56 | // Load default database and handle syncing myself.. ! | 56 | // Load default database and handle syncing myself.. ! |
57 | m_contactdb = new Opie::OPimContactAccess ( "addressbook", 0l, 0l, false ); | 57 | m_contactdb = new Opie::OPimContactAccess ( "addressbook", 0l, 0l, false ); |
@@ -148,37 +148,26 @@ bool AbView::save() | |||
148 | //odebug << "AbView::Save data" << oendl; | 148 | //odebug << "AbView::Save data" << oendl; |
149 | 149 | ||
150 | return m_contactdb->save(); | 150 | return m_contactdb->save(); |
151 | } | 151 | } |
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 ) { | ||
161 | // Show unfiled | ||
162 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, | 160 | m_list = m_contactdb->sorted( true, Opie::OPimContactAccess::SortFileAsName, |
163 | Opie::OPimContactAccess::DoNotShowWithCategory, 0 ); | 161 | Opie::OPimContactAccess::FilterCategory, m_curr_category ); |
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 | 162 | ||
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 | } |
182 | 171 | ||
183 | void AbView::reload() | 172 | void AbView::reload() |
184 | { | 173 | { |
@@ -190,40 +179,42 @@ void AbView::reload() | |||
190 | 179 | ||
191 | void AbView::clear() | 180 | void AbView::clear() |
192 | { | 181 | { |
193 | // :SX | 182 | // :SX |
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 ){ |
226 | odebug << "Change the View (Category is: " << m_curr_category << ")" << oendl; | 217 | odebug << "Change the View (Category is: " << m_curr_category << ")" << oendl; |
227 | m_prev_View = m_curr_View; | 218 | m_prev_View = m_curr_View; |
228 | m_curr_View = view; | 219 | m_curr_View = view; |
229 | 220 | ||
@@ -256,26 +247,31 @@ void AbView::setShowByLetter( char c, AbConfig::LPSearchMode mode ) | |||
256 | case AbConfig::LastName: | 247 | case AbConfig::LastName: |
257 | query.setLastName( QString("%1*").arg(c) ); | 248 | query.setLastName( QString("%1*").arg(c) ); |
258 | break; | 249 | break; |
259 | case AbConfig::FileAs: | 250 | case AbConfig::FileAs: |
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; |
278 | if ( m_abTable ){ | 274 | if ( m_abTable ){ |
279 | m_abTable->setOrderedList( ordered ); | 275 | m_abTable->setOrderedList( ordered ); |
280 | m_abTable->refresh(); | 276 | m_abTable->refresh(); |
281 | } | 277 | } |
@@ -369,25 +365,25 @@ void AbView::slotDoFind( const QString &str, bool caseSensitive, bool useRegExp, | |||
369 | // Get all matching entries out of the database | 365 | // Get all matching entries out of the database |
370 | m_list = m_contactdb->matchRegexp( r ); | 366 | m_list = m_contactdb->matchRegexp( r ); |
371 | 367 | ||
372 | //odebug << "Found: " << m_list.count() << oendl; | 368 | //odebug << "Found: " << m_list.count() << oendl; |
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 | { |
390 | m_inSearch = false; | 386 | m_inSearch = false; |
391 | 387 | ||
392 | load(); | 388 | load(); |
393 | } | 389 | } |
@@ -409,48 +405,48 @@ void AbView::slotSwitch(){ | |||
409 | updateView(); | 405 | updateView(); |
410 | 406 | ||
411 | } | 407 | } |
412 | 408 | ||
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 | ||
430 | } | 426 | } |
431 | 427 | ||
432 | bool AbView::contactCompare( const Opie::OPimContact &cnt, int category ) | 428 | bool AbView::contactCompare( const Opie::OPimContact &cnt, int category ) |
433 | { | 429 | { |
434 | //odebug << "bool AbView::contactCompare( const Opie::OPimContact &cnt, " | 430 | //odebug << "bool AbView::contactCompare( const Opie::OPimContact &cnt, " |
435 | // << category << " )" << oendl; | 431 | // << category << " )" << oendl; |
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; |
453 | break; | 449 | break; |
454 | } | 450 | } |
455 | } | 451 | } |
456 | } | 452 | } |
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 | |||
@@ -845,26 +845,29 @@ void AddressbookWindow::slotWrapAround() | |||
845 | odebug << "Got wrap signal!" << oendl; | 845 | odebug << "Got wrap signal!" << oendl; |
846 | // if ( doNotifyWrapAround ) | 846 | // if ( doNotifyWrapAround ) |
847 | // QMessageBox::information( this, tr( "End of list" ), | 847 | // QMessageBox::information( this, tr( "End of list" ), |
848 | // tr( "End of list. Wrap around now...!" ) + "\n" ); | 848 | // tr( "End of list. Wrap around now...!" ) + "\n" ); |
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 ); |
867 | active_view = view; | 870 | active_view = view; |
868 | } | 871 | } |
869 | 872 | ||
870 | 873 | ||