summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--archivetreeview.cpp5
-rw-r--r--archivetreeview.h1
-rw-r--r--filestreewidget.cpp17
-rw-r--r--seriestreemodel.cpp18
-rw-r--r--seriestreemodel.h4
-rw-r--r--smtreemodel.cpp26
-rw-r--r--smtreemodel.h1
7 files changed, 54 insertions, 18 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp
index 9bb5aae..65eb11f 100644
--- a/archivetreeview.cpp
+++ b/archivetreeview.cpp
@@ -57,6 +57,7 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
connect(selModel, SIGNAL(selectionChanged(QItemSelection,QItemSelection)), this, SLOT(currentChanged(QItemSelection,QItemSelection)));
connect(mSeriesWidget->seriesTree(), SIGNAL(doubleClicked(QModelIndex)), this, SLOT(playSelected()));
mSeriesModel = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel"));
+ connect(mSeriesModel, SIGNAL(localsChanged()), this, SLOT(invalidateSorting()));
// files view
mFilesWidget = new FilesTreeWidget;
@@ -306,6 +307,10 @@ void ArchiveTreeView::playSelected(const QString &preferred){
QProcess::startDetached(program, args);
}
+void ArchiveTreeView::invalidateSorting(){
+ mSeriesWidget->seriesProxy()->invalidate();
+}
+
void ArchiveTreeView::constructWindowTitle(){
QString modeString = mFilesModel->modeName(mFilesModel->mode());
mWindowTitle = QString("Movie Archive - [%1]").arg(modeString);
diff --git a/archivetreeview.h b/archivetreeview.h
index 0de5782..15a27c5 100644
--- a/archivetreeview.h
+++ b/archivetreeview.h
@@ -58,6 +58,7 @@ class ArchiveTreeView : public QWidget
void currentChanged(const QItemSelection &selected, const QItemSelection &deselected);
void setMappingItems(const QList<int> seriesPartIds, MappingTableModel *model, MappingTableWidget *widget);
void playSelected(const QString &preferred = QString());
+ void invalidateSorting();
private:
//functions
diff --git a/filestreewidget.cpp b/filestreewidget.cpp
index 6999c06..678abb1 100644
--- a/filestreewidget.cpp
+++ b/filestreewidget.cpp
@@ -230,17 +230,22 @@ void FilesTreeWidget::edit(int column){
value = QInputDialog::getInt(this, msg, msg, sIdxes.first().data().toInt(), -1, 10, 1, &dialogOk);
}
if(column == FilesTreeModel::DvdNo){
- SeriesTreeModel *seriesModel = static_cast<SeriesTreeModel*>(SmGlobals::instance()->model("SeriesModel"));
- int nextDvdNo = seriesModel->findNextDvdNo();
+ int nextDvdNo = mSeriesModel->findNextDvdNo();
value = QInputDialog::getInt(this, msg, msg, nextDvdNo, -1, 2147483647, 1, &dialogOk);
}
if(dialogOk){
foreach(QModelIndex curIdx, sIdxes){
mModel->setData(curIdx, value, Qt::EditRole);
- }
- // reload the view
- if((column == FilesTreeModel::DvdNo) && (mModel->mode() != FilesTreeModel::Normal)){
- mModel->setMode(mModel->mode());
+ if(column == FilesTreeModel::DvdNo){
+ if(curIdx.data(FilesTreeModel::FileTypeRole).toInt() == FilesTreeModel::Movie){
+ QModelIndex seriesIdx = mSeriesModel->findRecursive(curIdx.data(FilesTreeModel::SeriesPartIdRole), SeriesTreeModel::SeriesPartId, mSeriesModel->index(0, 0, QModelIndex()));
+ if(seriesIdx.isValid()){
+ QModelIndex isLocalIdx = mSeriesModel->index(seriesIdx.row(), SeriesTreeModel::IsLocal, seriesIdx.parent());
+ bool isLocal = (value > -1) ? false : true;
+ mSeriesModel->setData(isLocalIdx, isLocal, Qt::EditRole);
+ }
+ }
+ }
}
}
}
diff --git a/seriestreemodel.cpp b/seriestreemodel.cpp
index a0dfebf..b850b9c 100644
--- a/seriestreemodel.cpp
+++ b/seriestreemodel.cpp
@@ -181,11 +181,13 @@ bool SeriesTreeModel::setData(const QModelIndex &index, const QVariant &value, i
}
}
}
- }else if(index.data(TypeRole).toInt() == NewSeries){
- return setNewSeries(index, value);
- }else{
- return updateGeneric(index, value);
+ }else if(index.column() == IsLocal){
+ setLocal(index, value);
}
+ }else if(index.data(TypeRole).toInt() == NewSeries){
+ return setNewSeries(index, value);
+ }else{
+ return updateGeneric(index, value);
}
return false;
}
@@ -671,3 +673,11 @@ bool SeriesTreeModel::updateGeneric(const QModelIndex &source, const QVariant &v
mDb.rollback();
return false;
}
+
+bool SeriesTreeModel::setLocal(const QModelIndex &source, const QVariant &value){
+ SmTreeItem *item = static_cast<SmTreeItem*>(source.internalPointer());
+ item->setData(IsLocal, value);
+ emit dataChanged(source, source);
+ emit localsChanged();
+ return true;
+}
diff --git a/seriestreemodel.h b/seriestreemodel.h
index aa40ce3..005e2c7 100644
--- a/seriestreemodel.h
+++ b/seriestreemodel.h
@@ -60,6 +60,7 @@ class SeriesTreeModel : public SmTreeModel {
signals:
void needResort();
void consistencyMsg(const QString &msg);
+ void localsChanged();
public slots:
void readSettings();
@@ -71,8 +72,7 @@ class SeriesTreeModel : public SmTreeModel {
bool renameSeries(const QModelIndex &source, const QVariant &value);
bool setNewSeries(const QModelIndex &source, const QVariant &value);
bool updateGeneric(const QModelIndex &source, const QVariant &value);
- //bool setFavorite(const QModelIndex &source, const QVariant &value);
- //bool setSubtitle(const QModelIndex &source, const QVariant &value);
+ bool setLocal(const QModelIndex &source, const QVariant &value);
QString archivePath(const QString &fileName, const QString &md5sum) const;
QSqlDatabase mDb;
QSqlQuery *mSeriesPartsQuery;
diff --git a/smtreemodel.cpp b/smtreemodel.cpp
index 8b51bab..bcd1a8a 100644
--- a/smtreemodel.cpp
+++ b/smtreemodel.cpp
@@ -136,6 +136,26 @@ QModelIndex SmTreeModel::find(const QVariant &value, int column, const QModelInd
return QModelIndex();
}
+QModelIndex SmTreeModel::findRecursive(const QVariant &value, int column, const QModelIndex &parent) const{
+ SmTreeItem *parentItem = 0;
+ if(!parent.isValid()){
+ return QModelIndex();
+ }else{
+ parentItem = static_cast<SmTreeItem*>(parent.internalPointer());
+ }
+ for(int i = 0; i < parentItem->childCount(); ++i){
+ SmTreeItem *child = parentItem->child(i);
+ if(child->childCount()){
+ return findRecursive(value, column, createIndex(i, column, child));
+ }
+ if(child->data(column) == value){
+ return createIndex(i, column, child);
+ }
+ }
+ QModelIndex next = index(parent.row() + 1, column, parent.parent());
+ return findRecursive(value, column, next);
+}
+
bool SmTreeModel::setRoot(SmTreeItem *rootItem){
if(mRootItem){
beginResetModel();
@@ -159,13 +179,7 @@ void SmTreeModel::reparent(const QModelIndex &idx, const QModelIndex &newParent)
if(!idx.isValid()){
return;
}
- SmTreeItem *parentItem = 0;
SmTreeItem *item = static_cast<SmTreeItem*>(idx.internalPointer());
- if(newParent == QModelIndex()){
- parentItem = root();
- }else{
- parentItem = static_cast<SmTreeItem*>(newParent.internalPointer());
- }
QList<QVariant> data;
for(int i = 0; i < item->columnCount(); ++i){
data << item->data(i);
diff --git a/smtreemodel.h b/smtreemodel.h
index f23e767..e097d60 100644
--- a/smtreemodel.h
+++ b/smtreemodel.h
@@ -37,6 +37,7 @@ class SmTreeModel : public QAbstractItemModel {
virtual QVariant data(const QModelIndex &index, int role) const;
virtual bool setData(const QModelIndex &index, const QVariant &value, int role);
virtual QModelIndex find(const QVariant &value, int column = 0, const QModelIndex &parent = QModelIndex()) const;
+ virtual QModelIndex findRecursive(const QVariant &value, int column = 0, const QModelIndex &parent = QModelIndex()) const;
// root + parent item
bool setRoot(SmTreeItem *rootItem);