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

List:       kde-commits
Subject:    KDE/kdepim/kleopatra/crypto
From:       Frank Osterfeld <frank.osterfeld () kdemail ! net>
Date:       2008-05-09 8:24:14
Message-ID: 1210321454.578614.14124.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 805700 by osterfeld:

Support multiple progress labels, used in the S/E files case to have separate \
progress information for S/Mime and OpenPGP

 M  +35 -5     gui/resultpage.cpp  
 M  +1 -1      gui/resultpage.h  
 M  +5 -0      signencryptfilestask.cpp  
 M  +1 -0      signencryptfilestask.h  
 M  +4 -0      task.cpp  
 M  +2 -0      task.h  


--- trunk/KDE/kdepim/kleopatra/crypto/gui/resultpage.cpp #805699:805700
@@ -43,6 +43,7 @@
 #include <KLocalizedString>
 
 #include <QCheckBox>
+#include <QHash>
 #include <QHBoxLayout>
 #include <QIcon>
 #include <QLabel>
@@ -67,10 +68,12 @@
     void allDone();
     void addResultWidget( ResultItemWidget* widget );
     void keepOpenWhenDone( bool keep );
+    QLabel * labelForTag( const QString & tag );
 
     shared_ptr<TaskCollection> m_tasks;
     QProgressBar* m_progressBar;
-    QLabel* m_progressLabel;
+    QHash<QString, QLabel*> m_progressLabelByTag;
+    QVBoxLayout* m_progressLabelLayout;
     int m_lastErrorItemIndex;
     ScrollArea* m_scrollArea;
     ResultListWidget* m_resultList;
@@ -89,8 +92,9 @@
 ResultPage::Private::Private( ResultPage* qq ) : q( qq ), m_lastErrorItemIndex( 0 )
 {
     QBoxLayout* const layout = new QVBoxLayout( q );
-    m_progressLabel = new QLabel;
-    layout->addWidget( m_progressLabel );
+    QWidget* const labels = new QWidget;
+    m_progressLabelLayout = new QVBoxLayout( labels );
+    layout->addWidget( labels );
     m_progressBar = new QProgressBar;
     layout->addWidget( m_progressBar );
     m_resultList = new ResultListWidget;
@@ -121,8 +125,13 @@
     q->setAutoAdvance( !m_keepOpenCB->isChecked() && !m_tasks->errorOccurred() );
     m_progressBar->setRange( 0, 100 );
     m_progressBar->setValue( 100 );
-    m_progressLabel->setText( i18n( "All operations completed." ) );
     m_tasks.reset();
+    Q_FOREACH ( const QString & i, m_progressLabelByTag.keys() ) {
+        if ( !i.isEmpty() )
+            m_progressLabelByTag.value( i )->setText( i18n("%1: All operations \
completed.", i ) ); +        else
+            m_progressLabelByTag.value( i )->setText( i18n("All operations \
completed." ) ); +    }
     emit q->completeChanged();
 }
 
@@ -133,7 +142,13 @@
 void ResultPage::Private::started( const shared_ptr<Task> & task )
 {
     assert( task );
-    m_progressLabel->setText( i18nc( "number, operation description", "Operation %1: \
%2", m_tasks->numberOfCompletedTasks() + 1, task->label() ) ); +    const QString tag \
= task->tag(); +    QLabel * const label = labelForTag( tag );
+    assert( label );
+    if ( tag.isEmpty() )
+        label->setText( i18nc( "number, operation description", "Operation %1: %2", \
m_tasks->numberOfCompletedTasks() + 1, task->label() ) ); +    else
+        label->setText( i18nc( "tag( \"OpenPGP\" or \"CMS\"),  operation \
description", "%1: %2", tag, task->label() ) );  }
 
 ResultPage::ResultPage( QWidget* parent, Qt::WindowFlags flags ) : WizardPage( \
parent, flags ), d( new Private( this ) ) @@ -157,6 +172,7 @@
 
 void ResultPage::setTaskCollection( const shared_ptr<TaskCollection> & coll )
 {
+    assert( !d->m_tasks );
     if ( d->m_tasks == coll )
         return;
     d->m_tasks = coll;
@@ -170,9 +186,23 @@
              this, SLOT(result(boost::shared_ptr<const Kleo::Crypto::Task::Result>)) \
                );
     connect( d->m_tasks.get(), \
                SIGNAL(started(boost::shared_ptr<Kleo::Crypto::Task>)),
              this, SLOT(started(boost::shared_ptr<Kleo::Crypto::Task>)) );
+    
+    Q_FOREACH ( const shared_ptr<Task> & i, d->m_tasks->tasks() ) // create labels \
for all tags in collection +        assert( i && d->labelForTag( i->tag() ) );
     emit completeChanged();
 }
 
+QLabel* ResultPage::Private::labelForTag( const QString & tag ) {
+    if ( QLabel * const label = m_progressLabelByTag.value( tag ) )
+        return label;
+    QLabel* label = new QLabel;
+    label->setTextFormat( Qt::RichText );
+    label->setWordWrap( true );
+    m_progressLabelLayout->addWidget( label );
+    m_progressLabelByTag.insert( tag, label );
+    return label;
+}
+
 bool ResultPage::isComplete() const
 {
     return d->m_tasks ? d->m_tasks->allTasksCompleted() : true;
--- trunk/KDE/kdepim/kleopatra/crypto/gui/resultpage.h #805699:805700
@@ -59,7 +59,7 @@
 
     void setTaskCollection( const boost::shared_ptr<TaskCollection> & coll );
 
-    bool isComplete() const;
+    /* reimp */ bool isComplete() const;
 
     bool keepOpenWhenDone() const;
     void setKeepOpenWhenDone( bool keep );
--- trunk/KDE/kdepim/kleopatra/crypto/signencryptfilestask.cpp #805699:805700
@@ -34,6 +34,7 @@
 
 #include "signencryptfilestask.h"
 
+#include <utils/formatting.h>
 #include <utils/input.h>
 #include <utils/output.h>
 #include <utils/stl_util.h>
@@ -328,6 +329,10 @@
     return d->input ? d->input->label() : QString();
 }
 
+QString SignEncryptFilesTask::tag() const {
+    return Formatting::displayName( protocol() );
+}
+
 unsigned long long SignEncryptFilesTask::inputSize() const
 {
     return QFileInfo( d->inputFileName ).size();
--- trunk/KDE/kdepim/kleopatra/crypto/signencryptfilestask.h #805699:805700
@@ -74,6 +74,7 @@
 
         /* reimp */ void cancel();
         /* reimp */ QString label() const;
+        /* reimp */ QString tag() const;
 
     private:
         /* reimp */ void doStart();
--- trunk/KDE/kdepim/kleopatra/crypto/task.cpp #805699:805700
@@ -137,6 +137,10 @@
     return inputSize();
 }
 
+QString Task::tag() const {
+    return QString();
+}
+
 QString Task::progressLabel() const
 {
     return d->m_progressLabel;
--- trunk/KDE/kdepim/kleopatra/crypto/task.h #805699:805700
@@ -65,6 +65,8 @@
 
         virtual QString label() const = 0;
 
+        virtual QString tag() const;
+
         QString progressLabel() const;
         unsigned long long processedSize() const;
         unsigned long long totalSize() const;


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

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