summaryrefslogtreecommitdiffstats
path: root/filestreewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r--filestreewidget.cpp27
1 files changed, 8 insertions, 19 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index cc92a67..ffe1343 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -269,25 +269,14 @@ void FilesTreeWidget::suggest(){
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);
+ QModelIndex candidate = mModel->fileSizeLessThan(neededSize);
+ QModelIndex real = mProxy->mapFromSource(candidate);
+ if(!real.isValid() || mView->selectionModel()->isSelected(real)){
+ QMessageBox::critical(this, tr("Error"), tr("Out of suggestions!"));
+ return;
+ }
+ mView->selectionModel()->select(real, QItemSelectionModel::Select | QItemSelectionModel::Rows);
+ mView->scrollTo(real, QAbstractItemView::PositionAtCenter);
}
void FilesTreeWidget::playSelected(){