cmainwindow.cpp cmainwindow.h ui_cmainwindow.h cimportinterface.h cingredient.h coptions.h cimportingredientdialog.h QPluginLoader QDebug QMessageBox QSettings QDir QImage QContextMenuEvent #include"cmainwindow.h" #include"ui_cmainwindow.h" #include"cimportinterface.h" #include"cingredient.h" #include"coptions.h" #include"cimportingredientdialog.h" #include<QPluginLoader> #include<QDebug> #include<QMessageBox> #include<QSettings> #include<QDir> #include<QImage> #include<QContextMenuEvent> cMainWindow::cMainWindow(QWidget*parent): QMainWindow(parent), ui(newUi::cMainWindow) { init(); } cMainWindow::~cMainWindow() { if(m_lpIngredientsListNew) deletem_lpIngredientsListNew; if(m_lpIngredientsListDelete) deletem_lpIngredientsListDelete; if(m_lpIngredientsListEdit) deletem_lpIngredientsListEdit; deleteui; } voidcMainWindow::init() { QSettingssettings; if(settings.value("program/version",QVariant(-1.0)).toDouble()==-1.0) initDefaultSettings(); ui->setupUi(this); #ifdefQ_OS_WIN loadPlugins("plugins"); #else loadPlugins("/data/Projects/QTCreator/Kooky/bin/plugins"); #endif //loadPlugins(settings.value("program/pluginDir").toString()); m_lpIngredientsListModel=newQStandardItemModel(0,1); ui->m_lpIngredientsList->setModel(m_lpIngredientsListModel); ui->m_lpIngredientsList->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->m_lpIngredientsList,SIGNAL(customContextMenuRequested(constQPoint&)),this,SLOT(onIngredientsListCustomContextMenu(constQPoint&))); m_lpIngredientsListMenu=newQMenu(ui->m_lpIngredientsList); m_lpIngredientsListNew=newQAction("&New",m_lpIngredientsListMenu); m_lpIngredientsListMenu->addAction(m_lpIngredientsListNew); connect(m_lpIngredientsListNew,SIGNAL(triggered(bool)),this,SLOT(onIngredientsListNew())); m_lpIngredientsListImport=newQAction("&Import",m_lpIngredientsListMenu); m_lpIngredientsListMenu->addAction(m_lpIngredientsListImport); connect(m_lpIngredientsListImport,SIGNAL(triggered(bool)),this,SLOT(onIngredientsListImport())); m_lpIngredientsListDelete=newQAction("&Delete",m_lpIngredientsListMenu); m_lpIngredientsListMenu->addAction(m_lpIngredientsListDelete); connect(m_lpIngredientsListDelete,SIGNAL(triggered(bool)),this,SLOT(onIngredientsListDelete())); m_lpIngredientsListEdit=newQAction("&Edit",m_lpIngredientsListMenu); m_lpIngredientsListMenu->addAction(m_lpIngredientsListEdit); connect(m_lpIngredientsListEdit,SIGNAL(triggered(bool)),this,SLOT(onIngredientsListEdit())); } voidcMainWindow::initDefaultSettings() { QSettingssettings; QDirdir; settings.setValue("program/version",QVariant(0.1)); settings.setValue("program/dataDir",QVariant(QString("%1/.kooky").arg(QDir::homePath()))); settings.setValue("program/pluginDir",QVariant(QString("%1/.kooky/plugins").arg(QDir::homePath()))); settings.setValue("program/receiptDir",QVariant(QString("%1/.kooky/receipts").arg(QDir::homePath()))); settings.setValue("program/ingredientDir",QVariant(QString("%1/.kooky/ingredients").arg(QDir::homePath()))); settings.setValue("program/imageDir",QVariant(QString("%1/.kooky/images").arg(QDir::homePath()))); dir.mkpath(settings.value("program/dataDir").toString()); dir.mkpath(settings.value("program/pluginDir").toString()); dir.mkpath(settings.value("program/receiptDir").toString()); dir.mkpath(settings.value("program/ingredientDir").toString()); dir.mkpath(settings.value("program/imageDir").toString()); } voidcMainWindow::loadPlugins(constQString&szPluginDir) { QCoreApplication::addLibraryPath(szPluginDir); QDirpluginDir(szPluginDir); #ifdefQ_OS_WIN QStringListszImportList=pluginDir.entryList(QStringList()<<"i*.dll"); QStringListszExportList=pluginDir.entryList(QStringList()<<"e*.dll"); QStringListszDBList=pluginDir.entryList(QStringList()<<"d*.dll"); #else QStringListszImportList=pluginDir.entryList(QStringList()<<"libi*.so"); QStringListszExportList=pluginDir.entryList(QStringList()<<"libe*.so"); QStringListszDBList=pluginDir.entryList(QStringList()<<"libd*.so"); #endif for(intz=0;z<szImportList.count();z++) { #ifdefQ_OS_WIN QStringszFile=szImportList.at(z); #else QStringszFile=szImportList.at(z).mid(3,szImportList.at(z).length()-6); #endif cPlugin*lpPlugin=newcPlugin(szFile); if(lpPlugin->isValid()) { QAction*lpAction=newQAction(this); ui->m_lpMenu_Plugins_Import->addAction(lpAction); lpAction->setText(lpPlugin->pluginName()); connect(lpAction,SIGNAL(triggered()),this,SLOT(pluginImportTriggered())); lpPlugin->setAction(lpAction); m_pluginList.append(lpPlugin); /* cImportInterface*lpImport=lpPlugin->importInterface(); if(!lpPlugin->pluginName().compare("importBleibFit",Qt::CaseInsensitive)) { cImportInterface*lpImport=lpPlugin->importInterface(); QStringListstrList=lpImport->search("milch"); boolret=lpImport->load(2); qrealvalue=lpImport->value(cIngredient::iIngredientCarbohydrates); QStringszIngredientName=lpImport->ingredientName(); QStringszName=lpImport->name(cIngredient::iIngredientCarbohydrates); QStringszGroup=lpImport->group(cIngredient::iIngredientCarbohydrates); value=0.0; } if(!lpPlugin->pluginName().compare("importErnährung",Qt::CaseInsensitive)) { cImportInterface*lpImport=lpPlugin->importInterface(); QMap<QString,QString>capability=lpImport->detailsCapability(); QStringListstrList=lpImport->search("kuhmilch","bls"); boolret=lpImport->load(2); qrealvalue=lpImport->value(cIngredient::iIngredientCholesterol); QStringszIngredientName=lpImport->ingredientName(); QStringszName=lpImport->name(cIngredient::iIngredientCholesterol); QStringszGroup=lpImport->group(cIngredient::iIngredientCholesterol); value=0.0; } */ } } for(intz=0;z<szExportList.count();z++) { #ifdefQ_OS_WIN QStringszFile=szExportList.at(z); #else QStringszFile=szExportList.at(z).mid(3,szExportList.at(z).length()-6); #endif cPlugin*lpPlugin=newcPlugin(szFile); if(lpPlugin->isValid()) { QAction*lpAction=newQAction(this); ui->m_lpMenu_Plugins_Export->addAction(lpAction); lpAction->setText(lpPlugin->pluginName()); connect(lpAction,SIGNAL(triggered()),this,SLOT(pluginExportTriggered())); lpPlugin->setAction(lpAction); m_pluginList.append(lpPlugin); } } for(intz=0;z<szDBList.count();z++) { #ifdefQ_OS_WIN QStringszFile=szDBList.at(z); #else QStringszFile=szDBList.at(z).mid(3,szDBList.at(z).length()-6); #endif cPlugin*lpPlugin=newcPlugin(szFile); if(lpPlugin->isValid()) { QAction*lpAction=newQAction(this); ui->m_lpMenu_Plugins_Database->addAction(lpAction); lpAction->setText(lpPlugin->pluginName()); connect(lpAction,SIGNAL(triggered()),this,SLOT(pluginDBTriggered())); lpPlugin->setAction(lpAction); m_pluginList.append(lpPlugin); } } } cPlugin*cMainWindow::plugin(QAction*lpAction) { for(intz=0;z<m_pluginList.count();z++) { if(m_pluginList.at(z)->action()==lpAction) return(m_pluginList.at(z)); } return(0); } QList<cPlugin*>cMainWindow::pluginList() { return(m_pluginList); } voidcMainWindow::pluginImportTriggered() { /* QSettingssettings; cIngredientingredient(QString("%1/000001.ingredient").arg(settings.value("program/ingredientDir").toString())); ingredient.save(); */ /* QAction*lpAction=qobject_cast<QAction*>(sender()); if(lpAction) { cPlugin*lpPlugin=plugin(lpAction); if(lpPlugin) { cImportInterface*lpImportInterface=lpPlugin->importInterface(); QStringstr=lpImportInterface->pluginName(); if(lpImportInterface) { QStringListlist=lpImportInterface->search("kuhmilch","bla"); if(lpImportInterface->load(0)) { qrealv; QStringstr; str=lpImportInterface->group(cIngredient::iIngredientCarbohydrates); str=lpImportInterface->name(cIngredient::iIngredientCarbohydrates); v=lpImportInterface->value(cIngredient::iIngredientCarbohydrates); v=lpImportInterface->value(cIngredient::iIngredientBreadUnits); v=lpImportInterface->value(cIngredient::iIngredientWater); v=lpImportInterface->value(cIngredient::iIngredientCholesterol); v=lpImportInterface->value(cIngredient::iIngredientCopper); v=0; } } } } */ } voidcMainWindow::pluginExportTriggered() { } voidcMainWindow::pluginDBTriggered() { QAction*lpAction=qobject_cast<QAction*>(sender()); if(lpAction) { cPlugin*lpPlugin=plugin(lpAction); if(lpPlugin) { if(!lpPlugin->pluginName().compare("MySQLDB")) { cDBInterface*lpDBInterface=lpPlugin->dbInterface(); QStringstr=lpDBInterface->pluginName(); if(lpDBInterface) lpDBInterface->config(); } elseif(!lpPlugin->pluginName().compare("SQLiteDB")) { cDBInterface*lpDBInterface=lpPlugin->dbInterface(); QStringstr=lpDBInterface->pluginName(); if(lpDBInterface) lpDBInterface->init(); } } } } voidcMainWindow::on_m_lpMenu_File_Exit_triggered() { } voidcMainWindow::on_m_lpMenu_Tools_Options_triggered() { cOptionsoptions(this); options.exec(); } voidcMainWindow::onIngredientsListCustomContextMenu(constQPoint&point) { QModelIndexindex=ui->m_lpIngredientsList->indexAt(point); if(index.isValid()) { m_lpIngredientsListNew->setEnabled(true); m_lpIngredientsListDelete->setEnabled(true); m_lpIngredientsListEdit->setEnabled(true); } else { m_lpIngredientsListNew->setEnabled(true); m_lpIngredientsListDelete->setEnabled(false); m_lpIngredientsListEdit->setEnabled(false); } m_lpIngredientsListMenu->exec(ui->m_lpIngredientsList->mapToGlobal(point)); } voidcMainWindow::onIngredientsListNew() { } voidcMainWindow::onIngredientsListImport() { cImportIngredientDialogimportIngredientDialog(this); importIngredientDialog.setPluginList(m_pluginList); importIngredientDialog.exec(); } voidcMainWindow::onIngredientsListDelete() { } voidcMainWindow::onIngredientsListEdit() { }