summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2013-07-12 14:25:59 +0200
committerArno <am@disconnect.de>2013-07-12 14:25:59 +0200
commit9954c11ac9bc51fe81cc9949ff9799ac87512d92 (patch)
treea0c546ea4cbf706cc602a1f3c019b2149740a6a6
parent5b18830e0072d2d69b85697129be3e44d60f9235 (diff)
downloadSheMov-9954c11ac9bc51fe81cc9949ff9799ac87512d92.tar.gz
SheMov-9954c11ac9bc51fe81cc9949ff9799ac87512d92.tar.bz2
SheMov-9954c11ac9bc51fe81cc9949ff9799ac87512d92.zip
Make PartNo and Subtitle editable
-rw-r--r--archivemodel.cpp21
-rw-r--r--archivemodel.h1
-rw-r--r--archiveview.cpp66
-rw-r--r--archiveview.h18
-rw-r--r--shemov.cpp4
-rw-r--r--shemov.h1
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:
diff --git a/shemov.cpp b/shemov.cpp
index e7dd835..ab8290a 100644
--- a/shemov.cpp
+++ b/shemov.cpp
@@ -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.)
diff --git a/shemov.h b/shemov.h
index 7d61106..db4dd67 100644
--- a/shemov.h
+++ b/shemov.h
@@ -191,6 +191,7 @@ class SheMov : public QMainWindow {
QAction *mArchiveViewRemoveA;
QAction *mArchiveViewActorsA;
QAction *mArchiveViewGenresA;
+ QAction *mArchiveViewPartnoA;
QAction *mArchiveViewMetadataA;
QActionGroup *mArchiveFilesAG;