From 00084a82f08ea72bafc6c002422c8f49bdeb1742 Mon Sep 17 00:00:00 2001 From: Arno Date: Wed, 28 Aug 2013 10:31:29 +0200 Subject: Add a progress dialog to FilesystemWidget Show a progress dialog when gathering data from the filesystem. --- filesystemwidget.cpp | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'filesystemwidget.cpp') diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 317d9c2..24d9ec3 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include "filesystemwidget.h" #include "filesystemdirproxy.h" @@ -42,6 +43,10 @@ FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboar mFileModel = new SmDirModel(fHeaders, this); connect(mFileModel, SIGNAL(needResize()), this, SLOT(resizeFileView())); + mProgressDlg = 0; + connect(mFileModel->collector(), SIGNAL(totalFiles(int)), this, SLOT(setupProgressDlg(int))); + connect(mFileModel->collector(), SIGNAL(progress()), this, SLOT(progress())); + mDirProxy = new FilesystemDirProxy; mDirProxy->setSourceModel(mModel); mDirView = new SmTreeView; @@ -431,6 +436,27 @@ void FilesystemWidget::setWindowTitle(){ emit windowTitle(mWindowTitle); } +void FilesystemWidget::setupProgressDlg(int max){ + if(max <= 0){ + return; + } + if(!mProgressDlg){ + mProgressDlg = new QProgressDialog(this); + mProgressDlg->setLabel(new QLabel(tr("Gathering data... please wait!"))); + } + mProgressDlg->setMinimum(1); + mProgressDlg->setMaximum(max); + Helper::centerWidget(mProgressDlg); + mProgressDlg->show(); +} + +void FilesystemWidget::progress(){ + mProgressDlg->setValue(mProgressDlg->value() + 1); + if(mProgressDlg->value() >= mProgressDlg->maximum()){ + mProgressDlg->hide(); + } +} + void FilesystemWidget::deleteRecursive(const QFileInfo &start){ if(start.isDir()){ QDir curDir = QDir(start.absoluteFilePath());; -- cgit v1.2.3-70-g09d2