• 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
decryptverifyfileswizard.cpp
Go to the documentation of this file.
1 /* -*- mode: c++; c-basic-offset:4 -*-
2  crypto/gui/decryptverifywizard.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 "decryptverifyfileswizard.h"
36 
37 #include "decryptverifyoperationwidget.h"
38 
39 #include <crypto/gui/resultpage.h>
40 #include <crypto/gui/wizardpage.h>
41 
42 #include <crypto/task.h>
43 #include <crypto/taskcollection.h>
44 
45 #include <utils/scrollarea.h>
46 #include <utils/kleo_assert.h>
47 
48 #include <kleo/stl_util.h>
49 #include "libkleo/ui/filenamerequester.h"
50 
51 #include <KLocale>
52 
53 #include <QCheckBox>
54 #include <QLayout>
55 #include <QLabel>
56 #include <QEventLoop>
57 #include <QPointer>
58 #include <QAbstractButton>
59 #include <QScrollBar>
60 #include <QTimer>
61 
62 #include <boost/bind.hpp>
63 
64 #include <vector>
65 #include <cassert>
66 
67 using namespace Kleo;
68 using namespace Kleo::Crypto;
69 using namespace Kleo::Crypto::Gui;
70 using namespace boost;
71 
72 namespace {
73 
74  class HLine : public QFrame {
75  Q_OBJECT
76  public:
77  explicit HLine( QWidget * p=0, Qt::WindowFlags f=0 )
78  : QFrame( p, f )
79  {
80  setFrameStyle( QFrame::HLine|QFrame::Sunken );
81  }
82  };
83 
84  class OperationsWidget : public WizardPage {
85  Q_OBJECT
86  public:
87  explicit OperationsWidget( QWidget * p=0 );
88  ~OperationsWidget();
89 
90  void setOutputDirectory( const QString & dir ) {
91  m_ui.outputDirectoryFNR.setFileName( dir );
92  }
93 
94  QString outputDirectory() const {
95  return m_ui.outputDirectoryFNR.fileName();
96  }
97 
98  bool useOutputDirectory() const {
99  return m_ui.useOutputDirectoryCB.isChecked();
100  }
101 
102  void ensureIndexAvailable( unsigned int idx );
103 
104  DecryptVerifyOperationWidget * widget( unsigned int idx ) {
105  return m_widgets.at( idx );
106  }
107 
108  bool isComplete() const { return true; }
109  private:
110  std::vector<DecryptVerifyOperationWidget*> m_widgets;
111 
112  struct UI {
113  QCheckBox useOutputDirectoryCB;
114  QLabel outputDirectoryLB;
115  FileNameRequester outputDirectoryFNR;
116  ScrollArea scrollArea; // ### replace with KDScrollArea when done
117  QVBoxLayout vlay;
118  QHBoxLayout hlay;
119 
120  explicit UI( OperationsWidget * q );
121  } m_ui;
122  };
123 }
124 
125 class DecryptVerifyFilesWizard::Private {
126  friend class ::Kleo::Crypto::Gui::DecryptVerifyFilesWizard;
127  DecryptVerifyFilesWizard * const q;
128 public:
129  Private( DecryptVerifyFilesWizard * qq );
130  ~Private();
131 
132  void ensureIndexAvailable( unsigned int idx ) {
133  operationsPage.ensureIndexAvailable( idx );
134  }
135 
136 private:
137  OperationsWidget operationsPage;
138  Gui::ResultPage resultPage;
139 };
140 
141 
142 DecryptVerifyFilesWizard::DecryptVerifyFilesWizard( QWidget * p, Qt::WindowFlags f )
143  : Wizard( p, f ), d( new Private( this ) )
144 {
145 
146 }
147 
148 DecryptVerifyFilesWizard::~DecryptVerifyFilesWizard() {}
149 
150 void DecryptVerifyFilesWizard::setOutputDirectory( const QString & dir ) {
151  d->operationsPage.setOutputDirectory( dir );
152 }
153 
154 QString DecryptVerifyFilesWizard::outputDirectory() const {
155  return d->operationsPage.outputDirectory();
156 }
157 
158 bool DecryptVerifyFilesWizard::useOutputDirectory() const {
159  return d->operationsPage.useOutputDirectory();
160 }
161 
162 DecryptVerifyOperationWidget * DecryptVerifyFilesWizard::operationWidget( unsigned int idx ) {
163  d->ensureIndexAvailable( idx );
164  return d->operationsPage.widget( idx );
165 }
166 
167 void DecryptVerifyFilesWizard::onNext( int id )
168 {
169  if ( id == OperationsPage )
170  QTimer::singleShot( 0, this, SIGNAL(operationPrepared()) );
171  Wizard::onNext( id );
172 }
173 
174 void DecryptVerifyFilesWizard::setTaskCollection( const shared_ptr<TaskCollection> & coll )
175 {
176  kleo_assert( coll );
177  d->resultPage.setTaskCollection( coll );
178 }
179 
180 DecryptVerifyFilesWizard::Private::Private( DecryptVerifyFilesWizard * qq )
181  : q( qq ),
182  operationsPage( q ),
183  resultPage( q )
184 {
185  q->setPage( DecryptVerifyFilesWizard::OperationsPage, &operationsPage );
186  q->setPage( DecryptVerifyFilesWizard::ResultPage, &resultPage );
187  connect( &resultPage, SIGNAL(linkActivated(QString)), q, SIGNAL(linkActivated(QString)) );
188 
189  std::vector<int> order;
190  order.push_back( DecryptVerifyFilesWizard::OperationsPage );
191  order.push_back( DecryptVerifyFilesWizard::ResultPage );
192  q->setPageOrder( order );
193  operationsPage.setCommitPage( true );
194 }
195 
196 DecryptVerifyFilesWizard::Private::~Private() {}
197 
198 
199 
200 
201 
202 
203 
204 OperationsWidget::OperationsWidget( QWidget * p )
205  : WizardPage( p ), m_widgets(), m_ui( this )
206 {
207  setTitle( i18n("<b>Choose operations to be performed</b>") );
208  setSubTitle( i18n("Here you can check and, if needed, override "
209  "the operations Kleopatra detected for the input given.") );
210  setCommitPage( true );
211  setCustomNextButton( KGuiItem( i18n( "&Decrypt/Verify" ) ) );
212 }
213 
214 OperationsWidget::~OperationsWidget() {}
215 
216 OperationsWidget::UI::UI( OperationsWidget * q )
217  : useOutputDirectoryCB( i18n( "Create all output files in a single folder" ), q ),
218  outputDirectoryLB( i18n("&Output folder:"), q ),
219  outputDirectoryFNR( q ),
220  scrollArea( q ),
221  vlay( q ),
222  hlay()
223 {
224  KDAB_SET_OBJECT_NAME( useOutputDirectoryCB );
225  KDAB_SET_OBJECT_NAME( outputDirectoryLB );
226  KDAB_SET_OBJECT_NAME( outputDirectoryFNR );
227  KDAB_SET_OBJECT_NAME( scrollArea );
228 
229  KDAB_SET_OBJECT_NAME( vlay );
230  KDAB_SET_OBJECT_NAME( hlay );
231 
232  outputDirectoryFNR.setFilter( QDir::Dirs );
233 
234  useOutputDirectoryCB.setChecked( true );
235  connect( &useOutputDirectoryCB, SIGNAL(toggled(bool)), &outputDirectoryLB, SLOT(setEnabled(bool)) );
236  connect( &useOutputDirectoryCB, SIGNAL(toggled(bool)), &outputDirectoryFNR, SLOT(setEnabled(bool)) );
237 
238  assert( qobject_cast<QBoxLayout*>(scrollArea.widget()->layout()) );
239  static_cast<QBoxLayout*>(scrollArea.widget()->layout())->addStretch( 1 );
240  outputDirectoryLB.setBuddy( &outputDirectoryFNR );
241 
242  hlay.setMargin( 0 );
243 
244  vlay.addWidget( &scrollArea, 1 );
245  vlay.addWidget( &useOutputDirectoryCB );
246  vlay.addLayout( &hlay );
247  hlay.addWidget( &outputDirectoryLB );
248  hlay.addWidget( &outputDirectoryFNR );
249 }
250 
251 void OperationsWidget::ensureIndexAvailable( unsigned int idx ) {
252 
253  if ( idx < m_widgets.size() )
254  return;
255 
256  assert( m_ui.scrollArea.widget() );
257  assert( qobject_cast<QBoxLayout*>( m_ui.scrollArea.widget()->layout() ) );
258  QBoxLayout & blay = *static_cast<QBoxLayout*>( m_ui.scrollArea.widget()->layout() );
259 
260  for ( unsigned int i = m_widgets.size() ; i < idx+1 ; ++i ) {
261  if ( i )
262  blay.insertWidget( blay.count()-1, new HLine( m_ui.scrollArea.widget() ) );
263  DecryptVerifyOperationWidget * w = new DecryptVerifyOperationWidget( m_ui.scrollArea.widget() );
264  blay.insertWidget( blay.count()-1, w );
265  w->show();
266  m_widgets.push_back( w );
267  }
268 }
269 
270 #include "decryptverifyfileswizard.moc"
271 #include "moc_decryptverifyfileswizard.cpp"
decryptverifyfileswizard.h
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::ResultPage
Definition: decryptverifyfileswizard.h:56
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::setOutputDirectory
void setOutputDirectory(const QString &dir)
Definition: decryptverifyfileswizard.cpp:150
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::linkActivated
void linkActivated(const QString &link)
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::operationPrepared
void operationPrepared()
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::OperationsPage
Definition: decryptverifyfileswizard.h:55
QWidget
Kleo::Crypto::Gui::DecryptVerifyFilesWizard
Definition: decryptverifyfileswizard.h:51
decryptverifyoperationwidget.h
kleo_assert.h
boost::shared_ptr< TaskCollection >
d
#define d
Definition: adduseridcommand.cpp:90
Kleo::Crypto::Gui::Wizard::onNext
virtual void onNext(int currentId)
Definition: wizard.cpp:344
KDAB_SET_OBJECT_NAME
#define KDAB_SET_OBJECT_NAME(x)
Definition: kdtoolsglobal.h:66
Kleo::ScrollArea
Definition: scrollarea.h:40
wizardpage.h
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::~DecryptVerifyFilesWizard
~DecryptVerifyFilesWizard()
Definition: decryptverifyfileswizard.cpp:148
resultpage.h
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::operationWidget
DecryptVerifyOperationWidget * operationWidget(unsigned int idx)
Definition: decryptverifyfileswizard.cpp:162
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::setTaskCollection
void setTaskCollection(const boost::shared_ptr< TaskCollection > &coll)
Definition: decryptverifyfileswizard.cpp:174
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::useOutputDirectory
bool useOutputDirectory() const
Definition: decryptverifyfileswizard.cpp:158
kleo_assert
#define kleo_assert(cond)
Definition: kleo_assert.h:84
dir
static QString dir(const QString &id)
Definition: filedialog.cpp:53
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::DecryptVerifyFilesWizard
DecryptVerifyFilesWizard(QWidget *parent=0, Qt::WindowFlags f=0)
Definition: decryptverifyfileswizard.cpp:142
scrollarea.h
task.h
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::DecryptVerifyOperationWidget
Definition: decryptverifyoperationwidget.h:55
Kleo::Crypto::Gui::DecryptVerifyFilesWizard::outputDirectory
QString outputDirectory() const
Definition: decryptverifyfileswizard.cpp:154
Kleo::Crypto::Gui::WizardPage
Definition: wizardpage.h:48
taskcollection.h
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:56:41 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