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

mailcommon

  • sources
  • kde-4.12
  • kdepim
  • mailcommon
  • filter
  • filterimporter
filterimporterbalsa.cpp
Go to the documentation of this file.
1 /*
2  Copyright (c) 2012-2013 Montel Laurent <montel@kde.org>
3 
4  This program is free software; you can redistribute it and/or modify it
5  under the terms of the GNU General Public License, version 2, as
6  published by the Free Software Foundation.
7 
8  This program is distributed in the hope that it will be useful, but
9  WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License along
14  with this program; if not, write to the Free Software Foundation, Inc.,
15  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 */
17 
18 #include "filterimporterbalsa_p.h"
19 #include "filtermanager.h"
20 #include "mailfilter.h"
21 
22 #include <KConfig>
23 #include <KConfigGroup>
24 
25 #include <KDebug>
26 
27 #include <QFile>
28 
29 using namespace MailCommon;
30 
31 FilterImporterBalsa::FilterImporterBalsa( QFile *file )
32  :FilterImporterAbstract()
33 {
34  KConfig config( file->fileName() );
35  const QStringList filterList = config.groupList().filter( QRegExp( QLatin1String("filter-\\d+") ) );
36  Q_FOREACH(const QString &filter, filterList) {
37  KConfigGroup grp = config.group(filter);
38  addFilter(grp);
39  }
40 }
41 
42 FilterImporterBalsa::~FilterImporterBalsa()
43 {
44 }
45 
46 QString FilterImporterBalsa::defaultFiltersSettingsPath()
47 {
48  return QString::fromLatin1( "%1/.balsa/config" ).arg( QDir::homePath() );
49 }
50 
51 
52 void FilterImporterBalsa::addFilter(const KConfigGroup &grp)
53 {
54  MailCommon::MailFilter *filter = new MailCommon::MailFilter();
55  const QString name = grp.readEntry(QLatin1String("Name"));
56  filter->pattern()->setName( name );
57  filter->setToolbarName( name );
58 
59  //TODO not implemented in kmail.
60  const QString popupText = grp.readEntry(QLatin1String("Popup-text"));
61 
62 
63  const QString sound = grp.readEntry(QLatin1String("Sound"));
64  if (!sound.isEmpty()) {
65  const QString actionName = QLatin1String( "play sound" );
66  createFilterAction( filter, actionName, sound );
67  }
68 
69  const int actionType = grp.readEntry(QLatin1String("Action-type"),-1);
70  const QString actionStr = grp.readEntry(QLatin1String("Action-string"));
71  parseAction(actionType,actionStr,filter);
72 
73  const QString condition = grp.readEntry(QLatin1String("Condition"));
74  parseCondition(condition,filter);
75 
76  appendFilter(filter);
77 }
78 
79 void FilterImporterBalsa::parseCondition(const QString& condition,MailCommon::MailFilter *filter )
80 {
81  QStringList conditionList;
82  if (condition.startsWith(QLatin1String("OR "))) {
83  conditionList = condition.split(QLatin1String("OR"));
84  filter->pattern()->setOp( SearchPattern::OpOr );
85  } else if (condition.startsWith(QLatin1String("AND "))) {
86  conditionList = condition.split(QLatin1String("AND"));
87  filter->pattern()->setOp( SearchPattern::OpAnd );
88  } else {
89  //no multi condition
90  conditionList<< condition;
91  }
92  Q_FOREACH(QString cond, conditionList) {
93  cond = cond.trimmed();
94  if (cond.startsWith(QLatin1String("NOT"))) {
95  cond = cond.right(cond.length()-3);
96  cond = cond.trimmed();
97  }
98  qDebug()<<" cond"<<cond;
99 
100  //Date between
101  QByteArray fieldName;
102  if (cond.startsWith(QLatin1String("DATE"))) {
103  fieldName = "<date>";
104  cond = cond.right(cond.length()-4);
105  cond = cond.trimmed();
106  QStringList splitDate = cond.split(QLatin1Char(' '));
107  qDebug()<<" splitDate "<<splitDate;
108  } else if (cond.startsWith(QLatin1String("FLAG"))) {
109  qDebug()<<" FLAG :";
110  } else if (cond.startsWith(QLatin1String("STRING"))) {
111  qDebug()<<" STRING";
112  } else {
113  qDebug()<<" condition not implemented :"<<cond;
114  }
115 
116  //SearchRule::Ptr rule = SearchRule::createInstance( fieldName, functionName, line );
117  //filter->pattern()->append( rule );
118  }
119 }
120 
121 void FilterImporterBalsa::parseAction(int actionType, const QString& action,MailCommon::MailFilter *filter)
122 {
123  QString actionName;
124  QString actionStr(action);
125  switch(actionType) {
126  case 0:
127  break;
128  case 1:
129  //Copy
130  actionName = QLatin1String( "copy" );
131  break;
132  case 2:
133  //Move
134  actionName = QLatin1String( "transfer" );
135  break;
136  case 3:
137  //Print
138  //Not implemented in kmail
139  break;
140  case 4:
141  //Execute
142  actionName = QLatin1String( "execute" );
143  break;
144  case 5:
145  //Move to trash
146  actionName = QLatin1String( "transfer" );
147  //Special !
148  break;
149  case 6:
150  //Put color
151  break;
152  default:
153  qDebug()<<" unknown parse action type "<<actionType;
154  break;
155  }
156  if (!actionName.isEmpty()) {
157  //TODO adapt actionStr
158  createFilterAction( filter, actionName, actionStr );
159  }
160 }
MailCommon::SearchPattern::OpOr
Definition: searchpattern.h:607
MailCommon::FilterImporterBalsa::FilterImporterBalsa
FilterImporterBalsa(QFile *file)
Definition: filterimporterbalsa.cpp:31
mailfilter.h
filterimporterbalsa_p.h
MailCommon::MailFilter::setToolbarName
void setToolbarName(const QString &toolbarName)
This sets the toolbar name for this filter.
Definition: mailfilter.cpp:338
MailCommon::FilterImporterBalsa::defaultFiltersSettingsPath
static QString defaultFiltersSettingsPath()
Definition: filterimporterbalsa.cpp:46
MailCommon::FilterImporterAbstract
Definition: filterimporterabstract_p.h:33
MailCommon::SearchPattern::OpAnd
Definition: searchpattern.h:606
MailCommon::FilterImporterAbstract::appendFilter
void appendFilter(MailCommon::MailFilter *filter)
Definition: filterimporterabstract.cpp:47
MailCommon::SearchPattern::setOp
void setOp(SearchPattern::Operator aOp)
Sets the filter operator.
Definition: searchpattern.h:713
MailCommon::FilterImporterBalsa::~FilterImporterBalsa
~FilterImporterBalsa()
Definition: filterimporterbalsa.cpp:42
filtermanager.h
MailCommon::MailFilter::pattern
SearchPattern * pattern()
Provides a reference to the internal pattern.
Definition: mailfilter.cpp:182
MailCommon::MailFilter
Definition: mailfilter.h:42
MailCommon::SearchPattern::setName
void setName(const QString &newName)
Sets the name of the search pattern.
Definition: searchpattern.h:697
MailCommon::FilterImporterAbstract::createFilterAction
void createFilterAction(MailCommon::MailFilter *filter, const QString &actionName, const QString &value)
Definition: filterimporterabstract.cpp:64
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:55:14 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

mailcommon

Skip menu "mailcommon"
  • Main Page
  • Namespace List
  • Namespace Members
  • 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