From ad322157891cec53a7b660629d7c244e75df81d5 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 24 Jul 2010 17:15:00 +0200 Subject: Act on doubleClick in FileTreeWidget When doubleclicking a picture in FileTreeWidget the pictureViewer is shown. Doubleclicking a movie file launches the default movie player. Since PictureViewer is now used in FileSystemWidget and ArchiveTreeView a global instance is needed. The appropriate place for this is a singleton. Since we already had a singleton for QAbstractItemModels I renamed it to SmGlobals and added a function to return a PictureViewer object. Renaming it was quite easy thanks to QtCreator's ability to rename variable names. --- smglobals.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 smglobals.cpp (limited to 'smglobals.cpp') diff --git a/smglobals.cpp b/smglobals.cpp new file mode 100644 index 0000000..61530d1 --- /dev/null +++ b/smglobals.cpp @@ -0,0 +1,83 @@ +/* + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License + as published by the Free Software Foundation; either version + 2 of the License, or (at your option) any later version. +*/ + +#include +#include +#include +#include +#include + +#include "smglobals.h" +#include "seriestreemodel.h" +#include "filestreemodel.h" +#include "mappingtablemodel.h" +#include "pictureviewer.h" + +SmGlobals *SmGlobals::mInstance = 0; + +SmGlobals::~SmGlobals(){ + foreach(QAbstractItemModel *model, mModels.values()){ + delete model; + } + QSqlDatabase::removeDatabase("treedb"); +} + +SmGlobals *SmGlobals::instance(){ + if(!mInstance){ + mInstance = new SmGlobals; + if(!QSqlDatabase::contains("treedb")){ + QSettings s; + QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "treedb"); + db.setHostName(s.value("database/hostname").toString()); + db.setUserName(s.value("database/dbuser").toString()); + db.setPassword(s.value("database/dbpass").toString()); + db.setDatabaseName(s.value("database/dbname").toString()); + if(!db.open()){ + QMessageBox::critical(0, tr("Error"), tr("Could not open database. Please configure it and restart program.")); + } + } + } + return mInstance; +} + +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"); + SeriesTreeModel *model = new SeriesTreeModel(headers); + mModels.insert(which, model); + } + }else if(which == "FilesModel"){ + if(!mModels.contains(which)){ + QStringList headers = QStringList() << tr("Name") << tr("Part") << tr("Size") << tr("Qual.") << tr("Dvd") << tr("Full Path") << tr("Size") << tr("Type") << tr("Md5 sum") << tr("Series part ID") << tr("File ID"); + FilesTreeModel *model = new FilesTreeModel(headers); + mModels.insert(which, model); + } + }else if(which == "actors"){ + if(!mModels.contains(which)){ + QStringList headers = QStringList() << tr("Actor") << tr("Id"); + MappingTableModel *model = new MappingTableModel(headers, "actors"); + mModels.insert(which, model); + } + }else if(which == "genres"){ + if(!mModels.contains(which)){ + QStringList headers = QStringList() << tr("Genre") << tr("Id"); + MappingTableModel *model = new MappingTableModel(headers, "genres"); + mModels.insert(which, model); + } + } + return mModels.contains(which) ? mModels.value(which) : 0; +} + +PictureViewer *SmGlobals::pictureViewer() { + if(!mPictureViewer){ + mPictureViewer = new PictureViewer; + } + return mPictureViewer; +} + +SmGlobals::SmGlobals() : mPictureViewer(0) {} -- cgit v1.2.3-70-g09d2