summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt4
-rw-r--r--kabc/addresseedialog.cpp15
-rw-r--r--korganizer/searchdialog.cpp8
3 files changed, 20 insertions, 7 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index c4557ef..2aac9ff 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,98 +1,102 @@
1Info about the changes in new versions of KDE-Pim/Pi 1Info about the changes in new versions of KDE-Pim/Pi
2 2
3********** VERSION 2.1.9 ************
4
5KO/Pi:
6Fixed some problems of the new search options in the search dialog.
3 7
4********** VERSION 2.1.8 ************ 8********** VERSION 2.1.8 ************
5 9
6KO/Pi: 10KO/Pi:
7Added info about the completion state of a todo in the ListView/Searchdialog. 11Added info about the completion state of a todo in the ListView/Searchdialog.
8If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well. 12If in TodoView is selected "do not show compledted todos" then completed todos are not shown in the ListView as well.
9Fixed some updating problems when changing the filter. 13Fixed some updating problems when changing the filter.
10 14
11KA/Pi: 15KA/Pi:
12In the addressee selection dialog now the formatted name is shown, if not empty. 16In the addressee selection dialog now the formatted name is shown, if not empty.
13Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category. 17Added a column "category" to the addressee selection dialog to make it possible to sort addressees after category.
14Now in the addressee selection dialog a selected contact is remove with a single click from the selected list. 18Now in the addressee selection dialog a selected contact is remove with a single click from the selected list.
15 19
16Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored. 20Fixed in the file selector on the Zaurus the problem that symbolic links to files/dirs were ignored.
17Fixed the sorting for size in the file selector on the Z. 21Fixed the sorting for size in the file selector on the Z.
18 22
19Changed the color selection dialog on the Zaurus to a more user friendly version. 23Changed the color selection dialog on the Zaurus to a more user friendly version.
20 24
21********** VERSION 2.1.7 ************ 25********** VERSION 2.1.7 ************
22 26
23KO/Pi: 27KO/Pi:
24Fixed several problems in the new Resource handling. 28Fixed several problems in the new Resource handling.
25Added more options to the search dialog. 29Added more options to the search dialog.
26Fixed a problem in the Month view. 30Fixed a problem in the Month view.
27Added more options to the dialog when setting a todo to stopped. 31Added more options to the dialog when setting a todo to stopped.
28 32
29Fixed two small problems in KO/Pi Alarm applet. 33Fixed two small problems in KO/Pi Alarm applet.
30 34
31********** VERSION 2.1.6 ************ 35********** VERSION 2.1.6 ************
32 36
33This release is for testing only. 37This release is for testing only.
34 38
35KO/Pi: 39KO/Pi:
36Added to the list view (the list view is used in search dialog as well) the possibility to print it. 40Added to the list view (the list view is used in search dialog as well) the possibility to print it.
37Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view. 41Added to the list view the possibility to hide entries, if you do not want to print all entries of the list view.
38Added to the list view the possibility to add all subtodos of selected todos to an export/beam. 42Added to the list view the possibility to add all subtodos of selected todos to an export/beam.
39Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout. 43Added to the search dialog the possibility to make an additive search such that you can get a better list for export/printout.
40Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus. 44Added to the search dialog the possibility to hide the checkboxes such that there is more space for the list view on the Zaurus.
41Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly. 45Fixed a problem in the AlarmTimer Applet: Now utf8 messages are displayed properly.
42 46
43Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars. 47Added support for multiple calendar files in KO/Pi. Only local ical (*.ics) files are supported as calendars.
44In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later. 48In the sync profile config it is still missing to specify a particular calendar to sync with this profile. That setting will be added later.
45Now on every sync the set of calendars is synced which are enabled in the resource view. 49Now on every sync the set of calendars is synced which are enabled in the resource view.
46 50
47A calendar is enabled in the resource view if the "eye" column is checked. 51A calendar is enabled in the resource view if the "eye" column is checked.
48You can set a calendar to be the default for new items( "+" column ). 52You can set a calendar to be the default for new items( "+" column ).
49You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly. 53You can tell KO/Pi to ignore all alarm of a calendar ( "bell" column ) and you can set it readonly.
50To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ... 54To find out how to add a new calendar and how to remove a calendar is left as an exercise to the reader ...
51 55
52 56
53********** VERSION 2.1.5 ************ 57********** VERSION 2.1.5 ************
54 58
55This is the new stable version. 59This is the new stable version.
56Bugfix: 60Bugfix:
57Fixed a problem with agenda popup on the desktop in KO/Pi. 61Fixed a problem with agenda popup on the desktop in KO/Pi.
58Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization. 62Fixed a crash when reloading file, e.g. after a passive pi-sync synchronization.
59Added config option to not display completed todos in agenda view. 63Added config option to not display completed todos in agenda view.
60Addressee view is now using the formatted name, if defined. 64Addressee view is now using the formatted name, if defined.
61That makes it possible to display "lastname, firstname" in that view now. 65That makes it possible to display "lastname, firstname" in that view now.
62To set the formatted name for all contacts, please use menu: 66To set the formatted name for all contacts, please use menu:
63Edit->Change->Set formatted name. 67Edit->Change->Set formatted name.
64Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows. 68Fixed the bug in KA/Pi that is was not possible to add images to a contact on Windows.
65 69
66********** VERSION 2.1.4 ************ 70********** VERSION 2.1.4 ************
67 71
68Fixed two more bugs in the KA/Pi CSV import dialog: 72Fixed two more bugs in the KA/Pi CSV import dialog:
69Made it possible to read multi-line fields and import it to the "Note" field. 73Made it possible to read multi-line fields and import it to the "Note" field.
70Fixed a problem in mapping custom fields, whatever a custem field is... 74Fixed a problem in mapping custom fields, whatever a custem field is...
71 75
72********** VERSION 2.1.3 ************ 76********** VERSION 2.1.3 ************
73 77
74Changed the menu structure of the alarm applet: 78Changed the menu structure of the alarm applet:
75Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List". 79Moved "Simulate" to " Play Beeps" submenu and re-added "Todo List".
76 80
77Fixed several problems in the KA/Pi CSV import dialog: 81Fixed several problems in the KA/Pi CSV import dialog:
78Added "Category", made codec configureable and made it possible to map many fields to the "Note" field. 82Added "Category", made codec configureable and made it possible to map many fields to the "Note" field.
79 83
80 84
81********** VERSION 2.1.2 ************ 85********** VERSION 2.1.2 ************
82 86
83Fixed a problem closing the alarm dialog on Zaurus with "OK" button. 87Fixed a problem closing the alarm dialog on Zaurus with "OK" button.
84 88
85Fixed a problem when importing data from Outlook with mutiple categories set. 89Fixed a problem when importing data from Outlook with mutiple categories set.
86 90
87Changed display of days in datenavigator: 91Changed display of days in datenavigator:
88Birthdays are now blue, not dark green. 92Birthdays are now blue, not dark green.
89When todo view is shown, no birtdays are shown and days with due todos are shown blue. 93When todo view is shown, no birtdays are shown and days with due todos are shown blue.
90When journal view is shown, only holidays are shown and days with journals are blue. 94When journal view is shown, only holidays are shown and days with journals are blue.
91 95
92Added Backup options to global config: 96Added Backup options to global config:
93You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ). 97You can create now x-daily backups for KO/Pi, KA/Pi (for file resources only, file resource is the standard type) and PwM/Pi ( all files you will open ).
94It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again. 98It is recommended to use another HDD/Memory card for the backup directory. If (very useful on the Zaurus) the specified backup directory does not exist you are asked if you want to try again to create a backup. That makes it possible to insert your memory card in the Zaurus and then trying again.
95The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups. 99The backup is created when the application wants to save for the first time on a backup-day. You can specify the amount of backups and the day interval of backups.
96 100
97********** VERSION 2.1.1 ************ 101********** VERSION 2.1.1 ************
98 102
diff --git a/kabc/addresseedialog.cpp b/kabc/addresseedialog.cpp
index 3e7b72c..9197850 100644
--- a/kabc/addresseedialog.cpp
+++ b/kabc/addresseedialog.cpp
@@ -1,202 +1,205 @@
1/* 1/*
2 This file is part of libkabc. 2 This file is part of libkabc.
3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org> 3 Copyright (c) 2001 Cornelius Schumacher <schumacher@kde.org>
4 4
5 This library is free software; you can redistribute it and/or 5 This library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Library General Public 6 modify it under the terms of the GNU Library General Public
7 License as published by the Free Software Foundation; either 7 License as published by the Free Software Foundation; either
8 version 2 of the License, or (at your option) any later version. 8 version 2 of the License, or (at your option) any later version.
9 9
10 This library is distributed in the hope that it will be useful, 10 This library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of 11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Library General Public License for more details. 13 Library General Public License for more details.
14 14
15 You should have received a copy of the GNU Library General Public License 15 You should have received a copy of the GNU Library General Public License
16 along with this library; see the file COPYING.LIB. If not, write to 16 along with this library; see the file COPYING.LIB. If not, write to
17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, 17 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA. 18 Boston, MA 02111-1307, USA.
19*/ 19*/
20 20
21#include <qlayout.h> 21#include <qlayout.h>
22#include <qpushbutton.h> 22#include <qpushbutton.h>
23#include <qgroupbox.h> 23#include <qgroupbox.h>
24#include <qapplication.h> 24#include <qapplication.h>
25#include <qregexp.h> 25#include <qregexp.h>
26#include <qvbox.h> 26#include <qvbox.h>
27#include <qlabel.h> 27#include <qlabel.h>
28 28
29#include <klocale.h> 29#include <klocale.h>
30#include <kdebug.h> 30#include <kdebug.h>
31#include <kglobalsettings.h> 31#include <kglobalsettings.h>
32 32
33#include "stdaddressbook.h" 33#include "stdaddressbook.h"
34 34
35#include "addresseedialog.h" 35#include "addresseedialog.h"
36#include "KDGanttMinimizeSplitter.h" 36#include "KDGanttMinimizeSplitter.h"
37//#include "addresseedialog.moc" 37//#include "addresseedialog.moc"
38 38
39using namespace KABC; 39using namespace KABC;
40 40
41AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) : 41AddresseeItem::AddresseeItem( QListView *parent, const Addressee &addressee ) :
42 QListViewItem( parent ), 42 QListViewItem( parent ),
43 mAddressee( addressee ) 43 mAddressee( addressee )
44{ 44{
45 setText( Name,addressee.realName()); 45 setText( Name,addressee.realName());
46 setText( Email, addressee.preferredEmail() ); 46 setText( Email, addressee.preferredEmail() );
47 setText( Category, addressee.categories().join(";") ); 47 setText( Category, addressee.categories().join(";") );
48} 48}
49 49
50QString AddresseeItem::key( int column, bool ) const 50QString AddresseeItem::key( int column, bool ) const
51{ 51{
52 52
53 if (column == Email) { 53 if (column == Email) {
54 QString value = text(Email); 54 QString value = text(Email);
55 int val = value.findRev("@"); 55 int val = value.findRev("@");
56 return value.mid( val) + value.left( val ); 56 return value.mid( val) + value.left( val );
57 } 57 }
58 return text(column).lower(); 58 return text(column).lower();
59} 59}
60 60
61AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) : 61AddresseeDialog::AddresseeDialog( QWidget *parent, bool multiple ) :
62 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"), 62 KDialogBase( KDialogBase::Plain, i18n("Select Addressee"),
63 Ok|Cancel, No, parent ), mMultiple( multiple ) 63 Ok|Cancel, No, parent ), mMultiple( multiple )
64{ 64{
65 qDebug("NEW AddresseeDialog "); 65 qDebug("NEW AddresseeDialog ");
66 QWidget *topWidget = plainPage(); 66 QWidget *topWidget = plainPage();
67 67
68 QBoxLayout *topLayout = new QHBoxLayout( topWidget ); 68 QBoxLayout *topLayout = new QHBoxLayout( topWidget );
69 69
70 70
71 KDGanttMinimizeSplitter* mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, topWidget); 71 KDGanttMinimizeSplitter* mMiniSplitter = new KDGanttMinimizeSplitter( Qt::Horizontal, topWidget);
72 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right ); 72 mMiniSplitter->setMinimizeDirection ( KDGanttMinimizeSplitter::Right );
73 73
74 topLayout->addWidget(mMiniSplitter ); 74 topLayout->addWidget(mMiniSplitter );
75 75
76 QWidget *listWidget = new QWidget( mMiniSplitter ); 76 QWidget *listWidget = new QWidget( mMiniSplitter );
77 77
78 QBoxLayout *listLayout = new QVBoxLayout (listWidget) ; 78 QVBoxLayout *listLayout = new QVBoxLayout (listWidget) ;
79 //topLayout->addLayout( listLayout ); 79 //topLayout->addLayout( listLayout );
80 80
81 mAddresseeList = new KListView( listWidget ); 81 mAddresseeList = new KListView( listWidget );
82 mAddresseeList->addColumn( i18n("Name") ); 82 mAddresseeList->addColumn( i18n("Name") );
83 mAddresseeList->addColumn( i18n("Email") ); 83 mAddresseeList->addColumn( i18n("Email") );
84 mAddresseeList->addColumn( i18n("Category") ); 84 mAddresseeList->addColumn( i18n("Category") );
85 mAddresseeList->setAllColumnsShowFocus( true ); 85 mAddresseeList->setAllColumnsShowFocus( true );
86 mAddresseeList->setFullWidth( true ); 86 mAddresseeList->setFullWidth( true );
87 listLayout->addWidget( mAddresseeList ); 87 listLayout->addWidget( mAddresseeList );
88 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ), 88 connect( mAddresseeList, SIGNAL( doubleClicked( QListViewItem * ) ),
89 SLOT( slotOk() ) ); 89 SLOT( slotOk() ) );
90 90
91 QHBox* searchBox = new QHBox ( listWidget ); 91 //QHBox* searchBox = new QHBox ( listWidget );
92 mAddresseeEdit = new QLineEdit( searchBox ); 92 mAddresseeEdit = new QLineEdit( listWidget );
93 connect( mAddresseeEdit, SIGNAL( returnPressed() ), 93 connect( mAddresseeEdit, SIGNAL( returnPressed() ),
94 SLOT( loadAddressBook() ) ); 94 SLOT( loadAddressBook() ) );
95 mAddresseeEdit->setFocus(); 95 mAddresseeEdit->setFocus();
96 QPushButton *searchButton = new QPushButton( i18n("Search!"), searchBox ); 96 QPushButton *searchButton = new QPushButton( i18n("Search!"), listWidget );
97 connect ( searchButton, SIGNAL( clicked() ), SLOT( loadAddressBook() ) ); 97 connect ( searchButton, SIGNAL( clicked() ), SLOT( loadAddressBook() ) );
98 98
99 listLayout->addWidget( searchBox ); 99 QHBoxLayout *searchLayout = new QHBoxLayout (listLayout) ;
100 searchLayout->addWidget( mAddresseeEdit );
101 searchLayout->addWidget( searchButton );
102 //listLayout->addWidget( searchBox );
100 103
101 if ( mMultiple ) { 104 if ( mMultiple ) {
102 //QBoxLayout *selectedLayout = new QVBoxLayout; 105 //QBoxLayout *selectedLayout = new QVBoxLayout;
103 //topLayout->addLayout( selectedLayout ); 106 //topLayout->addLayout( selectedLayout );
104 //topLayout->setSpacing( spacingHint() ); 107 //topLayout->setSpacing( spacingHint() );
105 108
106 QVBox *selectedGroup = new QVBox( mMiniSplitter ); 109 QVBox *selectedGroup = new QVBox( mMiniSplitter );
107 new QLabel ( i18n("Selected:"), selectedGroup ); 110 new QLabel ( i18n("Selected:"), selectedGroup );
108 //selectedLayout->addWidget( selectedGroup ); 111 //selectedLayout->addWidget( selectedGroup );
109 112
110 mSelectedList = new KListView( selectedGroup ); 113 mSelectedList = new KListView( selectedGroup );
111 mSelectedList->addColumn( i18n("Name") ); 114 mSelectedList->addColumn( i18n("Name") );
112 mSelectedList->addColumn( i18n("Email") ); 115 mSelectedList->addColumn( i18n("Email") );
113 mSelectedList->setAllColumnsShowFocus( true ); 116 mSelectedList->setAllColumnsShowFocus( true );
114 mSelectedList->setFullWidth( true ); 117 mSelectedList->setFullWidth( true );
115 //connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ), 118 //connect( mSelectedList, SIGNAL( doubleClicked( QListViewItem * ) ),
116 // SLOT( removeSelected() ) ); 119 // SLOT( removeSelected() ) );
117 connect( mSelectedList, SIGNAL( clicked( QListViewItem * ) ), 120 connect( mSelectedList, SIGNAL( clicked( QListViewItem * ) ),
118 SLOT( removeSelected() ) ); 121 SLOT( removeSelected() ) );
119 connect( mSelectedList, SIGNAL( returnPressed( QListViewItem *) ), 122 connect( mSelectedList, SIGNAL( returnPressed( QListViewItem *) ),
120 SLOT( removeSelected() ) ); 123 SLOT( removeSelected() ) );
121 124
122#if 0 125#if 0
123 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup ); 126 QPushButton *unselectButton = new QPushButton( i18n("Unselect"), selectedGroup );
124 connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) ); 127 connect ( unselectButton, SIGNAL( clicked() ), SLOT( removeSelected() ) );
125 128
126#endif 129#endif
127 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ), 130 connect( mAddresseeList, SIGNAL( clicked( QListViewItem * ) ),
128 SLOT( addSelected( QListViewItem * ) ) ); 131 SLOT( addSelected( QListViewItem * ) ) );
129 connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ), 132 connect( mAddresseeList, SIGNAL( returnPressed( QListViewItem * ) ),
130 SLOT( selectNextItem( QListViewItem * ) ) ); 133 SLOT( selectNextItem( QListViewItem * ) ) );
131 134
132 } 135 }
133 136
134 mAddressBook = StdAddressBook::self( true ); 137 mAddressBook = StdAddressBook::self( true );
135 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ), 138 connect( mAddressBook, SIGNAL( addressBookChanged( AddressBook* ) ),
136 SLOT( addressBookChanged() ) ); 139 SLOT( addressBookChanged() ) );
137#if 0 140#if 0
138 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ), 141 connect( mAddressBook, SIGNAL( loadingFinished( Resource* ) ),
139 SLOT( addressBookChanged() ) ); 142 SLOT( addressBookChanged() ) );
140#endif 143#endif
141 loadAddressBook(); 144 loadAddressBook();
142 QValueList<int> splitterSize; 145 QValueList<int> splitterSize;
143 splitterSize.append( ( width() / 5 ) * 3 ); 146 splitterSize.append( ( width() / 5 ) * 3 );
144 splitterSize.append( ( width() / 5 ) *2 ); 147 splitterSize.append( ( width() / 5 ) *2 );
145 mMiniSplitter->setSizes( splitterSize ); 148 mMiniSplitter->setSizes( splitterSize );
146} 149}
147 150
148AddresseeDialog::~AddresseeDialog() 151AddresseeDialog::~AddresseeDialog()
149{ 152{
150 qDebug("DELETE AddresseeDialog "); 153 qDebug("DELETE AddresseeDialog ");
151} 154}
152 155
153void AddresseeDialog::loadAddressBook() 156void AddresseeDialog::loadAddressBook()
154{ 157{
155 mAddresseeList->clear(); 158 mAddresseeList->clear();
156 mItemDict.clear(); 159 mItemDict.clear();
157 if ( mAddresseeEdit->text().isEmpty() ) { 160 if ( mAddresseeEdit->text().isEmpty() ) {
158 AddressBook::Iterator it; 161 AddressBook::Iterator it;
159 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 162 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
160 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 163 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
161 continue; 164 continue;
162 new AddresseeItem( mAddresseeList, (*it) ); 165 new AddresseeItem( mAddresseeList, (*it) );
163 } 166 }
164 return; 167 return;
165 } 168 }
166 //mAddresseeEdit->completionObject()->clear(); 169 //mAddresseeEdit->completionObject()->clear();
167 QRegExp re; 170 QRegExp re;
168 re.setWildcard(true); // most people understand these better. 171 re.setWildcard(true); // most people understand these better.
169 re.setCaseSensitive(false); 172 re.setCaseSensitive(false);
170 re.setPattern( "*"+ mAddresseeEdit->text() + "*"); 173 re.setPattern( "*"+ mAddresseeEdit->text() + "*");
171 174
172 AddressBook::Iterator it; 175 AddressBook::Iterator it;
173 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) { 176 for( it = mAddressBook->begin(); it != mAddressBook->end(); ++it ) {
174 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") ) 177 if ( (*it).uid().left(2) == "la" && (*it).uid().left(19) == QString("last-syncAddressee-") )
175 continue; 178 continue;
176 QString name = (*it).realName(); 179 QString name = (*it).realName();
177 name += (*it).preferredEmail(); 180 name += (*it).preferredEmail();
178 name += (*it).categories().join(";"); 181 name += (*it).categories().join(";");
179#if QT_VERSION >= 0x030000 182#if QT_VERSION >= 0x030000
180 if (re.search(name) != -1) 183 if (re.search(name) != -1)
181#else 184#else
182 if (re.match(name) != -1) 185 if (re.match(name) != -1)
183#endif 186#endif
184 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) ); 187 AddresseeItem *item = new AddresseeItem( mAddresseeList, (*it) );
185 } 188 }
186} 189}
187 190
188void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item ) 191void AddresseeDialog::addCompletionItem( const QString &str, QListViewItem *item )
189{ 192{
190 if ( str.isEmpty() ) return; 193 if ( str.isEmpty() ) return;
191 194
192 mItemDict.insert( str, item ); 195 mItemDict.insert( str, item );
193 //mAddresseeEdit->completionObject()->addItem( str ); 196 //mAddresseeEdit->completionObject()->addItem( str );
194} 197}
195 198
196void AddresseeDialog::selectItem( const QString &str ) 199void AddresseeDialog::selectItem( const QString &str )
197{ 200{
198 if ( str.isEmpty() ) return; 201 if ( str.isEmpty() ) return;
199 202
200 QListViewItem *item = mItemDict.find( str ); 203 QListViewItem *item = mItemDict.find( str );
201 if ( item ) { 204 if ( item ) {
202 mAddresseeList->blockSignals( true ); 205 mAddresseeList->blockSignals( true );
diff --git a/korganizer/searchdialog.cpp b/korganizer/searchdialog.cpp
index a8de297..0713980 100644
--- a/korganizer/searchdialog.cpp
+++ b/korganizer/searchdialog.cpp
@@ -468,121 +468,127 @@ void SearchDialog::search(const QRegExp &re)
468 else if (!mMatchedTodos.contains( tod )) 468 else if (!mMatchedTodos.contains( tod ))
469 mMatchedTodos.append(tod); 469 mMatchedTodos.append(tod);
470 continue; 470 continue;
471 } 471 }
472 } 472 }
473 if (mDescriptionCheck->isChecked()) { 473 if (mDescriptionCheck->isChecked()) {
474#if QT_VERSION >= 0x030000 474#if QT_VERSION >= 0x030000
475 if (re.search(tod->description()) != -1) 475 if (re.search(tod->description()) != -1)
476#else 476#else
477 if (re.match(tod->description()) != -1) 477 if (re.match(tod->description()) != -1)
478#endif 478#endif
479 { 479 {
480 if ( mSubItems->isChecked() ) 480 if ( mSubItems->isChecked() )
481 mMatchedTodos.remove(tod); 481 mMatchedTodos.remove(tod);
482 else if (!mMatchedTodos.contains( tod )) 482 else if (!mMatchedTodos.contains( tod ))
483 mMatchedTodos.append(tod); 483 mMatchedTodos.append(tod);
484 continue; 484 continue;
485 } 485 }
486 } 486 }
487 if (mCategoryCheck->isChecked()) { 487 if (mCategoryCheck->isChecked()) {
488#if QT_VERSION >= 0x030000 488#if QT_VERSION >= 0x030000
489 if (re.search(tod->categoriesStr()) != -1) 489 if (re.search(tod->categoriesStr()) != -1)
490#else 490#else
491 if (re.match(tod->categoriesStr()) != -1) 491 if (re.match(tod->categoriesStr()) != -1)
492#endif 492#endif
493 { 493 {
494 if ( mSubItems->isChecked() ) 494 if ( mSubItems->isChecked() )
495 mMatchedTodos.remove(tod); 495 mMatchedTodos.remove(tod);
496 else if (!mMatchedTodos.contains( tod )) 496 else if (!mMatchedTodos.contains( tod ))
497 mMatchedTodos.append(tod); 497 mMatchedTodos.append(tod);
498 continue; 498 continue;
499 } 499 }
500 } 500 }
501 if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) { 501 if ( mSearchAName->isChecked() || mSearchAEmail->isChecked() ) {
502 QPtrList<Attendee> tmpAList = tod->attendees(); 502 QPtrList<Attendee> tmpAList = tod->attendees();
503 Attendee *a; 503 Attendee *a;
504 for (a = tmpAList.first(); a; a = tmpAList.next()) { 504 for (a = tmpAList.first(); a; a = tmpAList.next()) {
505 if (mSearchAName->isChecked()) { 505 if (mSearchAName->isChecked()) {
506#if QT_VERSION >= 0x030000 506#if QT_VERSION >= 0x030000
507 if (re.search(a->name()) != -1) 507 if (re.search(a->name()) != -1)
508#else 508#else
509 if (re.match(a->name()) != -1) 509 if (re.match(a->name()) != -1)
510#endif 510#endif
511 { 511 {
512 if ( mSubItems->isChecked() ) 512 if ( mSubItems->isChecked() )
513 mMatchedTodos.remove(tod); 513 mMatchedTodos.remove(tod);
514 else if (!mMatchedTodos.contains( tod )) 514 else if (!mMatchedTodos.contains( tod ))
515 mMatchedTodos.append(tod); 515 mMatchedTodos.append(tod);
516 break; 516 break;
517 } 517 }
518 } 518 }
519 if (mSearchAEmail->isChecked()) { 519 if (mSearchAEmail->isChecked()) {
520#if QT_VERSION >= 0x030000 520#if QT_VERSION >= 0x030000
521 if (re.search(a->email()) != -1) 521 if (re.search(a->email()) != -1)
522#else 522#else
523 if (re.match(a->email()) != -1) 523 if (re.match(a->email()) != -1)
524#endif 524#endif
525 { 525 {
526 if ( mSubItems->isChecked() ) 526 if ( mSubItems->isChecked() )
527 mMatchedTodos.remove(tod); 527 mMatchedTodos.remove(tod);
528 else if (!mMatchedTodos.contains( tod )) 528 else if (!mMatchedTodos.contains( tod ))
529 mMatchedTodos.append(tod); 529 mMatchedTodos.append(tod);
530 break; 530 break;
531 } 531 }
532 } 532 }
533 } 533 }
534 } 534 }
535 } 535 }
536 } 536 }
537 537
538 QPtrList<Journal> journals = mCalendar->journals( ); 538 QPtrList<Journal> journals = mCalendar->journals( );
539 if ( !mAddItems->isChecked() && !mSubItems->isChecked() ) { 539 if ( !mAddItems->isChecked() && !mSubItems->isChecked() ) {
540 if ( mRefineItems->isChecked() ) journals = mMatchedJournals ; 540 if ( mRefineItems->isChecked() ) journals = mMatchedJournals ;
541 mMatchedJournals.clear(); 541 mMatchedJournals.clear();
542 } 542 }
543 if (mSearchJournal->isChecked() ) { 543 if (mSearchJournal->isChecked() ) {
544 Journal* journ; 544 Journal* journ;
545 545
546 for(journ=journals.first();journ;journ=journals.next()) { 546 for(journ=journals.first();journ;journ=journals.next()) {
547 if ( journ->dtStart().date() <= mEndDate->date() 547 if ( journ->dtStart().date() <= mEndDate->date()
548 &&journ->dtStart().date() >= mStartDate->date()) { 548 &&journ->dtStart().date() >= mStartDate->date()) {
549#if QT_VERSION >= 0x030000 549#if QT_VERSION >= 0x030000
550 if (re.search(journ->description()) != -1) 550 if (re.search(journ->description()) != -1)
551#else 551#else
552 if (re.match(journ->description()) != -1) 552 if (re.match(journ->description()) != -1)
553#endif 553#endif
554 { 554 {
555 if ( mSubItems->isChecked() ) 555 if ( mSubItems->isChecked() )
556 mMatchedJournals.remove(journ); 556 mMatchedJournals.remove(journ);
557 else if (!mMatchedJournals.contains( journ )) 557 else if (!mMatchedJournals.contains( journ ))
558 mMatchedJournals.append(journ); 558 mMatchedJournals.append(journ);
559 continue; 559 continue;
560 } 560 }
561 } 561 }
562 } 562 }
563 } 563 }
564 564 if ( mMatchedEvents.count() + mMatchedJournals.count() + mMatchedTodos.count() < 1 ) {
565 qDebug("count %d ", mMatchedEvents.count() + mMatchedJournals.count() + mMatchedTodos.count() );
566 if ( mRefineItems->isChecked() )
567 mRefineItems->setChecked( false );
568 else if ( mSubItems->isChecked() )
569 mSubItems->setChecked( false );
570 }
565} 571}
566 572
567void SearchDialog::keyPressEvent ( QKeyEvent *e) 573void SearchDialog::keyPressEvent ( QKeyEvent *e)
568{ 574{
569 switch ( e->key() ) { 575 switch ( e->key() ) {
570 case Qt::Key_Escape: 576 case Qt::Key_Escape:
571 close(); 577 close();
572 break; 578 break;
573 case Qt::Key_F: 579 case Qt::Key_F:
574 if ( e->state() == Qt::ControlButton ) { 580 if ( e->state() == Qt::ControlButton ) {
575 581
576 } 582 }
577 break; 583 break;
578 case Qt::Key_Return: 584 case Qt::Key_Return:
579 case Qt::Key_Enter: 585 case Qt::Key_Enter:
580 doSearch(); 586 doSearch();
581 break; 587 break;
582 588
583 default: 589 default:
584 e->ignore(); 590 e->ignore();
585 } 591 }
586} 592}
587 593
588//mMatchedJournals; 594//mMatchedJournals;