#include #include #include #include #include #include #include #include "beetplayer.h" #include "configurationdialog.h" #include "indexerwidget.h" #include "playerwidget.h" #include "globals.h" BeetPlayer::BeetPlayer(QWidget *parent, Qt::WindowFlags f) : QMainWindow(parent, f) { //general setup qApp->setWindowIcon(QIcon(":/beetplayer32.png")); setMinimumWidth(1024); setMinimumHeight(768); openDatabase(); createGlobalActions(); //tabs mTab = new QTabWidget; IndexerWidget *indexer = new IndexerWidget; PlayerWidget *player = new PlayerWidget; mTab->addTab(player, tr("Player")); mTab->addTab(indexer, tr("Indexer")); connect(mTab, SIGNAL(currentChanged(int)), this, SLOT(tabChanged(int))); //layout QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(mTab); setCentralWidget(mTab); } void BeetPlayer::tabChanged(int tab){ if(tab == 0){ //replace with indexer //do something;; } } void BeetPlayer::openDatabase(){ QSettings s; QString dbhost = s.value("dbhost").toString(); QString dbuser = s.value("dbuser").toString(); QString dbpass = s.value("dbpass").toString(); QString dbname = s.value("dbname").toString(); if(!QSqlDatabase::contains("beetplayerdb")){ QSqlDatabase db = QSqlDatabase::addDatabase("QPSQL", "beetplayerdb"); db.setHostName(dbhost); db.setUserName(dbuser); db.setPassword(dbpass); db.setDatabaseName(dbname); if(!db.open()){ int res = ConfigurationDialog(this).exec(); if(res == QDialog::Accepted){ openDatabase(); }else{ QMessageBox::critical(this, tr("Error"), tr("Could not open database. Giving up!")); qApp->closeAllWindows(); } } } } void BeetPlayer::createGlobalActions(){ QAction *quitA = new QAction(tr("Quit"), this); quitA->setShortcut(tr("CTRL+Q")); connect(quitA, SIGNAL(triggered()), qApp, SLOT(closeAllWindows())); quitA->setData(Globals::QuitAction); Globals::instance()->addAction(quitA); QAction *configA = new QAction(QIcon(":/chastity_belt.png"), tr("Configure..."), this); connect(configA, SIGNAL(triggered()), this, SLOT(configure())); configA->setData(Globals::ConfigAction); Globals::instance()->addAction(configA); } void BeetPlayer::configure(){ ConfigurationDialog w(this); int res = w.exec(); if(res == QDialog::Accepted){ openDatabase(); } }