[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [bookmanager/exportImport] managerpart: Update GUI when copying books in the worker thread
From: Riccardo Bellini <riccardo.bellini1988 () gmail ! com>
Date: 2014-02-28 19:21:00
Message-ID: E1WJSzU-0006Oj-6H () scm ! kde ! org
[Download RAW message or body]
Git commit b4c1c1b1daf9d37a2e9a285a1c8f23dd70460049 by Riccardo Bellini.
Committed on 28/02/2014 at 19:20.
Pushed by bellini into branch 'exportImport'.
Update GUI when copying books in the worker thread
The GUI now shows a progress bar and gets notified by the worker thread,
by means of a chain of signal/signal and signal/slot connections, when a
book has been copied. The signal passed from the worker has two
parameters:
- The title of the book (for the purpose of display)
- The current percentage of the copying process (to update the progress
bar)
M +34 -0 managerpart/backupcollectionassistant.cpp
M +6 -0 managerpart/backupcollectionassistant.h
M +3 -7 managerpart/collectionorganizerwidget.cpp
M +4 -1 managerpart/collectionorganizerwidget.h
M +4 -8 managerpart/tools/collectionorganizer/collectionorganizer.cpp
M +1 -1 managerpart/tools/collectionorganizer/collectionorganizer.h
M +2 -1 managerpart/tools/collectionorganizer/copycollectionworker.cpp
M +1 -1 managerpart/tools/collectionorganizer/copycollectionworker.h
http://commits.kde.org/bookmanager/b4c1c1b1daf9d37a2e9a285a1c8f23dd70460049
diff --git a/managerpart/backupcollectionassistant.cpp \
b/managerpart/backupcollectionassistant.cpp index b7ea1aa..a327e57 100644
--- a/managerpart/backupcollectionassistant.cpp
+++ b/managerpart/backupcollectionassistant.cpp
@@ -23,6 +23,7 @@
// Qt includes
#include <qcheckbox.h>
+#include <qprogressbar.h>
// KDE includes
#include <klocalizedstring.h>
@@ -79,6 +80,10 @@ OrganizeCollectionPage::OrganizeCollectionPage(CollectionDB * \
collection, mainLayout->addWidget(m_introductionLabel);
m_collectionOrganizerWidget = new CollectionOrganizerWidget(m_collection, this);
+ connect(m_collectionOrganizerWidget, SIGNAL(bookCopied(const QString &, int)),
+ this, SLOT(updateGUI(const QString &, int)));
+ connect(m_collectionOrganizerWidget, SIGNAL(collectionOrganizationCompleted()),
+ this, SLOT(organizationCompleted()));
mainLayout->addWidget(m_collectionOrganizerWidget);
@@ -97,8 +102,21 @@ OrganizeCollectionPage::OrganizeCollectionPage(CollectionDB * \
collection,
connect(m_organizeCollectionPushButton, SIGNAL(clicked()), \
SLOT(organizeCollectionClicked()));
organizeCollectionLayout->addWidget(m_organizeCollectionPushButton);
+
+ m_progressContainerWidget = new QWidget;
+ QVBoxLayout * progressContainerLayout = new QVBoxLayout;
+ m_organizationProgressBar = new QProgressBar;
+ m_currentBookLabel = new QLabel;
+ m_organizationProgressBar->setValue(0);
+ progressContainerLayout->addWidget(m_currentBookLabel);
+ progressContainerLayout->addWidget(m_organizationProgressBar);
+ m_progressContainerWidget->setLayout(progressContainerLayout);
+ // hide the progress container widget
+ m_progressContainerWidget->hide();
+
organizeCollectionLayout->addStretch();
mainLayout->addLayout(organizeCollectionLayout);
+ mainLayout->addWidget(m_progressContainerWidget);
setLayout(mainLayout);
}
@@ -118,8 +136,24 @@ void OrganizeCollectionPage::collectionOrganizedClicked(bool \
checked) }
+void OrganizeCollectionPage::updateGUI(const QString & book, int percentage)
+{
+ m_organizationProgressBar->setValue(percentage);
+ m_currentBookLabel->setText(book);
+}
+
+
+void OrganizeCollectionPage::organizationCompleted()
+{
+ // ensure the progress bar is full
+ m_organizationProgressBar->setValue(100);
+}
+
+
void OrganizeCollectionPage::organizeCollectionClicked()
{
+ // show the progress widget
+ m_progressContainerWidget->show();
// call the collection organizer
m_collectionOrganizerWidget->organizeCollection();
}
diff --git a/managerpart/backupcollectionassistant.h \
b/managerpart/backupcollectionassistant.h index 60b517b..4f2d740 100644
--- a/managerpart/backupcollectionassistant.h
+++ b/managerpart/backupcollectionassistant.h
@@ -33,6 +33,7 @@ class OrganizeCollectionPage;
class CollectionOrganizerWidget;
class QLabel;
class QCheckBox;
+class QProgressBar;
class QPushButton;
class KPageWidgetItem;
@@ -78,6 +79,8 @@ public:
private slots:
void collectionOrganizedClicked(bool checked);
+ void updateGUI(const QString & book, int percentage);
+ void organizationCompleted();
void organizeCollectionClicked();
private:
@@ -86,6 +89,9 @@ private:
QLabel * m_introductionLabel;
QCheckBox * m_organizedCheckBox;
QPushButton * m_organizeCollectionPushButton;
+ QProgressBar * m_organizationProgressBar;
+ QLabel * m_currentBookLabel;
+ QWidget * m_progressContainerWidget;
CollectionDB * m_collection;
};
diff --git a/managerpart/collectionorganizerwidget.cpp \
b/managerpart/collectionorganizerwidget.cpp index ccbd1c1..189f9d1 100644
--- a/managerpart/collectionorganizerwidget.cpp
+++ b/managerpart/collectionorganizerwidget.cpp
@@ -77,7 +77,9 @@ void CollectionOrganizerWidget::organizeCollection()
if (!m_collectionOrganizer) {
m_collectionOrganizer = new CollectionOrganizer(m_collection, this);
connect(m_collectionOrganizer, SIGNAL(organizationCompleted()),
- this, SLOT(collectionOrganizationCompleted()));
+ this, SIGNAL(collectionOrganizationCompleted()));
+ connect(m_collectionOrganizer, SIGNAL(bookCopied(const QString &, int)),
+ this, SIGNAL(bookCopied(const QString &, int)));
}
// set root folder and collection structure
m_collectionOrganizer->setRootFolderUrl(rootFolderUrl);
@@ -102,12 +104,6 @@ void CollectionOrganizerWidget::sizeComputed(quint64 size)
}
-void CollectionOrganizerWidget::collectionOrganizationCompleted()
-{
- KMessageBox::information(0, i18n("The collection has been organized \
correctly."));
-}
-
-
// private methods
void CollectionOrganizerWidget::m_computeDiskSpace()
{
diff --git a/managerpart/collectionorganizerwidget.h \
b/managerpart/collectionorganizerwidget.h index 79b3e30..893025d 100644
--- a/managerpart/collectionorganizerwidget.h
+++ b/managerpart/collectionorganizerwidget.h
@@ -40,9 +40,12 @@ public:
void organizeCollection();
+signals:
+ void bookCopied(const QString &, int);
+ void collectionOrganizationCompleted();
+
private slots:
void sizeComputed(quint64);
- void collectionOrganizationCompleted();
private:
void m_computeDiskSpace();
diff --git a/managerpart/tools/collectionorganizer/collectionorganizer.cpp \
b/managerpart/tools/collectionorganizer/collectionorganizer.cpp index \
28cc95d..c985118 100644
--- a/managerpart/tools/collectionorganizer/collectionorganizer.cpp
+++ b/managerpart/tools/collectionorganizer/collectionorganizer.cpp
@@ -58,10 +58,12 @@ void CollectionOrganizer::organizeCollection()
// create a new thread and move the worker to that thread
m_copyCollectionThread = new QThread;
m_copyCollectionWorker->moveToThread(m_copyCollectionThread);
- connect(m_copyCollectionWorker, SIGNAL(bookCopied(QString)),
- this, SLOT(bookCompleted(QString)), Qt::QueuedConnection);
+ connect(m_copyCollectionWorker, SIGNAL(bookCopied(const QString &, int)),
+ this, SIGNAL(bookCopied(const QString &, int)), Qt::QueuedConnection);
connect(m_copyCollectionThread, SIGNAL(finished()),
this, SLOT(copyFinished()));
+ connect(m_copyCollectionWorker, SIGNAL(copyFinished()),
+ this, SIGNAL(organizationCompleted()));
connect(m_copyCollectionWorker, SIGNAL(copyFinished()), m_copyCollectionThread, \
SLOT(quit())); connect(m_copyCollectionThread, SIGNAL(started()),
m_copyCollectionWorker, SLOT(copyCollection()));
@@ -97,12 +99,6 @@ void CollectionOrganizer::setCollectionStructure(const QString & \
structure)
// private slots
-void CollectionOrganizer::bookCompleted(QString bookTitle)
-{
- // TODO update progress bar
-}
-
-
void CollectionOrganizer::copyFinished()
{
// TODO update progress bar
diff --git a/managerpart/tools/collectionorganizer/collectionorganizer.h \
b/managerpart/tools/collectionorganizer/collectionorganizer.h index 26459e2..03a1b5f \
100644
--- a/managerpart/tools/collectionorganizer/collectionorganizer.h
+++ b/managerpart/tools/collectionorganizer/collectionorganizer.h
@@ -47,10 +47,10 @@ public:
void setCollectionStructure(const QString & structure);
signals:
+ void bookCopied(const QString &, int);
void organizationCompleted();
public slots:
- void bookCompleted(QString);
void copyFinished();
private:
diff --git a/managerpart/tools/collectionorganizer/copycollectionworker.cpp \
b/managerpart/tools/collectionorganizer/copycollectionworker.cpp index \
f00328d..b3ba6be 100644
--- a/managerpart/tools/collectionorganizer/copycollectionworker.cpp
+++ b/managerpart/tools/collectionorganizer/copycollectionworker.cpp
@@ -91,7 +91,8 @@ void CopyCollectionWorker::copyCollection()
};
for (int i = 0; i < 7; ++i) {
usleep(500000);
- emit bookCopied(titles[i]);
+ float percentage = (i + 1) / 7.0 * 100;
+ emit bookCopied(titles[i], percentage);
}
emit copyFinished();
}
diff --git a/managerpart/tools/collectionorganizer/copycollectionworker.h \
b/managerpart/tools/collectionorganizer/copycollectionworker.h index 5391085..44cca2d \
100644
--- a/managerpart/tools/collectionorganizer/copycollectionworker.h
+++ b/managerpart/tools/collectionorganizer/copycollectionworker.h
@@ -99,7 +99,7 @@ class CopyCollectionWorker : public QObject {
void setCollectionDB(CollectionDB * collectionDB);
signals:
- void bookCopied(QString);
+ void bookCopied(const QString &, int);
void copyFinished();
public slots:
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic