/* 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 #include #include #include #include #include #include #include #include #include "randomtab.h" RandomTab::RandomTab(QWidget *parent) : QWidget(parent) { mDb = QSqlDatabase::database("treedb"); mGenreModel = new QStandardItemModel(this); mActorModel = new QStandardItemModel(this); setupModels(); setupGui(); clearAll(); } void RandomTab::setupGui(){ QGroupBox *numBox = new QGroupBox(tr("Select no.")); mNumber = new QLineEdit; QIntValidator *numValidator = new QIntValidator(1, 100, this); mNumber->setValidator(numValidator); mNumber->setText("10"); QHBoxLayout *numL = new QHBoxLayout; numL->addWidget(mNumber); numBox->setLayout(numL); QGroupBox *genreBox = new QGroupBox(tr("Genres")); mGenre1 = new QComboBox; mGenre1->setModel(mGenreModel); mGenre2 = new QComboBox; mGenre2->setModel(mGenreModel); mGenre3 = new QComboBox; mGenre3->setModel(mGenreModel); QVBoxLayout *genreL = new QVBoxLayout; genreL->addWidget(mGenre1); genreL->addWidget(mGenre2); genreL->addWidget(mGenre3); genreBox->setLayout(genreL); QGroupBox *actorBox = new QGroupBox(tr("Actors")); mActor1 = new QComboBox; mActor1->setModel(mActorModel); mActor2 = new QComboBox; mActor2->setModel(mActorModel); mActor3 = new QComboBox; mActor3->setModel(mActorModel); QVBoxLayout *actorL = new QVBoxLayout; actorL->addWidget(mActor1); actorL->addWidget(mActor2); actorL->addWidget(mActor3); actorBox->setLayout(actorL); QGroupBox *actionBox = new QGroupBox(tr("Energize!")); mRefresh = new QPushButton(QIcon(":/refresh.png"), tr("Refresh")); connect(mRefresh, SIGNAL(clicked()), this, SLOT(refreshComboboxes())); mClear = new QPushButton(QIcon(":/delete.png"), tr("Clear")); connect(mClear, SIGNAL(clicked()), this, SLOT(clearAll())); mSelect = new QPushButton(QIcon(":/huge_bra.png"), tr("Go!")); connect(mSelect, SIGNAL(clicked()), this, SLOT(select())); QGridLayout *actionL = new QGridLayout; actionL->addWidget(mClear, 0, 0); actionL->addWidget(mRefresh, 0, 1); actionL->addWidget(mSelect, 1, 0, 2, 0); actionBox->setLayout(actionL); QWidget *leftWidget = new QWidget; QVBoxLayout *lwL = new QVBoxLayout; lwL->addWidget(numBox); lwL->addWidget(genreBox); lwL->addWidget(actorBox); lwL->addWidget(actionBox); lwL->addStretch(); leftWidget->setLayout(lwL); mFileView = new QTreeView; mFileModel = new QStandardItemModel; mFileProxy = new QSortFilterProxyModel; mFileProxy->setSourceModel(mFileModel); mFileView->setModel(mFileProxy); QWidget *rightWidget = new QWidget; QVBoxLayout *rwL = new QVBoxLayout; rwL->addWidget(mFileView); rightWidget->setLayout(rwL); QSplitter *leftRightSplitter = new QSplitter(Qt::Horizontal); leftRightSplitter->addWidget(leftWidget); leftRightSplitter->addWidget(rightWidget); leftRightSplitter->setStretchFactor(1, 4); QHBoxLayout *mainLayout = new QHBoxLayout; mainLayout->addWidget(leftRightSplitter); setLayout(mainLayout); } void RandomTab::setupModels(){ // Genres mGenreModel->clear(); QStandardItem *genreRoot = mGenreModel->invisibleRootItem(); QStandardItem *noneG = new QStandardItem; noneG->setText(tr("")); noneG->setData(-1, IdRole); genreRoot->appendRow(noneG); QSqlQuery genQ("SELECT tgenrename, igenres_id FROM genres ORDER BY tgenrename ASC", mDb); while(genQ.next()){ QStandardItem *i = new QStandardItem; i->setText(genQ.value(0).toString()); i->setData(genQ.value(1), IdRole); genreRoot->appendRow(i); } // Actors mActorModel->clear(); QStandardItem *actorRoot = mActorModel->invisibleRootItem(); QStandardItem *noneA = new QStandardItem; noneA->setText(tr("")); noneA->setData(-1, IdRole); actorRoot->appendRow(noneA); QSqlQuery actQ("SELECT tactorname, iactors_id FROM actors ORDER BY tactorname ASC", mDb); while(actQ.next()){ QStandardItem *i = new QStandardItem; i->setText(actQ.value(0).toString()); i->setData(actQ.value(1), IdRole); actorRoot->appendRow(i); } } void RandomTab::clearAll(){ mGenre1->setCurrentIndex(0); mGenre2->setCurrentIndex(0); mGenre3->setCurrentIndex(0); mActor1->setCurrentIndex(0); mActor2->setCurrentIndex(0); mActor3->setCurrentIndex(0); } void RandomTab::refreshComboboxes(){ setupModels(); clearAll(); } void RandomTab::select(){ }