summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--searchdialog.cpp36
-rw-r--r--searchdialog.h3
2 files changed, 25 insertions, 14 deletions
diff --git a/searchdialog.cpp b/searchdialog.cpp
index 70c504c..6f323d7 100644
--- a/searchdialog.cpp
+++ b/searchdialog.cpp
@@ -185,29 +185,39 @@ void SearchDialog::doResultName(const QModelIndex &sel, int resType){
cur->setIcon(icon);
cur->setData(rQ.value(2), IdRole);
cur->setEditable(false);
- doActors(cur);
+ doChild(cur, Actor);
+ doChild(cur, Genre);
root->appendRow(cur);
}
mDataV->setSortingEnabled(true);
mDataV->sortByColumn(0);
}
-void SearchDialog::doActors(QStandardItem *item){
- QStringList actors;
- QIcon aIcon = Helper::icon(QColor(255,85,255), 'A');
+void SearchDialog::doChild(QStandardItem *item, int childMode){
+ QStringList res;
+ QIcon aIcon; // =
+ QString parentName;
QSqlDatabase db = QSqlDatabase::database("shemovdb");
- QSqlQuery aQ(db);
- aQ.prepare("SELECT actors.tactorname FROM seriesparts_actormap, actors WHERE seriesparts_actormap.iseriesparts_id = :id and seriesparts_actormap.iactors_id = actors.iactors_id ORDER by tactorname");
- aQ.bindValue(":id", item->data(IdRole));
- aQ.exec();
- while(aQ.next()){
- actors << aQ.value(0).toString();
+ QSqlQuery rQ(db);
+ if(childMode == Actor){
+ rQ.prepare("SELECT actors.tactorname FROM seriesparts_actormap, actors WHERE seriesparts_actormap.iseriesparts_id = :id and seriesparts_actormap.iactors_id = actors.iactors_id ORDER by tactorname");
+ parentName = tr("actors");
+ aIcon = Helper::icon(QColor(255,85,255), 'A');
+ }else if(childMode == Genre){
+ rQ.prepare("SELECT genres.tgenrename FROM seriesparts_genremap, genres WHERE seriesparts_genremap.iseriesparts_id = :id and seriesparts_genremap.igenres_id = genres.igenres_id ORDER by tgenrename");
+ parentName = tr("genres");
+ aIcon = Helper::icon(QColor(255,85,255), 'G');
+ }
+ rQ.bindValue(":id", item->data(IdRole));
+ rQ.exec();
+ while(rQ.next()){
+ res << rQ.value(0).toString();
}
- if(!actors.isEmpty()){
- QStandardItem *aItem = new QStandardItem(tr("actors"));
+ if(!res.isEmpty()){
+ QStandardItem *aItem = new QStandardItem(parentName);
aItem->setEditable(false);
aItem->setIcon(aIcon);
- for(QString a : actors){
+ for(QString a : res){
QStandardItem *curItem = new QStandardItem(a);
curItem->setIcon(aIcon);
aItem->appendRow(curItem);
diff --git a/searchdialog.h b/searchdialog.h
index 6cb9212..54e6ea3 100644
--- a/searchdialog.h
+++ b/searchdialog.h
@@ -14,6 +14,7 @@ class SearchDialog : public QDialog {
public:
enum SearchTypes { Filename, Title };
enum CustomRoles { IdRole = Qt::UserRole + 1 };
+ enum ChildMode { Actor, Genre };
explicit SearchDialog(QWidget *parent, Qt::WindowFlags f = 0);
public slots:
@@ -24,7 +25,7 @@ class SearchDialog : public QDialog {
void doResultName(const QModelIndex &sel, int resType);
private:
- void doActors(QStandardItem *item);
+ void doChild(QStandardItem *item, int childMode);
QLineEdit *mSearch;
QComboBox *mTypeSel;
QTreeView *mResV;