diff options
author | Arno <am@disconnect.de> | 2010-07-18 12:12:05 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2010-07-18 12:12:05 +0200 |
commit | 3befd105e04fb5d724c13863b25f720e239bc14c (patch) | |
tree | d318c048aa983f681e13e23dcc2a2da95b95c4a5 /filestreewidget.cpp | |
parent | 88791c89ac1066a9c0118120e10ec3cc19c2ec72 (diff) | |
download | SheMov-3befd105e04fb5d724c13863b25f720e239bc14c.tar.gz SheMov-3befd105e04fb5d724c13863b25f720e239bc14c.tar.bz2 SheMov-3befd105e04fb5d724c13863b25f720e239bc14c.zip |
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.
Diffstat (limited to 'filestreewidget.cpp')
-rw-r--r-- | filestreewidget.cpp | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp index d3d5ad4..b25804f 100644 --- a/filestreewidget.cpp +++ b/filestreewidget.cpp @@ -6,12 +6,16 @@ */ #include <QHBoxLayout> +#include <QVBoxLayout> #include <QSettings> #include <QMessageBox> #include <QFile> #include <QDir> #include <QContextMenuEvent> #include <QMenu> +#include <QLabel> +#include <QSpinBox> +#include <QPushButton> #include <QDebug> @@ -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<SeriesTreeModel*>(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(); +} |