diff options
Diffstat (limited to 'filesystemwidget.cpp')
-rw-r--r-- | filesystemwidget.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp index 317d9c2..24d9ec3 100644 --- a/filesystemwidget.cpp +++ b/filesystemwidget.cpp @@ -19,6 +19,7 @@ #include <QMimeData> #include <QUrl> #include <QTimer> +#include <QProgressDialog> #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());; |