diff options
author | Arno <am@disconnect.de> | 2013-07-12 14:25:59 +0200 |
---|---|---|
committer | Arno <am@disconnect.de> | 2013-07-12 14:25:59 +0200 |
commit | 9954c11ac9bc51fe81cc9949ff9799ac87512d92 (patch) | |
tree | a0c546ea4cbf706cc602a1f3c019b2149740a6a6 | |
parent | 5b18830e0072d2d69b85697129be3e44d60f9235 (diff) | |
download | SheMov-9954c11ac9bc51fe81cc9949ff9799ac87512d92.tar.gz SheMov-9954c11ac9bc51fe81cc9949ff9799ac87512d92.tar.bz2 SheMov-9954c11ac9bc51fe81cc9949ff9799ac87512d92.zip |
Make PartNo and Subtitle editable
-rw-r--r-- | archivemodel.cpp | 21 | ||||
-rw-r--r-- | archivemodel.h | 1 | ||||
-rw-r--r-- | archiveview.cpp | 66 | ||||
-rw-r--r-- | archiveview.h | 18 | ||||
-rw-r--r-- | shemov.cpp | 4 | ||||
-rw-r--r-- | shemov.h | 1 |
6 files changed, 111 insertions, 0 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index 0a2c645..fe0ffff 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -95,6 +95,12 @@ QVariant ArchiveModel::data(const QModelIndex &index, int role) const{ if(role == SeriesPartIdRole){ return item->data(SeriesPartId); } + if(role == SeriesPartRole){ + return item->data(SeriesPart); + } + if(role == SubtitleRole){ + return item->data(Subtitle); + } return SmTreeModel::data(index, role); } @@ -448,6 +454,21 @@ void ArchiveModel::setMetadata(int partId, const QList<QVariant> &data){ mDb.commit(); } +bool ArchiveModel::setPartNo(int partId, int newPartId, const QString &subtitle){ + mDb.transaction(); + QSqlQuery updatePartNoQ(mDb); + updatePartNoQ.prepare("UPDATE seriesparts SET iseriespart = :npid, tsubtitle = :tsub WHERE iseriesparts_id = :pid"); + updatePartNoQ.bindValue(":pid", partId); + updatePartNoQ.bindValue(":npid", newPartId); + updatePartNoQ.bindValue(":tsub", subtitle); + if(!updatePartNoQ.exec()){ + mDb.rollback(); + return false; + } + mDb.commit(); + return true; +} + QStringList ArchiveModel::allSources() const{ QSqlQuery sQ("SELECT DISTINCT(tsourcemedium) FROM metadata ORDER BY tsourcemedium ASC", mDb); QStringList retval; diff --git a/archivemodel.h b/archivemodel.h index 7b2fdf0..2bc4b1d 100644 --- a/archivemodel.h +++ b/archivemodel.h @@ -51,6 +51,7 @@ class ArchiveModel : public SmTreeModel { void setMetadata(int partId, const QList<QVariant> &data); QStringList allSources() const; QStringList allReleaseGroups() const; + bool setPartNo(int partId, int newPartId, const QString &subtitle); signals: void needRefresh(); diff --git a/archiveview.cpp b/archiveview.cpp index f0b3cf6..ca0d91f 100644 --- a/archiveview.cpp +++ b/archiveview.cpp @@ -341,6 +341,22 @@ void ArchiveTree::editMetadata(){ } } +void ArchiveTree::editSeriesPart(){ + QModelIndex idx = currentIndex(); + int curPart = idx.data(ArchiveModel::SeriesPartRole).toInt(); + QString subtitle = idx.data(ArchiveModel::SubtitleRole).toString(); + PartEditor e(this); + e.setPartNo(curPart); + e.setSubtitle(subtitle); + int res = e.exec(); + if(res == QDialog::Accepted){ + int pId = idx.data(ArchiveModel::SeriesPartIdRole).toInt(); + ArchiveController *c = SmGlobals::instance()->archiveController(); + c->archiveTreeModel()->setPartNo(pId, e.partNo(), e.subtitle()); + mModel->refresh(); + } +} + void ArchiveTree::impossible(const QString msg){ QMessageBox::critical(this, tr("Error"), msg); } @@ -613,6 +629,56 @@ MetadataEditor::MetadataEditor(QWidget *parent, Qt::WindowFlags f) : QDialog(par setMinimumWidth(400); } +/* Part Editor */ + +PartEditor::PartEditor(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f){ + QLabel *captionL = new QLabel(tr("Edit part")); + QFormLayout *editLayout = new QFormLayout; + + // part no + mPartNo = new QSpinBox; + mPartNo->setMinimum(0); + mPartNo->setMaximum(1024); + editLayout->addRow(tr("Part &no"), mPartNo); + + // subtitle + mSubtitle = new QLineEdit; + editLayout->addRow(tr("&Subtitle"), mSubtitle); + + // buttons + QHBoxLayout *buttonLayout = new QHBoxLayout; + buttonLayout->addStretch(); + mCancel = new QPushButton(tr("Cancel")); + connect(mCancel, SIGNAL(clicked()), this, SLOT(reject())); + mAccept = new QPushButton(tr("Accept")); + connect(mAccept, SIGNAL(clicked()), this, SLOT(accept())); + buttonLayout->addWidget(mCancel); + buttonLayout->addWidget(mAccept); + + // main layout + QVBoxLayout *mainLayout = new QVBoxLayout; + mainLayout->addWidget(captionL); + mainLayout->addLayout(editLayout); + mainLayout->addLayout(buttonLayout); + setLayout(mainLayout); +} + +void PartEditor::setPartNo(int partNo){ + mPartNo->setValue(partNo); +} + +int PartEditor::partNo() const { + return mPartNo->value(); +} + +void PartEditor::setSubtitle(const QString &subtitle){ + mSubtitle->setText(subtitle); +} + +QString PartEditor::subtitle() const { + return mSubtitle->text(); +} + /* Delegate for File no. */ QString FileNoDelegate::displayText(const QVariant &value, const QLocale &locale) const{ diff --git a/archiveview.h b/archiveview.h index 41c86c3..fa9a1d5 100644 --- a/archiveview.h +++ b/archiveview.h @@ -88,6 +88,7 @@ class ArchiveTree : public SmTreeView { void editActors(); void editGenres(); void editMetadata(); + void editSeriesPart(); private: void impossible(const QString msg = tr("Unable to perform function!")); @@ -216,6 +217,23 @@ class MetadataEditor : public QDialog { }; +class PartEditor : public QDialog { + Q_OBJECT + public: + explicit PartEditor(QWidget *parent = 0, Qt::WindowFlags f = 0); + void setPartNo(int partNo); + int partNo() const; + void setSubtitle(const QString &subtitle); + QString subtitle() const; + + + private: + QSpinBox *mPartNo; + QLineEdit *mSubtitle; + QPushButton *mCancel; + QPushButton *mAccept; +}; + class FileNoDelegate : public QStyledItemDelegate { Q_OBJECT public: @@ -759,6 +759,9 @@ void SheMov::createActions(){ // edit genres mArchiveViewGenresA = new QAction(tr("Edit genres..."), this); connect(mArchiveViewGenresA, SIGNAL(triggered()), c->archiveTree(), SLOT(editGenres())); + // edit part no and subtitle + mArchiveViewPartnoA = new QAction(tr("Edit Part No..."), this); + connect(mArchiveViewPartnoA, SIGNAL(triggered()), c->archiveTree(), SLOT(editSeriesPart())); // edit metadata mArchiveViewMetadataA = new QAction(tr("Edit metadata..."), this); connect(mArchiveViewMetadataA, SIGNAL(triggered()), c->archiveTree(), SLOT(editMetadata())); @@ -1007,6 +1010,7 @@ void SheMov::createMenus(){ c->archiveTree()->addAction(createSeparator()); c->archiveTree()->addAction(mArchiveViewActorsA); c->archiveTree()->addAction(mArchiveViewGenresA); + c->archiveTree()->addAction(mArchiveViewPartnoA); c->archiveTree()->addAction(mArchiveViewMetadataA); // Archive files (exp.) @@ -191,6 +191,7 @@ class SheMov : public QMainWindow { QAction *mArchiveViewRemoveA; QAction *mArchiveViewActorsA; QAction *mArchiveViewGenresA; + QAction *mArchiveViewPartnoA; QAction *mArchiveViewMetadataA; QActionGroup *mArchiveFilesAG; |