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

knode

knrangefilter.cpp

Go to the documentation of this file.
00001 /*
00002     KNode, the KDE newsreader
00003     Copyright (c) 1999-2005 the KNode authors.
00004     See file AUTHORS for details
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010     You should have received a copy of the GNU General Public License
00011     along with this program; if not, write to the Free Software Foundation,
00012     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
00013 */
00014 
00015 #include <QHBoxLayout>
00016 #include <QLabel>
00017 #include <QCheckBox>
00018 #include <QComboBox>
00019 
00020 #include <knuminput.h>
00021 #include <kconfig.h>
00022 #include <kconfiggroup.h>
00023 
00024 #include "knrangefilter.h"
00025 
00026 using namespace KNode;
00027 
00028 bool KNode::RangeFilter::doFilter( int a )
00029 {
00030   bool ret=true;
00031   if(enabled) {
00032     switch (op1) {
00033       case gt:
00034       case gtoeq:
00035           if (op2 != dis)
00036             ret=( matchesOp(val1,op1,a) && matchesOp(a,op2,val2) );
00037           else
00038             ret = matchesOp(val1,op1,a);
00039           break;
00040       case eq:
00041       case lt:
00042       case ltoeq:
00043           ret = matchesOp(val1,op1,a);
00044           break;
00045       default:
00046           ret = false;
00047     }
00048   }
00049 
00050   return ret;
00051 }
00052 
00053 
00054 
00055 bool KNode::RangeFilter::matchesOp( int v1, Op o, int v2 )
00056 {
00057   bool ret=false;
00058 
00059   switch(o) {
00060     case eq:      ret=(v1==v2);   break;
00061     case gt:      ret=(v1<v2);    break;
00062     case gtoeq:   ret=(v1<=v2);   break;
00063     case ltoeq:   ret=(v1>=v2);   break;
00064     case lt:      ret=(v1>v2);    break;
00065     default:      ret=false;      break;
00066   };
00067 
00068   return ret;
00069 }
00070 
00071 
00072 
00073 void KNode::RangeFilter::load( const KConfigGroup &group )
00074 {
00075   enabled=group.readEntry("enabled", false);
00076   val1=group.readEntry("val1",0);
00077   op1=(Op) group.readEntry("op1",0);
00078   val2=group.readEntry("val2",0);
00079   op2=(Op) group.readEntry("op2",0);
00080 }
00081 
00082 
00083 
00084 void KNode::RangeFilter::save( KConfigGroup &group )
00085 {
00086   group.writeEntry("enabled", enabled);
00087   group.writeEntry("val1", val1);
00088   group.writeEntry("op1", (int)op1);
00089   group.writeEntry("op2", (int)op2);
00090   group.writeEntry("val2", val2);
00091 }
00092 
00093 
00094 
00095 
00096 //=====================================================================================
00097 
00098 KNode::RangeFilterWidget::RangeFilterWidget( const QString& value, int min, int max,
00099                                              QWidget* parent, const QString &unit )
00100   : QGroupBox( value, parent )
00101 {
00102   QHBoxLayout *layout = new QHBoxLayout( this );
00103 
00104   enabled = new QCheckBox( this );
00105   layout->addWidget( enabled );
00106 
00107   val1 = new KIntSpinBox( min, max, 1, min, this );
00108   val1->setSuffix( unit );
00109   layout->addWidget( val1 );
00110 
00111   op1 = new QComboBox( this );
00112   op1->addItem("<");
00113   op1->addItem("<=");
00114   op1->addItem("=");
00115   op1->addItem(">=");
00116   op1->addItem(">");
00117   layout->addWidget( op1 );
00118 
00119   des = new QLabel( value, this );
00120   des->setAlignment( Qt::AlignCenter );
00121   layout->addWidget( des );
00122 
00123   op2 = new QComboBox( this );
00124   op2->addItem("");
00125   op2->addItem("<");
00126   op2->addItem("<=");
00127   layout->addWidget( op2 );
00128 
00129   val2 = new KIntSpinBox( min, max, 1, min, this );
00130   val2->setSuffix( unit );
00131   layout->addWidget( val2 );
00132 
00133   connect(op1, SIGNAL(activated(int)), SLOT(slotOp1Changed(int)));
00134   connect(op2, SIGNAL(activated(int)), SLOT(slotOp2Changed(int)));
00135   connect(enabled, SIGNAL(toggled(bool)), SLOT(slotEnabled(bool)));
00136 
00137   slotEnabled(false);
00138 }
00139 
00140 
00141 
00142 KNode::RangeFilterWidget::~RangeFilterWidget()
00143 {
00144 }
00145 
00146 
00147 
00148 RangeFilter KNode::RangeFilterWidget::filter()
00149 {
00150   RangeFilter r;
00151   r.val1=val1->value();
00152   r.val2=val2->value();
00153 
00154   r.op1=(RangeFilter::Op) op1->currentIndex();
00155   if (op2->currentText().isEmpty())
00156     r.op2 = RangeFilter::dis;
00157   else if (op2->currentText()=="<")
00158     r.op2 = RangeFilter::gt;
00159   else if (op2->currentText()=="<=")
00160     r.op2 = RangeFilter::gtoeq;
00161 
00162   r.enabled=enabled->isChecked();
00163 
00164   return r;
00165 }
00166 
00167 
00168 
00169 void KNode::RangeFilterWidget::setFilter( RangeFilter &f )
00170 {
00171   val1->setValue(f.val1);
00172   val2->setValue(f.val2);
00173 
00174   op1->setCurrentIndex((int)f.op1);
00175   if ( f.op2 == RangeFilter::dis )
00176     op2->setCurrentIndex(0);
00177   else if ( f.op2 == RangeFilter::gt )
00178     op2->setCurrentIndex(1);
00179   else if ( f.op2 == RangeFilter::gtoeq )
00180     op2->setCurrentIndex(2);
00181 
00182   enabled->setChecked(f.enabled);
00183 }
00184 
00185 
00186 
00187 void KNode::RangeFilterWidget::clear()
00188 {
00189   val1->setValue(val1->minimum());
00190   val2->setValue(val2->minimum());
00191   enabled->setChecked(false);
00192 }
00193 
00194 
00195 
00196 void KNode::RangeFilterWidget::slotOp1Changed( int id )
00197 {
00198   bool state = op1->isEnabled() && id < 2;
00199   op2->setEnabled(state);
00200   des->setEnabled(state);
00201   slotOp2Changed(op2->currentIndex());
00202 }
00203 
00204 
00205 
00206 void KNode::RangeFilterWidget::slotOp2Changed( int id )
00207 {
00208   val2->setEnabled(op1->isEnabled() && (op1->currentIndex()<2) && (id>0));
00209 }
00210 
00211 
00212 
00213 void KNode::RangeFilterWidget::slotEnabled( bool e )
00214 {
00215   op1->setEnabled(e);
00216   val1->setEnabled(e);
00217   des->setEnabled(e);
00218   slotOp1Changed(op1->currentIndex());
00219 }
00220 
00221 // -----------------------------------------------------------------------------
00222 
00223 #include "knrangefilter.moc"

knode

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

kdepim

Skip menu "kdepim"
  • akonadi
  •   clients
  •   kabc
  •   kcal
  •   kcm
  • akregator
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt
  • kdgantt1
  • kjots
  • kleopatra
  • kmail
  • kmobiletools
  • knode
  • knotes
  • kontact
  • kontactinterfaces
  • korganizer
  •   korgac
  • kpilot
  • ktimetracker
  •   doc
  • libkdepim
  • libkholidays
  • libkleo
  • libkpgp
  • maildir
Generated for kdepim by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal