[Digikam-devel] extragear/graphics/digikam

Gilles Caulier caulier.gilles at free.fr
Fri Jan 27 09:29:14 GMT 2006


SVN commit 502751 by cgilles:

digikam from trunk : Showfoto/IE common GUI implementation : IOFileProgressBar give 3 running mode now : filename, progress bar, and progress bar with cancel button. We need to use this widget in image saving implementation instead KProgressDialog from SavingContextContainer !

CCMAIL: digikam-devel at kde.org, marcel.wiesweg at gmx.de

 M  +4 -4      showfoto/showfoto.cpp  
 M  +4 -4      utilities/imageeditor/editor/imagewindow.cpp  
 M  +46 -13    utilities/imageeditor/editor/iofileprogressbar.cpp  
 M  +17 -4     utilities/imageeditor/editor/iofileprogressbar.h  


--- trunk/extragear/graphics/digikam/showfoto/showfoto.cpp #502750:502751
@@ -789,14 +789,14 @@
     m_openFilesInFolderAction->setEnabled(false);
     m_fileOpenAction->setEnabled(false);
 
-    m_nameLabel->progressBarVisible(true);
+    m_nameLabel->progressBarMode(Digikam::IOFileProgressBar::ProgressBarMode);
 }
 
 void ShowFoto::slotLoadingFinished(const QString &filename, bool success, bool isReadOnly)
 {
     //TODO: handle success == false
     
-    m_nameLabel->progressBarVisible(false);
+    m_nameLabel->progressBarMode(Digikam::IOFileProgressBar::FileNameMode);
     m_isReadOnly = isReadOnly;
     slotUpdateItemInfo();
 
@@ -820,7 +820,7 @@
     m_openFilesInFolderAction->setEnabled(false);
     m_fileOpenAction->setEnabled(false);
     
-    m_nameLabel->progressBarVisible(true);
+    m_nameLabel->progressBarMode(Digikam::IOFileProgressBar::CancelProgressBarMode);
 }
 
 void ShowFoto::finishSaving(bool success)
@@ -838,7 +838,7 @@
     m_openFilesInFolderAction->setEnabled(true);
     m_fileOpenAction->setEnabled(true);
 
-    m_nameLabel->progressBarVisible(false);
+    m_nameLabel->progressBarMode(Digikam::IOFileProgressBar::FileNameMode);
 }
 
 void ShowFoto::slotSavingFinished(const QString &filename, bool success)
--- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/imagewindow.cpp #502750:502751
@@ -552,14 +552,14 @@
     m_rightSidebar->noCurrentItem();
     toggleActions(false);
 
-    m_nameLabel->progressBarVisible(true);
+    m_nameLabel->progressBarMode(IOFileProgressBar::ProgressBarMode);
 }
 
 void ImageWindow::slotLoadingFinished(const QString &filename, bool success, bool isReadOnly)
 {
     //TODO: handle success == false
 
-    m_nameLabel->progressBarVisible(false);
+    m_nameLabel->progressBarMode(IOFileProgressBar::FileNameMode);
     m_isReadOnly = isReadOnly;
     slotUpdateItemInfo();
 
@@ -579,7 +579,7 @@
     m_rightSidebar->noCurrentItem();
     toggleActions(false);
 
-    m_nameLabel->progressBarVisible(true);
+    m_nameLabel->progressBarMode(IOFileProgressBar::CancelProgressBarMode);
 }
 
 void ImageWindow::finishSaving(bool success)
@@ -595,7 +595,7 @@
     // TODO updated image propertie side bar!
     toggleActions(true);
 
-    m_nameLabel->progressBarVisible(false);
+    m_nameLabel->progressBarMode(IOFileProgressBar::FileNameMode);
 }
 
 void ImageWindow::slotSavingFinished(const QString &filename, bool success)
--- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/iofileprogressbar.cpp #502750:502751
@@ -1,8 +1,8 @@
 /* ============================================================
  * Author: Gilles Caulier <caulier dot gilles at free.fr>
  * Date  : 2006-01-24
- * Description : a progress bar used to display io file acess 
- *               progressor or the current file name.
+ * Description : a progress bar used to display io file access
+ *               progress or the current file name.
  * 
  * Copyright 2006 by Gilles Caulier
  *
@@ -22,10 +22,15 @@
 // Qt includes.
   
 #include "qlabel.h"
+#include <qlayout.h>
+#include "qwidget.h"
+#include "qpushbutton.h"
  
 // KDE includes.
 
 #include "kprogress.h"
+#include <klocale.h>
+#include <kiconloader.h>
 
 // Local includes.
 
@@ -39,7 +44,7 @@
     
 public:
 
-    enum WidgetVisible
+    enum WidgetStackEnum
     {
         FileNameLabel=0,      
         FileAcessProgressBar
@@ -49,24 +54,44 @@
     {
         fileNameLabel        = 0; 
         fileAcessProgressBar = 0;
+        progressWidget       = 0;
+        cancelButton         = 0;
     }
 
-    QLabel    *fileNameLabel;
+    QLabel      *fileNameLabel;
+    
+    QWidget     *progressWidget;
 
-    KProgress *fileAcessProgressBar;
+    QPushButton *cancelButton;
+
+    KProgress   *fileAcessProgressBar;
 };
 
 IOFileProgressBar::IOFileProgressBar(QWidget *parent)
                  : QWidgetStack(parent, 0, Qt::WDestructiveClose)
 {
     d = new IOFileProgressBarPriv;
-    d->fileNameLabel        = new QLabel(this);
-    d->fileAcessProgressBar = new KProgress(this);
+
+    d->fileNameLabel  = new QLabel(this);
+    d->progressWidget = new QWidget(this);
+    QHBoxLayout *hBox = new QHBoxLayout(d->progressWidget);
+    d->fileAcessProgressBar = new KProgress(d->progressWidget);
     d->fileAcessProgressBar->setTotalSteps(100);
+    d->cancelButton = new QPushButton(d->progressWidget);
+    d->cancelButton->setSizePolicy( QSizePolicy( QSizePolicy::Minimum, QSizePolicy::Minimum ) );
+    d->cancelButton->setPixmap( SmallIcon( "cancel" ) );
+      
+    hBox->addWidget(d->fileAcessProgressBar);
+    hBox->addWidget(d->cancelButton);
 
     addWidget(d->fileNameLabel, IOFileProgressBarPriv::FileNameLabel);
-    addWidget(d->fileAcessProgressBar, IOFileProgressBarPriv::FileAcessProgressBar);
-    progressBarVisible(false);
+    addWidget(d->progressWidget, IOFileProgressBarPriv::FileAcessProgressBar);
+    setMaximumHeight( fontMetrics().height() );
+
+    connect( d->cancelButton, SIGNAL( clicked() ),
+             this, SIGNAL( signalCancelButtonPressed() ) );
+           
+    progressBarMode(FileNameMode);
 }      
 
 IOFileProgressBar::~IOFileProgressBar()
@@ -89,14 +114,22 @@
     d->fileAcessProgressBar->setProgress(v);
 }
 
-void IOFileProgressBar::progressBarVisible(bool v)
+void IOFileProgressBar::progressBarMode( int mode )
 {
-    if (v)
+    if ( mode == FileNameMode)
     {
+        raiseWidget(IOFileProgressBarPriv::FileNameLabel);
+    }
+    else if ( mode == ProgressBarMode )
+    {
+        d->cancelButton->hide();
         raiseWidget(IOFileProgressBarPriv::FileAcessProgressBar);
     }
-    else
-        raiseWidget(IOFileProgressBarPriv::FileNameLabel);
+    else  // CancelProgressBarMode
+    {
+        d->cancelButton->show();
+        raiseWidget(IOFileProgressBarPriv::FileAcessProgressBar);
+    }
 }
 
 }  // namespace Digikam
--- trunk/extragear/graphics/digikam/utilities/imageeditor/editor/iofileprogressbar.h #502750:502751
@@ -1,9 +1,9 @@
 /* ============================================================
  * Author: Gilles Caulier <caulier dot gilles at free.fr>
  * Date  : 2006-01-24
- * Description : a progress bar used to display io file acess 
- *               progressor or the current file name.
- * 
+ * Description : a progress bar used to display io file access
+ *               progress or the current file name.
+ *
  * Copyright 2006 by Gilles Caulier
  *
  * This program is free software; you can redistribute it
@@ -47,10 +47,23 @@
     ~IOFileProgressBar();
   
     void setText(QString text);
-    void progressBarVisible(bool v);
+    void progressBarMode(int mode);
     void setProgressValue( int v );
     void setAlignment(int a);
 
+public:
+
+    enum IOFileProgressBarMode
+    {
+        FileNameMode=0,
+        ProgressBarMode,
+        CancelProgressBarMode
+    };
+
+signals:
+
+    void signalCancelButtonPressed();
+    
 private:
 
     IOFileProgressBarPriv* d;



More information about the Digikam-devel mailing list