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

kleopatra

  • sources
  • kde-4.12
  • kdepim
  • kleopatra
  • crypto
  • gui
signencryptwizard.cpp
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset:4 -*-
2  crypto/gui/signencryptwizard.cpp
3 
4  This file is part of Kleopatra, the KDE keymanager
5  Copyright (c) 2007 Klarälvdalens Datakonsult AB
6 
7  Kleopatra is free software; you can redistribute it and/or modify
8  it under the terms of the GNU General Public License as published by
9  the Free Software Foundation; either version 2 of the License, or
10  (at your option) any later version.
11 
12  Kleopatra is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 
21  In addition, as a special exception, the copyright holders give
22  permission to link the code of this program with any edition of
23  the Qt library by Trolltech AS, Norway (or with modified versions
24  of Qt that use the same license as Qt), and distribute linked
25  combinations including the two. You must obey the GNU General
26  Public License in all respects for all of the code used other than
27  Qt. If you modify this file, you may extend this exception to
28  your version of the file, but you are not obligated to do so. If
29  you do not wish to do so, delete this exception statement from
30  your version.
31 */
32 
33 #include <config-kleopatra.h>
34 
35 #include "signencryptwizard.h"
36 
37 #include "objectspage.h"
38 #include "resolverecipientspage.h"
39 #include "signerresolvepage.h"
40 #include "resultpage.h"
41 
42 #include <crypto/task.h>
43 #include <crypto/taskcollection.h>
44 #include <crypto/certificateresolver.h>
45 
46 #include <utils/kleo_assert.h>
47 
48 #include <kleo/stl_util.h>
49 
50 #include <gpgme++/key.h>
51 
52 #include <KConfig>
53 #include <KGlobal>
54 #include <KLocale>
55 
56 #include <QFileInfo>
57 #include <QTimer>
58 
59 #include <boost/bind.hpp>
60 
61 using namespace Kleo;
62 using namespace Kleo::Crypto;
63 using namespace Kleo::Crypto::Gui;
64 using namespace boost;
65 using namespace GpgME;
66 using namespace KMime::Types;
67 
68 class SignEncryptWizard::Private {
69  friend class ::Kleo::Crypto::Gui::SignEncryptWizard;
70  SignEncryptWizard * q;
71 public:
72  explicit Private( SignEncryptWizard * qq );
73  ~Private();
74 
75  void setCommitPage( Page page );
76 
77  Gui::ResolveRecipientsPage * recipientResolvePage; // clashes with enum of same name
78  SignerResolvePage * signerResolvePage;
79  Gui::ObjectsPage * objectsPage; // clashes with enum of same name
80  Gui::ResultPage * resultPage; // clashes with enum of same name
81 };
82 
83 
84 SignEncryptWizard::Private::Private( SignEncryptWizard * qq )
85  : q( qq ),
86  recipientResolvePage( new Gui::ResolveRecipientsPage ),
87  signerResolvePage( new SignerResolvePage ),
88  objectsPage( new Gui::ObjectsPage ),
89  resultPage( new Gui::ResultPage )
90 {
91  connect( resultPage, SIGNAL(linkActivated(QString)), q, SIGNAL(linkActivated(QString)) );
92  q->setPage( SignEncryptWizard::ResolveSignerPage, signerResolvePage );
93  q->setPage( SignEncryptWizard::ObjectsPage, objectsPage );
94  q->setPage( SignEncryptWizard::ResolveRecipientsPage, recipientResolvePage );
95  q->setPage( SignEncryptWizard::ResultPage, resultPage );
96  //TODO: move the RecipientPreferences creation out of here, don't create a new instance for each wizard
97  recipientResolvePage->setRecipientPreferences( shared_ptr<RecipientPreferences>( new KConfigBasedRecipientPreferences( KGlobal::config() ) ) );
98  signerResolvePage->setSigningPreferences( shared_ptr<SigningPreferences>( new KConfigBasedSigningPreferences( KGlobal::config() ) ) );
99  q->resize( QSize( 640, 480 ).expandedTo( q->sizeHint() ) );
100 }
101 
102 void SignEncryptWizard::onNext( int currentId )
103 {
104  if ( currentId == ResolveRecipientsPage )
105  QTimer::singleShot( 0, this, SIGNAL(recipientsResolved()) );
106  if ( currentId == ResolveSignerPage ) {
107  //FIXME: Sign&Encrypt is only supported by OpenPGP. Remove this when we support this for CMS, too
108  if ( encryptionSelected() && signingSelected() )
109  setPresetProtocol( OpenPGP );
110  QTimer::singleShot( 0, this, SIGNAL(signersResolved()) );
111  }
112  if ( currentId == ObjectsPage )
113  QTimer::singleShot( 0, this, SIGNAL(objectsResolved()) );
114 }
115 
116 SignEncryptWizard::Private::~Private() {}
117 
118 SignEncryptWizard::SignEncryptWizard( QWidget * p, Qt::WindowFlags f )
119  : Wizard( p, f ), d( new Private( this ) )
120 {
121 }
122 
123 
124 SignEncryptWizard::~SignEncryptWizard() {}
125 
126 void SignEncryptWizard::setCommitPage( Page page )
127 {
128  d->setCommitPage( page );
129 }
130 
131 void SignEncryptWizard::Private::setCommitPage( Page page )
132 {
133  q->page( ResolveSignerPage )->setCommitPage( false );
134  q->page( ResolveRecipientsPage )->setCommitPage( false );
135  q->page( ObjectsPage )->setCommitPage( false );
136  q->page( ResultPage )->setCommitPage( false );
137  q->page( page )->setCommitPage( true );
138 }
139 
140 void SignEncryptWizard::setPresetProtocol( Protocol proto ) {
141  d->signerResolvePage->setPresetProtocol( proto );
142  d->signerResolvePage->setProtocolSelectionUserMutable( proto == UnknownProtocol );
143  d->recipientResolvePage->setPresetProtocol( proto );
144 }
145 
146 GpgME::Protocol SignEncryptWizard::selectedProtocol() const
147 {
148  return d->recipientResolvePage->selectedProtocol();
149 }
150 
151 GpgME::Protocol SignEncryptWizard::presetProtocol() const
152 {
153  return d->recipientResolvePage->presetProtocol();
154 }
155 
156 void SignEncryptWizard::setEncryptionSelected( bool selected )
157 {
158  d->signerResolvePage->setEncryptionSelected( selected );
159 }
160 
161 void SignEncryptWizard::setSigningSelected( bool selected )
162 {
163  d->signerResolvePage->setSigningSelected( selected );
164 }
165 
166 bool SignEncryptWizard::isSigningUserMutable() const
167 {
168  return d->signerResolvePage->isSigningUserMutable();
169 }
170 
171 void SignEncryptWizard::setSigningUserMutable( bool isMutable )
172 {
173  d->signerResolvePage->setSigningUserMutable( isMutable );
174 }
175 
176 bool SignEncryptWizard::isEncryptionUserMutable() const
177 {
178  return d->signerResolvePage->isEncryptionUserMutable();
179 }
180 
181 
182 bool SignEncryptWizard::isMultipleProtocolsAllowed() const
183 {
184  return d->recipientResolvePage->multipleProtocolsAllowed();
185 }
186 
187 void SignEncryptWizard::setMultipleProtocolsAllowed( bool allowed )
188 {
189  d->signerResolvePage->setMultipleProtocolsAllowed( allowed );
190  d->recipientResolvePage->setMultipleProtocolsAllowed( allowed );
191 }
192 
193 void SignEncryptWizard::setEncryptionUserMutable( bool isMutable )
194 {
195  d->signerResolvePage->setEncryptionUserMutable( isMutable );
196 }
197 
198 void SignEncryptWizard::setFiles( const QStringList & files ) {
199  d->objectsPage->setFiles( files );
200 }
201 
202 QFileInfoList SignEncryptWizard::resolvedFiles() const {
203  const QStringList files = d->objectsPage->files();
204  QFileInfoList fileInfos;
205  Q_FOREACH( const QString& i, files )
206  fileInfos.push_back( QFileInfo( i ) );
207  return fileInfos;
208 }
209 
210 bool SignEncryptWizard::signingSelected() const {
211  return d->signerResolvePage->signingSelected();
212 }
213 
214 bool SignEncryptWizard::encryptionSelected() const {
215  return d->signerResolvePage->encryptionSelected();
216 }
217 
218 void SignEncryptWizard::setRecipients( const std::vector<Mailbox> & recipients, const std::vector<Mailbox> & encryptToSelfRecipients ) {
219  d->recipientResolvePage->setRecipients( recipients, encryptToSelfRecipients );
220 }
221 
222 void SignEncryptWizard::setSignersAndCandidates( const std::vector<Mailbox> & signers, const std::vector< std::vector<Key> > & keys ) {
223  d->signerResolvePage->setSignersAndCandidates( signers, keys );
224 }
225 
226 
227 void SignEncryptWizard::setTaskCollection( const shared_ptr<TaskCollection> & coll )
228 {
229  kleo_assert( coll );
230  d->resultPage->setTaskCollection( coll );
231 }
232 
233 std::vector<Key> SignEncryptWizard::resolvedCertificates() const {
234  return d->recipientResolvePage->resolvedCertificates();
235 }
236 
237 std::vector<Key> SignEncryptWizard::resolvedSigners() const {
238  return d->signerResolvePage->resolvedSigners();
239 }
240 
241 bool SignEncryptWizard::isAsciiArmorEnabled() const
242 {
243  return d->signerResolvePage->isAsciiArmorEnabled();
244 }
245 
246 void SignEncryptWizard::setAsciiArmorEnabled( bool enabled )
247 {
248  d->signerResolvePage->setAsciiArmorEnabled( enabled );
249 }
250 
251 bool SignEncryptWizard::removeUnencryptedFile() const
252 {
253  return d->signerResolvePage->removeUnencryptedFile();
254 }
255 
256 void SignEncryptWizard::setRemoveUnencryptedFile( bool remove )
257 {
258  d->signerResolvePage->setRemoveUnencryptedFile( remove );
259 }
260 
261 bool SignEncryptWizard::recipientsUserMutable() const
262 {
263  return d->recipientResolvePage->recipientsUserMutable();
264 }
265 
266 void SignEncryptWizard::setRecipientsUserMutable( bool isMutable )
267 {
268  d->recipientResolvePage->setRecipientsUserMutable( isMutable );
269 }
270 
271 void SignEncryptWizard::setSignerResolvePageValidator( const boost::shared_ptr<SignerResolvePage::Validator>& validator )
272 {
273  d->signerResolvePage->setValidator( validator );
274 }
275 
276 Gui::SignerResolvePage* SignEncryptWizard::signerResolvePage()
277 {
278  return d->signerResolvePage;
279 }
280 
281 const Gui::SignerResolvePage* SignEncryptWizard::signerResolvePage() const
282 {
283  return d->signerResolvePage;
284 }
285 
286 Gui::ResolveRecipientsPage* SignEncryptWizard::resolveRecipientsPage()
287 {
288  return d->recipientResolvePage;
289 }
290 
291 Gui::ObjectsPage* SignEncryptWizard::objectsPage()
292 {
293  return d->objectsPage;
294 }
295 
296 Gui::ResultPage* SignEncryptWizard::resultPage()
297 {
298  return d->resultPage;
299 }
300 
301 bool SignEncryptWizard::keepResultPageOpenWhenDone() const
302 {
303  return d->resultPage->keepOpenWhenDone();
304 }
305 
306 void SignEncryptWizard::setKeepResultPageOpenWhenDone( bool keep )
307 {
308  d->resultPage->setKeepOpenWhenDone( keep );
309 }
310 
311 #include "moc_signencryptwizard.cpp"
Kleo::Crypto::Gui::SignEncryptWizard
Definition: signencryptwizard.h:70
Kleo::Crypto::Gui::SignEncryptWizard::setMultipleProtocolsAllowed
void setMultipleProtocolsAllowed(bool allowed)
Definition: signencryptwizard.cpp:187
objectspage.h
Kleo::Crypto::Gui::SignEncryptWizard::signersResolved
void signersResolved()
Kleo::Crypto::Gui::SignEncryptWizard::isSigningUserMutable
bool isSigningUserMutable() const
Definition: signencryptwizard.cpp:166
Kleo::Crypto::KConfigBasedSigningPreferences
Definition: certificateresolver.h:81
Kleo::Crypto::KConfigBasedRecipientPreferences
Definition: certificateresolver.h:69
Kleo::Crypto::Gui::SignEncryptWizard::keepResultPageOpenWhenDone
bool keepResultPageOpenWhenDone() const
Definition: signencryptwizard.cpp:301
Kleo::Crypto::Gui::SignEncryptWizard::resultPage
Gui::ResultPage * resultPage()
Definition: signencryptwizard.cpp:296
Kleo::Crypto::Gui::SignEncryptWizard::~SignEncryptWizard
virtual ~SignEncryptWizard()
Definition: signencryptwizard.cpp:124
Kleo::Crypto::Gui::SignEncryptWizard::setFiles
void setFiles(const QStringList &files)
Definition: signencryptwizard.cpp:198
Kleo::Crypto::Gui::SignEncryptWizard::setSignerResolvePageValidator
void setSignerResolvePageValidator(const boost::shared_ptr< SignerResolvePage::Validator > &validator)
Definition: signencryptwizard.cpp:271
Kleo::Crypto::Gui::SignEncryptWizard::setSignersAndCandidates
void setSignersAndCandidates(const std::vector< KMime::Types::Mailbox > &signers, const std::vector< std::vector< GpgME::Key > > &keys)
Definition: signencryptwizard.cpp:222
Kleo::Crypto::Gui::SignEncryptWizard::linkActivated
void linkActivated(const QString &link)
Kleo::Crypto::Gui::SignEncryptWizard::objectsPage
Gui::ObjectsPage * objectsPage()
Definition: signencryptwizard.cpp:291
Kleo::Crypto::Gui::SignEncryptWizard::onNext
void onNext(int currentId)
Definition: signencryptwizard.cpp:102
QWidget
Kleo::Crypto::Gui::SignEncryptWizard::ObjectsPage
Definition: signencryptwizard.h:78
Kleo::Crypto::Gui::SignEncryptWizard::signingSelected
bool signingSelected() const
Definition: signencryptwizard.cpp:210
Kleo::Crypto::Gui::SignEncryptWizard::setRecipientsUserMutable
void setRecipientsUserMutable(bool isMutable)
Definition: signencryptwizard.cpp:266
Kleo::Crypto::Gui::SignEncryptWizard::ResultPage
Definition: signencryptwizard.h:80
Kleo::Crypto::Gui::SignEncryptWizard::Page
Page
Definition: signencryptwizard.h:76
Kleo::Crypto::Gui::SignEncryptWizard::setTaskCollection
void setTaskCollection(const boost::shared_ptr< TaskCollection > &tasks)
Definition: signencryptwizard.cpp:227
Kleo::Crypto::Gui::SignEncryptWizard::setEncryptionUserMutable
void setEncryptionUserMutable(bool isMutable)
Definition: signencryptwizard.cpp:193
Kleo::Crypto::Gui::SignEncryptWizard::resolvedCertificates
std::vector< GpgME::Key > resolvedCertificates() const
Definition: signencryptwizard.cpp:233
Kleo::Crypto::Gui::ResolveRecipientsPage
Definition: resolverecipientspage.h:63
Kleo::Crypto::Gui::SignEncryptWizard::recipientsUserMutable
bool recipientsUserMutable() const
if true, the user is allowed to remove/add recipients via the UI.
Definition: signencryptwizard.cpp:261
Kleo::Crypto::Gui::SignEncryptWizard::isAsciiArmorEnabled
bool isAsciiArmorEnabled() const
Definition: signencryptwizard.cpp:241
kleo_assert.h
boost::shared_ptr
Definition: encryptemailcontroller.h:51
Kleo::Crypto::Gui::SignEncryptWizard::encryptionSelected
bool encryptionSelected() const
Definition: signencryptwizard.cpp:214
Kleo::Crypto::Gui::SignEncryptWizard::resolvedSigners
std::vector< GpgME::Key > resolvedSigners() const
Definition: signencryptwizard.cpp:237
d
#define d
Definition: adduseridcommand.cpp:90
Kleo::Crypto::Gui::SignEncryptWizard::setEncryptionSelected
void setEncryptionSelected(bool selected)
Definition: signencryptwizard.cpp:156
Kleo::Class::OpenPGP
Definition: classify.h:49
Kleo::Crypto::Gui::SignEncryptWizard::removeUnencryptedFile
bool removeUnencryptedFile() const
Definition: signencryptwizard.cpp:251
signerresolvepage.h
resultpage.h
Kleo::Crypto::Gui::SignEncryptWizard::setRecipients
void setRecipients(const std::vector< KMime::Types::Mailbox > &recipients, const std::vector< KMime::Types::Mailbox > &encryptoToSelfRecipients)
Definition: signencryptwizard.cpp:218
signencryptwizard.h
Kleo::Crypto::Gui::SignEncryptWizard::setCommitPage
void setCommitPage(Page)
Definition: signencryptwizard.cpp:126
Kleo::Crypto::Gui::SignerResolvePage
Definition: signerresolvepage.h:57
Kleo::Crypto::Gui::SignEncryptWizard::ResolveRecipientsPage
Definition: signencryptwizard.h:79
Kleo::Crypto::Gui::SignEncryptWizard::ResolveSignerPage
Definition: signencryptwizard.h:77
Kleo::Crypto::Gui::SignEncryptWizard::isEncryptionUserMutable
bool isEncryptionUserMutable() const
Definition: signencryptwizard.cpp:176
kleo_assert
#define kleo_assert(cond)
Definition: kleo_assert.h:84
Kleo::Crypto::Gui::SignEncryptWizard::resolveRecipientsPage
Gui::ResolveRecipientsPage * resolveRecipientsPage()
Definition: signencryptwizard.cpp:286
Kleo::Crypto::Gui::SignEncryptWizard::recipientsResolved
void recipientsResolved()
Kleo::Crypto::Gui::SignEncryptWizard::setAsciiArmorEnabled
void setAsciiArmorEnabled(bool enabled)
Definition: signencryptwizard.cpp:246
task.h
Kleo::Crypto::Gui::SignEncryptWizard::setPresetProtocol
void setPresetProtocol(GpgME::Protocol proto)
Definition: signencryptwizard.cpp:140
Kleo::Crypto::Gui::SignEncryptWizard::resolvedFiles
QFileInfoList resolvedFiles() const
SignOrEncryptFiles mode subinterface.
Definition: signencryptwizard.cpp:202
Kleo::Crypto::Gui::SignerResolvePage::setSigningPreferences
void setSigningPreferences(const boost::shared_ptr< SigningPreferences > &prefs)
Definition: signerresolvepage.cpp:651
Kleo::Crypto::Gui::SignEncryptWizard::setSigningUserMutable
void setSigningUserMutable(bool isMutable)
Definition: signencryptwizard.cpp:171
Kleo::Crypto::Gui::Wizard
Definition: wizard.h:48
q
#define q
Definition: adduseridcommand.cpp:91
Kleo::Crypto::Gui::ResultPage
Definition: resultpage.h:53
Kleo::Crypto::Gui::SignEncryptWizard::objectsResolved
void objectsResolved()
Page
Page
Definition: newsignencryptfileswizard.cpp:86
Kleo::Crypto::Gui::SignEncryptWizard::isMultipleProtocolsAllowed
bool isMultipleProtocolsAllowed() const
Definition: signencryptwizard.cpp:182
Kleo::Crypto::Gui::SignEncryptWizard::selectedProtocol
GpgME::Protocol selectedProtocol() const
Definition: signencryptwizard.cpp:146
Kleo::Crypto::Gui::ObjectsPage
Definition: objectspage.h:46
certificateresolver.h
Kleo::Crypto::Gui::SignEncryptWizard::setKeepResultPageOpenWhenDone
void setKeepResultPageOpenWhenDone(bool keep)
Definition: signencryptwizard.cpp:306
Kleo::Crypto::Gui::SignEncryptWizard::setSigningSelected
void setSigningSelected(bool selected)
Definition: signencryptwizard.cpp:161
Kleo::Crypto::Gui::SignEncryptWizard::presetProtocol
GpgME::Protocol presetProtocol() const
Definition: signencryptwizard.cpp:151
Kleo::Crypto::Gui::SignEncryptWizard::setRemoveUnencryptedFile
void setRemoveUnencryptedFile(bool remove)
Definition: signencryptwizard.cpp:256
taskcollection.h
resolverecipientspage.h
QList
Definition: commands/command.h:46
Kleo::Crypto::Gui::SignEncryptWizard::signerResolvePage
Gui::SignerResolvePage * signerResolvePage()
Definition: signencryptwizard.cpp:276
Kleo::Crypto::Gui::SignEncryptWizard::SignEncryptWizard
SignEncryptWizard(QWidget *parent=0, Qt::WindowFlags f=0)
Definition: signencryptwizard.cpp:118
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:42 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kleopatra

Skip menu "kleopatra"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

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