summaryrefslogtreecommitdiffstats
path: root/filesystemwidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filesystemwidget.cpp')
-rw-r--r--filesystemwidget.cpp57
1 files changed, 55 insertions, 2 deletions
diff --git a/filesystemwidget.cpp b/filesystemwidget.cpp
index 2dd8076..eadbac8 100644
--- a/filesystemwidget.cpp
+++ b/filesystemwidget.cpp
@@ -33,6 +33,7 @@
#include "delegates.h"
#include "smdirmodel.h"
#include "smdialog.h"
+#include "archivemodel.h"
FilesystemWidget::FilesystemWidget(QWidget *parent) : QWidget(parent), mClipboardMode(None) {
mModel = new FileSystemModel(this);
@@ -477,10 +478,47 @@ void FilesystemWidget::dvdMount(){
void FilesystemWidget::moveToArchive(){
QStringList selected = selectedFiles();
- foreach(QFileInfo fi, selected){
+ QFileInfoList files;
+ foreach(QString f, selected){
+ QFileInfo fi(f);
+ if(fi.isDir()){
+ files.append(getRecursive(fi));
+ }else{
+ files.append(fi);
+ }
+ }
+ QMap<QString, QString> res;
+ foreach(QFileInfo fi, files){
+ if(!fi.exists()){
+ res.insert(fi.fileName(), tr("File not found"));
+ continue;
+ }
QString md5 = Helper::md5Sum(fi.absoluteFilePath());
- Helper::moveToArchive(fi.absoluteFilePath(), md5);
+ if(!ArchiveFilesModel::hasFile(md5)){
+ res.insert(fi.fileName(), tr("Not in archive"));
+ continue;
+ }
+ QString mvres = Helper::moveToArchive(fi.absoluteFilePath(), md5);
+ if(mvres.isEmpty()){
+ res.insert(fi.fileName(), tr("Move failed"));
+ continue;
+ }
+ if(!ArchiveFilesModel::setDvdNo(md5, -1)){
+ res.insert(fi.fileName(), tr("DvdNo. update failed"));
+ }
+ res.insert(fi.fileName(), tr("Success"));
}
+ QString msg("<html>");
+ msg.append(tr("<p>Result:</p>"));
+ msg.append("<ul>");
+ QMap<QString, QString>::const_iterator it = res.constBegin();
+ while(it != res.constEnd()){
+ QString m = QString(tr("<li>%1: %2</li>")).arg(it.key()).arg(it.value());
+ msg.append(m);
+ ++it; }
+ msg.append("</ul>");
+ msg.append("</html>");
+ QMessageBox::information(this, tr("Move to archive"), msg, QMessageBox::Ok);
}
void FilesystemWidget::selectAllPV(){
@@ -563,6 +601,21 @@ void FilesystemWidget::deleteRecursive(const QFileInfo &start){
}
}
+QFileInfoList FilesystemWidget::getRecursive(const QFileInfo &start) const{
+ QFileInfoList retval;
+ if(start.isDir()){
+ QDir curDir = QDir(start.absoluteFilePath());
+ foreach(QFileInfo info, curDir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)){
+ if(info.isDir()){
+ retval.append(getRecursive(info));
+ }else{
+ retval.append(info);
+ }
+ }
+ }
+ return retval;
+}
+
void FilesystemWidget::copyFiles(const QStringList &files, const QString &dest){
foreach(const QString file, files){
QFileInfo fi(file);