• 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
filteractionsettransport.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 "filteractionsettransport.h"
21 
22 #include "dialog/filteractionmissingargumentdialog.h"
23 
24 #include <KDE/KLocale>
25 #include <KDE/Mailtransport/Transport>
26 #include <KDE/Mailtransport/TransportComboBox>
27 #include <KDE/Mailtransport/TransportManager>
28 
29 #include <QTextDocument>
30 #include <QPointer>
31 
32 using namespace MailCommon;
33 
34 FilterAction* FilterActionSetTransport::newAction()
35 {
36  return new FilterActionSetTransport;
37 }
38 
39 QWidget* FilterActionSetTransport::createParamWidget( QWidget *parent ) const
40 {
41  MailTransport::TransportComboBox *transportCombobox = new MailTransport::TransportComboBox( parent );
42  setParamWidgetValue( transportCombobox );
43 
44  connect( transportCombobox, SIGNAL(currentIndexChanged(int)),
45  this, SIGNAL(filterActionModified()) );
46 
47  return transportCombobox;
48 }
49 
50 FilterActionSetTransport::FilterActionSetTransport( QObject *parent )
51  : FilterAction( QLatin1String("set transport"), i18n( "Set Transport To" ), parent ), mParameter( -1 )
52 {
53 }
54 
55 bool FilterActionSetTransport::argsFromStringInteractive( const QString &argsStr, const QString &filterName )
56 {
57  bool needUpdate = false;
58  argsFromString( argsStr );
59  if ( !MailTransport::TransportManager::self()->transportById( mParameter,false ) )
60  {
61  QPointer<FilterActionMissingTransportDialog> dlg = new FilterActionMissingTransportDialog( filterName );
62  if ( dlg->exec() ) {
63  mParameter = dlg->selectedTransport();
64  needUpdate = true;
65  }
66  else
67  mParameter = -1;
68  delete dlg;
69  }
70  return needUpdate;
71 }
72 
73 
74 FilterAction::ReturnCode FilterActionSetTransport::process(ItemContext &context , bool) const
75 {
76  if ( isEmpty() )
77  return ErrorButGoOn;
78 
79  const MailTransport::Transport *transport = MailTransport::TransportManager::self()->transportById( mParameter );
80  //Error if we don't have transport here.
81  if ( !transport )
82  return ErrorButGoOn;
83 
84  const KMime::Message::Ptr msg = context.item().payload<KMime::Message::Ptr>();
85  KMime::Headers::Generic *header = new KMime::Headers::Generic( "X-KMail-Transport", msg.get(), argsAsString(), "utf-8" );
86  msg->setHeader( header );
87  msg->assemble();
88 
89  context.setNeedsPayloadStore();
90 
91  return GoOn;
92 }
93 
94 SearchRule::RequiredPart FilterActionSetTransport::requiredPart() const
95 {
96  return SearchRule::CompleteMessage;
97 }
98 
99 
100 void FilterActionSetTransport::applyParamWidgetValue( QWidget *paramWidget )
101 {
102  const MailTransport::TransportComboBox *comboBox = dynamic_cast<MailTransport::TransportComboBox*>( paramWidget );
103  Q_ASSERT( comboBox );
104 
105  mParameter = comboBox->currentTransportId();
106  mTransportName.clear();
107 }
108 
109 void FilterActionSetTransport::clearParamWidget( QWidget *paramWidget ) const
110 {
111  MailTransport::TransportComboBox *comboBox = dynamic_cast<MailTransport::TransportComboBox*>( paramWidget );
112  Q_ASSERT( comboBox );
113 
114  comboBox->setCurrentIndex( 0 );
115 }
116 
117 void FilterActionSetTransport::setParamWidgetValue( QWidget *paramWidget ) const
118 {
119  MailTransport::TransportComboBox *comboBox = dynamic_cast<MailTransport::TransportComboBox*>( paramWidget );
120  Q_ASSERT( comboBox );
121 
122  comboBox->setCurrentTransport( mParameter );
123 }
124 
125 
126 bool FilterActionSetTransport::isEmpty() const
127 {
128  return (mParameter == -1);
129 }
130 
131 void FilterActionSetTransport::argsFromString( const QString &argsStr )
132 {
133  mParameter = argsStr.trimmed().toInt();
134 }
135 
136 QString FilterActionSetTransport::argsAsString() const
137 {
138  return QString::number( mParameter );
139 }
140 
141 QString FilterActionSetTransport::displayString() const
142 {
143  if ( mTransportName.isEmpty() ) {
144  const QStringList listNames = MailTransport::TransportManager::self()->transportNames();
145  const int index = MailTransport::TransportManager::self()->transportIds().indexOf( mParameter );
146  if ( index != -1 ) {
147  mTransportName = listNames.at( index );
148  }
149  }
150  return label() + QLatin1String( " \"" ) + ( mTransportName.isEmpty() ? Qt::escape( argsAsString() ) : mTransportName ) + QLatin1String( "\"" );
151 }
152 
153 #include "filteractionsettransport.moc"
MailCommon::FilterActionSetTransport::FilterActionSetTransport
FilterActionSetTransport(QObject *parent=0)
Definition: filteractionsettransport.cpp:50
MailCommon::FilterAction::GoOn
Go on with applying filter actions.
Definition: filteraction.h:62
FilterActionMissingTransportDialog
Definition: filteractionmissingargumentdialog.h:99
MailCommon::FilterActionSetTransport::isEmpty
bool isEmpty() const
Determines whether this action is valid.
Definition: filteractionsettransport.cpp:126
QWidget
MailCommon::ItemContext::setNeedsPayloadStore
void setNeedsPayloadStore()
Marks that the item's payload has been changed and needs to be written back.
Definition: itemcontext.cpp:45
filteractionmissingargumentdialog.h
MailCommon::FilterActionSetTransport::clearParamWidget
void clearParamWidget(QWidget *paramWidget) const
The filter action shall clear it's parameter widget's contents.
Definition: filteractionsettransport.cpp:109
QObject
MailCommon::SearchRule::CompleteMessage
Definition: searchpattern.h:107
MailCommon::FilterActionSetTransport::mParameter
int mParameter
Definition: filteractionsettransport.h:76
MailCommon::FilterAction
Abstract base class for mail filter actions.
Definition: filteraction.h:52
MailCommon::FilterActionSetTransport::process
ReturnCode process(ItemContext &context, bool applyOnOutbound) const
Execute action on given message (inside the item context).
Definition: filteractionsettransport.cpp:74
MailCommon::FilterActionSetTransport::applyParamWidgetValue
void applyParamWidgetValue(QWidget *paramWidget)
The filter action shall set it's parameter from the widget's contents.
Definition: filteractionsettransport.cpp:100
MailCommon::FilterAction::ErrorButGoOn
A non-critical error occurred.
Definition: filteraction.h:63
MailCommon::FilterActionSetTransport::displayString
QString displayString() const
Returns a translated string describing this filter for visualization purposes, e.g.
Definition: filteractionsettransport.cpp:141
MailCommon::FilterActionSetTransport::argsFromString
void argsFromString(const QString &argsStr)
Read extra arguments from given string.
Definition: filteractionsettransport.cpp:131
MailCommon::FilterActionSetTransport::newAction
static FilterAction * newAction()
Definition: filteractionsettransport.cpp:34
MailCommon::FilterActionSetTransport::argsAsString
QString argsAsString() const
Return extra arguments as string.
Definition: filteractionsettransport.cpp:136
MailCommon::FilterActionSetTransport::setParamWidgetValue
void setParamWidgetValue(QWidget *paramWidget) const
The filter action shall set it's widget's contents from it's parameter.
Definition: filteractionsettransport.cpp:117
MailCommon::SearchRule::RequiredPart
RequiredPart
Definition: searchpattern.h:104
MailCommon::FilterAction::label
QString label() const
Returns i18n'd label, ie.
Definition: filteraction.cpp:45
MailCommon::FilterActionSetTransport::requiredPart
SearchRule::RequiredPart requiredPart() const
Returns the required part from the item that is needed for the action to operate. ...
Definition: filteractionsettransport.cpp:94
MailCommon::FilterActionSetTransport::argsFromStringInteractive
bool argsFromStringInteractive(const QString &argsStr, const QString &filterName)
Read extra arguments from given string.
Definition: filteractionsettransport.cpp:55
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::FilterAction::filterActionModified
void filterActionModified()
Called to notify that the current FilterAction has had some value modification.
context
const char * context
Definition: searchpatternedit.cpp:54
MailCommon::ItemContext
A helper class for the filtering process.
Definition: itemcontext.h:39
filteractionsettransport.h
MailCommon::FilterActionSetTransport::mTransportName
QString mTransportName
Definition: filteractionsettransport.h:77
MailCommon::FilterActionSetTransport::createParamWidget
QWidget * createParamWidget(QWidget *parent) const
Creates a widget for setting the filter action parameter.
Definition: filteractionsettransport.cpp:39
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