diff options
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r-- | filestreewidget.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp index d510312..19dbbdf 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -35,6 +35,7 @@ #include "filestreewidget.h" #include "smglobals.h" #include "filestreemodel.h" +#include "seriestreewidget.h" #include "seriestreemodel.h" #include "helper.h" #include "pictureviewer2.h" @@ -298,6 +299,19 @@ void FilesTreeWidget::playSelected(){ playItems(fullPaths); } +void FilesTreeWidget::moveToSeries(){ + SeriesTreeWidget *vWidget = SmGlobals::instance()->seriesTreeWidget(); + QModelIndex sel = vWidget->seriesTree()->selectionModel()->currentIndex(); + QModelIndex real = vWidget->seriesProxy()->mapToSource(sel); + QModelIndexList nfiles = mView->selectionModel()->selectedRows(); + QList<QPersistentModelIndex> files; + foreach (QModelIndex i, nfiles){ + files << i; + } + FileMoveDialog fmd(real, files, 0, 0); + fmd.exec(); +} + void FilesTreeWidget::fileSelectionChanged(){ QModelIndexList selected = mView->selectionModel()->selectedRows(); qint64 selSize = 0; @@ -594,3 +608,42 @@ bool FilesTreeSortModel::lessThan(const QModelIndex &left, const QModelIndex &ri } return QSortFilterProxyModel::lessThan(left, right); } + +FileMoveDialog::FileMoveDialog(QPersistentModelIndex selected, QList<QPersistentModelIndex> files, QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f), mFiles(files){ + QLabel *l1 = new QLabel(tr("Select destination")); + QVBoxLayout *selectionLayout = new QVBoxLayout; + selectionLayout->addWidget(l1); + mTree = new QTreeView; + mModel = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel")); + mTree->setModel(mModel); + selectionLayout->addWidget(mTree); + for(int i = 1; i < SeriesTreeModel::NumFields; ++i){ + mTree->setColumnHidden(i, true); + } + mTree->resizeColumnToContents(0); + mTree->setAlternatingRowColors(true); + mTree->expand(selected); + mTree->scrollTo(selected, QAbstractItemView::PositionAtTop); + QHBoxLayout *buttonLayout = new QHBoxLayout; + mOk = new QPushButton(tr("Ok")); + connect(mOk, SIGNAL(clicked()), this, SLOT(accept())); + mCancel = new QPushButton(tr("Cancel")); + connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->setAlignment(Qt::AlignRight); + buttonLayout->addWidget(mOk); + buttonLayout->addWidget(mCancel); + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addLayout(selectionLayout); + mainLayout->addLayout(buttonLayout); + setLayout(mainLayout); +} + +void FileMoveDialog::accept(){ + if(mFiles.isEmpty()){ + return; + } + FilesTreeModel *filesModel = static_cast<FilesTreeModel*>(SmGlobals::instance()->model("FilesModel")); + int newSeriesIdx = mTree->selectionModel()->currentIndex().data(SeriesTreeModel::SeriesPartIdRole).toInt(); + filesModel->updateSeries(newSeriesIdx, mFiles); + QDialog::accept(); +} |