[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdepim/kleopatra/crypto/gui
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2008-04-16 14:26:19
Message-ID: 1208355979.220238.32719.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 797606 by osterfeld:

port D/V wizard to Kleo::Crypto::Gui::Wizard

 M  +37 -37    decryptverifywizard.cpp  
 M  +10 -5     decryptverifywizard.h  
 M  +18 -9     wizard.cpp  
 M  +11 -0     wizardpage.cpp  
 M  +5 -0      wizardpage.h  


--- trunk/KDE/kdepim/kleopatra/crypto/gui/decryptverifywizard.cpp #797605:797606
@@ -38,6 +38,7 @@
 
 #include <crypto/gui/scrollarea.h>
 #include <crypto/gui/resultdisplaywidget.h>
+#include <crypto/gui/wizardpage.h>
 
 #include <crypto/task.h>
 
@@ -49,13 +50,13 @@
 #include <KLocale>
 
 #include <QScrollArea>
-#include <QWizardPage>
 #include <QLayout>
 #include <QLabel>
 #include <QEventLoop>
 #include <QPointer>
 #include <QAbstractButton>
 #include <QScrollBar>
+#include <QTimer>
 
 #include <boost/bind.hpp>
 
@@ -78,11 +79,11 @@
         }
     };
 
-    class OperationsPage : public QWizardPage {
+    class OperationsWidget : public WizardPage {
         Q_OBJECT
     public:
-        explicit OperationsPage( QWidget * p=0 );
-        ~OperationsPage();
+        explicit OperationsWidget( QWidget * p=0 );
+        ~OperationsWidget();
 
         void setOutputDirectory( const QString & dir ) {
             m_ui.outputDirectoryFNR.setFileName( dir );
@@ -98,6 +99,7 @@
             return m_widgets.at( idx );
         }
 
+        bool isComplete() const { return true; }
     private:
         std::vector<DecryptVerifyOperationWidget*> m_widgets;
 
@@ -108,16 +110,16 @@
             QVBoxLayout     vlay;
             QHBoxLayout      hlay;
 
-            explicit UI( OperationsPage * q );
+            explicit UI( OperationsWidget * q );
         } m_ui;
     };
 
 
-    class ResultPage : public QWizardPage {
+    class ResultWidget : public WizardPage {
         Q_OBJECT
     public:
-        explicit ResultPage( QWidget * p=0 );
-        ~ResultPage();
+        explicit ResultWidget( QWidget * p=0 );
+        ~ResultWidget();
 
         void ensureIndexAvailable( unsigned int idx );
 
@@ -142,7 +144,7 @@
             ScrollArea   scrollArea; // ### replace with KDScrollArea when done
             QVBoxLayout vlay;
             
-            explicit UI( ResultPage * q );
+            explicit UI( ResultWidget * q );
         } m_ui;
     };
 }
@@ -160,14 +162,13 @@
     }
 
 private:
-    OperationsPage operationsPage;
-    ResultPage resultPage;
-    mutable bool m_prepEmitted;
+    OperationsWidget operationsPage;
+    ResultWidget resultPage;
 };
 
 
 DecryptVerifyWizard::DecryptVerifyWizard( QWidget * p, Qt::WindowFlags f )
-    : QWizard( p, f ), d( new Private( this ) )
+    : Wizard( p, f ), d( new Private( this ) )
 {
 
 }
@@ -192,14 +193,11 @@
     return d->resultPage.widget( idx );
 }
 
-
-int DecryptVerifyWizard::nextId() const
+void DecryptVerifyWizard::onNext( int id )
 {
-    if ( currentPage() == &d->operationsPage && !d->m_prepEmitted ) {
-        d->m_prepEmitted = true;
-        emit const_cast<DecryptVerifyWizard*>( this )->operationPrepared();
-    }
-    return QWizard::nextId();
+    if ( id == OperationsPage )
+        QTimer::singleShot( 0, this, SIGNAL( operationPrepared() ) );
+    Wizard::onNext( id );
 }
 
 void DecryptVerifyWizard::connectTask( const boost::shared_ptr<Task> & task, unsigned int idx )
@@ -221,12 +219,15 @@
 DecryptVerifyWizard::Private::Private( DecryptVerifyWizard * qq )
     : q( qq ),
       operationsPage( q ),
-      resultPage( q ),
-      m_prepEmitted( false )
+      resultPage( q )
 {
-    q->setOptions( q->options() | NoBackButtonOnStartPage | NoBackButtonOnLastPage );
-    q->addPage( &operationsPage );
-    q->addPage( &resultPage );
+    q->setPage( DecryptVerifyWizard::OperationsPage, &operationsPage );
+    q->setPage( DecryptVerifyWizard::ResultPage, &resultPage );
+    std::vector<int> order;
+    order.push_back( DecryptVerifyWizard::OperationsPage );
+    order.push_back( DecryptVerifyWizard::ResultPage );
+    q->setPageOrder( order );
+    operationsPage.setCommitPage( true );
 }
 
 DecryptVerifyWizard::Private::~Private() {}
@@ -237,19 +238,19 @@
 
 
 
-OperationsPage::OperationsPage( QWidget * p )
-    : QWizardPage( p ), m_widgets(), m_ui( this )
+OperationsWidget::OperationsWidget( QWidget * p )
+    : WizardPage( p ), m_widgets(), m_ui( this )
 {
     setTitle( i18n("Choose operations to be performed") );
     setSubTitle( i18n("Here you can check and, if needed, override "
                       "the operations Kleopatra detected for the input given.") );
     setCommitPage( true );
-    setButtonText( QWizard::CommitButton, i18n("&Decrypt/Verify") );
+    setCustomNextButton( KGuiItem( i18n( "&Decrypt/Verify" ) ) );
 }
 
-OperationsPage::~OperationsPage() {}
+OperationsWidget::~OperationsWidget() {}
 
-OperationsPage::UI::UI( OperationsPage * q )
+OperationsWidget::UI::UI( OperationsWidget * q )
     : outputDirectoryLB( i18n("&Output directory:"), q ),
       outputDirectoryFNR( q ),
       scrollArea( q ),
@@ -275,7 +276,7 @@
     hlay.addWidget( &outputDirectoryFNR );
 }
 
-void OperationsPage::ensureIndexAvailable( unsigned int idx ) {
+void OperationsWidget::ensureIndexAvailable( unsigned int idx ) {
 
     if ( idx < m_widgets.size() )
         return;
@@ -299,17 +300,16 @@
 
 
 
-ResultPage::ResultPage( QWidget * p )
-    : QWizardPage( p ), m_widgets(), m_completed( false ), m_ui( this )
+ResultWidget::ResultWidget( QWidget * p )
+    : WizardPage( p ), m_widgets(), m_completed( false ), m_ui( this )
 {
     setTitle( i18n("Results") );
     setSubTitle( i18n("Detailed operation results") );
-    setButtonText( QWizard::FinishButton, i18n("&OK") );
 }
 
-ResultPage::~ResultPage() {}
+ResultWidget::~ResultWidget() {}
 
-ResultPage::UI::UI( ResultPage * q )
+ResultWidget::UI::UI( ResultWidget * q )
     : scrollArea( q ),
       vlay( q )
 {
@@ -322,7 +322,7 @@
     vlay.addWidget( &scrollArea );
 }
 
-void ResultPage::ensureIndexAvailable( unsigned int idx ) {
+void ResultWidget::ensureIndexAvailable( unsigned int idx ) {
 
     if ( idx < m_widgets.size() )
         return;
--- trunk/KDE/kdepim/kleopatra/crypto/gui/decryptverifywizard.h #797605:797606
@@ -33,7 +33,7 @@
 #ifndef __KLEOPATRA_CRYPTO_GUI_DECRYPTVERIFYWIZARD_H__
 #define __KLEOPATRA_CRYPTO_GUI_DECRYPTVERIFYWIZARD_H__
 
-#include <QWizard>
+#include <crypto/gui/wizard.h>
 
 #include <utils/pimpl_ptr.h>
 
@@ -47,9 +47,14 @@
     class DecryptVerifyOperationWidget;
     class ResultDisplayWidget;
 
-    class DecryptVerifyWizard : public QWizard {
+    class DecryptVerifyWizard : public Wizard {
         Q_OBJECT
     public:
+        enum Page {
+            OperationsPage=0,
+            ResultPage
+        };
+
         explicit DecryptVerifyWizard( QWidget * parent=0, Qt::WindowFlags f=0 );
         ~DecryptVerifyWizard();
 
@@ -61,16 +66,16 @@
         DecryptVerifyOperationWidget * operationWidget( unsigned int idx );
         ResultDisplayWidget * resultWidget( unsigned int idx );
 
-        /* reimp */ int nextId() const;
-
     public Q_SLOTS:
         void setOperationCompleted();
 
     Q_SIGNALS:
-        void canceled();
         void operationPrepared();
 
     private:
+        /* reimpl */ void onNext( int id );
+
+    private:
         class Private;
         kdtools::pimpl_ptr<Private> d;
     };
--- trunk/KDE/kdepim/kleopatra/crypto/gui/wizard.cpp #797605:797606
@@ -37,9 +37,11 @@
 
 #include <utils/kleo_assert.h>
 
+#include <KDebug>
+#include <KGuiItem>
 #include <KLocale>
 #include <KPushButton>
-#include <kdebug.h>
+#include <KStandardGuiItem>
 
 #include <QDialogButtonBox>
 #include <QFrame>
@@ -73,11 +75,11 @@
     std::map<int, WizardPage*> idToPage;
     int currentId;
     QStackedWidget* stack;
-    QPushButton* nextButton;
+    KPushButton* nextButton;
     QPushButton* backButton;
     QPushButton* cancelButton;
-    QString finishItem;
-    QString nextItem;
+    KGuiItem finishItem;
+    KGuiItem nextItem;
     QFrame* titleFrame;
     QLabel* titleLabel;
     QLabel* subTitleLabel;
@@ -90,8 +92,8 @@
     : q( qq ), currentId( -1 ), stack( new QStackedWidget )
 {
     const QWizard wiz;
-    nextItem = wiz.buttonText( QWizard::NextButton );
-    finishItem = wiz.buttonText( QWizard::FinishButton );
+    nextItem = KStandardGuiItem::forward();
+    finishItem = KStandardGuiItem::ok();
     QVBoxLayout * const top = new QVBoxLayout( q );
     top->setMargin( 0 );
     titleFrame = new QFrame;
@@ -132,8 +134,8 @@
     q->connect( backButton, SIGNAL( clicked() ), q, SLOT( back() ) );
     box->addButton( backButton, QDialogButtonBox::ActionRole );
 
-    nextButton = new QPushButton;
-    nextButton->setText( nextItem );
+    nextButton = new KPushButton;
+    nextButton->setGuiItem( nextItem );
     q->connect( nextButton, SIGNAL( clicked() ), q, SLOT( next() ) );
     box->addButton( nextButton, QDialogButtonBox::ActionRole );
     buttonLayout->addWidget( box );
@@ -156,10 +158,17 @@
 {
     const bool isLast = isLastPage( currentId );
     const bool canGoToNext = q->canGoToNextPage();
-    nextButton->setText( isLast ? finishItem : nextItem );
+    WizardPage* const page = q->page( currentId );
+    assert( page );
+    KGuiItem customNext = page->customNextButton();
+    if ( customNext.text().isEmpty() && customNext.icon().isNull() )
+        nextButton->setGuiItem( isLast ? finishItem : nextItem );
+    else
+        nextButton->setGuiItem( customNext );
     nextButton->setEnabled( canGoToNext );
     cancelButton->setEnabled( !isLast || !canGoToNext );
     backButton->setEnabled( q->canGoToPreviousPage() );
+        
 }
 
 void Wizard::Private::updateHeader()
--- trunk/KDE/kdepim/kleopatra/crypto/gui/wizardpage.cpp #797605:797606
@@ -35,6 +35,8 @@
 
 #include "wizardpage.h"
 
+#include <KGuiItem>
+
 using namespace Kleo::Crypto::Gui;
 
 class WizardPage::Private {
@@ -49,6 +51,7 @@
     QString title;
     QString subTitle;
     QString explanation;
+    KGuiItem customNextButton;
 };
 
 
@@ -116,6 +119,14 @@
     emit explanationChanged();
 }
 
+KGuiItem WizardPage::customNextButton() const
+{
+    return d->customNextButton;
+}
+void WizardPage::setCustomNextButton( const KGuiItem& item )
+{
+    d->customNextButton = item;
+}
 
 WizardPage::~WizardPage() {}
 
--- trunk/KDE/kdepim/kleopatra/crypto/gui/wizardpage.h #797605:797606
@@ -37,6 +37,8 @@
 
 #include <utils/pimpl_ptr.h>
 
+class KGuiItem;
+
 namespace Kleo {
 namespace Crypto {
 namespace Gui {
@@ -64,6 +66,9 @@
         QString explanation() const;
         void setExplanation( const QString& explanation );
 
+        KGuiItem customNextButton() const;
+        void setCustomNextButton( const KGuiItem& item );
+
     Q_SIGNALS:
         void completeChanged();
         void explanationChanged();
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic