summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--newmoviewizard.cpp29
-rw-r--r--newmoviewizard.h3
-rw-r--r--seriestreemodel.cpp52
-rw-r--r--seriestreemodel.h6
-rw-r--r--seriestreewidget.cpp2
-rw-r--r--smglobals.cpp2
6 files changed, 60 insertions, 34 deletions
diff --git a/newmoviewizard.cpp b/newmoviewizard.cpp
index 17fadc8..88f0aab 100644
--- a/newmoviewizard.cpp
+++ b/newmoviewizard.cpp
@@ -25,6 +25,7 @@
#include <QFormLayout>
#include <QDate>
#include <QPlainTextEdit>
+#include <QFormLayout>
#include "newmoviewizard.h"
#include "smtreeitem.h"
@@ -70,13 +71,18 @@ void NewMovieWizard::accept(){
//handle seriespart
int seriesno = field("seriesNo").toInt();
+ bool hasPartNo = field("hasPartNo").toBool();
+ if(!hasPartNo){
+ seriesno = 0;
+ }
QModelIndex seriesPartIdx = seriesModel->find(seriesno, SeriesTreeModel::SeriesPart, seriesIdx);
if(seriesPartIdx.isValid()){
QString error = QString(tr("Already have part %1 of %2")).arg(seriesno).arg(series);
QMessageBox::critical(this, tr("Error"), error);
return;
}
- if(!seriesModel->addSeriesPart(seriesno, seriesIdx)){
+ QString subTitle = field("subtitle").toString();
+ if(!seriesModel->addSeriesPart(seriesno, seriesIdx, subTitle)){
QMessageBox::critical(this, tr("Error"), tr("Failed to create series part!"));
return;
}
@@ -190,13 +196,12 @@ void MovieInfoPage::setupGui(){
fileButtonLayout->addWidget(mRemoveFile);
connect(mRemoveFile, SIGNAL(clicked()), this, SLOT(removeFile()));
- //movie name
- QHBoxLayout *movieTitleLayout = new QHBoxLayout;
- QLabel *l1 = new QLabel(tr("Movie &title"));
+ //movie name + subtitle
+ QFormLayout *movieTitleLayout = new QFormLayout;
mTitle = new QLineEdit;
- l1->setBuddy(mTitle);
- movieTitleLayout->addWidget(l1);
- movieTitleLayout->addWidget(mTitle);
+ mSubtitle = new QLineEdit;
+ movieTitleLayout->addRow(tr("Movie &title"), mTitle);
+ movieTitleLayout->addRow(tr("Movie &subtitle"), mSubtitle);
SeriesTreeModel *seriesModel = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel"));
QCompleter *completer = new QCompleter(this);
completer->setModel(seriesModel);
@@ -239,6 +244,10 @@ void MovieInfoPage::setupGui(){
QHBoxLayout *dvdLayout = new QHBoxLayout;
mOnDvd = new QCheckBox(tr("Movie is on DVD"));
dvdLayout->addWidget(mOnDvd);
+ mHasPartno = new QCheckBox(tr("Movie has part no."));
+ mHasPartno->setChecked(true);
+ connect(mHasPartno, SIGNAL(stateChanged(int)), this, SLOT(hasPartnoStateChanged(int)));
+ dvdLayout->addWidget(mHasPartno);
dvdLayout->addStretch();
QLabel *l6 = new QLabel(tr("Dvd no."));
dvdLayout->addWidget(l6);
@@ -274,12 +283,14 @@ void MovieInfoPage::setupGui(){
//expose data
registerField("title*", mTitle);
+ registerField("subtitle", mSubtitle);
registerField("seriesNo", mSeriesNo);
registerField("partNo", mPartno);
registerField("quality", mQuality);
registerField("dvdNo", mDvdNo);
registerField("onDvd", mOnDvd);
registerField("usePicViewer", mUsePicViewer);
+ registerField("hasPartNo", mHasPartno);
}
void MovieInfoPage::initializePage(){
@@ -451,6 +462,10 @@ void MovieInfoPage::itemClicked(const QModelIndex &index){
mPicViewer->raise();
}
+void MovieInfoPage::hasPartnoStateChanged(int state){
+ mPartno->setEnabled(state == Qt::Checked);
+}
+
MovieMappingPage::MovieMappingPage(const QString &table, QWidget *parent) : QWizardPage(parent){
QString title = QString(tr("Edit %1")).arg(table);
QString subTitle = QString(tr("Edit %1 by adding them from the text field below")).arg(table);
diff --git a/newmoviewizard.h b/newmoviewizard.h
index 54a706a..60a9cdd 100644
--- a/newmoviewizard.h
+++ b/newmoviewizard.h
@@ -71,11 +71,13 @@ class MovieInfoPage : public QWizardPage {
void initModel();
void fileSelectionChanged(const QModelIndex &current, const QModelIndex &previous);
void itemClicked(const QModelIndex &index);
+ void hasPartnoStateChanged(int state);
private:
void setupGui();
QTreeView *mFileView;
QLineEdit *mTitle;
+ QLineEdit *mSubtitle;
QSpinBox *mSeriesNo;
QSpinBox *mPartno;
QSpinBox *mQuality;
@@ -84,6 +86,7 @@ class MovieInfoPage : public QWizardPage {
QPushButton *mRemoveFile;
QComboBox *mFileType;
QCheckBox *mOnDvd;
+ QCheckBox *mHasPartno;
QCheckBox *mUsePicViewer;
QPushButton *mNextDvdNo;
WizardTreeModel *mFileModel;
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index 3a3379b..b3c9a34 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -20,7 +20,7 @@
SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTreeModel(headers, parent){
mDb = QSqlDatabase::database("treedb");
mSeriesPartsQuery = new QSqlQuery(mDb);
- mSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart, bfavorite FROM seriesparts WHERE iseries_id = :id ORDER BY iseriespart");
+ mSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart, bfavorite, tsubtitle FROM seriesparts WHERE iseries_id = :id ORDER BY iseriespart");
mUpdateSeriesIdQuery = new QSqlQuery(mDb);
mUpdateSeriesIdQuery->prepare("UPDATE seriesparts SET iseries_id = :newid WHERE iseries_id = :oldid");
mUpdateSeriesNameQuery = new QSqlQuery(mDb);
@@ -38,7 +38,7 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
mSeriesPartFilesQuery = new QSqlQuery(mDb);
mSeriesPartFilesQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM seriesparts, files WHERE seriesparts.iseriesparts_id = :id AND seriesparts.iseriesparts_id = files.iseriespart_id");
mSeriesPartInsertQuery = new QSqlQuery(mDb);
- mSeriesPartInsertQuery->prepare("INSERT INTO seriesparts(iseriespart, iseries_id) VALUES(:part, :id)");
+ mSeriesPartInsertQuery->prepare("INSERT INTO seriesparts(iseriespart, iseries_id, tsubtitle) VALUES(:part, :id, :subtitle)");
mSortedMovieListQuery = new QSqlQuery(mDb);
mSortedMovieListQuery->prepare("SELECT files.tfilename, files.cmd5sum FROM series, seriesparts, files WHERE series.iseries_id = :id AND seriesparts.iseries_id = series.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.sifiletype = 1 ORDER BY seriesparts.iseriespart, files.sifileno");
mNextDvdNoQuery = new QSqlQuery(mDb);
@@ -48,7 +48,7 @@ SeriesTreeModel::SeriesTreeModel(QStringList &headers, QObject *parent) : SmTree
mFavoriteSeriesIdQuery = new QSqlQuery(mDb);
mFavoriteSeriesIdQuery->prepare("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts WHERE seriesparts.bfavorite = true and seriesparts.iseries_id = series.iseries_id");
mFavoriteSeriesPartsQuery = new QSqlQuery(mDb);
- mFavoriteSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart FROM seriesparts WHERE iseries_id = :id AND bfavorite = true");
+ mFavoriteSeriesPartsQuery->prepare("SELECT iseriesparts_id, iseriespart, tsubtitle FROM seriesparts WHERE iseries_id = :id AND bfavorite = true");
populate();
}
@@ -95,7 +95,14 @@ QVariant SeriesTreeModel::data(const QModelIndex &index, int role) const{
if(type == Series || type == NewSeries){
return item->data(Name);
}else if(type == Part){
- QString retval = QString("%1 %2").arg(item->data(Name).toString()).arg(item->data(SeriesPart).toInt());
+ QString retval = item->data(Name).toString();
+ if(item->data(SeriesPart).toInt() > 0){
+ retval = QString("%1 %2").arg(retval).arg(item->data(SeriesPart).toInt());
+ }
+ QString subtitle = item->data(Subtitle).toString();
+ if(!subtitle.isEmpty()){
+ retval = QString("%1 - %2").arg(retval).arg(subtitle);
+ }
return retval;
}else{
return QVariant();
@@ -316,7 +323,7 @@ bool SeriesTreeModel::addSeries(const QVariant &seriesName, const QModelIndex &p
if(lastId.next()){
int id = lastId.value(0).toInt();
QList<QVariant> seriesData;
- seriesData << name << id << QVariant() << QVariant() << Series << false;
+ seriesData << name << id << QVariant() << QVariant() << Series << false << QVariant();
if(addRow(seriesData, parent)){
mDb.commit();
return true;
@@ -327,7 +334,7 @@ bool SeriesTreeModel::addSeries(const QVariant &seriesName, const QModelIndex &p
return false;
}
-bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent){
+bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent, const QString &subTitle){
if(!parent.isValid() || parent.data(TypeRole) != Series){
return false;
}
@@ -335,12 +342,13 @@ bool SeriesTreeModel::addSeriesPart(int seriesPart, const QModelIndex &parent){
mDb.transaction();
mSeriesPartInsertQuery->bindValue(":part", seriesPart);
mSeriesPartInsertQuery->bindValue(":id", seriesId);
+ mSeriesPartInsertQuery->bindValue(":subtitle", subTitle.toLower());
if(mSeriesPartInsertQuery->exec()){
QSqlQuery lastId("SELECT currval('seriesparts_seriesparts_id__seq')", mDb);
if(lastId.next()){
int id = lastId.value(0).toInt();
QList<QVariant> partData;
- partData << parent.data(NameRole) << seriesId << id << seriesPart << Part << false;
+ partData << parent.data(NameRole) << seriesId << id << seriesPart << Part << false << subTitle;
if(addRow(partData, parent)){
mDb.commit();
mSeriesPartSeriesMap.insert(id, seriesId);
@@ -365,19 +373,19 @@ void SeriesTreeModel::setMappingFilter(const QString &filter, const QString &tab
if(tableIdQuery.exec()){
mSeriesPartSeriesMap.clear();
QStringList ids;
- SmTreeItem *rootItem = new SmTreeItem(6);
+ SmTreeItem *rootItem = new SmTreeItem(7);
while(tableIdQuery.next()){
ids << QString::number(tableIdQuery.value(0).toInt());
}
if(ids.isEmpty()){
return;
}
- QString seriesPartsTemplate("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart, seriesparts.bfavorite FROM seriesparts, seriesparts_%1map WHERE seriesparts.iseries_id = :id AND seriesparts_%1map.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts_%1map.i%1s_id IN (%2) ORDER BY iseriespart");
+ QString seriesPartsTemplate("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart, seriesparts.bfavorite, seriesparts.tsubtitle FROM seriesparts, seriesparts_%1map WHERE seriesparts.iseries_id = :id AND seriesparts_%1map.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts_%1map.i%1s_id IN (%2) ORDER BY iseriespart");
QString seriesIdTemplate = QString("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts, seriesparts_%1map, %1s WHERE %1s.i%1s_id IN (%2) AND %1s.i%1s_id = seriesparts_%1map.i%1s_id AND seriesparts_%1map.iseriesparts_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY series.tseries_name").arg(table).arg(ids.join(","));
QSqlQuery seriesIdQuery(seriesIdTemplate, mDb);
while(seriesIdQuery.next()){
QList<QVariant> seriesData;
- seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << Series << false;
+ seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << Series << false << QVariant();
SmTreeItem *seriesItem = new SmTreeItem(seriesData, rootItem);
rootItem->appendChild(seriesItem);
QString partsQueryString = seriesPartsTemplate.arg(table).arg(ids.join(","));
@@ -387,7 +395,7 @@ void SeriesTreeModel::setMappingFilter(const QString &filter, const QString &tab
partsQuery.exec();
while(partsQuery.next()){
QList<QVariant> partData;
- partData << seriesData.at(Name) << seriesData.at(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << Part << partsQuery.value(2);
+ partData << seriesData.at(Name) << seriesData.at(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << Part << partsQuery.value(2) << partsQuery.value(3);
SmTreeItem *partItem = new SmTreeItem(partData, seriesItem);
seriesItem->appendChild(partItem);
mSeriesPartSeriesMap.insert(partsQuery.value(0).toInt(), seriesData.at(1).toInt());
@@ -407,7 +415,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
seriesIdQuery.prepare(idQueryTemplate);
value = QString("%%1%").arg(filter);
seriesIdQuery.bindValue(":value", value);
- partsQueryTemplate = QString("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart, seriesparts.bfavorite FROM seriesparts, series, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.%1 LIKE :value");
+ partsQueryTemplate = QString("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart, seriesparts.bfavorite, seriesparts.tsubtitle FROM seriesparts, series, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.%1 LIKE :value");
}else if(queryType == NumericQuery){
QRegExp valRe("([<>=]?)\\s*(\\d+)\\s*(\\w*)");
(void)valRe.indexIn(value.toString());
@@ -417,16 +425,16 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
QString idQueryTemplate = QString("SELECT DISTINCT(series.iseries_id), series.tseries_name FROM series, seriesparts, files WHERE files.%1 %2 :value AND files.iseriespart_id = seriesparts.iseriesparts_id AND seriesparts.iseries_id = series.iseries_id ORDER BY series.tseries_name").arg(column).arg(op);
seriesIdQuery.prepare(idQueryTemplate);
seriesIdQuery.bindValue(":value", value);
- partsQueryTemplate = QString("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart, seriesparts.bfavorite FROM seriesparts, series, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.%1 %2 :value");
+ partsQueryTemplate = QString("SELECT DISTINCT(seriesparts.iseriesparts_id), seriesparts.iseriespart, seriesparts.bfavorite, seriesparts.tsubtitle FROM seriesparts, series, files WHERE series.iseries_id = :id AND series.iseries_id = seriesparts.iseries_id AND seriesparts.iseriesparts_id = files.iseriespart_id AND files.%1 %2 :value");
}else{
return;
}
if(seriesIdQuery.exec()){
mSeriesPartSeriesMap.clear();
- SmTreeItem *rootItem = new SmTreeItem(6);
+ SmTreeItem *rootItem = new SmTreeItem(7);
while(seriesIdQuery.next()){
QList<QVariant> seriesData;
- seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << Series << false;
+ seriesData << seriesIdQuery.value(1) << seriesIdQuery.value(0) << QVariant() << QVariant() << Series << false << QVariant();
SmTreeItem *seriesItem = new SmTreeItem(seriesData, rootItem);
rootItem->appendChild(seriesItem);
QString partsQueryString;
@@ -443,7 +451,7 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
if(partsQuery.exec()){
while(partsQuery.next()){
QList<QVariant> partData;
- partData << seriesData.at(Name) << seriesData.at(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << Part << partsQuery.value(2);
+ partData << seriesData.at(Name) << seriesData.at(SeriesId) << partsQuery.value(0) << partsQuery.value(1) << Part << partsQuery.value(2) << partsQuery.value(3);
SmTreeItem *partItem = new SmTreeItem(partData, seriesItem);
seriesItem->appendChild(partItem);
mSeriesPartSeriesMap.insert(partsQuery.value(0).toInt(), seriesData.at(1).toInt());
@@ -457,17 +465,17 @@ void SeriesTreeModel::setFileFilter(const QString &filter, const QString &column
void SeriesTreeModel::setFavoriteFilter(){
if(mFavoriteSeriesIdQuery->exec()){
mSeriesPartSeriesMap.clear();
- SmTreeItem *rootItem = new SmTreeItem(6);
+ SmTreeItem *rootItem = new SmTreeItem(7);
while(mFavoriteSeriesIdQuery->next()){
QList<QVariant> seriesData;
- seriesData << mFavoriteSeriesIdQuery->value(1) << mFavoriteSeriesIdQuery->value(0) << QVariant() << QVariant() << Series << false;
+ seriesData << mFavoriteSeriesIdQuery->value(1) << mFavoriteSeriesIdQuery->value(0) << QVariant() << QVariant() << Series << false << QVariant();
SmTreeItem *seriesItem = new SmTreeItem(seriesData, rootItem);
rootItem->appendChild(seriesItem);
mFavoriteSeriesPartsQuery->bindValue(":id", seriesData.at(1));
if(mFavoriteSeriesPartsQuery->exec()){
while(mFavoriteSeriesPartsQuery->next()){
QList<QVariant> partData;
- partData << seriesData.at(Name) << seriesData.at(SeriesId) << mFavoriteSeriesPartsQuery->value(0) << mFavoriteSeriesPartsQuery->value(1) << Part << true;
+ partData << seriesData.at(Name) << seriesData.at(SeriesId) << mFavoriteSeriesPartsQuery->value(0) << mFavoriteSeriesPartsQuery->value(1) << Part << true << mFavoriteSeriesPartsQuery->value(2);
SmTreeItem *partItem = new SmTreeItem(partData, seriesItem);
seriesItem->appendChild(partItem);
mSeriesPartSeriesMap.insert(mFavoriteSeriesPartsQuery->value(0).toInt(), seriesData.at(1).toInt());
@@ -507,17 +515,17 @@ void SeriesTreeModel::conditionalUpdate(const QModelIndex &parent, int field, co
void SeriesTreeModel::populate(){
QSqlQuery seriesQuery = QSqlQuery("SELECT iseries_id, tseries_name FROM series ORDER BY tseries_name", mDb);
mSeriesPartSeriesMap.clear();
- SmTreeItem *rootItem = new SmTreeItem(6);
+ SmTreeItem *rootItem = new SmTreeItem(7);
while(seriesQuery.next()){
QList<QVariant> seriesData;
- seriesData << seriesQuery.value(1) << seriesQuery.value(0) << QVariant() << QVariant() << Series << false;
+ seriesData << seriesQuery.value(1) << seriesQuery.value(0) << QVariant() << QVariant() << Series << false << QVariant();
SmTreeItem *seriesItem = new SmTreeItem(seriesData, rootItem);
rootItem->appendChild(seriesItem);
mSeriesPartsQuery->bindValue(":id", seriesData.at(1));
mSeriesPartsQuery->exec();
while(mSeriesPartsQuery->next()){
QList<QVariant> partData;
- partData << seriesData.at(Name) << seriesData.at(SeriesId) << mSeriesPartsQuery->value(0) << mSeriesPartsQuery->value(1) << Part << mSeriesPartsQuery->value(2);
+ partData << seriesData.at(Name) << seriesData.at(SeriesId) << mSeriesPartsQuery->value(0) << mSeriesPartsQuery->value(1) << Part << mSeriesPartsQuery->value(2) << mSeriesPartsQuery->value(3);
SmTreeItem *partItem = new SmTreeItem(partData, seriesItem);
seriesItem->appendChild(partItem);
mSeriesPartSeriesMap.insert(mSeriesPartsQuery->value(0).toInt(), seriesData.at(1).toInt());
diff --git a/seriestreemodel.h b/seriestreemodel.h
index 7ac08de..2e07706 100644
--- a/seriestreemodel.h
+++ b/seriestreemodel.h
@@ -20,8 +20,8 @@ class QSqlQuery;
class SeriesTreeModel : public SmTreeModel {
Q_OBJECT
public:
- enum CustomRoles { NameRole = Qt::UserRole + 1, SeriesIdRole = Qt::UserRole + 2, SeriesPartIdRole = Qt::UserRole + 3, SeriesPartRole = Qt::UserRole + 4, TypeRole = Qt::UserRole + 5, FavoriteRole = Qt::UserRole + 6 };
- enum Fields { Name = 0, SeriesId = 1, SeriesPartId = 2, SeriesPart = 3, Type = 4, Favorite = 5 };
+ enum CustomRoles { NameRole = Qt::UserRole + 1, SeriesIdRole = Qt::UserRole + 2, SeriesPartIdRole = Qt::UserRole + 3, SeriesPartRole = Qt::UserRole + 4, TypeRole = Qt::UserRole + 5, FavoriteRole = Qt::UserRole + 6, SubtitleRole = Qt::UserRole + 7 };
+ enum Fields { Name = 0, SeriesId = 1, SeriesPartId = 2, SeriesPart = 3, Type = 4, Favorite = 5, Subtitle = 6 };
enum Types { Series, Part, NewSeries };
enum QueryType { NumericQuery, TextQuery };
explicit SeriesTreeModel(QStringList &headers, QObject *parent = 0);
@@ -44,7 +44,7 @@ class SeriesTreeModel : public SmTreeModel {
//series data manipulation
bool deleteFromSeries(const QModelIndex &what);
bool addSeries(const QVariant &seriesName, const QModelIndex &parent);
- bool addSeriesPart(int seriesPart, const QModelIndex &parent);
+ bool addSeriesPart(int seriesPart, const QModelIndex &parent, const QString &subTitle);
//filter
void clearFilter();
diff --git a/seriestreewidget.cpp b/seriestreewidget.cpp
index 1407ca1..5b25f0f 100644
--- a/seriestreewidget.cpp
+++ b/seriestreewidget.cpp
@@ -64,7 +64,7 @@ SeriesTreeWidget::SeriesTreeWidget(QWidget *parent) : QWidget(parent){
mProxy->setSourceModel(mModel);
mView->setModel(mProxy);
mView->setSortingEnabled(true);
- for(int i = 1; i < 6; ++i){
+ for(int i = 1; i < 7; ++i){
mView->setColumnHidden(i, true);
}
mView->resizeColumnToContents(0);
diff --git a/smglobals.cpp b/smglobals.cpp
index 005c710..0ee07c5 100644
--- a/smglobals.cpp
+++ b/smglobals.cpp
@@ -58,7 +58,7 @@ SmGlobals *SmGlobals::instance(){
QAbstractItemModel *SmGlobals::model(const QString &which){
if(which == "SeriesModel"){
if(!mModels.contains(which)){
- QStringList headers = QStringList() << tr("Series") << tr("Series ID") << tr("Series part ID") << tr("Part") << tr("Type") << tr("Favorite");
+ QStringList headers = QStringList() << tr("Series") << tr("Series ID") << tr("Series part ID") << tr("Part") << tr("Type") << tr("Favorite") << tr("Subtitle");
SeriesTreeModel *model = new SeriesTreeModel(headers);
mModels.insert(which, model);
}