diff options
author | Arno <am@disconnect.de> | 2011-05-28 10:17:06 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2011-05-28 10:17:06 +0200 |
commit | 895a5f5dae68fbcbf45ae7e073281f9bbd09931f (patch) | |
tree | a5f523fb42ec890c8702a34572d85d03735dda00 /filestreewidget.cpp | |
parent | 58ba968b492479f6a4539bceaefe3eaa88aab8f7 (diff) | |
download | SheMov-895a5f5dae68fbcbf45ae7e073281f9bbd09931f.tar.gz SheMov-895a5f5dae68fbcbf45ae7e073281f9bbd09931f.tar.bz2 SheMov-895a5f5dae68fbcbf45ae7e073281f9bbd09931f.zip |
Suggest file for burning
Implemented an action to suggest the best fitting file for burning
in FilesTreeWidget. Added 20 Mb of margin to maximum dvd size.
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r-- | filestreewidget.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp index 2aa32d2..d44e561 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -250,6 +250,43 @@ void FilesTreeWidget::edit(int column){ } } +void FilesTreeWidget::suggest(){ + QModelIndexList currentSel = mView->selectionModel()->selectedRows(); + if(currentSel.isEmpty()){ + return; + } + qint64 size = 0; + foreach(QModelIndex curIdx, currentSel){ + qint64 curSize = curIdx.data(FilesTreeModel::SizeRole).value<qint64>(); + size += curSize; + } + qint64 dvdSize = SmGlobals::instance()->dvdSize(); + if(size > dvdSize){ + QMessageBox::critical(this, tr("Error"), tr("File too big for a single DVD")); + return; + } + qint64 neededSize = dvdSize - size; + QModelIndexList possibleFiles = mModel->fileSizeLessThan(neededSize); + if(possibleFiles.isEmpty()){ + QLocale l; + float mb = size / 1024 / 1024; + QString message = QString(tr("No file smaller than %1 MiB found")).arg(l.toString(mb, 'f', 2)); + QMessageBox::critical(this, tr("Error"), message); + return; + } + QModelIndex last; + QStringList selectedFiles; + foreach(QModelIndex sIdx, possibleFiles){ + QModelIndex vIdx = mProxy->mapFromSource(sIdx); + last = vIdx; + mView->selectionModel()->select(vIdx, QItemSelectionModel::Select | QItemSelectionModel::Rows); + selectedFiles << sIdx.data(FilesTreeModel::FileNameRole).toString(); + } + QString message = QString(tr("Selected %1 items: %2")).arg(QString::number(selectedFiles.count())).arg(selectedFiles.join(", ")); + emit statusMessage(message); + mView->scrollTo(last, QAbstractItemView::PositionAtCenter); +} + void FilesTreeWidget::fileSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous){ Q_UNUSED(previous); int seriesPartId = current.data(FilesTreeModel::SeriesPartIdRole).toInt(); |