From b0ed5d04a5934be074383541026d49afc0804adb Mon Sep 17 00:00:00 2001 From: Arno Date: Tue, 23 Aug 2011 16:35:44 +0200 Subject: Hmm, checking out treemodel again. This seems way too complex... --- propertiesdialog.cpp | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) (limited to 'propertiesdialog.cpp') diff --git a/propertiesdialog.cpp b/propertiesdialog.cpp index 332105d..485df6b 100644 --- a/propertiesdialog.cpp +++ b/propertiesdialog.cpp @@ -14,6 +14,7 @@ #include #include #include +#include #include "propertiesdialog.h" #include "smtreemodel.h" @@ -41,8 +42,6 @@ void PropertiesDialog::populate(int seriesPartId){ root->appendChild(movieDummy); SmTreeItem *pictureDummy = new SmTreeItem(QList() << "Covers" << -1 << DummyNode, root); root->appendChild(pictureDummy); - SmTreeItem *screenshotDummy = new SmTreeItem(QList() << "Screenshots" << -1 << DummyNode, root); - root->appendChild(screenshotDummy); //populate model QSqlDatabase db = QSqlDatabase::database("treedb"); @@ -52,7 +51,7 @@ void PropertiesDialog::populate(int seriesPartId){ if(filesQuery.exec()){ while(filesQuery.next()){ QList data; - data << filesQuery.value(0) << filesQuery.value(1);// << filesQuery.value(2); + data << filesQuery.value(0) << filesQuery.value(1); if(filesQuery.value(2).toInt() == FilesTreeModel::Movie){ data << MovieFileNode; SmTreeItem *dataItem = new SmTreeItem(data, movieDummy); @@ -67,7 +66,7 @@ void PropertiesDialog::populate(int seriesPartId){ mDisplayModel->setRoot(root); //setup caption - QModelIndex seriesIdx = mSeriesModel->findRecursive(seriesPartId, SeriesTreeModel::SeriesPartId, mSeriesModel->index(0, SeriesTreeModel::SeriesPartId, QModelIndex())); + QModelIndex seriesIdx = mSeriesModel->findRecursive(seriesPartId, SeriesTreeModel::SeriesPartId, QModelIndex()); Q_ASSERT(seriesIdx.isValid()); QString captionString = QString(tr("Properties for %1")).arg(mSeriesModel->index(seriesIdx.row(), SeriesTreeModel::Name, seriesIdx.parent()).data().toString()); mCaption->setText(captionString); @@ -79,6 +78,24 @@ void PropertiesDialog::populate(int seriesPartId){ mFileView->resizeColumnToContents(0); } +void PropertiesDialog::showPicture(QModelIndex current, QModelIndex previous){ + Q_UNUSED(previous); + QModelIndex fileIdIdx = mDisplayModel->index(current.row(), 1, current.parent()); + int fileId = fileIdIdx.data().toInt(); + QModelIndex nodeTypeIdx = mDisplayModel->index(current.row(), 2, current.parent()); + int nodeType = nodeTypeIdx.data().toInt(); + if(nodeType == MovieFileNode){ + QPixmap pic = SmGlobals::instance()->frameCache()->entry(current.data().toString()); + mPictureLabel->setPixmap(pic); + }else if(nodeType == PictureFileNode){ + QModelIndex fileIdx = mFilesModel->findRecursive(fileId, FilesTreeModel::FilesId, mFilesModel->index(0, 0, QModelIndex())); + if(fileIdx.isValid()){ + QString fullPath = fileIdx.data(FilesTreeModel::FullPathRole).toString(); + mPictureLabel->setPixmap(fullPath); + } + } +} + void PropertiesDialog::setupGui(){ //white caption QVBoxLayout *mainLayout = new QVBoxLayout; @@ -94,9 +111,19 @@ void PropertiesDialog::setupGui(){ mTab = new QTabWidget; mFileView = new QTreeView; mFileView->setModel(mDisplayModel); + mFileView->setSelectionBehavior(QAbstractItemView::SelectRows); + mFileView->setSelectionMode(QAbstractItemView::SingleSelection); + connect(mFileView->selectionModel(), SIGNAL(currentChanged(QModelIndex,QModelIndex)), this, SLOT(showPicture(QModelIndex,QModelIndex))); mSplitter->addWidget(mFileView); - QWidget *dummyTab = new QWidget; - mTab->addTab(dummyTab, "Dummy"); + mPicTab = new QWidget; + QScrollArea *picScroll = new QScrollArea; + mPictureLabel = new QLabel; + //mPictureLabel->setScaledContents(true); + picScroll->setWidget(mPictureLabel); + QHBoxLayout *pictureLayout = new QHBoxLayout; + pictureLayout->addWidget(mPictureLabel); + mPicTab->setLayout(pictureLayout); + mTab->addTab(mPicTab, "Picture"); mSplitter->addWidget(mTab); mSplitter->setStretchFactor(0, 1); mSplitter->setStretchFactor(1, 3); -- cgit v1.2.3-70-g09d2