summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-04-04 12:59:35 (UTC)
committer zautrix <zautrix>2005-04-04 12:59:35 (UTC)
commit919f1060a9ef41e6c865f28132cf9e82c3f67409 (patch) (unidiff)
tree8e7c1283071ff2af2897ccf1c7e51e8b2b2bfadc
parent23db4aa99cb7a5feb540b6be578efaee8ec6ef80 (diff)
downloadkdepimpi-919f1060a9ef41e6c865f28132cf9e82c3f67409.zip
kdepimpi-919f1060a9ef41e6c865f28132cf9e82c3f67409.tar.gz
kdepimpi-919f1060a9ef41e6c865f28132cf9e82c3f67409.tar.bz2
kapi filter fixes
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--kaddressbook/filter.cpp24
-rw-r--r--kaddressbook/filter.h1
2 files changed, 18 insertions, 7 deletions
diff --git a/kaddressbook/filter.cpp b/kaddressbook/filter.cpp
index 7a869fa..12ab1e3 100644
--- a/kaddressbook/filter.cpp
+++ b/kaddressbook/filter.cpp
@@ -28,32 +28,35 @@
28#include "kabprefs.h" 28#include "kabprefs.h"
29 29
30#include "filter.h" 30#include "filter.h"
31#include <secrecy.h> 31#include <secrecy.h>
32 32
33Filter::Filter() 33Filter::Filter()
34 : mName( QString::null ), mMatchRule( Matching ), mEnabled( true ), 34 : mName( QString::null ), mMatchRule( NotMatching ), mEnabled( true ),
35 mInternal( false ) 35 mInternal( false )
36{ 36{
37 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ; 37 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
38 noName = true;
38} 39}
39 40
40Filter::Filter( const QString &name ) 41Filter::Filter( const QString &name )
41 : mName( name ), mMatchRule( Matching ), mEnabled( true ), 42 : mName( name ), mMatchRule( NotMatching ), mEnabled( true ),
42 mInternal( false ) 43 mInternal( false )
43{ 44{
44 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ; 45 mCriteria = ShowPublic | ShowPrivate| ShowConfidential ;
46 noName = false;
45} 47}
46 48
47Filter::~Filter() 49Filter::~Filter()
48{ 50{
49} 51}
50 52
51void Filter::setName( const QString &name ) 53void Filter::setName( const QString &name )
52{ 54{
53 mName = name; 55 mName = name;
56 noName = false;
54} 57}
55 58
56const QString &Filter::name() const 59const QString &Filter::name() const
57{ 60{
58 return mName; 61 return mName;
59} 62}
@@ -61,13 +64,15 @@ const QString &Filter::name() const
61bool Filter::isInternal() const 64bool Filter::isInternal() const
62{ 65{
63 return mInternal; 66 return mInternal;
64} 67}
65 68
66void Filter::apply( KABC::Addressee::List &addresseeList ) 69void Filter::apply( KABC::Addressee::List &addresseeList )
67{ 70{
71 if ( noName )
72 return;
68 KABC::Addressee::List::Iterator iter; 73 KABC::Addressee::List::Iterator iter;
69 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ) { 74 for ( iter = addresseeList.begin(); iter != addresseeList.end(); ) {
70 if ( filterAddressee( *iter ) ) 75 if ( filterAddressee( *iter ) )
71 ++iter; 76 ++iter;
72 else 77 else
73 { 78 {
@@ -79,12 +84,16 @@ void Filter::apply( KABC::Addressee::List &addresseeList )
79 } 84 }
80 } 85 }
81} 86}
82 87
83bool Filter::filterAddressee( const KABC::Addressee &a ) 88bool Filter::filterAddressee( const KABC::Addressee &a )
84{ 89{
90
91 if ( noName )
92 return true;
93 //qDebug("Filter::filterAddressee %s",mName.latin1() );
85 switch ( a.secrecy().type()) { 94 switch ( a.secrecy().type()) {
86 case KABC::Secrecy::Public: 95 case KABC::Secrecy::Public:
87 if (! (mCriteria & ShowPublic )) 96 if (! (mCriteria & ShowPublic ))
88 return false; 97 return false;
89 break; 98 break;
90 case KABC::Secrecy::Private: 99 case KABC::Secrecy::Private:
@@ -98,16 +107,15 @@ bool Filter::filterAddressee( const KABC::Addressee &a )
98 default: 107 default:
99 return false; 108 return false;
100 break; 109 break;
101 } 110 }
102 QStringList::Iterator iter; 111 QStringList::Iterator iter;
103 iter = mCategoryList.begin(); 112 iter = mCategoryList.begin();
104 // empty filter always matches
105 113
106 if ( iter == mCategoryList.end() ) 114 if ( iter == mCategoryList.end() )
107 return true; 115 return ( !(mMatchRule == Matching) );
108 116
109 for ( ; iter != mCategoryList.end(); ++iter ) { 117 for ( ; iter != mCategoryList.end(); ++iter ) {
110 if ( a.hasCategory( *iter ) ) 118 if ( a.hasCategory( *iter ) )
111 return ( mMatchRule == Matching ); 119 return ( mMatchRule == Matching );
112 } 120 }
113 121
@@ -141,13 +149,14 @@ void Filter::save( KConfig *config )
141 config->writeEntry( "Categories", mCategoryList ); 149 config->writeEntry( "Categories", mCategoryList );
142 config->writeEntry( "MatchRule", (int)mMatchRule ); 150 config->writeEntry( "MatchRule", (int)mMatchRule );
143 config->writeEntry( "Criteria", (int)mCriteria ); 151 config->writeEntry( "Criteria", (int)mCriteria );
144} 152}
145 153
146void Filter::restore( KConfig *config ) 154void Filter::restore( KConfig *config )
147{ 155{
156 noName = false;
148 mName = config->readEntry( "Name", "<internal error>" ); 157 mName = config->readEntry( "Name", "<internal error>" );
149 mEnabled = config->readBoolEntry( "Enabled", true ); 158 mEnabled = config->readBoolEntry( "Enabled", true );
150 mCategoryList = config->readListEntry( "Categories" ); 159 mCategoryList = config->readListEntry( "Categories" );
151 mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching ); 160 mMatchRule = (MatchRule)config->readNumEntry( "MatchRule", Matching );
152 mCriteria = config->readNumEntry( "Criteria", (ShowPublic | ShowPrivate| ShowConfidential ) ); 161 mCriteria = config->readNumEntry( "Criteria", (ShowPublic | ShowPrivate| ShowConfidential ) );
153} 162}
@@ -202,13 +211,14 @@ Filter::List Filter::restore( KConfig *config, QString baseGroup )
202 list.append( f ); 211 list.append( f );
203 } 212 }
204 213
205 if ( list.isEmpty()) { 214 if ( list.isEmpty()) {
206 QStringList cats = KABPrefs::instance()->mCustomCategories; 215 QStringList cats = KABPrefs::instance()->mCustomCategories;
207 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) { 216 for ( QStringList::Iterator it = cats.begin(); it != cats.end(); ++it ) {
208 Filter filter; 217 Filter filter;
218 filter.noName = false;
209 filter.mName = *it; 219 filter.mName = *it;
210 filter.mEnabled = true; 220 filter.mEnabled = true;
211 filter.mCategoryList = *it; 221 filter.mCategoryList = *it;
212 filter.mMatchRule = Matching; 222 filter.mMatchRule = Matching;
213 filter.mInternal = true; 223 filter.mInternal = true;
214 list.append( filter ); 224 list.append( filter );
diff --git a/kaddressbook/filter.h b/kaddressbook/filter.h
index 93f1352..f4ae123 100644
--- a/kaddressbook/filter.h
+++ b/kaddressbook/filter.h
@@ -143,12 +143,13 @@ class Filter
143 143
144 /** @return The current match rule. 144 /** @return The current match rule.
145 */ 145 */
146 MatchRule matchRule() const; 146 MatchRule matchRule() const;
147 147
148 private: 148 private:
149 bool noName;
149 int mCriteria; 150 int mCriteria;
150 QString mName; 151 QString mName;
151 QStringList mCategoryList; 152 QStringList mCategoryList;
152 MatchRule mMatchRule; 153 MatchRule mMatchRule;
153 bool mEnabled; 154 bool mEnabled;
154 bool mInternal; 155 bool mInternal;