summaryrefslogtreecommitdiffstats
path: root/seriestreewidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'seriestreewidget.cpp')
-rw-r--r--seriestreewidget.cpp91
1 files changed, 88 insertions, 3 deletions
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index 5b25f0f..e57905f 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -30,6 +30,12 @@
#include <QSqlQuery>
#include <QSqlDatabase>
#include <QThread>
+#include <QGroupBox>
+#include <QFormLayout>
+#include <QCheckBox>
+#include <QSpinBox>
+#include <QFontMetrics>
+#include <QApplication>
#include "seriestreewidget.h"
#include "smtreemodel.h"
@@ -339,9 +345,9 @@ void SeriesTreeWidget::expandItems(const QStringList &items){
void SeriesTreeWidget::editItem(){
QModelIndex current = mView->selectionModel()->currentIndex();
- if(current.isValid()){
- mView->edit(current);
- }
+ QModelIndex real = mProxy->mapToSource(current);
+ EditSeriesDialog dlg(real, this);
+ dlg.exec();
}
void SeriesTreeWidget::producerFinished(QStringListModel *model){
@@ -546,6 +552,85 @@ void AddCoverDialog::typeChanged(const QString &type){
}
}
+EditSeriesDialog::EditSeriesDialog(const QModelIndex &idx, QWidget *parent) : QDialog(parent), mIdx(idx) {
+ //title + subtitle
+ QGroupBox *seriesTitleBox = new QGroupBox(tr("Title"));
+ mTitle = new QLineEdit;
+ QString title = mIdx.data(SeriesTreeModel::NameRole).toString();
+ QFontMetrics fm(qApp->font());
+ int titleWidth = fm.width(title);
+ mTitle->setMinimumWidth(titleWidth + fm.maxWidth());
+ mTitle->setText(title);
+ QFormLayout *titleLayout = new QFormLayout;
+ titleLayout->addRow(tr("&Title"), mTitle);
+ mSubtitle = new QLineEdit;
+ mSubtitle->setEnabled(false);
+ int type = mIdx.data(SeriesTreeModel::TypeRole).toInt();
+ if(type == SeriesTreeModel::Part){
+ titleLayout->addRow(tr("&Subtitle"), mSubtitle);
+ mSubtitle->setEnabled(true);
+ mSubtitle->setText(mIdx.data(SeriesTreeModel::SubtitleRole).toString());
+ mTitle->setEnabled(false);
+ }
+ seriesTitleBox->setLayout(titleLayout);
+
+ //seriespart + favorite
+ QGroupBox *partDataBox = new QGroupBox(tr("Other data"));
+ QHBoxLayout *partNoLayout = new QHBoxLayout;
+ mPartNo = new QSpinBox;
+ mPartNo->setMinimum(1);
+ mPartNo->setValue(mIdx.data(SeriesTreeModel::SeriesPartRole).toInt());
+ mHasPartNo = new QCheckBox(tr("Element has Part no."));
+ connect(mHasPartNo, SIGNAL(stateChanged(int)), this, SLOT(hasPartNoStateChanged(int)));
+ mHasPartNo->setChecked(mIdx.data(SeriesTreeModel::SeriesPartRole).toInt());
+ partNoLayout->addWidget(mHasPartNo);
+ partNoLayout->addStretch();
+ partNoLayout->addWidget(mPartNo);
+ mFavorite = new QCheckBox(tr("Favorite"));
+ mFavorite->setChecked(mIdx.data(SeriesTreeModel::FavoriteRole).toBool());
+ QVBoxLayout *partDataLayout = new QVBoxLayout;
+ partDataLayout->addLayout(partNoLayout);
+ partDataLayout->addWidget(mFavorite);
+ partDataBox->setLayout(partDataLayout);
+
+ //buttons
+ QHBoxLayout *buttonLayout = new QHBoxLayout;
+ buttonLayout->addStretch();
+ mOk = new QPushButton(tr("Ok"));
+ connect(mOk, SIGNAL(clicked()), this, SLOT(accept()));
+ 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->addWidget(seriesTitleBox);
+ mainLayout->addWidget(partDataBox);
+ partDataBox->setVisible(type == SeriesTreeModel::Part);
+ mainLayout->addLayout(buttonLayout);
+ setLayout(mainLayout);
+}
+
+void EditSeriesDialog::accept(){
+ SeriesTreeModel *model = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel"));
+ QModelIndex favoriteIdx = model->index(mIdx.row(), SeriesTreeModel::Favorite, mIdx.parent());
+ model->setData(favoriteIdx, (mFavorite->checkState() == Qt::Checked), Qt::EditRole);
+ QModelIndex titleIdx = model->index(mIdx.row(), SeriesTreeModel::Name, mIdx.parent());
+ model->setData(titleIdx, mTitle->text().toLower().trimmed(), Qt::EditRole);
+ QModelIndex subtitleIdx = model->index(mIdx.row(), SeriesTreeModel::Subtitle, mIdx.parent());
+ model->setData(subtitleIdx, mSubtitle->text().toLower().trimmed(), Qt::EditRole);
+ bool hasPartNo = mHasPartNo->isChecked();
+ int partNo = hasPartNo ? mPartNo->value() : 0;
+ QModelIndex partNoIdx = model->index(mIdx.row(), SeriesTreeModel::SeriesPart, mIdx.parent());
+ model->setData(partNoIdx, partNo, Qt::EditRole);
+ QDialog::accept();
+}
+
+void EditSeriesDialog::hasPartNoStateChanged(int state){
+ mPartNo->setEnabled(state == Qt::Checked);
+}
+
CompleterProducer::CompleterProducer(int Mode, QObject *parent) : QObject(parent), mMode(Mode){
mDb = QSqlDatabase::cloneDatabase(QSqlDatabase::database("treedb"), "complprod");
mDb.open();