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
@@ -19,9 +19,14 @@ An 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
diff --git a/kaddressbook/filter.cpp b/kaddressbook/filter.cpp
index 39d2ae4..9cb4c2d 100644
--- a/kaddressbook/filter.cpp
+++ b/kaddressbook/filter.cpp
@@ -27,19 +27,22 @@
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{
@@ -78,8 +81,25 @@ void Filter::apply( KABC::Addressee::List &addresseeList )
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
@@ -119,16 +139,18 @@ void Filter::save( KConfig *config )
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{
diff --git a/kaddressbook/filter.h b/kaddressbook/filter.h
index cf2c0a1..26870d7 100644
--- a/kaddressbook/filter.h
+++ b/kaddressbook/filter.h
@@ -37,9 +37,12 @@
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
@@ -142,8 +145,9 @@ class Filter
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;
diff --git a/kaddressbook/filtereditdialog.cpp b/kaddressbook/filtereditdialog.cpp
index 063585a..987f234 100644
--- a/kaddressbook/filtereditdialog.cpp
+++ b/kaddressbook/filtereditdialog.cpp
@@ -33,8 +33,9 @@ $Id$
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>
@@ -89,8 +90,14 @@ void FilterEditDialog::setFilter( const Filter &filter )
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{
@@ -113,8 +120,14 @@ Filter FilterEditDialog::filter()
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()
@@ -142,25 +155,26 @@ void FilterEditDialog::initGUI()
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{
diff --git a/kaddressbook/filtereditdialog.h b/kaddressbook/filtereditdialog.h
index 4dd75e4..5a8bad1 100644
--- a/kaddressbook/filtereditdialog.h
+++ b/kaddressbook/filtereditdialog.h
@@ -35,14 +35,16 @@ class 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
@@ -95,9 +97,12 @@ class FilterEditDialog : public KDialogBase
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