summaryrefslogtreecommitdiffstats
path: root/archivetreeview.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-06-26 15:24:00 +0200
committerArno <am@disconnect.de>2010-06-26 15:24:00 +0200
commit0b807eba97e65bf9e25f83387826ef2579b79c90 (patch)
tree9a86166a4ebd77d95e9a26b723c49ebab417e337 /archivetreeview.cpp
parent6567a92bec5ca8b2bc6b7156bddc5ba8508f31b3 (diff)
downloadSheMov-0b807eba97e65bf9e25f83387826ef2579b79c90.tar.gz
SheMov-0b807eba97e65bf9e25f83387826ef2579b79c90.tar.bz2
SheMov-0b807eba97e65bf9e25f83387826ef2579b79c90.zip
Actors and genre edit
Implemented widgets for actor and genre editing of movies. Created new MappingTableWidget for both genres and actors and revamped ArchiveTreeView to show 2 widgets below the FilesTreeView separated by a splitter. While testing the new setup several bugs were fixed: -an SQL syntax error in FilesTreeModel -fixed SmModelSingleton to properly work with table names I also changed the signature of MappingTableModel::addMapping for the ease of use and added MappingTableModel::removeMapping. MappingTableModel got 2 new convenience functions: 1. bool contains(QString) to check if an item is already present 2. QModelIndex find() to get the index of a specific value from the model.
Diffstat (limited to 'archivetreeview.cpp')
-rw-r--r--archivetreeview.cpp48
1 files changed, 47 insertions, 1 deletions
diff --git a/archivetreeview.cpp b/archivetreeview.cpp
index 211aa37..d77f8e3 100644
--- a/archivetreeview.cpp
+++ b/archivetreeview.cpp
@@ -20,8 +20,14 @@
#include "filestreewidget.h"
#include "filestreemodel.h"
#include "seriestreemodel.h"
+#include "mappingtablewidget.h"
+#include "mappingtablemodel.h"
ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
+ // models
+ mActorsModel = static_cast<MappingTableModel*>(SmModelSingleton::instance()->model("actors"));
+ mGenresModel = static_cast<MappingTableModel*>(SmModelSingleton::instance()->model("genres"));
+
// series view
mSeriesWidget = new SeriesTreeWidget;
QItemSelectionModel *selModel = mSeriesWidget->seriesTree()->selectionModel();
@@ -36,11 +42,29 @@ ArchiveTreeView::ArchiveTreeView(QWidget *parent) : QWidget(parent){
mFilesWidget->filesTree()->setColumnHidden(i, true);
}
+ // actors and genre
+ QWidget *genreActorWidget = new QWidget;
+ QHBoxLayout *genreActorLayout = new QHBoxLayout;
+ mActorsWidget = new MappingTableWidget("actors");
+ mGenresWidget = new MappingTableWidget("genres");
+ genreActorLayout->addWidget(mActorsWidget);
+ genreActorLayout->addWidget(mGenresWidget);
+ genreActorWidget->setLayout(genreActorLayout);
+
+ // fileview, actors and genres
+ QSplitter *verticalSplitter = new QSplitter(Qt::Vertical);
+ verticalSplitter->addWidget(mFilesWidget);
+ verticalSplitter->addWidget(genreActorWidget);
+ verticalSplitter->setStretchFactor(0, 3);
+ verticalSplitter->setStretchFactor(1, 1);
+
// layout
QHBoxLayout *mainLayout = new QHBoxLayout;
QSplitter *splitter = new QSplitter;
splitter->addWidget(mSeriesWidget);
- splitter->addWidget(mFilesWidget);
+ splitter->addWidget(verticalSplitter);
+ splitter->setStretchFactor(0, 2);
+ splitter->setStretchFactor(1, 3);
mainLayout->addWidget(splitter);
setLayout(mainLayout);
}
@@ -83,4 +107,26 @@ void ArchiveTreeView::currentChanged(const QItemSelection &selected, const QItem
mFilesWidget->filesTree()->resizeColumnToContents(1);
mFilesWidget->filesTree()->resizeColumnToContents(2);
mFilesWidget->filesTree()->resizeColumnToContents(3);
+ setMappingItems(selectedPartIds, mActorsModel, mActorsWidget);
+ setMappingItems(selectedPartIds, mGenresModel, mGenresWidget);
+}
+
+void ArchiveTreeView::setMappingItems(QList<int>seriesPartIds, MappingTableModel *model, MappingTableWidget *widget){
+ QStringList items;
+ foreach(int id, seriesPartIds){
+ QList<QVariant> actorNames = model->mappings(id);
+ foreach(QVariant v, actorNames){
+ if(!items.contains(v.toString())){
+ items << v.toString();
+ }
+ }
+ }
+ qSort(items);
+ widget->setStringList(items);
+ widget->setEditEnabled(seriesPartIds.count() == 1);
+ if(seriesPartIds.count() == 1){
+ widget->setCurrentId(seriesPartIds.at(0));
+ }else{
+ widget->setCurrentId(-1);
+ }
}