summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--bin/kdepim/WhatsNew.txt5
-rw-r--r--kaddressbook/filter.cpp22
-rw-r--r--kaddressbook/filter.h6
-rw-r--r--kaddressbook/filtereditdialog.cpp40
-rw-r--r--kaddressbook/filtereditdialog.h7
5 files changed, 65 insertions, 15 deletions
diff --git a/bin/kdepim/WhatsNew.txt b/bin/kdepim/WhatsNew.txt
index 5d8ef41..d8f8323 100644
--- a/bin/kdepim/WhatsNew.txt
+++ b/bin/kdepim/WhatsNew.txt
@@ -1,119 +1,124 @@
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 1.9.18 ************ 3********** VERSION 1.9.18 ************
4 4
5FYI: The VERSION 1.9.17 was a testing release only. 5FYI: The VERSION 1.9.17 was a testing release only.
6Please read the changelog of VERSION 1.9.17 as well. 6Please read the changelog of VERSION 1.9.17 as well.
7 7
8Cleaned up the syncing config dialog. 8Cleaned up the syncing config dialog.
9Added sync config options for date range for events. 9Added sync config options for date range for events.
10Added sync config options for filters on incoming data. 10Added sync config options for filters on incoming data.
11Added sync config options for filters on outgoing data. 11Added sync config options for filters on outgoing data.
12Please read the updated SyncHowTo about the new filter settings. 12Please read the updated SyncHowTo about the new filter settings.
13These filter settings make it now possible to sync with shared 13These filter settings make it now possible to sync with shared
14calendars without writing back private or confidential data 14calendars without writing back private or confidential data
15(via the outgoing filters). 15(via the outgoing filters).
16To sync only with particular parts of a shared calendar, 16To sync only with particular parts of a shared calendar,
17the incoming filter settings can be used. 17the incoming filter settings can be used.
18An example can be found in the SyncHowTo. 18An example can be found in the SyncHowTo.
19 19
20KO/Pi: 20KO/Pi:
21The timeedit input has a pulldown list for times. 21The timeedit input has a pulldown list for times.
22If opened, this pulldown list should now has the right time highlighted. 22If opened, this pulldown list should now has the right time highlighted.
23Added the possibility to exclude events/todos/journals in a filter.
24You should exclude journals, if you do not want them to sync with a public calendar.
23 25
26KA/Pi:
27Added the possibility to in/exclude public/private/confidential contacts to a filter.
28If you have already defined filterrules in KA/Pi you have to adjust them all by setting the "include public/private/confidential" property manually. Sorry for that ...
24 29
25 30
26********** VERSION 1.9.17 ************ 31********** VERSION 1.9.17 ************
27 32
28KO/Pi: 33KO/Pi:
29Fixed that tooltips were not updated after moving an item in agenda view. 34Fixed that tooltips were not updated after moving an item in agenda view.
30Fixed a bug in sorting start date for recurring events in list view. 35Fixed a bug in sorting start date for recurring events in list view.
31Changed the left button in todo viewer from "Agenda" to "Set completed". 36Changed the left button in todo viewer from "Agenda" to "Set completed".
32This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View. 37This makes it possible to change a todo in the What's Next View quickly to the completed state without leaving the What's Next View.
33Added more info in the todo viewer: Startdate, parent/sub todos. 38Added more info in the todo viewer: Startdate, parent/sub todos.
34 39
35 40
36KA/Pi: 41KA/Pi:
37All fields search does now actually search all the (possible) fields, 42All fields search does now actually search all the (possible) fields,
38not only those listed in the contact list. 43not only those listed in the contact list.
39Made is possible to inline a picture in a vcard on the Z. 44Made is possible to inline a picture in a vcard on the Z.
40This was only possible on the desktop, now is it possible on the Z as well. 45This was only possible on the desktop, now is it possible on the Z as well.
41Fixed of missing save settings after filter configuration. 46Fixed of missing save settings after filter configuration.
42Made saving of addressbook much faster. 47Made saving of addressbook much faster.
43Fixed extension widget layout problem. 48Fixed extension widget layout problem.
44Fixed saving of default formatted name settings. 49Fixed saving of default formatted name settings.
45Fixed formatted name handling in edit dialog. 50Fixed formatted name handling in edit dialog.
46Added an option for changing formatted names of many contacts 51Added an option for changing formatted names of many contacts
47(menu: File - Change - Set formatted name). 52(menu: File - Change - Set formatted name).
48 53
49QWhatsThis was not working on the Z ( only black rectangle was shown). 54QWhatsThis was not working on the Z ( only black rectangle was shown).
50This is Fixed. 55This is Fixed.
51 56
52KDE-Sync: 57KDE-Sync:
53Now readonly KDE resources are synced as well. 58Now readonly KDE resources are synced as well.
54(They are not changed in KDE itself, of course). 59(They are not changed in KDE itself, of course).
55 60
56 61
57 62
58********** VERSION 1.9.16 ************ 63********** VERSION 1.9.16 ************
59 64
60KO/Pi: 65KO/Pi:
61Fixed search dialog size on Z 6000 (480x640 display). 66Fixed search dialog size on Z 6000 (480x640 display).
62Added setting to hide/show time in agenda items. 67Added setting to hide/show time in agenda items.
63Added setting to hide not running todos in todo view. 68Added setting to hide not running todos in todo view.
64Added columns for start date/time in todo view. 69Added columns for start date/time in todo view.
65Replaced the solid half-hour lines in agenda view by dot lines. 70Replaced the solid half-hour lines in agenda view by dot lines.
66Added possibility of printing the What's Next View on the desktop 71Added possibility of printing the What's Next View on the desktop
67(i.e. Windows and Linux). 72(i.e. Windows and Linux).
68Fixed a crash in KO/Pi when starting KO/Pi with What's Next view. 73Fixed a crash in KO/Pi when starting KO/Pi with What's Next view.
69Added tooltips in month view.(Tooltips only available on desktop) 74Added tooltips in month view.(Tooltips only available on desktop)
70 75
71Fixed a strange problem in KO/Pi alarm applet. 76Fixed a strange problem in KO/Pi alarm applet.
72Did not find the actual problem, 77Did not find the actual problem,
73such that now Qtopia reboots again if deinstalling the alarm applet. 78such that now Qtopia reboots again if deinstalling the alarm applet.
74But the alarm applet should work again. 79But the alarm applet should work again.
75 80
76KA/Pi: 81KA/Pi:
77Fixed the problem, that internal pictures were not saved. 82Fixed the problem, that internal pictures were not saved.
78 83
79Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes. 84Fixed a problem in the pi-sync mode by increasing the timeout for data transfer from 20 seconds to 5 minutes.
80 85
81Fixed some minor problems. (Like word wrap in help text windows). 86Fixed some minor problems. (Like word wrap in help text windows).
82 87
83Fixed a compiling problem in microkde/kresources. 88Fixed a compiling problem in microkde/kresources.
84 89
85KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM. 90KO/Pi is using zdbat (renamed to db2file) for syncing with Sharp DTM.
86This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9) 91This version now includes zdbat 1.0.0 (old version was zdbat 0.2.9)
87such that now syncing KO/Pi with Sharp DTM should work on the 92such that now syncing KO/Pi with Sharp DTM should work on the
88Zaurus C 3000 model. 93Zaurus C 3000 model.
89 94
90********** VERSION 1.9.15 ************ 95********** VERSION 1.9.15 ************
91 96
92Usebilty enhancements in KO/Pi: 97Usebilty enhancements in KO/Pi:
93When clicking on the date in a month view cell, the day view is shown. 98When clicking on the date in a month view cell, the day view is shown.
94Old behaviour was, that the "new event" dialog popped up. 99Old behaviour was, that the "new event" dialog popped up.
95 100
96Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu). 101Added a one step "undo delete" in KO/Pi (Accessable in the "Action" menu).
97That means, you can restore the latest 102That means, you can restore the latest
98event/todo/journal you have deleted. 103event/todo/journal you have deleted.
99A journal is deleted, if you clear all the text of the journal. 104A journal is deleted, if you clear all the text of the journal.
100 105
101Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14. 106Fixed the bug of the editor dialogs in KO/Pi of version 1.9.14.
102 107
103KA/Pi starting in 480x640 resolution: 108KA/Pi starting in 480x640 resolution:
104Hide the filter action in toolbar 109Hide the filter action in toolbar
105and added icons for undo/delete/redo in toolbar. 110and added icons for undo/delete/redo in toolbar.
106 111
107Change in OM/Pi ViewMail dialog: 112Change in OM/Pi ViewMail dialog:
108When clicking on the "delete" icon the mail is deleted after confirmation as usual. 113When clicking on the "delete" icon the mail is deleted after confirmation as usual.
109But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any). 114But the edit dialog is not closed as before, now the next mail in the folder is shown automatically (if there is any).
110 115
111Fixed a crash when deleting mail-accounts in OM/Pi. 116Fixed a crash when deleting mail-accounts in OM/Pi.
112 117
113 118
114********** VERSION 1.9.14 ************ 119********** VERSION 1.9.14 ************
115 120
116Fixed some problems with the dialog sizes when switching 121Fixed some problems with the dialog sizes when switching
117portrait/landscape mode on 640x480 PDA display. 122portrait/landscape mode on 640x480 PDA display.
118 123
119Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi. 124Fixed some other small bugs in KA/Pi KO/Pi and OM/Pi and PwM/Pi.
diff --git a/kaddressbook/filter.cpp b/kaddressbook/filter.cpp
index 39d2ae4..9cb4c2d 100644
--- a/kaddressbook/filter.cpp
+++ b/kaddressbook/filter.cpp
@@ -1,206 +1,228 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#include <kconfig.h> 24#include <kconfig.h>
25#include <kconfigbase.h> 25#include <kconfigbase.h>
26#include <kdebug.h> 26#include <kdebug.h>
27 27
28#include "kabprefs.h" 28#include "kabprefs.h"
29 29
30#include "filter.h" 30#include "filter.h"
31#include <secrecy.h>
31 32
32Filter::Filter() 33Filter::Filter()
33 : mName( QString::null ), mMatchRule( Matching ), mEnabled( true ), 34 : mName( QString::null ), mMatchRule( Matching ), mEnabled( true ),
34 mInternal( false ) 35 mInternal( false )
35{ 36{
37 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
36} 38}
37 39
38Filter::Filter( const QString &name ) 40Filter::Filter( const QString &name )
39 : mName( name ), mMatchRule( Matching ), mEnabled( true ), 41 : mName( name ), mMatchRule( Matching ), mEnabled( true ),
40 mInternal( false ) 42 mInternal( false )
41{ 43{
44 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
42} 45}
43 46
44Filter::~Filter() 47Filter::~Filter()
45{ 48{
46} 49}
47 50
48void Filter::setName( const QString &name ) 51void Filter::setName( const QString &name )
49{ 52{
50 mName = name; 53 mName = name;
51} 54}
52 55
53const QString &Filter::name() const 56const QString &Filter::name() const
54{ 57{
55 return mName; 58 return mName;
56} 59}
57 60
58bool Filter::isInternal() const 61bool Filter::isInternal() const
59{ 62{
60 return mInternal; 63 return mInternal;
61} 64}
62 65
63void Filter::apply( KABC::Addressee::List &addresseeList ) 66void Filter::apply( KABC::Addressee::List &addresseeList )
64{ 67{
65 KABC::Addressee::List::Iterator iter; 68 KABC::Addressee::List::Iterator iter;
66 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ) { 69 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ) {
67 if ( filterAddressee( *iter ) ) 70 if ( filterAddressee( *iter ) )
68 ++iter; 71 ++iter;
69 else 72 else
70 { 73 {
71#ifndef KAB_EMBEDDED 74#ifndef KAB_EMBEDDED
72 iter = addresseeList.erase( iter ); 75 iter = addresseeList.erase( iter );
73#else //KAB_EMBEDDED 76#else //KAB_EMBEDDED
74 iter = addresseeList.remove( iter ); 77 iter = addresseeList.remove( iter );
75#endif //KAB_EMBEDDED 78#endif //KAB_EMBEDDED
76 } 79 }
77 } 80 }
78} 81}
79 82
80bool Filter::filterAddressee( const KABC::Addressee &a ) 83bool Filter::filterAddressee( const KABC::Addressee &a )
81{ 84{
85 switch ( a.secrecy().type()) {
86 case KABC::Secrecy::Public:
87 if (! (mCriteria & ShowPublic ))
88 return false;
89 break;
90 case KABC::Secrecy::Private:
91 if (! (mCriteria & ShowPrivate ))
92 return false;
93 break;
94 case KABC::Secrecy::Confidential:
95 if (! (mCriteria & ShowConfidential ))
96 return false;
97 break;
98 default:
99 return false;
100 break;
101 }
82 QStringList::Iterator iter; 102 QStringList::Iterator iter;
83 iter = mCategoryList.begin(); 103 iter = mCategoryList.begin();
84 // empty filter always matches 104 // empty filter always matches
85 105
86 if ( iter == mCategoryList.end() ) 106 if ( iter == mCategoryList.end() )
87 return true; 107 return true;
88 108
89 for ( ; iter != mCategoryList.end(); ++iter ) { 109 for ( ; iter != mCategoryList.end(); ++iter ) {
90 if ( a.hasCategory( *iter ) ) 110 if ( a.hasCategory( *iter ) )
91 return ( mMatchRule == Matching ); 111 return ( mMatchRule == Matching );
92 } 112 }
93 113
94 return !( mMatchRule == Matching ); 114 return !( mMatchRule == Matching );
95} 115}
96 116
97void Filter::setEnabled( bool on ) 117void Filter::setEnabled( bool on )
98{ 118{
99 mEnabled = on; 119 mEnabled = on;
100} 120}
101 121
102bool Filter::isEnabled() const 122bool Filter::isEnabled() const
103{ 123{
104 return mEnabled; 124 return mEnabled;
105} 125}
106 126
107void Filter::setCategories( const QStringList &list ) 127void Filter::setCategories( const QStringList &list )
108{ 128{
109 mCategoryList = list; 129 mCategoryList = list;
110} 130}
111 131
112const QStringList &Filter::categories() const 132const QStringList &Filter::categories() const
113{ 133{
114 return mCategoryList; 134 return mCategoryList;
115} 135}
116 136
117void Filter::save( KConfig *config ) 137void Filter::save( KConfig *config )
118{ 138{
119 config->writeEntry( "Name", mName ); 139 config->writeEntry( "Name", mName );
120 config->writeEntry( "Enabled", mEnabled ); 140 config->writeEntry( "Enabled", mEnabled );
121 config->writeEntry( "Categories", mCategoryList ); 141 config->writeEntry( "Categories", mCategoryList );
122 config->writeEntry( "MatchRule", (int)mMatchRule ); 142 config->writeEntry( "MatchRule", (int)mMatchRule );
143 config->writeEntry( "Criteria", (int)mCriteria );
123} 144}
124 145
125void Filter::restore( KConfig *config ) 146void Filter::restore( KConfig *config )
126{ 147{
127 mName = config->readEntry( "Name", "<internal error>" ); 148 mName = config->readEntry( "Name", "<internal error>" );
128 mEnabled = config->readBoolEntry( "Enabled", true ); 149 mEnabled = config->readBoolEntry( "Enabled", true );
129 mCategoryList = config->readListEntry( "Categories" ); 150 mCategoryList = config->readListEntry( "Categories" );
130 mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching ); 151 mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching );
152 mCriteria = config->readNumEntry( "Criteria", (ShowPublic | ShowPrivate| ShowConfidential) );
131} 153}
132 154
133void Filter::save( KConfig *config, QString baseGroup, Filter::List &list ) 155void Filter::save( KConfig *config, QString baseGroup, Filter::List &list )
134{ 156{
135 { 157 {
136 KConfigGroupSaver s( config, baseGroup ); 158 KConfigGroupSaver s( config, baseGroup );
137 159
138 // remove the old filters 160 // remove the old filters
139 uint count = config->readNumEntry( "Count" ); 161 uint count = config->readNumEntry( "Count" );
140 /* // memory access violation here 162 /* // memory access violation here
141 for ( uint i = 0; i < count; ++i ) 163 for ( uint i = 0; i < count; ++i )
142 config->deleteGroup( QString( "%1_%2" ).arg( baseGroup ).arg( i ) ); 164 config->deleteGroup( QString( "%1_%2" ).arg( baseGroup ).arg( i ) );
143 */ 165 */
144 } 166 }
145 167
146 int index = 0; 168 int index = 0;
147 Filter::List::Iterator iter; 169 Filter::List::Iterator iter;
148 for ( iter = list.begin(); iter != list.end(); ++iter ) { 170 for ( iter = list.begin(); iter != list.end(); ++iter ) {
149 if ( !(*iter).mInternal ) { 171 if ( !(*iter).mInternal ) {
150 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( index ) ); 172 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( index ) );
151 173
152 (*iter).save( config ); 174 (*iter).save( config );
153 index++; 175 index++;
154 } 176 }
155 } 177 }
156 178
157 KConfigGroupSaver s( config, baseGroup ); 179 KConfigGroupSaver s( config, baseGroup );
158 180
159 config->writeEntry( "Count", index ); 181 config->writeEntry( "Count", index );
160 182
161} 183}
162 184
163Filter::List Filter::restore( KConfig *config, QString baseGroup ) 185Filter::List Filter::restore( KConfig *config, QString baseGroup )
164{ 186{
165 Filter::List list; 187 Filter::List list;
166 int count = 0; 188 int count = 0;
167 Filter f; 189 Filter f;
168 190
169 { 191 {
170 KConfigGroupSaver s( config, baseGroup ); 192 KConfigGroupSaver s( config, baseGroup );
171 count = config->readNumEntry( "Count", 0 ); 193 count = config->readNumEntry( "Count", 0 );
172 } 194 }
173 195
174 for ( int i = 0; i < count; i++ ) { 196 for ( int i = 0; i < count; i++ ) {
175 { 197 {
176 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( i ) ); 198 KConfigGroupSaver s( config, QString( "%1_%2" ).arg( baseGroup ).arg( i ) );
177 f.restore( config ); 199 f.restore( config );
178 } 200 }
179 201
180 list.append( f ); 202 list.append( f );
181 } 203 }
182 204
183 if ( list.isEmpty()) { 205 if ( list.isEmpty()) {
184 QStringList cats = KABPrefs::instance()->mCustomCategories; 206 QStringList cats = KABPrefs::instance()->mCustomCategories;
185 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { 207 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
186 Filter filter; 208 Filter filter;
187 filter.mName = *it; 209 filter.mName = *it;
188 filter.mEnabled = true; 210 filter.mEnabled = true;
189 filter.mCategoryList = *it; 211 filter.mCategoryList = *it;
190 filter.mMatchRule = Matching; 212 filter.mMatchRule = Matching;
191 filter.mInternal = true; 213 filter.mInternal = true;
192 list.append( filter ); 214 list.append( filter );
193 } 215 }
194 } 216 }
195 return list; 217 return list;
196} 218}
197 219
198void Filter::setMatchRule( MatchRule rule ) 220void Filter::setMatchRule( MatchRule rule )
199{ 221{
200 mMatchRule = rule; 222 mMatchRule = rule;
201} 223}
202 224
203Filter::MatchRule Filter::matchRule() const 225Filter::MatchRule Filter::matchRule() const
204{ 226{
205 return mMatchRule; 227 return mMatchRule;
206} 228}
diff --git a/kaddressbook/filter.h b/kaddressbook/filter.h
index cf2c0a1..26870d7 100644
--- a/kaddressbook/filter.h
+++ b/kaddressbook/filter.h
@@ -1,153 +1,157 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24#ifndef FILTER_H 24#ifndef FILTER_H
25#define FILTER_H 25#define FILTER_H
26 26
27#include <qstring.h> 27#include <qstring.h>
28#include <qstringlist.h> 28#include <qstringlist.h>
29#include <qvaluelist.h> 29#include <qvaluelist.h>
30 30
31#include <kabc/addressee.h> 31#include <kabc/addressee.h>
32#include <kconfig.h> 32#include <kconfig.h>
33 33
34/** 34/**
35 Filter for AddressBook related objects (Addressees) 35 Filter for AddressBook related objects (Addressees)
36 36
37 @todo This class should be switched to use shared data. 37 @todo This class should be switched to use shared data.
38 */ 38 */
39class Filter 39class Filter
40{ 40{
41 public: 41 public:
42 enum { ShowPublic = 1, ShowPrivate = 2, ShowConfidential = 4};
43 void setCriteria(int c) { mCriteria = c ;}
44 int criteria() const { return mCriteria;}
42 typedef QValueList<Filter> List; 45 typedef QValueList<Filter> List;
43 46
44 enum MatchRule { Matching = 0, NotMatching = 1 }; 47 enum MatchRule { Matching = 0, NotMatching = 1 };
45 48
46 Filter(); 49 Filter();
47 Filter( const QString& name ); 50 Filter( const QString& name );
48 ~Filter(); 51 ~Filter();
49 52
50 /** 53 /**
51 Set the name of the filter. 54 Set the name of the filter.
52 */ 55 */
53 void setName( const QString &name ); 56 void setName( const QString &name );
54 57
55 /** 58 /**
56 @return The name of the filter. 59 @return The name of the filter.
57 */ 60 */
58 const QString &name() const; 61 const QString &name() const;
59 62
60 /** 63 /**
61 @return Whether the filter is an internal one. 64 @return Whether the filter is an internal one.
62 */ 65 */
63 bool isInternal() const; 66 bool isInternal() const;
64 67
65 /** 68 /**
66 Apply the filter to the addressee list. All addressees not passing 69 Apply the filter to the addressee list. All addressees not passing
67 the filter criterias will be removed from the list. 70 the filter criterias will be removed from the list.
68 71
69 If the MatchRule is NotMatch, then all the addressees matching the 72 If the MatchRule is NotMatch, then all the addressees matching the
70 filter will be removed from the list. 73 filter will be removed from the list.
71 */ 74 */
72 void apply( KABC::Addressee::List &addresseeList ); 75 void apply( KABC::Addressee::List &addresseeList );
73 76
74 /** 77 /**
75 Apply the filter to the addressee. 78 Apply the filter to the addressee.
76 79
77 @return True if the addressee passes the criteria, false otherwise. 80 @return True if the addressee passes the criteria, false otherwise.
78 The return values are opposite if the MatchRule is NotMatch. 81 The return values are opposite if the MatchRule is NotMatch.
79 */ 82 */
80 bool filterAddressee( const KABC::Addressee &a ); 83 bool filterAddressee( const KABC::Addressee &a );
81 84
82 /** 85 /**
83 Enable or disable the filter 86 Enable or disable the filter
84 */ 87 */
85 void setEnabled( bool on ); 88 void setEnabled( bool on );
86 89
87 /** 90 /**
88 @return True if this filter is enabled, false otherwise. 91 @return True if this filter is enabled, false otherwise.
89 */ 92 */
90 bool isEnabled() const; 93 bool isEnabled() const;
91 94
92 /** 95 /**
93 Set the list of categories. This list is used to filter addressees. 96 Set the list of categories. This list is used to filter addressees.
94 */ 97 */
95 void setCategories( const QStringList &list ); 98 void setCategories( const QStringList &list );
96 99
97 /** 100 /**
98 @return The list of categories. 101 @return The list of categories.
99 */ 102 */
100 const QStringList &categories() const; 103 const QStringList &categories() const;
101 104
102 /** 105 /**
103 Saves the filter to the config file. The group should already be set. 106 Saves the filter to the config file. The group should already be set.
104 */ 107 */
105 void save( KConfig *config ); 108 void save( KConfig *config );
106 109
107 /** 110 /**
108 Loads the filter from the config file. The group should already be set. 111 Loads the filter from the config file. The group should already be set.
109 */ 112 */
110 void restore( KConfig *config ); 113 void restore( KConfig *config );
111 114
112 /** 115 /**
113 Saves a list of filters to the config file. 116 Saves a list of filters to the config file.
114 117
115 @param config The config file to use 118 @param config The config file to use
116 @param baseGroup The base groupname to use. The number of filters 119 @param baseGroup The base groupname to use. The number of filters
117 will be written to this group, then a _1, _2, etc 120 will be written to this group, then a _1, _2, etc
118 will be append for each filter saved. 121 will be append for each filter saved.
119 @param list The list of filters to be saved. 122 @param list The list of filters to be saved.
120 */ 123 */
121 static void save( KConfig *config, QString baseGroup, Filter::List &list ); 124 static void save( KConfig *config, QString baseGroup, Filter::List &list );
122 125
123 /** 126 /**
124 Restores a list of filters from a config file. 127 Restores a list of filters from a config file.
125 128
126 @param config The config file to read from. 129 @param config The config file to read from.
127 @param baseGroup The base group name to be used to find the filters 130 @param baseGroup The base group name to be used to find the filters
128 131
129 @return The list of filters. 132 @return The list of filters.
130 */ 133 */
131 static Filter::List restore( KConfig *config, QString baseGroup ); 134 static Filter::List restore( KConfig *config, QString baseGroup );
132 135
133 /** 136 /**
134 Sets the filter rule. If the rule is Filter::Matching (default), 137 Sets the filter rule. If the rule is Filter::Matching (default),
135 then the filter will return true on items that match the filter. 138 then the filter will return true on items that match the filter.
136 If the rule is Filter::NotMatching, then the filter will return 139 If the rule is Filter::NotMatching, then the filter will return
137 true on items that do not match the filter. 140 true on items that do not match the filter.
138 */ 141 */
139 void setMatchRule( MatchRule rule ); 142 void setMatchRule( MatchRule rule );
140 143
141 /** @return The current match rule. 144 /** @return The current match rule.
142 */ 145 */
143 MatchRule matchRule() const; 146 MatchRule matchRule() const;
144 147
145 private: 148 private:
149 int mCriteria;
146 QString mName; 150 QString mName;
147 QStringList mCategoryList; 151 QStringList mCategoryList;
148 MatchRule mMatchRule; 152 MatchRule mMatchRule;
149 bool mEnabled; 153 bool mEnabled;
150 bool mInternal; 154 bool mInternal;
151}; 155};
152 156
153#endif 157#endif
diff --git a/kaddressbook/filtereditdialog.cpp b/kaddressbook/filtereditdialog.cpp
index 063585a..987f234 100644
--- a/kaddressbook/filtereditdialog.cpp
+++ b/kaddressbook/filtereditdialog.cpp
@@ -1,258 +1,272 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#include <qbuttongroup.h> 31#include <qbuttongroup.h>
32#include <qhbox.h> 32#include <qhbox.h>
33#include <qlabel.h> 33#include <qlabel.h>
34#include <qlayout.h> 34#include <qlayout.h>
35#include <qpushbutton.h> 35#include <qpushbutton.h>
36#include <qradiobutton.h> 36#include <qradiobutton.h>
37#include <qcheckbox.h>
37#include <qregexp.h> 38#include <qregexp.h>
38#include <qstring.h> 39#include <qstring.h>
39#include <qtoolbutton.h> 40#include <qtoolbutton.h>
40#include <qtooltip.h> 41#include <qtooltip.h>
41#include <qwidget.h> 42#include <qwidget.h>
42 43
43#include <kapplication.h> 44#include <kapplication.h>
44#include <kbuttonbox.h> 45#include <kbuttonbox.h>
45#include <kdebug.h> 46#include <kdebug.h>
46#include <kiconloader.h> 47#include <kiconloader.h>
47#include <klineedit.h> 48#include <klineedit.h>
48#include <klistbox.h> 49#include <klistbox.h>
49#include <klistview.h> 50#include <klistview.h>
50#include <klocale.h> 51#include <klocale.h>
51#include <kglobal.h> 52#include <kglobal.h>
52 53
53#include "kabprefs.h" 54#include "kabprefs.h"
54#include "filtereditdialog.h" 55#include "filtereditdialog.h"
55 56
56FilterEditDialog::FilterEditDialog( QWidget *parent, const char *name ) 57FilterEditDialog::FilterEditDialog( QWidget *parent, const char *name )
57 : KDialogBase( Plain, i18n( "Edit Address Book Filter" ), 58 : KDialogBase( Plain, i18n( "Edit Address Book Filter" ),
58 Help | Ok | Cancel, Ok, parent, name, /*US false*/ true, true ) 59 Help | Ok | Cancel, Ok, parent, name, /*US false*/ true, true )
59{ 60{
60 initGUI(); 61 initGUI();
61 62
62 QStringList cats = KABPrefs::instance()->mCustomCategories; 63 QStringList cats = KABPrefs::instance()->mCustomCategories;
63 64
64 QStringList::Iterator iter; 65 QStringList::Iterator iter;
65 for ( iter = cats.begin(); iter != cats.end(); ++iter ) 66 for ( iter = cats.begin(); iter != cats.end(); ++iter )
66 mCategoriesView->insertItem( new QCheckListItem( mCategoriesView, (*iter), QCheckListItem::CheckBox ) ); 67 mCategoriesView->insertItem( new QCheckListItem( mCategoriesView, (*iter), QCheckListItem::CheckBox ) );
67 filterNameTextChanged( mNameEdit->text() ); 68 filterNameTextChanged( mNameEdit->text() );
68} 69}
69 70
70FilterEditDialog::~FilterEditDialog() 71FilterEditDialog::~FilterEditDialog()
71{ 72{
72} 73}
73 74
74void FilterEditDialog::setFilter( const Filter &filter ) 75void FilterEditDialog::setFilter( const Filter &filter )
75{ 76{
76 mNameEdit->setText( filter.name() ); 77 mNameEdit->setText( filter.name() );
77 78
78 QStringList categories = filter.categories(); 79 QStringList categories = filter.categories();
79 QListViewItem *item = mCategoriesView->firstChild(); 80 QListViewItem *item = mCategoriesView->firstChild();
80 while ( item != 0 ) { 81 while ( item != 0 ) {
81 if ( categories.contains( item->text( 0 ) ) ) { 82 if ( categories.contains( item->text( 0 ) ) ) {
82 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item ); 83 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item );
83 checkItem->setOn( true ); 84 checkItem->setOn( true );
84 } 85 }
85 86
86 item = item->nextSibling(); 87 item = item->nextSibling();
87 } 88 }
88 89
89 if ( filter.matchRule() == Filter::Matching ) 90 if ( filter.matchRule() == Filter::Matching )
90 mMatchRuleGroup->setButton( 0 ); 91 mMatchRuleGroup->setButton( 0 );
91 else 92 else
92 mMatchRuleGroup->setButton( 1 ); 93 mMatchRuleGroup->setButton( 1 );
94
95 int c = filter.criteria() ;
96 mPublic->setChecked(c &Filter::ShowPublic);
97 mPrivate->setChecked(c & Filter::ShowPrivate);
98 mConfidential->setChecked(c & Filter::ShowConfidential);
99
93} 100}
94 101
95Filter FilterEditDialog::filter() 102Filter FilterEditDialog::filter()
96{ 103{
97 Filter filter; 104 Filter filter;
98 105
99 filter.setName( mNameEdit->text() ); 106 filter.setName( mNameEdit->text() );
100 107
101 QStringList categories; 108 QStringList categories;
102 QListViewItem *item = mCategoriesView->firstChild(); 109 QListViewItem *item = mCategoriesView->firstChild();
103 while ( item != 0 ) { 110 while ( item != 0 ) {
104 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item ); 111 QCheckListItem *checkItem = static_cast<QCheckListItem*>( item );
105 if ( checkItem->isOn() ) 112 if ( checkItem->isOn() )
106 categories.append( item->text( 0 ) ); 113 categories.append( item->text( 0 ) );
107 114
108 item = item->nextSibling(); 115 item = item->nextSibling();
109 } 116 }
110 filter.setCategories( categories ); 117 filter.setCategories( categories );
111 118
112 if ( mMatchRuleGroup->find( 0 )->isOn() ) 119 if ( mMatchRuleGroup->find( 0 )->isOn() )
113 filter.setMatchRule( Filter::Matching ); 120 filter.setMatchRule( Filter::Matching );
114 else 121 else
115 filter.setMatchRule( Filter::NotMatching ); 122 filter.setMatchRule( Filter::NotMatching );
116 123
124 int c = 0;
125 if (mPublic->isChecked()) c |= Filter::ShowPublic;
126 if (mPrivate->isChecked()) c |= Filter::ShowPrivate;
127 if (mConfidential->isChecked()) c |= Filter::ShowConfidential;
128 filter.setCriteria( c ) ;
129
117 return filter; 130 return filter;
118} 131}
119 132
120void FilterEditDialog::initGUI() 133void FilterEditDialog::initGUI()
121{ 134{
122#ifndef KAB_EMBEDDED 135#ifndef KAB_EMBEDDED
123 resize( 490, 300 ); 136 resize( 490, 300 );
124#else //KAB_EMBEDDED 137#else //KAB_EMBEDDED
125 resize( KMIN(KGlobal::getDesktopWidth()-10, 490), KMIN(KGlobal::getDesktopHeight()-50, 300)); 138 resize( KMIN(KGlobal::getDesktopWidth()-10, 490), KMIN(KGlobal::getDesktopHeight()-50, 300));
126#endif //KAB_EMBEDDED 139#endif //KAB_EMBEDDED
127 140
128 141
129 QWidget *page = plainPage(); 142 QWidget *page = plainPage();
130 QLabel *label; 143 QLabel *label;
131 144
132 QGridLayout *topLayout = new QGridLayout( page, 3, 2, 0, spacingHint() ); 145 QGridLayout *topLayout = new QGridLayout( page, 3, 2, 0, spacingHint() );
133 146
134 label = new QLabel( i18n( "Name" ), page ); 147 label = new QLabel( i18n( "Name" ), page );
135 mNameEdit = new KLineEdit( page ); 148 mNameEdit = new KLineEdit( page );
136 mNameEdit->setFocus(); 149 mNameEdit->setFocus();
137 topLayout->addWidget( label, 0, 0 ); 150 topLayout->addWidget( label, 0, 0 );
138 topLayout->addWidget( mNameEdit, 0, 1 ); 151 topLayout->addWidget( mNameEdit, 0, 1 );
139 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ), 152 connect( mNameEdit, SIGNAL( textChanged( const QString& ) ),
140 SLOT( filterNameTextChanged( const QString&) ) ); 153 SLOT( filterNameTextChanged( const QString&) ) );
141 154
142 mCategoriesView = new KListView( page ); 155 mCategoriesView = new KListView( page );
143 mCategoriesView->addColumn( i18n( "Categories" ) ); 156 mCategoriesView->addColumn( i18n( "Categories" ) );
144 topLayout->addMultiCellWidget( mCategoriesView, 1, 1, 0, 1 ); 157 topLayout->addMultiCellWidget( mCategoriesView, 1, 1, 0, 1 );
145 158
146 mMatchRuleGroup = new QButtonGroup( page ); 159 mMatchRuleGroup = new QHButtonGroup( i18n( "Category rule" ), page );
147 mMatchRuleGroup->setExclusive( true ); 160 mMatchRuleGroup->setExclusive( true );
148 161 QRadioButton *radio = new QRadioButton( i18n( "Include categories" ), mMatchRuleGroup );
149 QBoxLayout *gbLayout = new QVBoxLayout( mMatchRuleGroup );
150 gbLayout->setSpacing( KDialog::spacingHint() );
151 gbLayout->setMargin( KDialog::marginHint() );
152
153 QRadioButton *radio = new QRadioButton( i18n( "Show only contacts matching\n the selected categories" ), mMatchRuleGroup );
154 radio->setChecked( true ); 162 radio->setChecked( true );
155 mMatchRuleGroup->insert( radio ); 163 //mMatchRuleGroup->insert( radio );
156 gbLayout->addWidget( radio ); 164 radio = new QRadioButton( i18n( "Exclude categories" ), mMatchRuleGroup );
165 //mMatchRuleGroup->insert( radio );
166 topLayout->addMultiCellWidget( mMatchRuleGroup, 2, 2, 0, 1 );
157 167
158 radio = new QRadioButton( i18n( "Show all contacts except those\n matching the selected categories" ), mMatchRuleGroup ); 168 QHButtonGroup * mMatchPPCGroup = new QHButtonGroup(i18n( "Include contacts, that are:" ), page );
159 mMatchRuleGroup->insert( radio ); 169 mPublic = new QCheckBox( i18n( "public" ), mMatchPPCGroup );
160 gbLayout->addWidget( radio ); 170 mPrivate = new QCheckBox( i18n( "private" ), mMatchPPCGroup );
171 mConfidential = new QCheckBox( i18n( "confidential" ), mMatchPPCGroup );
172 mPublic->setChecked( true );
173 mPrivate->setChecked( true );
174 mConfidential->setChecked( true );
175 topLayout->addMultiCellWidget( mMatchPPCGroup, 3, 3, 0, 1 );
161 176
162 topLayout->addMultiCellWidget( mMatchRuleGroup, 2, 2, 0, 1 );
163} 177}
164 178
165void FilterEditDialog::filterNameTextChanged( const QString &text ) 179void FilterEditDialog::filterNameTextChanged( const QString &text )
166{ 180{
167 enableButtonOK( !text.isEmpty() ); 181 enableButtonOK( !text.isEmpty() );
168} 182}
169 183
170void FilterEditDialog::slotHelp() 184void FilterEditDialog::slotHelp()
171{ 185{
172#ifndef KAB_EMBEDDED 186#ifndef KAB_EMBEDDED
173 kapp->invokeHelp( "using-filters" ); 187 kapp->invokeHelp( "using-filters" );
174#endif //KAB_EMBEDDED 188#endif //KAB_EMBEDDED
175} 189}
176 190
177FilterDialog::FilterDialog( QWidget *parent, const char *name ) 191FilterDialog::FilterDialog( QWidget *parent, const char *name )
178 : KDialogBase( Plain, i18n( "Edit Address Book Filters" ), 192 : KDialogBase( Plain, i18n( "Edit Address Book Filters" ),
179 Ok | Cancel, Ok, parent, name, /*US false*/true, true ) 193 Ok | Cancel, Ok, parent, name, /*US false*/true, true )
180{ 194{
181 initGUI(); 195 initGUI();
182} 196}
183 197
184FilterDialog::~FilterDialog() 198FilterDialog::~FilterDialog()
185{ 199{
186} 200}
187 201
188void FilterDialog::setFilters( const Filter::List &list ) 202void FilterDialog::setFilters( const Filter::List &list )
189{ 203{
190 mFilterList.clear(); 204 mFilterList.clear();
191 mInternalFilterList.clear(); 205 mInternalFilterList.clear();
192 206
193 Filter::List::ConstIterator it; 207 Filter::List::ConstIterator it;
194 for ( it = list.begin(); it != list.end(); ++it ) { 208 for ( it = list.begin(); it != list.end(); ++it ) {
195 if ( (*it).isInternal() ) 209 if ( (*it).isInternal() )
196 mInternalFilterList.append( *it ); 210 mInternalFilterList.append( *it );
197 else 211 else
198 mFilterList.append( *it ); 212 mFilterList.append( *it );
199 } 213 }
200 214
201 refresh(); 215 refresh();
202} 216}
203 217
204Filter::List FilterDialog::filters() const 218Filter::List FilterDialog::filters() const
205{ 219{
206 Filter::List list = mFilterList + mInternalFilterList; 220 Filter::List list = mFilterList + mInternalFilterList;
207 return list; 221 return list;
208} 222}
209 223
210void FilterDialog::add() 224void FilterDialog::add()
211{ 225{
212#ifndef KAB_EMBEDDED 226#ifndef KAB_EMBEDDED
213 FilterEditDialog dlg( this ); 227 FilterEditDialog dlg( this );
214#else //KAB_EMBEDDED 228#else //KAB_EMBEDDED
215 FilterEditDialog dlg( this->parentWidget() ); 229 FilterEditDialog dlg( this->parentWidget() );
216#endif //KAB_EMBEDDED 230#endif //KAB_EMBEDDED
217 231
218 if ( dlg.exec() ) 232 if ( dlg.exec() )
219 mFilterList.append( dlg.filter() ); 233 mFilterList.append( dlg.filter() );
220 234
221 refresh(); 235 refresh();
222 236
223 mFilterListBox->setCurrentItem( mFilterListBox->count() - 1 ); 237 mFilterListBox->setCurrentItem( mFilterListBox->count() - 1 );
224} 238}
225 239
226void FilterDialog::edit() 240void FilterDialog::edit()
227{ 241{
228 FilterEditDialog dlg( this ); 242 FilterEditDialog dlg( this );
229 243
230 uint pos = mFilterListBox->currentItem(); 244 uint pos = mFilterListBox->currentItem();
231 245
232 dlg.setFilter( mFilterList[ pos ] ); 246 dlg.setFilter( mFilterList[ pos ] );
233 247
234 if ( dlg.exec() ) { 248 if ( dlg.exec() ) {
235 mFilterList.remove( mFilterList.at( pos ) ); 249 mFilterList.remove( mFilterList.at( pos ) );
236 mFilterList.insert( mFilterList.at( pos ), dlg.filter() ); 250 mFilterList.insert( mFilterList.at( pos ), dlg.filter() );
237 } 251 }
238 252
239 refresh(); 253 refresh();
240 254
241 mFilterListBox->setCurrentItem( pos ); 255 mFilterListBox->setCurrentItem( pos );
242} 256}
243 257
244void FilterDialog::remove() 258void FilterDialog::remove()
245{ 259{
246 mFilterList.remove( mFilterList.at( mFilterListBox->currentItem() ) ); 260 mFilterList.remove( mFilterList.at( mFilterListBox->currentItem() ) );
247 261
248 selectionChanged( 0 ); 262 selectionChanged( 0 );
249 263
250 refresh(); 264 refresh();
251} 265}
252 266
253void FilterDialog::refresh() 267void FilterDialog::refresh()
254{ 268{
255 mFilterListBox->clear(); 269 mFilterListBox->clear();
256 270
257 Filter::List::Iterator iter; 271 Filter::List::Iterator iter;
258 for ( iter = mFilterList.begin(); iter != mFilterList.end(); ++iter ) 272 for ( iter = mFilterList.begin(); iter != mFilterList.end(); ++iter )
diff --git a/kaddressbook/filtereditdialog.h b/kaddressbook/filtereditdialog.h
index 4dd75e4..5a8bad1 100644
--- a/kaddressbook/filtereditdialog.h
+++ b/kaddressbook/filtereditdialog.h
@@ -1,104 +1,109 @@
1/* 1/*
2 This file is part of KAddressBook. 2 This file is part of KAddressBook.
3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com> 3 Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
4 4
5 This program is free software; you can redistribute it and/or modify 5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by 6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or 7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version. 8 (at your option) any later version.
9 9
10 This program is distributed in the hope that it will be useful, 10 This program 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 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details. 13 GNU General Public License for more details.
14 14
15 You should have received a copy of the GNU General Public License 15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software 16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 18
19 As a special exception, permission is given to link this program 19 As a special exception, permission is given to link this program
20 with any edition of Qt, and distribute the resulting executable, 20 with any edition of Qt, and distribute the resulting executable,
21 without including the source code for Qt in the source distribution. 21 without including the source code for Qt in the source distribution.
22*/ 22*/
23 23
24/* 24/*
25Enhanced Version of the file for platform independent KDE tools. 25Enhanced Version of the file for platform independent KDE tools.
26Copyright (c) 2004 Ulf Schenk 26Copyright (c) 2004 Ulf Schenk
27 27
28$Id$ 28$Id$
29*/ 29*/
30 30
31#ifndef FILTEREDITDIALOG_H 31#ifndef FILTEREDITDIALOG_H
32#define FILTEREDITDIALOG_H 32#define FILTEREDITDIALOG_H
33 33
34class QButtonGroup; 34class QButtonGroup;
35class QString; 35class QString;
36class QToolButton; 36class QToolButton;
37class QWidget; 37class QWidget;
38class QListBoxItem; 38class QListBoxItem;
39class QCheckBox;
39 40
40class KLineEdit; 41class KLineEdit;
41class KListBox; 42class KListBox;
42class KListView; 43class KListView;
43 44
44#include <kdialogbase.h> 45#include <kdialogbase.h>
46#include <qhbuttongroup.h>
45 47
46#include "filter.h" 48#include "filter.h"
47 49
48class FilterDialog : public KDialogBase 50class FilterDialog : public KDialogBase
49{ 51{
50 Q_OBJECT 52 Q_OBJECT
51 53
52 public: 54 public:
53 FilterDialog( QWidget *parent, const char *name = 0 ); 55 FilterDialog( QWidget *parent, const char *name = 0 );
54 ~FilterDialog(); 56 ~FilterDialog();
55 57
56 void setFilters( const Filter::List &list ); 58 void setFilters( const Filter::List &list );
57 Filter::List filters() const; 59 Filter::List filters() const;
58 60
59 protected slots: 61 protected slots:
60 void add(); 62 void add();
61 void edit(); 63 void edit();
62 void remove(); 64 void remove();
63 void selectionChanged( QListBoxItem* ); 65 void selectionChanged( QListBoxItem* );
64 66
65 private: 67 private:
66 void initGUI(); 68 void initGUI();
67 void refresh(); 69 void refresh();
68 70
69 Filter::List mFilterList; 71 Filter::List mFilterList;
70 Filter::List mInternalFilterList; 72 Filter::List mInternalFilterList;
71 73
72 KListBox *mFilterListBox; 74 KListBox *mFilterListBox;
73 QPushButton *mAddButton; 75 QPushButton *mAddButton;
74 QPushButton *mEditButton; 76 QPushButton *mEditButton;
75 QPushButton *mRemoveButton; 77 QPushButton *mRemoveButton;
76}; 78};
77 79
78class FilterEditDialog : public KDialogBase 80class FilterEditDialog : public KDialogBase
79{ 81{
80 Q_OBJECT 82 Q_OBJECT
81 public: 83 public:
82 FilterEditDialog( QWidget *parent, const char *name = 0 ); 84 FilterEditDialog( QWidget *parent, const char *name = 0 );
83 ~FilterEditDialog(); 85 ~FilterEditDialog();
84 86
85 void setFilter( const Filter &filter ); 87 void setFilter( const Filter &filter );
86 Filter filter(); 88 Filter filter();
87 89
88 protected slots: 90 protected slots:
89 void filterNameTextChanged( const QString& ); 91 void filterNameTextChanged( const QString& );
90 void slotHelp(); 92 void slotHelp();
91 93
92 private: 94 private:
93 void initGUI(); 95 void initGUI();
94 96
95 Filter mFilter; 97 Filter mFilter;
96 98
97 KLineEdit *mNameEdit; 99 KLineEdit *mNameEdit;
98 KListView *mCategoriesView; 100 KListView *mCategoriesView;
99 QButtonGroup *mMatchRuleGroup; 101 QHButtonGroup *mMatchRuleGroup;
102 QCheckBox *mPrivate;
103 QCheckBox *mPublic;
104 QCheckBox *mConfidential;
100 QPushButton *mEditButton; 105 QPushButton *mEditButton;
101 QPushButton *mRemoveButton; 106 QPushButton *mRemoveButton;
102}; 107};
103 108
104#endif 109#endif