diff options
-rw-r--r-- | archivemodel.cpp | 27 | ||||
-rw-r--r-- | archivemodel.h | 5 |
2 files changed, 25 insertions, 7 deletions
diff --git a/archivemodel.cpp b/archivemodel.cpp index c169b4d..a5d2298 100644 --- a/archivemodel.cpp +++ b/archivemodel.cpp @@ -9,6 +9,7 @@ #include <QSqlQuery> #include <QFile> #include <QSettings> +#include <QMutexLocker> #include "smtreeitem.h" #include "archivemodel.h" @@ -70,6 +71,10 @@ bool ArchiveModel::setData(const QModelIndex &idx, const QVariant &value, int ro if(role != Qt::EditRole){ return false; } + // any other column is invisible, hence... + if(idx.column() != Name){ + return false; + } SmTreeItem *item = itemAt(idx); int nodeType = item->data(Type).toInt(); QSqlQuery updateQuery(mDb); @@ -86,15 +91,14 @@ bool ArchiveModel::setData(const QModelIndex &idx, const QVariant &value, int ro updateQuery.bindValue(":value", value); updateQuery.bindValue(":id", id); if(updateQuery.exec()){ - if(nodeType == GenreNode || nodeType == ActorNode){ - item->setData(Name, value); - emit dataChanged(idx, idx); - return true; - }else if(nodeType == SeriesNode){ - item->setData(Name, value); + item->setData(Name, value); + emit dataChanged(idx, idx); + if(nodeType == SeriesNode){ emit needRefresh(); return true; } + writeCache(mOrder); + return true; }else{ emitDatabaseError(updateQuery.lastError()); } @@ -333,7 +337,18 @@ ArchiveCollector::ArchiveCollector(int numFields, QObject *parent) : QThread(par mDb.open(); } +SmTreeItem *ArchiveCollector::rootItem() { + QMutexLocker l(&mAccessMx); + return mRootItem; +} + +int ArchiveCollector::sortOrder() { + QMutexLocker l(&mAccessMx); + return mSortOrder; +} + void ArchiveCollector::populate(int order, SmTreeItem *rootItem){ + QMutexLocker l(&mAccessMx); mRootItem = rootItem; mSortOrder = order; } diff --git a/archivemodel.h b/archivemodel.h index 08b4fd3..0e3e29c 100644 --- a/archivemodel.h +++ b/archivemodel.h @@ -12,6 +12,7 @@ #include <QSqlDatabase> #include <QThread> #include <QDataStream> +#include <QMutex> #include "smtreemodel.h" @@ -67,7 +68,8 @@ class ArchiveCollector : public QThread { Q_OBJECT public: explicit ArchiveCollector(int numFields, QObject *parent = 0); - SmTreeItem *rootItem() { return mRootItem; } + SmTreeItem *rootItem(); + int sortOrder(); public slots: void populate(int order, SmTreeItem *rootItem); @@ -87,6 +89,7 @@ class ArchiveCollector : public QThread { void fetchParts(const QVariant &id, SmTreeItem *parent); QSqlDatabase mDb; SmTreeItem *mRootItem; + QMutex mAccessMx; int mNumFields; int mSortOrder; }; |