From 3befd105e04fb5d724c13863b25f720e239bc14c Mon Sep 17 00:00:00 2001 From: Arno Date: Sun, 18 Jul 2010 12:12:05 +0200 Subject: Implemented setDvdNo for FilesTree The dvd number can be set for several files at once with this function. Also fixed a little bug when showing the series name in the status bar. Only show file part number if it is > 0. --- filestreewidget.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 64 insertions(+), 1 deletion(-) (limited to 'filestreewidget.cpp') diff --git a/filestreewidget.cpp b/filestreewidget.cpp index d3d5ad4..b25804f 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -6,12 +6,16 @@ */ #include +#include #include #include #include #include #include #include +#include +#include +#include #include @@ -83,6 +87,29 @@ void FilesTreeWidget::moveToBurn(){ } } +void FilesTreeWidget::setDvdNo(){ + DvdNoDialog dlg(this); + int retval = dlg.exec(); + if(retval == QDialog::Accepted){ + QModelIndexList selected = mView->selectionModel()->selectedRows(); + if(selected.isEmpty()){ + return; + } + int dvdNo = dlg.dvdNo(); + foreach(QModelIndex i, selected){ + int type = i.data(FilesTreeModel::FileTypeRole).toInt(); + if(type != FilesTreeModel::Movie){ + continue; + } + QModelIndex real = mProxy->mapToSource(i); + if(real.isValid()){ + QModelIndex dvdColumn = mModel->index(real.row(), FilesTreeModel::DvdNo, real.parent()); + mModel->setData(dvdColumn, dvdNo, Qt::EditRole); + } + } + } +} + void FilesTreeWidget::fileSelectionChanged(const QModelIndex ¤t, const QModelIndex &previous){ Q_UNUSED(previous); int seriesPartId = current.data(FilesTreeModel::SeriesPartIdRole).toInt(); @@ -93,7 +120,7 @@ void FilesTreeWidget::fileSelectionChanged(const QModelIndex ¤t, const QMo QModelIndex seriesPartIdx = mSeriesModel->findValue(seriesPartId, seriesIdx, SeriesTreeModel::SeriesPartId); QString seriesNumber = QString::number(seriesPartIdx.data(SeriesTreeModel::SeriesPartRole).toInt()); QString msg; - if(filePart != 0){ + if(filePart > 0){ msg = QString(tr("%1 %2 (%3)")).arg(seriesIdx.data(SeriesTreeModel::NameRole).toString()).arg(seriesNumber).arg(filePart); }else{ msg = QString(tr("%1 %2")).arg(seriesIdx.data(SeriesTreeModel::NameRole).toString()).arg(seriesNumber); @@ -142,3 +169,39 @@ bool FilesTreeSortModel::lessThan(const QModelIndex &left, const QModelIndex &ri } return QSortFilterProxyModel::lessThan(left, right); } + +DvdNoDialog::DvdNoDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ + //spin box + QHBoxLayout *spinBoxLayout = new QHBoxLayout; + QLabel *l1 = new QLabel(tr("Select &Dvd no.")); + mDvdNo = new QSpinBox; + l1->setBuddy(mDvdNo); + spinBoxLayout->addWidget(l1); + spinBoxLayout->addWidget(mDvdNo); + mDvdNo->setMinimum(-1); + SeriesTreeModel *seriesModel = static_cast(SmModelSingleton::instance()->model("SeriesModel")); + int nextDvdNo = seriesModel->findNextDvdNo(); + mDvdNo->setValue(nextDvdNo); + + //buttons + QHBoxLayout *buttonLayout = new QHBoxLayout; + mOk = new QPushButton(tr("Ok")); + connect(mOk, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addStretch(); + buttonLayout->addWidget(mOk); + mCancel = new QPushButton(tr("Cancel")); + connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); + buttonLayout->addWidget(mCancel); + + //main layout + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addLayout(spinBoxLayout); + mainLayout->addLayout(buttonLayout); + setLayout(mainLayout); + + setWindowTitle(tr("Select Dvd no.")); +} + +int DvdNoDialog::dvdNo() const { + return mDvdNo->value(); +} -- cgit v1.2.3-70-g09d2