filterlist.cpp

00001 /***************************************************************************
00002                           filterlist.cpp  -  description
00003                              -------------------
00004     begin                : Wed Sep 25 2003
00005     copyright            : (C) 2001 by Eggert Ehmke
00006     email                : eggert.ehmke@berlin.de
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #include <kdebug.h>
00019 #include "filterlist.h"
00020 
00021 FilterList::FilterList()
00022 {
00023        setAutoDelete (true);
00024 }
00025 
00026 FilterList::~FilterList()
00027 {
00028 }
00029 
00030 void FilterList::setCombo (TQComboBox* combo, int nIndex)
00031 {
00032        combo->clear ();
00033        for (FilterElem* pElem = first(); pElem; pElem = next())
00034        {
00035               combo->insertItem (pElem->toString());
00036        }
00037        if (nIndex >= 0)
00038        {
00039               at (nIndex);
00040               combo->setCurrentItem (nIndex);
00041        }
00042 }
00043 
00044 FilterList& FilterList::operator = (FilterList& list)
00045 {
00046        clear ();
00047        int nIndex = list.at ();
00048        for (FilterElem* item = list.first (); item; item = list.next ())
00049        {
00050               inSort (new FilterElem (*item));
00051        }
00052        at (nIndex);
00053        return *this;
00054 }
00055 
00056 TQCollection::Item FilterList::newItem (TQCollection::Item d)
00057 {
00058        return new FilterElem (*(FilterElem*)d);
00059 }
00060 
00061 int FilterList::compareItems (TQCollection::Item item1, TQCollection::Item item2 )
00062 {
00063        FilterElem* entry1 = (FilterElem*) item1;
00064        FilterElem* entry2 = (FilterElem*) item2;
00065 
00066   // we sort the high counters first !
00067   if (entry1->getCounter() < entry2->getCounter())
00068     return 1;
00069   else if (entry1->getCounter() == entry2->getCounter())
00070   {
00071     // for equal counters, we sort alphabetical
00072     if (entry1->toString() > entry2->toString())
00073                 return 1;
00074          else if (entry1->toString() == entry2->toString())
00075                 return 0;
00076     else
00077       return -1;
00078   }
00079        else return -1;
00080 }
00081 
00082 void FilterList::readOptions (TDEConfig* config)
00083 {
00084        bool goon = true;
00085        int i = 0;
00086        while (goon)
00087        {
00088        config->setGroup (TQString("filter%1").arg(i));
00089               TQString name (config->readEntry ("name"));
00090               if (!name.isEmpty ())
00091               {
00092       unsigned int counter = config->readNumEntry ("counter");
00093       FilterRecord::filterType type = (FilterRecord::filterType)config->readNumEntry ("type1");
00094                      FilterRecord::expressionType expr = (FilterRecord::expressionType)config->readNumEntry ("expression1");
00095       TQString match = config->readEntry ("match1");
00096       bool caseSensitive = (bool)config->readNumEntry ("casesensitive1", 0);
00097       bool regExp = (bool)config->readNumEntry ("regexp1", 0);
00098 
00099       FilterElem* filter = new FilterElem (FilterRecord(type, expr, match, caseSensitive, regExp));
00100       filter->setCounter( counter );
00101 
00102       FilterElem::secondCondition secondCondition = (FilterElem::secondCondition)config->readNumEntry ("secondcondition");
00103       type = (FilterRecord::filterType)config->readNumEntry ("type2");
00104                      expr = (FilterRecord::expressionType)config->readNumEntry ("expression2");
00105       match = config->readEntry ("match2");
00106       caseSensitive = (bool)config->readNumEntry ("casesensitive2", 0);
00107       regExp = (bool)config->readNumEntry ("regexp2", 0);
00108 
00109       filter->setSecondCondition(secondCondition, FilterRecord (type, expr, match, caseSensitive, regExp));
00110 
00111       inSort (filter);
00112                      i++;
00113               }
00114               else
00115                      goon = false;
00116        }
00117        if (i > 0)
00118               at (0);
00119   sort ();
00120 }
00121 
00122 void FilterList::saveOptions (TDEConfig* config)
00123 {
00124   //at first we remove all filter setups from the config
00125   int filterNumber = 0;     //number of deleted filter
00126   bool ready = false;       //TRUE - all filters are deleted
00127 
00128   while( !ready ) //loop until the last filter setup was removed (ready == true)
00129   {
00130     //do we have a setup with the current number (filterNumber) ?
00131     if( config->hasGroup( TQString( CONFIG_GROUP_FILTER ) + TQString( "%1" ).arg( filterNumber ) ) )
00132     {
00133       //remove group
00134       config->deleteGroup( TQString( CONFIG_GROUP_FILTER ) + TQString( "%1" ).arg( filterNumber ) );
00135 
00136       //process next filter
00137       filterNumber++;
00138     }
00139     else
00140       ready = true;
00141   }
00142 
00143   //now we write the configured filters into the config
00144        kdDebug () << "FilterList::saveOptions" << endl;
00145        for (unsigned int i = 0; i < count (); i++)
00146        {
00147        config->setGroup (TQString ("filter%1").arg(i));
00148               config->writeEntry ("name", at(i)->toString());
00149     config->writeEntry ("counter", at(i)->getCounter() );
00150 
00151     config->writeEntry ("type1", at(i)->_filter1._type);
00152               config->writeEntry ("expression1", at(i)->_filter1._expression);
00153               config->writeEntry ("match1", at(i)->_filter1._match);
00154     config->writeEntry ("casesensitive1", at(i)->_filter1._CaseSensitive);
00155     config->writeEntry ("regexp1", at(i)->_filter1._RegExp);
00156 
00157     config->writeEntry ("secondcondition", at(i)->_secondCondition);
00158 
00159     config->writeEntry ("type2", at(i)->_filter2._type);
00160               config->writeEntry ("expression2", at(i)->_filter2._expression);
00161               config->writeEntry ("match2", at(i)->_filter2._match);
00162     config->writeEntry ("casesensitive2", at(i)->_filter2._CaseSensitive);
00163     config->writeEntry ("regexp2", at(i)->_filter2._RegExp);
00164        }
00165 }

Generated on Thu Jul 5 19:36:06 2007 for kshowmail by  doxygen 1.5.0