• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

knode

  • sources
  • kde-4.12
  • kdepim
  • knode
knrangefilter.cpp
Go to the documentation of this file.
1 /*
2  KNode, the KDE newsreader
3  Copyright (c) 1999-2005 the KNode authors.
4  See file AUTHORS for details
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10  You should have received a copy of the GNU General Public License
11  along with this program; if not, write to the Free Software Foundation,
12  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
13 */
14 
15 #include <QHBoxLayout>
16 #include <QLabel>
17 #include <QCheckBox>
18 #include <QComboBox>
19 
20 #include <knuminput.h>
21 #include <kconfig.h>
22 #include <kconfiggroup.h>
23 
24 #include "knrangefilter.h"
25 
26 using namespace KNode;
27 
28 bool KNode::RangeFilter::doFilter( int a )
29 {
30  bool ret=true;
31  if(enabled) {
32  switch (op1) {
33  case gt:
34  case gtoeq:
35  if (op2 != dis)
36  ret=( matchesOp(val1,op1,a) && matchesOp(a,op2,val2) );
37  else
38  ret = matchesOp(val1,op1,a);
39  break;
40  case eq:
41  case lt:
42  case ltoeq:
43  ret = matchesOp(val1,op1,a);
44  break;
45  default:
46  ret = false;
47  }
48  }
49 
50  return ret;
51 }
52 
53 
54 
55 bool KNode::RangeFilter::matchesOp( int v1, Op o, int v2 )
56 {
57  bool ret=false;
58 
59  switch(o) {
60  case eq: ret=(v1==v2); break;
61  case gt: ret=(v1<v2); break;
62  case gtoeq: ret=(v1<=v2); break;
63  case ltoeq: ret=(v1>=v2); break;
64  case lt: ret=(v1>v2); break;
65  default: ret=false; break;
66  };
67 
68  return ret;
69 }
70 
71 
72 
73 void KNode::RangeFilter::load( const KConfigGroup &group )
74 {
75  enabled=group.readEntry("enabled", false);
76  val1=group.readEntry("val1",0);
77  op1=(Op) group.readEntry("op1",0);
78  val2=group.readEntry("val2",0);
79  op2=(Op) group.readEntry("op2",0);
80 }
81 
82 
83 
84 void KNode::RangeFilter::save( KConfigGroup &group )
85 {
86  group.writeEntry("enabled", enabled);
87  group.writeEntry("val1", val1);
88  group.writeEntry("op1", (int)op1);
89  group.writeEntry("op2", (int)op2);
90  group.writeEntry("val2", val2);
91 }
92 
93 
94 
95 
96 //=====================================================================================
97 
98 KNode::RangeFilterWidget::RangeFilterWidget( const QString& value, int min, int max,
99  QWidget* parent, const QString &unit )
100  : QGroupBox( value, parent )
101 {
102  QHBoxLayout *layout = new QHBoxLayout( this );
103 
104  enabled = new QCheckBox( this );
105  layout->addWidget( enabled );
106 
107  val1 = new KIntSpinBox( min, max, 1, min, this );
108  val1->setSuffix( unit );
109  layout->addWidget( val1 );
110 
111  op1 = new QComboBox( this );
112  op1->addItem("<");
113  op1->addItem("<=");
114  op1->addItem("=");
115  op1->addItem(">=");
116  op1->addItem(">");
117  layout->addWidget( op1 );
118 
119  des = new QLabel( value, this );
120  des->setAlignment( Qt::AlignCenter );
121  layout->addWidget( des );
122 
123  op2 = new QComboBox( this );
124  op2->addItem("");
125  op2->addItem("<");
126  op2->addItem("<=");
127  layout->addWidget( op2 );
128 
129  val2 = new KIntSpinBox( min, max, 1, min, this );
130  val2->setSuffix( unit );
131  layout->addWidget( val2 );
132 
133  connect(op1, SIGNAL(activated(int)), SLOT(slotOp1Changed(int)));
134  connect(op2, SIGNAL(activated(int)), SLOT(slotOp2Changed(int)));
135  connect(enabled, SIGNAL(toggled(bool)), SLOT(slotEnabled(bool)));
136 
137  slotEnabled(false);
138 }
139 
140 
141 
142 KNode::RangeFilterWidget::~RangeFilterWidget()
143 {
144 }
145 
146 
147 
148 RangeFilter KNode::RangeFilterWidget::filter()
149 {
150  RangeFilter r;
151  r.val1=val1->value();
152  r.val2=val2->value();
153 
154  r.op1=(RangeFilter::Op) op1->currentIndex();
155  if (op2->currentText().isEmpty())
156  r.op2 = RangeFilter::dis;
157  else if (op2->currentText()=="<")
158  r.op2 = RangeFilter::gt;
159  else if (op2->currentText()=="<=")
160  r.op2 = RangeFilter::gtoeq;
161 
162  r.enabled=enabled->isChecked();
163 
164  return r;
165 }
166 
167 
168 
169 void KNode::RangeFilterWidget::setFilter( RangeFilter &f )
170 {
171  val1->setValue(f.val1);
172  val2->setValue(f.val2);
173 
174  op1->setCurrentIndex((int)f.op1);
175  if ( f.op2 == RangeFilter::dis )
176  op2->setCurrentIndex(0);
177  else if ( f.op2 == RangeFilter::gt )
178  op2->setCurrentIndex(1);
179  else if ( f.op2 == RangeFilter::gtoeq )
180  op2->setCurrentIndex(2);
181 
182  enabled->setChecked(f.enabled);
183 }
184 
185 
186 
187 void KNode::RangeFilterWidget::clear()
188 {
189  val1->setValue(val1->minimum());
190  val2->setValue(val2->minimum());
191  enabled->setChecked(false);
192 }
193 
194 
195 
196 void KNode::RangeFilterWidget::slotOp1Changed( int id )
197 {
198  bool state = op1->isEnabled() && id < 2;
199  op2->setEnabled(state);
200  des->setEnabled(state);
201  slotOp2Changed(op2->currentIndex());
202 }
203 
204 
205 
206 void KNode::RangeFilterWidget::slotOp2Changed( int id )
207 {
208  val2->setEnabled(op1->isEnabled() && (op1->currentIndex()<2) && (id>0));
209 }
210 
211 
212 
213 void KNode::RangeFilterWidget::slotEnabled( bool e )
214 {
215  op1->setEnabled(e);
216  val1->setEnabled(e);
217  des->setEnabled(e);
218  slotOp1Changed(op1->currentIndex());
219 }
220 
221 // -----------------------------------------------------------------------------
222 
223 #include "knrangefilter.moc"
KNode::RangeFilterWidget::clear
void clear()
Definition: knrangefilter.cpp:187
KNode::RangeFilter::load
void load(const KConfigGroup &conf)
Definition: knrangefilter.cpp:73
KNode::RangeFilter::val2
int val2
Definition: knrangefilter.h:53
KNode::RangeFilter::enabled
bool enabled
Definition: knrangefilter.h:55
KNode::RangeFilter
Filter for interger ranges.
Definition: knrangefilter.h:30
KNode::RangeFilter::op2
Op op2
Definition: knrangefilter.h:54
QWidget
KNode::RangeFilter::dis
Definition: knrangefilter.h:50
KNode::RangeFilter::op1
Op op1
Definition: knrangefilter.h:54
KNode::RangeFilter::gtoeq
Definition: knrangefilter.h:50
KNode::RangeFilterWidget::filter
RangeFilter filter()
Definition: knrangefilter.cpp:148
KNode::RangeFilter::doFilter
bool doFilter(int a)
Definition: knrangefilter.cpp:28
KNode::RangeFilterWidget::op1
QComboBox * op1
Definition: knrangefilter.h:88
KNode::RangeFilterWidget::val1
KIntSpinBox * val1
Definition: knrangefilter.h:87
KNode::RangeFilterWidget::RangeFilterWidget
RangeFilterWidget(const QString &value, int min, int max, QWidget *parent, const QString &unit=QString())
Creates a new RangeFilter configuration widet.
Definition: knrangefilter.cpp:98
KNode::RangeFilterWidget::setFilter
void setFilter(RangeFilter &f)
Definition: knrangefilter.cpp:169
KNode::RangeFilter::val1
int val1
Definition: knrangefilter.h:53
KNode::RangeFilterWidget::slotOp1Changed
void slotOp1Changed(int id)
Definition: knrangefilter.cpp:196
QComboBox
KNode::RangeFilter::Op
Op
Definition: knrangefilter.h:50
KNode::RangeFilter::save
void save(KConfigGroup &conf)
Definition: knrangefilter.cpp:84
KNode::RangeFilterWidget::slotEnabled
void slotEnabled(bool e)
Definition: knrangefilter.cpp:213
QGroupBox
KNode::RangeFilter::gt
Definition: knrangefilter.h:50
KNode::RangeFilterWidget::slotOp2Changed
void slotOp2Changed(int id)
Definition: knrangefilter.cpp:206
KNode::RangeFilterWidget::enabled
QCheckBox * enabled
Definition: knrangefilter.h:85
knrangefilter.h
KNode::RangeFilterWidget::~RangeFilterWidget
~RangeFilterWidget()
Definition: knrangefilter.cpp:142
QLabel
KNode::RangeFilterWidget::des
QLabel * des
Definition: knrangefilter.h:86
KNode::RangeFilterWidget::val2
KIntSpinBox * val2
Definition: knrangefilter.h:87
KNode::RangeFilterWidget::op2
QComboBox * op2
Definition: knrangefilter.h:88
KNode::RangeFilter::matchesOp
bool matchesOp(int v1, Op o, int v2)
Definition: knrangefilter.cpp:55
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:36 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

knode

Skip menu "knode"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal