summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/korganizer/germantranslation.txt4
-rw-r--r--korganizer/searchdialog.cpp155
-rw-r--r--korganizer/searchdialog.h7
3 files changed, 136 insertions, 30 deletions
diff --git a/bin/kdepim/korganizer/germantranslation.txt b/bin/kdepim/korganizer/germantranslation.txt
index 03d1882..5a9f2a2 100644
--- a/bin/kdepim/korganizer/germantranslation.txt
+++ b/bin/kdepim/korganizer/germantranslation.txt
@@ -1420,4 +1420,8 @@
1420{ " OK "," OK " }, 1420{ " OK "," OK " },
1421{ " Cancel "," Abbrechen " }, 1421{ " Cancel "," Abbrechen " },
1422{ "Matching items will be added to list","Passende werden zur Liste hinzugefügt" },
1423{ "Matching items will be removed from list","Passende werden von der Liste entfernt" },
1424{ "Search on displayed list only","Suche auf der dargestellten Liste" },
1425{ "List will be cleared before search","Liste wird vor der Suche gelöscht" },
1422{ "","" }, 1426{ "","" },
1423{ "","" }, 1427{ "","" },
diff --git a/korganizer/searchdialog.cpp b/korganizer/searchdialog.cpp
index 7b3b543..bba49f0 100644
--- a/korganizer/searchdialog.cpp
+++ b/korganizer/searchdialog.cpp
@@ -31,5 +31,5 @@
31#include <qlineedit.h> 31#include <qlineedit.h>
32#include <qpushbutton.h> 32#include <qpushbutton.h>
33 33#include <qhbuttongroup.h>
34#include <klocale.h> 34#include <klocale.h>
35#include <kmessagebox.h> 35#include <kmessagebox.h>
@@ -68,6 +68,19 @@ SearchDialog::SearchDialog(Calendar *calendar,CalendarView *parent)
68 subLayout->addWidget(searchEdit); 68 subLayout->addWidget(searchEdit);
69 69
70 mAddItems = new QCheckBox(i18n("Add items"),topFrame); 70 mAddItems = new QRadioButton( "+ ", topFrame );
71 subLayout->addWidget(mAddItems); 71 mSubItems = new QRadioButton( "- ", topFrame );
72 mRefineItems = new QRadioButton( "< ", topFrame );
73 subLayout->addWidget( mAddItems );
74 subLayout->addWidget( mSubItems );
75 subLayout->addWidget( mRefineItems );
76 QFont fo ( mAddItems->font() );
77 fo.setBold( true );
78 fo.setPointSize( fo.pointSize() + 2 );
79 mAddItems->setFont( fo );
80 mSubItems->setFont( fo );
81 mRefineItems->setFont( fo );
82 connect( mAddItems , SIGNAL( toggled ( bool ) ),this,SLOT(slot_add( bool )));
83 connect( mSubItems , SIGNAL( toggled ( bool ) ),this,SLOT(slot_sub( bool )));
84 connect( mRefineItems , SIGNAL( toggled ( bool ) ),this,SLOT(slot_refine( bool )));
72 85
73 QPushButton *togButton = new QPushButton( "", topFrame ); 86 QPushButton *togButton = new QPushButton( "", topFrame );
@@ -76,4 +89,5 @@ SearchDialog::SearchDialog(Calendar *calendar,CalendarView *parent)
76 togButton->setPixmap(SmallIcon("1updownarrow")); 89 togButton->setPixmap(SmallIcon("1updownarrow"));
77 togButton->setMinimumWidth( togButton->sizeHint().height() ); 90 togButton->setMinimumWidth( togButton->sizeHint().height() );
91
78 searchEdit->setText("*"); // Find all events by default 92 searchEdit->setText("*"); // Find all events by default
79 searchEdit->setFocus(); 93 searchEdit->setFocus();
@@ -142,4 +156,31 @@ SearchDialog::~SearchDialog()
142 156
143} 157}
158void SearchDialog::slot_add( bool b )
159{
160 if ( b ) {
161 if ( mSubItems->isOn() ) mSubItems->toggle();
162 if ( mRefineItems->isOn() ) mRefineItems->toggle();
163 setCaption( i18n("Matching items will be added to list"));
164 } else
165 setCaption( i18n("List will be cleared before search"));
166}
167void SearchDialog::slot_sub( bool b)
168{
169 if ( b ) {
170 if ( mRefineItems->isOn() ) mRefineItems->toggle();
171 if ( mAddItems->isOn() ) mAddItems->toggle();
172 setCaption( i18n("Matching items will be removed from list"));
173 } else
174 setCaption( i18n("List will be cleared before search"));
175}
176void SearchDialog::slot_refine( bool b)
177{
178 if ( b ) {
179 if ( mSubItems->isOn() ) mSubItems->toggle();
180 if ( mAddItems->isOn() ) mAddItems->toggle();
181 setCaption( i18n("Search on displayed list only"));
182 } else
183 setCaption( i18n("List will be cleared before search"));
184}
144void SearchDialog::toggleCheckboxes() 185void SearchDialog::toggleCheckboxes()
145{ 186{
@@ -295,6 +336,8 @@ void SearchDialog::search(const QRegExp &re)
295 mEndDate->date(), 336 mEndDate->date(),
296 false /*mInclusiveCheck->isChecked()*/ ); 337 false /*mInclusiveCheck->isChecked()*/ );
297 if ( !mAddItems->isChecked() ) 338 if ( !mAddItems->isChecked() && !mSubItems->isChecked() ) {
339 if ( mRefineItems->isChecked() ) events = mMatchedEvents;
298 mMatchedEvents.clear(); 340 mMatchedEvents.clear();
341 }
299 if ( mSearchEvent->isChecked() ) { 342 if ( mSearchEvent->isChecked() ) {
300 Event *ev; 343 Event *ev;
@@ -306,6 +349,11 @@ void SearchDialog::search(const QRegExp &re)
306 if (re.match(ev->summary()) != -1) 349 if (re.match(ev->summary()) != -1)
307#endif 350#endif
308 { 351 {
309 mMatchedEvents.append(ev); 352 if ( mSubItems->isChecked() )
353 mMatchedEvents.remove(ev);
354 else {
355 if ( !mMatchedEvents.contains( ev ) )
356 mMatchedEvents.append(ev);
357 }
310 continue; 358 continue;
311 } 359 }
@@ -315,6 +363,11 @@ void SearchDialog::search(const QRegExp &re)
315 if (re.match(ev->location()) != -1) 363 if (re.match(ev->location()) != -1)
316#endif 364#endif
317 { 365 {
318 mMatchedEvents.append(ev); 366 if ( mSubItems->isChecked() )
367 mMatchedEvents.remove(ev);
368 else{
369 if ( !mMatchedEvents.contains( ev ) )
370 mMatchedEvents.append(ev);
371 }
319 continue; 372 continue;
320 } 373 }
@@ -326,6 +379,11 @@ void SearchDialog::search(const QRegExp &re)
326 if (re.match(ev->description()) != -1) 379 if (re.match(ev->description()) != -1)
327#endif 380#endif
328 { 381 {
329 mMatchedEvents.append(ev); 382 if ( mSubItems->isChecked() )
383 mMatchedEvents.remove(ev);
384 else{
385 if ( !mMatchedEvents.contains( ev ) )
386 mMatchedEvents.append(ev);
387 }
330 continue; 388 continue;
331 } 389 }
@@ -338,5 +396,11 @@ void SearchDialog::search(const QRegExp &re)
338#endif 396#endif
339 { 397 {
340 mMatchedEvents.append(ev); 398
399 if ( mSubItems->isChecked() )
400 mMatchedEvents.remove(ev);
401 else{
402 if ( !mMatchedEvents.contains( ev ) )
403 mMatchedEvents.append(ev);
404 }
341 continue; 405 continue;
342 } 406 }
@@ -352,6 +416,11 @@ void SearchDialog::search(const QRegExp &re)
352 if (re.match(a->name()) != -1) 416 if (re.match(a->name()) != -1)
353#endif 417#endif
354 { 418 {
355 mMatchedEvents.append(ev); 419 if ( mSubItems->isChecked() )
420 mMatchedEvents.remove(ev);
421 else{
422 if ( !mMatchedEvents.contains( ev ) )
423 mMatchedEvents.append(ev);
424 }
356 break; 425 break;
357 } 426 }
@@ -363,6 +432,11 @@ void SearchDialog::search(const QRegExp &re)
363 if (re.match(a->email()) != -1) 432 if (re.match(a->email()) != -1)
364#endif 433#endif
365 { 434 {
366 mMatchedEvents.append(ev); 435 if ( mSubItems->isChecked() )
436 mMatchedEvents.remove(ev);
437 else{
438 if ( !mMatchedEvents.contains( ev ) )
439 mMatchedEvents.append(ev);
440 }
367 break; 441 break;
368 } 442 }
@@ -373,6 +447,10 @@ void SearchDialog::search(const QRegExp &re)
373 } 447 }
374 QPtrList<Todo> todos = mCalendar->todos( ); 448 QPtrList<Todo> todos = mCalendar->todos( );
375 if ( !mAddItems->isChecked() ) 449
450 if ( !mAddItems->isChecked() && !mSubItems->isChecked() ) {
451 if ( mRefineItems->isChecked() ) todos = mMatchedTodos ;
376 mMatchedTodos.clear(); 452 mMatchedTodos.clear();
453 }
454
377 if ( mSearchTodo->isChecked() ) { 455 if ( mSearchTodo->isChecked() ) {
378 Todo *tod; 456 Todo *tod;
@@ -384,6 +462,9 @@ void SearchDialog::search(const QRegExp &re)
384 if (re.match(tod->summary()) != -1) 462 if (re.match(tod->summary()) != -1)
385#endif 463#endif
386 { 464 {
387 mMatchedTodos.append(tod); 465 if ( mSubItems->isChecked() )
466 mMatchedTodos.remove(tod);
467 else if (!mMatchedTodos.contains( tod ))
468 mMatchedTodos.append(tod);
388 continue; 469 continue;
389 } 470 }
@@ -395,6 +476,9 @@ void SearchDialog::search(const QRegExp &re)
395 if (re.match(tod->description()) != -1) 476 if (re.match(tod->description()) != -1)
396#endif 477#endif
397 { 478 {
398 mMatchedTodos.append(tod); 479 if ( mSubItems->isChecked() )
480 mMatchedTodos.remove(tod);
481 else if (!mMatchedTodos.contains( tod ))
482 mMatchedTodos.append(tod);
399 continue; 483 continue;
400 } 484 }
@@ -406,6 +490,9 @@ void SearchDialog::search(const QRegExp &re)
406 if (re.match(tod->categoriesStr()) != -1) 490 if (re.match(tod->categoriesStr()) != -1)
407#endif 491#endif
408 { 492 {
409 mMatchedTodos.append(tod); 493 if ( mSubItems->isChecked() )
494 mMatchedTodos.remove(tod);
495 else if (!mMatchedTodos.contains( tod ))
496 mMatchedTodos.append(tod);
410 continue; 497 continue;
411 } 498 }
@@ -421,6 +508,9 @@ void SearchDialog::search(const QRegExp &re)
421 if (re.match(a->name()) != -1) 508 if (re.match(a->name()) != -1)
422#endif 509#endif
423 { 510 {
424 mMatchedTodos.append(tod); 511 if ( mSubItems->isChecked() )
512 mMatchedTodos.remove(tod);
513 else if (!mMatchedTodos.contains( tod ))
514 mMatchedTodos.append(tod);
425 break; 515 break;
426 } 516 }
@@ -433,5 +523,8 @@ void SearchDialog::search(const QRegExp &re)
433#endif 523#endif
434 { 524 {
435 mMatchedTodos.append(tod); 525 if ( mSubItems->isChecked() )
526 mMatchedTodos.remove(tod);
527 else if (!mMatchedTodos.contains( tod ))
528 mMatchedTodos.append(tod);
436 break; 529 break;
437 } 530 }
@@ -441,8 +534,11 @@ void SearchDialog::search(const QRegExp &re)
441 } 534 }
442 } 535 }
443 if ( !mAddItems->isChecked() ) 536
537 QPtrList<Journal> journals = mCalendar->journals( );
538 if ( !mAddItems->isChecked() && !mSubItems->isChecked() ) {
539 if ( mRefineItems->isChecked() ) journals = mMatchedJournals ;
444 mMatchedJournals.clear(); 540 mMatchedJournals.clear();
541 }
445 if (mSearchJournal->isChecked() ) { 542 if (mSearchJournal->isChecked() ) {
446 QPtrList<Journal> journals = mCalendar->journals( );
447 Journal* journ; 543 Journal* journ;
448 544
@@ -456,5 +552,8 @@ void SearchDialog::search(const QRegExp &re)
456#endif 552#endif
457 { 553 {
458 mMatchedJournals.append(journ); 554 if ( mSubItems->isChecked() )
555 mMatchedJournals.remove(journ);
556 else if (!mMatchedJournals.contains( journ ))
557 mMatchedJournals.append(journ);
459 continue; 558 continue;
460 } 559 }
diff --git a/korganizer/searchdialog.h b/korganizer/searchdialog.h
index b345b98..945ff65 100644
--- a/korganizer/searchdialog.h
+++ b/korganizer/searchdialog.h
@@ -26,5 +26,5 @@
26 26
27#include <qregexp.h> 27#include <qregexp.h>
28 28#include <qradiobutton.h>
29#include <kdialogbase.h> 29#include <kdialogbase.h>
30#include <qvbox.h> 30#include <qvbox.h>
@@ -62,4 +62,7 @@ class SearchDialog : public QVBox
62 void searchTextChanged( const QString &_text ); 62 void searchTextChanged( const QString &_text );
63 void toggleCheckboxes(); 63 void toggleCheckboxes();
64 void slot_add( bool );
65 void slot_sub( bool );
66 void slot_refine( bool );
64 67
65 signals: 68 signals:
@@ -93,5 +96,5 @@ class SearchDialog : public QVBox
93 QCheckBox *mSearchAName; 96 QCheckBox *mSearchAName;
94 QCheckBox *mSearchAEmail; 97 QCheckBox *mSearchAEmail;
95 QCheckBox *mAddItems; 98 QRadioButton *mAddItems, *mSubItems, *mRefineItems;
96 void keyPressEvent ( QKeyEvent *e) ; 99 void keyPressEvent ( QKeyEvent *e) ;
97}; 100};