You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdepim/knode/knstringfilter.cpp

164 lines
3.4 KiB

/*
KNode, the KDE newsreader
Copyright (c) 1999-2005 the KNode authors.
See file AUTHORS for details
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
*/
#include <tqcombobox.h>
#include <tqlayout.h>
#include <tqcheckbox.h>
#include <tdelocale.h>
#include <ksimpleconfig.h>
#include <klineedit.h>
#include "kngroup.h"
#include "knnntpaccount.h"
#include "knglobals.h"
#include "knconfigmanager.h"
#include "knstringfilter.h"
KNStringFilter& KNStringFilter::operator=(const KNStringFilter &sf)
{
con=sf.con;
data=sf.data.copy();
regExp=sf.regExp;
return (*this);
}
bool KNStringFilter::doFilter(const TQString &s)
{
bool ret=true;
if(!expanded.isEmpty()) {
if(regExp) {
TQRegExp matcher(expanded);
ret = ( matcher.search(s) >= 0 );
} else
ret=(s.find(expanded,0,false)!=-1);
if(!con) ret=!ret;
}
return ret;
}
// replace placeholders
void KNStringFilter::expand(KNGroup *g)
{
KNConfig::Identity *id = (g) ? g->identity() : 0;
if (!id) {
id = (g) ? g->account()->identity() : 0;
if (!id)
id = knGlobals.configManager()->identity();
}
expanded = data;
expanded.replace(TQRegExp("%MYNAME"), id->name());
expanded.replace(TQRegExp("%MYEMAIL"), id->email());
}
void KNStringFilter::load(KSimpleConfig *conf)
{
con=conf->readBoolEntry("contains", true);
data=conf->readEntry("Data");
regExp=conf->readBoolEntry("regX", false);
}
void KNStringFilter::save(KSimpleConfig *conf)
{
conf->writeEntry("contains", con);
conf->writeEntry("Data", data);
conf->writeEntry("regX", regExp);
}
//===============================================================================
KNStringFilterWidget::KNStringFilterWidget(const TQString& title, TQWidget *parent)
: TQGroupBox(title, parent)
{
fType=new TQComboBox(this);
fType->insertItem(i18n("Does Contain"));
fType->insertItem(i18n("Does NOT Contain"));
fString=new KLineEdit(this);
regExp=new TQCheckBox(i18n("Regular expression"), this);
TQGridLayout *topL=new TQGridLayout(this, 3,3, 8,5 );
topL->addRowSpacing(0, fontMetrics().lineSpacing()-4);
topL->addWidget(fType, 1,0);
topL->addColSpacing(1, 10);
topL->addWidget(regExp, 1,1);
topL->addMultiCellWidget(fString, 2,2, 0,2);
topL->setColStretch(2,1);
}
KNStringFilterWidget::~KNStringFilterWidget()
{
}
KNStringFilter KNStringFilterWidget::filter()
{
KNStringFilter ret;
ret.con=(fType->currentItem()==0);
ret.data=fString->text();
ret.regExp=regExp->isChecked();
return ret;
}
void KNStringFilterWidget::setFilter(KNStringFilter &f)
{
if(f.con) fType->setCurrentItem(0);
else fType->setCurrentItem(1);
fString->setText(f.data);
regExp->setChecked(f.regExp);
}
void KNStringFilterWidget::clear()
{
fString->clear();
fType->setCurrentItem(0);
regExp->setChecked(false);
}
void KNStringFilterWidget::setStartFocus()
{
fString->setFocus();
}
// -----------------------------------------------------------------------------+
#include "knstringfilter.moc"