/* 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") << tr("Seriespart") << tr("Display name") << tr("Dur./Size"); 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) {}