diff options
Diffstat (limited to 'archivebrowser.cpp')
-rw-r--r-- | archivebrowser.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/archivebrowser.cpp b/archivebrowser.cpp index 7587c93..317c2d8 100644 --- a/archivebrowser.cpp +++ b/archivebrowser.cpp @@ -11,6 +11,9 @@ #include <QComboBox> #include <QCheckBox> #include <QSettings> +#include <QMessageBox> +#include <QDir> +#include <QFileInfo> #include <QSortFilterProxyModel> #include "archivebrowser.h" @@ -91,6 +94,47 @@ void ArchiveBrowser::writeSettings(){ s.setValue("ui/browserquality", mQualityFilter->currentText()); } +void ArchiveBrowser::moveToBurn() { + QModelIndexList sel = mTree->selectionModel()->selectedRows(); + if(sel.isEmpty()){ + return; + } + QSettings s; + QString destDirS = s.value("paths/burn").toString(); + QDir burnDir(destDirS); + if(!burnDir.exists()){ + QString msg = QString(tr("Destination directory %1 does not exist!\nBailing out!")).arg(destDirS); + QMessageBox::critical(this, tr("Error"), msg); + return; + } + QString msg = QString(tr("<p>This will do the following:</p><p><ul><li>Move %1 file(s) to %2</li><li>Update the DVD no. for %1 files</li></ul></p><p>Continue?</p>")).arg(sel.size()).arg(destDirS); + int retval = QMessageBox::question(this, tr("Question"), msg, QMessageBox::Yes | QMessageBox::No); + if(retval == QMessageBox::Yes){ + QList<int> filesToUpdate; + foreach(QModelIndex idx, sel){ + QString dirName = idx.data(ArchiveBrowserModel::NameRole).toString(); + dirName.replace(' ', '.'); + burnDir.mkdir(dirName); + QString burnDirS = QString("%1/%2").arg(destDirS).arg(dirName); + QModelIndex real = mProxy->mapToSource(idx); + QModelIndexList children = mModel->children(real); + foreach(QModelIndex child, children){ + QFileInfo current(child.data(ArchiveBrowserModel::FullPathRole).toString()); + int type = child.data(ArchiveBrowserModel::FileTypeRole).toInt(); + QString destination = QString("%1/%2").arg(burnDirS).arg(current.fileName()); + if(type == 1){ //movie + filesToUpdate << child.data(ArchiveBrowserModel::GenericIdRole).toInt(); + }else{ + QFile::copy(current.absoluteFilePath(), destination); + } + } + + } + mModel->updateDVDNo(filesToUpdate); + mModel->refresh(); + } +} + void ArchiveBrowser::setupQualityFilter(){ mQualityFilter->clear(); QList<int> qualities = mModel->availableQualities(); |