initEditDialog();
objectList->hideColumn(DbFilePath::FilePath_Id);
objectList->hideColumn(DbFilePath::FilePath_SetupId);
+
// do not move to parent class:
connectSignals();
}
QStringList l;
l << "*.zip"; // TODO set filters in a global constant class
-
dbMediaImageContainer->removeFromFilePath(fpo->getId());
- int count = fileUtil.scanFilePath(fpo, l, dbMediaImageContainer);
- qDebug() << "Storing scanned " << count << " files to database";
+
+ QProgressDialog progressDialog(this);
+ progressDialog.setWindowTitle("Scanning files...");
+ progressDialog.setCancelButtonText("Abort");
+ progressDialog.setWindowModality(Qt::WindowModal);
+ progressDialog.show();
+
+ int count = fileUtil.scanFilePath(fpo, l, dbMediaImageContainer, progressDialog);
+ progressDialog.hide();
+ QMessageBox msgBox;
+ msgBox.setText(tr("Scanned %1 files to database.").arg(count));
+ msgBox.exec();
delete fpo;
}
catch (EmuFrontException s)
#include <QDir>
#include <QDebug>
#include <QProcess>
+#include <QProgressDialog>
#include "fileutil.h"
#include "zlib.h" /* crc32 */
#include "../exceptions/emufrontexception.h"
}
/* Throws EmuFrontException */
-int FileUtil::scanFilePath(FilePathObject *fp, QStringList filters, DbMediaImageContainer *dbMic)
+int FileUtil::scanFilePath(FilePathObject *fp,
+ QStringList filters, DbMediaImageContainer *dbMic,
+ QProgressDialog &progressDialog)
{
if (!fp->getSetup()){
throw EmuFrontException(tr("Setup not available with %1.").arg(fp->getName()));
// TODO: only a buffer of objects should be kept here,
// and write to database each time the buffer is filled.
QList<MediaImageContainer*> containers;
+ progressDialog.setMinimum(0);
+ progressDialog.setMaximum(list.size());
for (int i = 0; i < list.size(); ++i)
{
+ progressDialog.setValue(i);
+ if (progressDialog.wasCanceled())
+ break;
QFileInfo fileInfo = list.at(i);
qDebug() << QString("%1 %2").arg(fileInfo.size(), 10).arg(fileInfo.absoluteFilePath());
qDebug() << "We have " << containers.size() << " containers.";
}
}
+ progressDialog.setValue(list.size());
if (containers.count() > 0) {
qDebug() << "Storing the rest " << containers.count() << " containers.";
dbMic->storeContainers(containers, fp);
class MediaImage;
class DbMediaImageContainer;
class UnzipHelper;
+class QProgressDialog;
class FileUtil : QObject
{
public:
FileUtil(QObject *parent);
~FileUtil();
- int scanFilePath(FilePathObject *fpo, const QStringList filters, DbMediaImageContainer *mic);
+ int scanFilePath(FilePathObject *fpo, const QStringList filters, DbMediaImageContainer *mic, QProgressDialog &);
private:
char *buf;
quint32 readCrc32(QString filePath);