summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-16 14:10:42 (UTC)
committer zautrix <zautrix>2005-01-16 14:10:42 (UTC)
commitde5f08d69c716f85cc92f20700cd24fb1ad41295 (patch) (side-by-side diff)
tree0a4f5dbbdb4fc24215ab85fa4b5e073d0e8104ef
parent3f61f5a339e9c0c67c17b16214abded0d123f246 (diff)
downloadkdepimpi-de5f08d69c716f85cc92f20700cd24fb1ad41295.zip
kdepimpi-de5f08d69c716f85cc92f20700cd24fb1ad41295.tar.gz
kdepimpi-de5f08d69c716f85cc92f20700cd24fb1ad41295.tar.bz2
added AB filter settings
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.
KO/Pi:
The timeedit input has a pulldown list for times.
If opened, this pulldown list should now has the right time highlighted.
+Added the possibility to exclude events/todos/journals in a filter.
+You should exclude journals, if you do not want them to sync with a public calendar.
+KA/Pi:
+Added the possibility to in/exclude public/private/confidential contacts to a filter.
+If 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 ...
********** VERSION 1.9.17 ************
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 @@
#include "kabprefs.h"
#include "filter.h"
+#include <secrecy.h>
Filter::Filter()
: mName( QString::null ), mMatchRule( Matching ), mEnabled( true ),
mInternal( false )
{
+ mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
}
Filter::Filter( const QString &name )
: mName( name ), mMatchRule( Matching ), mEnabled( true ),
mInternal( false )
{
+ mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
}
Filter::~Filter()
{
@@ -78,8 +81,25 @@ void Filter::apply( KABC::Addressee::List &addresseeList )
}
bool Filter::filterAddressee( const KABC::Addressee &a )
{
+ switch ( a.secrecy().type()) {
+ case KABC::Secrecy::Public:
+ if (! (mCriteria & ShowPublic ))
+ return false;
+ break;
+ case KABC::Secrecy::Private:
+ if (! (mCriteria & ShowPrivate ))
+ return false;
+ break;
+ case KABC::Secrecy::Confidential:
+ if (! (mCriteria & ShowConfidential ))
+ return false;
+ break;
+ default:
+ return false;
+ break;
+ }
QStringList::Iterator iter;
iter = mCategoryList.begin();
// empty filter always matches
@@ -119,16 +139,18 @@ void Filter::save( KConfig *config )
config->writeEntry( "Name", mName );
config->writeEntry( "Enabled", mEnabled );
config->writeEntry( "Categories", mCategoryList );
config->writeEntry( "MatchRule", (int)mMatchRule );
+ config->writeEntry( "Criteria", (int)mCriteria );
}
void Filter::restore( KConfig *config )
{
mName = config->readEntry( "Name", "<internal error>" );
mEnabled = config->readBoolEntry( "Enabled", true );
mCategoryList = config->readListEntry( "Categories" );
mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching );
+ mCriteria = config->readNumEntry( "Criteria", (ShowPublic | ShowPrivate| ShowConfidential) );
}
void Filter::save( KConfig *config, QString baseGroup, Filter::List &list )
{
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 @@
@todo This class should be switched to use shared data.
*/
class Filter
{
- public:
+ public:
+ enum { ShowPublic = 1, ShowPrivate = 2, ShowConfidential = 4};
+ void setCriteria(int c) { mCriteria = c ;}
+ int criteria() const { return mCriteria;}
typedef QValueList<Filter> List;
enum MatchRule { Matching = 0, NotMatching = 1 };
@@ -142,8 +145,9 @@ class Filter
*/
MatchRule matchRule() const;
private:
+ int mCriteria;
QString mName;
QStringList mCategoryList;
MatchRule mMatchRule;
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$
#include <qlabel.h>
#include <qlayout.h>
#include <qpushbutton.h>
#include <qradiobutton.h>
+#include <qcheckbox.h>
#include <qregexp.h>
#include <qstring.h>
#include <qtoolbutton.h>
#include <qtooltip.h>
@@ -89,8 +90,14 @@ void FilterEditDialog::setFilter( const Filter &filter )
if ( filter.matchRule() == Filter::Matching )
mMatchRuleGroup->setButton( 0 );
else
mMatchRuleGroup->setButton( 1 );
+
+ int c = filter.criteria() ;
+ mPublic->setChecked(c &Filter::ShowPublic);
+ mPrivate->setChecked(c & Filter::ShowPrivate);
+ mConfidential->setChecked(c & Filter::ShowConfidential);
+
}
Filter FilterEditDialog::filter()
{
@@ -113,8 +120,14 @@ Filter FilterEditDialog::filter()
filter.setMatchRule( Filter::Matching );
else
filter.setMatchRule( Filter::NotMatching );
+ int c = 0;
+ if (mPublic->isChecked()) c |= Filter::ShowPublic;
+ if (mPrivate->isChecked()) c |= Filter::ShowPrivate;
+ if (mConfidential->isChecked()) c |= Filter::ShowConfidential;
+ filter.setCriteria( c ) ;
+
return filter;
}
void FilterEditDialog::initGUI()
@@ -142,25 +155,26 @@ void FilterEditDialog::initGUI()
mCategoriesView = new KListView( page );
mCategoriesView->addColumn( i18n( "Categories" ) );
topLayout->addMultiCellWidget( mCategoriesView, 1, 1, 0, 1 );
- mMatchRuleGroup = new QButtonGroup( page );
+ mMatchRuleGroup = new QHButtonGroup( i18n( "Category rule" ), page );
mMatchRuleGroup->setExclusive( true );
-
- QBoxLayout *gbLayout = new QVBoxLayout( mMatchRuleGroup );
- gbLayout->setSpacing( KDialog::spacingHint() );
- gbLayout->setMargin( KDialog::marginHint() );
-
- QRadioButton *radio = new QRadioButton( i18n( "Show only contacts matching\n the selected categories" ), mMatchRuleGroup );
+ QRadioButton *radio = new QRadioButton( i18n( "Include categories" ), mMatchRuleGroup );
radio->setChecked( true );
- mMatchRuleGroup->insert( radio );
- gbLayout->addWidget( radio );
+ //mMatchRuleGroup->insert( radio );
+ radio = new QRadioButton( i18n( "Exclude categories" ), mMatchRuleGroup );
+ //mMatchRuleGroup->insert( radio );
+ topLayout->addMultiCellWidget( mMatchRuleGroup, 2, 2, 0, 1 );
- radio = new QRadioButton( i18n( "Show all contacts except those\n matching the selected categories" ), mMatchRuleGroup );
- mMatchRuleGroup->insert( radio );
- gbLayout->addWidget( radio );
+ QHButtonGroup * mMatchPPCGroup = new QHButtonGroup(i18n( "Include contacts, that are:" ), page );
+ mPublic = new QCheckBox( i18n( "public" ), mMatchPPCGroup );
+ mPrivate = new QCheckBox( i18n( "private" ), mMatchPPCGroup );
+ mConfidential = new QCheckBox( i18n( "confidential" ), mMatchPPCGroup );
+ mPublic->setChecked( true );
+ mPrivate->setChecked( true );
+ mConfidential->setChecked( true );
+ topLayout->addMultiCellWidget( mMatchPPCGroup, 3, 3, 0, 1 );
- topLayout->addMultiCellWidget( mMatchRuleGroup, 2, 2, 0, 1 );
}
void FilterEditDialog::filterNameTextChanged( const QString &text )
{
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;
class QString;
class QToolButton;
class QWidget;
class QListBoxItem;
+class QCheckBox;
class KLineEdit;
class KListBox;
class KListView;
#include <kdialogbase.h>
+#include <qhbuttongroup.h>
#include "filter.h"
class FilterDialog : public KDialogBase
@@ -95,9 +97,12 @@ class FilterEditDialog : public KDialogBase
Filter mFilter;
KLineEdit *mNameEdit;
KListView *mCategoriesView;
- QButtonGroup *mMatchRuleGroup;
+ QHButtonGroup *mMatchRuleGroup;
+ QCheckBox *mPrivate;
+ QCheckBox *mPublic;
+ QCheckBox *mConfidential;
QPushButton *mEditButton;
QPushButton *mRemoveButton;
};