• 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
filteractionaddtag.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 1996-1998 Stefan Taferner <taferner@kde.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  */
19 
20 #include "filteractionaddtag.h"
21 #include "filtermanager.h"
22 #include "dialog/filteractionmissingargumentdialog.h"
23 #include "pimcommon/widgets/minimumcombobox.h"
24 
25 #include <Nepomuk2/Tag>
26 #include <Nepomuk2/Resource>
27 #include <Nepomuk2/ResourceManager>
28 
29 #include <QTextDocument>
30 #include <QPointer>
31 
32 using namespace MailCommon;
33 
34 FilterAction* FilterActionAddTag::newAction()
35 {
36  return new FilterActionAddTag;
37 }
38 
39 FilterActionAddTag::FilterActionAddTag( QObject *parent )
40  : FilterAction( QLatin1String("add tag"), i18n( "Add Tag" ), parent )
41 {
42  mList = FilterManager::instance()->tagList();
43  connect(FilterManager::instance(),SIGNAL(tagListingFinished()),SLOT(slotTagListingFinished()));
44 }
45 
46 QWidget* FilterActionAddTag::createParamWidget( QWidget *parent ) const
47 {
48  PimCommon::MinimumComboBox *comboBox = new PimCommon::MinimumComboBox( parent );
49  comboBox->setEditable( false );
50  QMapIterator<QUrl, QString> i(mList);
51  while (i.hasNext()) {
52  i.next();
53  comboBox->addItem(i.value(), i.key());
54  }
55 
56  setParamWidgetValue( comboBox );
57 
58  connect( comboBox, SIGNAL(currentIndexChanged(int)),
59  this, SIGNAL(filterActionModified()) );
60 
61  return comboBox;
62 }
63 
64 void FilterActionAddTag::applyParamWidgetValue( QWidget *paramWidget )
65 {
66  PimCommon::MinimumComboBox* combo = static_cast<PimCommon::MinimumComboBox*>( paramWidget );
67  mParameter = combo->itemData(combo->currentIndex()).toString();
68 }
69 
70 void FilterActionAddTag::setParamWidgetValue( QWidget *paramWidget ) const
71 {
72  const int index = static_cast<PimCommon::MinimumComboBox*>( paramWidget )->findData(mParameter);
73 
74  static_cast<PimCommon::MinimumComboBox*>( paramWidget )->setCurrentIndex( index < 0 ? 0 : index );
75 }
76 
77 void FilterActionAddTag::clearParamWidget( QWidget *paramWidget ) const
78 {
79  static_cast<PimCommon::MinimumComboBox*>( paramWidget )->setCurrentIndex( 0 );
80 }
81 
82 
83 bool FilterActionAddTag::isEmpty() const
84 {
85  return false;
86 }
87 
88 void FilterActionAddTag::slotTagListingFinished()
89 {
90  mList = FilterManager::instance()->tagList();
91 }
92 
93 bool FilterActionAddTag::argsFromStringInteractive( const QString &argsStr, const QString& filterName )
94 {
95  bool needUpdate = false;
96  argsFromString( argsStr );
97  if ( mList.isEmpty() )
98  return false;
99  const bool index = mList.contains( mParameter );
100  if ( Nepomuk2::ResourceManager::instance()->initialized() ) {
101  if ( !index ) {
102  QPointer<FilterActionMissingTagDialog> dlg = new FilterActionMissingTagDialog( mList, filterName, argsStr );
103  if ( dlg->exec() ) {
104  mParameter = dlg->selectedTag();
105  needUpdate = true;
106  }
107  delete dlg;
108  }
109  }
110  return needUpdate;
111 }
112 
113 
114 FilterAction::ReturnCode FilterActionAddTag::process(ItemContext &context , bool) const
115 {
116  if (!mList.contains(mParameter)) {
117  return ErrorButGoOn;
118  }
119  Nepomuk2::Resource resource( context.item().url() );
120  resource.addTag( mParameter );
121 
122  return GoOn;
123 }
124 
125 SearchRule::RequiredPart FilterActionAddTag::requiredPart() const
126 {
127  return SearchRule::Envelope;
128 }
129 
130 void FilterActionAddTag::argsFromString( const QString &argsStr )
131 {
132  if ( mList.isEmpty() ) {
133  mParameter = argsStr;
134  return;
135  }
136  if (mList.contains(argsStr)) {
137  mParameter = argsStr;
138  return;
139  }
140  if ( !mList.isEmpty() )
141  mParameter = mList.values().at(0);
142 }
143 
144 QString FilterActionAddTag::argsAsString() const
145 {
146  if (!mList.contains(mParameter)) {
147  return QString();
148  }
149 
150  return mList.value(mParameter);
151 }
152 
153 QString FilterActionAddTag::displayString() const
154 {
155  return label() + QLatin1String( " \"" ) + Qt::escape( argsAsString() ) + QLatin1String( "\"" );
156 }
157 
158 #include "filteractionaddtag.moc"
MailCommon::FilterAction::GoOn
Go on with applying filter actions.
Definition: filteraction.h:62
MailCommon::FilterActionAddTag::applyParamWidgetValue
void applyParamWidgetValue(QWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
Definition: filteractionaddtag.cpp:64
MailCommon::FilterActionAddTag::argsFromString
void argsFromString(const QString &argsStr)
Read extra arguments from given string.
Definition: filteractionaddtag.cpp:130
QWidget
MailCommon::FilterActionAddTag::argsFromStringInteractive
bool argsFromStringInteractive(const QString &argsStr, const QString &filterName)
Read extra arguments from given string.
Definition: filteractionaddtag.cpp:93
filteractionmissingargumentdialog.h
MailCommon::FilterActionAddTag::newAction
static FilterAction * newAction()
Definition: filteractionaddtag.cpp:34
MailCommon::FilterActionAddTag::FilterActionAddTag
FilterActionAddTag(QObject *parent=0)
Definition: filteractionaddtag.cpp:39
MailCommon::FilterActionAddTag::isEmpty
bool isEmpty() const
Determines whether this action is valid.
Definition: filteractionaddtag.cpp:83
QObject
MailCommon::FilterAction
Abstract base class for mail filter actions.
Definition: filteraction.h:52
filteractionaddtag.h
MailCommon::FilterActionAddTag::requiredPart
SearchRule::RequiredPart requiredPart() const
Returns the required part from the item that is needed for the action to operate. ...
Definition: filteractionaddtag.cpp:125
MailCommon::FilterActionAddTag::argsAsString
QString argsAsString() const
Return extra arguments as string.
Definition: filteractionaddtag.cpp:144
MailCommon::FilterAction::ErrorButGoOn
A non-critical error occurred.
Definition: filteraction.h:63
MailCommon::FilterActionAddTag::process
ReturnCode process(ItemContext &context, bool applyOnOutbound) const
Execute action on given message (inside the item context).
Definition: filteractionaddtag.cpp:114
FilterActionMissingTagDialog
Definition: filteractionmissingargumentdialog.h:147
MailCommon::SearchRule::RequiredPart
RequiredPart
Definition: searchpattern.h:104
MailCommon::FilterAction::label
QString label() const
Returns i18n'd label, ie.
Definition: filteraction.cpp:45
MailCommon::FilterActionAddTag::displayString
QString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
Definition: filteractionaddtag.cpp:153
MailCommon::FilterManager::instance
static FilterManager * instance()
Returns the global filter manager object.
Definition: filtermanager.cpp:101
MailCommon::SearchRule::Envelope
Definition: searchpattern.h:105
MailCommon::FilterActionAddTag::clearParamWidget
void clearParamWidget(QWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
Definition: filteractionaddtag.cpp:77
MailCommon::FilterAction::ReturnCode
ReturnCode
Describes the possible return codes of filter processing:
Definition: filteraction.h:60
MailCommon::ItemContext::item
Akonadi::Item & item()
Returns the item of the context.
Definition: itemcontext.cpp:30
MailCommon::FilterActionAddTag::createParamWidget
QWidget * createParamWidget(QWidget *parent) const
Creates a widget for setting the filter action parameter.
Definition: filteractionaddtag.cpp:46
MailCommon::FilterAction::filterActionModified
void filterActionModified()
Called to notify that the current FilterAction has had some value modification.
MailCommon::FilterActionAddTag::setParamWidgetValue
void setParamWidgetValue(QWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
Definition: filteractionaddtag.cpp:70
context
const char * context
Definition: searchpatternedit.cpp:54
filtermanager.h
MailCommon::ItemContext
A helper class for the filtering process.
Definition: itemcontext.h:39
MailCommon::FilterManager::tagList
QMap< QUrl, QString > tagList() const
Definition: filtermanager.cpp:219
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