summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2011-05-28 10:17:06 +0200
committerArno <am@disconnect.de>2011-05-28 10:17:06 +0200
commit895a5f5dae68fbcbf45ae7e073281f9bbd09931f (patch)
treea5f523fb42ec890c8702a34572d85d03735dda00 /filestreewidget.cpp
parent58ba968b492479f6a4539bceaefe3eaa88aab8f7 (diff)
downloadSheMov-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.cpp37
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 &current, const QModelIndex &previous){
Q_UNUSED(previous);
int seriesPartId = current.data(FilesTreeModel::SeriesPartIdRole).toInt();