Mercurial > hg > easaier-soundaccess
diff widgets/QueryResultsWidget.cpp @ 144:f3dce7a985cf
result display is better now.
author | benoitrigolleau |
---|---|
date | Tue, 13 Nov 2007 11:09:57 +0000 |
parents | c26c73ca6d37 |
children | e63e8272dcb0 |
line wrap: on
line diff
--- a/widgets/QueryResultsWidget.cpp Tue Nov 13 10:07:49 2007 +0000 +++ b/widgets/QueryResultsWidget.cpp Tue Nov 13 11:09:57 2007 +0000 @@ -12,6 +12,7 @@ */ #include "QueryResultsWidget.h" +#include "ConfidenceListWidget.h" #include <QLabel> #include <QApplication> @@ -19,12 +20,14 @@ #include <iostream> #include "sv/main/MainWindow.h" -#include "widgets/ListResultGeneralItemWidget.h" + +int rank = 1; QueryResultsWidget::QueryResultsWidget() : QWidget(), - m_ndResults(0) + m_currentRow(0) { m_resultsLayout = new QGridLayout; + m_curResult = new std::vector<Info>; QWidget *resultsWidget = new QWidget; resultsWidget->setLayout(m_resultsLayout); @@ -32,6 +35,7 @@ m_scrollArea = new QScrollArea; m_scrollArea->setWidget(resultsWidget); m_scrollArea->setWidgetResizable(true); + m_scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); QVBoxLayout *mainLayout = new QVBoxLayout; mainLayout->addWidget(m_scrollArea); @@ -42,19 +46,52 @@ QueryResultsWidget::~QueryResultsWidget() {} +void QueryResultsWidget::addTop() +{ + QLabel *rankLabel = new QLabel("#"); + rankLabel->setAlignment(Qt::AlignHCenter); + m_resultsLayout->addWidget(rankLabel,0,0,1,1); + m_resultsLayout->setColumnMinimumWidth(0,15); + m_resultsLayout->setColumnMinimumWidth(1,5); + + QLabel *typeLabel = new QLabel(tr("Type")); + typeLabel->setAlignment(Qt::AlignHCenter); + m_resultsLayout->addWidget(typeLabel,0,2,1,1); + m_resultsLayout->setColumnMinimumWidth(3,5); + m_resultsLayout->setColumnStretch(4,1); + m_resultsLayout->setColumnMinimumWidth(5,5); + + QLabel *confidenceLabel = new QLabel(tr("Confidence")); + confidenceLabel->setAlignment(Qt::AlignHCenter); + m_resultsLayout->addWidget(confidenceLabel,0,6,1,1); + m_resultsLayout->setColumnMinimumWidth(7,5); + + QLabel *metadataLabel = new QLabel(tr("Meta-Data")); + confidenceLabel->setAlignment(Qt::AlignHCenter); + m_resultsLayout->addWidget(metadataLabel,0,8,1,1); + m_resultsLayout->setColumnMinimumWidth(9,5); + m_resultsLayout->setColumnMinimumWidth(11,5); + m_currentRow++; +} + +void QueryResultsWidget::addFoot() +{ + m_resultsLayout->setRowStretch(m_currentRow,1); +} + void QueryResultsWidget::reset() { - m_ndResults = 0; - QLayoutItem *child; while ((child = m_resultsLayout->takeAt(0)) != 0) { delete child->widget(); } + m_allresults.clear(); + } void QueryResultsWidget::newResult() { - m_curResult.clear(); + m_curResult->clear(); } void QueryResultsWidget::addInfo(const QString& name, const QString& value) @@ -63,51 +100,157 @@ info.name = name; info.value = value; - m_curResult.push_back(info); + m_curResult->push_back(info); +} + +void QueryResultsWidget::saveCurResult() +{ + m_allresults.push_back(m_curResult); + m_curResult = new std::vector<Info>; + } void QueryResultsWidget::displayResult() { - std::vector<Info>::iterator iter; + m_currentRow = 0; + rank = 1; + addTop(); + + std::vector<std::vector<Info>*>::iterator iterOnResults; + int size = m_allresults.size(); - QString author = ""; - QString title = ""; - QString uri = ""; + for (iterOnResults = m_allresults.begin(); iterOnResults != m_allresults.end();iterOnResults++) + { + std::vector<Info>* onInfo = *iterOnResults; + std::vector<Info>::iterator iterOnInfo; + QString author = ""; + QString title = ""; + QString uri = ""; - ListResultGeneralItemWidget *itemResult = new ListResultGeneralItemWidget(); - itemResult->setRank(m_ndResults); - itemResult->setType(0); - - for (iter = m_curResult.begin(); iter != m_curResult.end(); iter++) - { - if ((*iter).name == "identification") + for (iterOnInfo = (*onInfo).begin(); iterOnInfo != (*onInfo).end(); iterOnInfo++) { - uri = (*iter).value; - uri = uri.right(uri.length() - uri.lastIndexOf("#") - 1); + if ((*iterOnInfo).name == "identification") + { + uri = (*iterOnInfo).value; + uri = uri.right(uri.length() - uri.lastIndexOf("#") - 1); + } } + + for (iterOnInfo = (*onInfo).begin(); iterOnInfo != (*onInfo).end(); iterOnInfo++) + { + if ((*iterOnInfo).name != "identification") + { + if((*iterOnInfo).name == "author"){ + author = (*iterOnInfo).value; + } + if ((*iterOnInfo).name == "title") + { + title += (*iterOnInfo).value; + } + } + } + addResultWidget(author,title,uri,0); + m_currentRow=m_currentRow+3; + rank++; } - for (iter = m_curResult.begin(); iter != m_curResult.end(); iter++) - { - if ((*iter).name != "identification") - { - if((*iter).name == "author"){ - author = (*iter).value; - } - if ((*iter).name == "title") - { - title += (*iter).value; - } - } + addFoot(); +} + +void QueryResultsWidget::addResultWidget(QString author,QString title, QString uri, int type) +{ + // add rank label + QLabel *labelRank = new QLabel(QString().setNum(rank)); + labelRank->setMaximumWidth(20); + labelRank->setMinimumWidth(20); + m_resultsLayout->addWidget(labelRank,m_currentRow,0,1,1); + + //add the type + QLabel *labelIcon = new QLabel(); + labelIcon->setMaximumWidth(25); + labelIcon->setMinimumWidth(25); + QString pixmapName; + switch(type){ + case 0: + pixmapName.append(":icons/musicIcon.png"); + break; + case 1: + pixmapName.append(":icons/speechIcon.png"); + break; + + default: + break; } - itemResult->setTitleAndAuthorName(author,title,uri ); - itemResult->addConfidence(100,"contains"); + labelIcon->setPixmap(QPixmap(pixmapName)); + m_resultsLayout->addWidget(labelIcon,m_currentRow,2,1,1); - connect(itemResult, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierFile(QString))); + //add the author and title label + QLabel *labelTitleArtist = new QLabel(); + QString aux = title; +/* if(aux.length() > 50){ + aux.truncate(47); + aux+="..."; + }*/ + QString label; + label = author+" - \""; + label += "<a href=\""; + label += uri; + label += "\">"; + label += aux; + label += "</a>"; + labelTitleArtist->setText(label); + labelTitleArtist->setWordWrap(true); + labelTitleArtist->setToolTip(title); + connect(labelTitleArtist, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierFile(QString))); + m_resultsLayout->addWidget(labelTitleArtist,m_currentRow,4,1,1); - m_resultsLayout->addWidget(itemResult,m_ndResults,0); - m_resultsLayout->setSpacing(0); - m_ndResults++; - + //add the confidence + ConfidenceListWidget *confidenceListWidget= new ConfidenceListWidget(); + confidenceListWidget->setMaximumWidth(180); + confidenceListWidget->addConfidence(100,"confidence"); + confidenceListWidget->addConfidence(100,"confidence"); + confidenceListWidget->addConfidence(100,"confidence"); + m_resultsLayout->addWidget(confidenceListWidget,m_currentRow,6,1,1); + + //TODO add metadatas + + //add preview button + QPushButton *buttonPrev = new QPushButton(); + buttonPrev->setMaximumSize(68,34); + buttonPrev->setMinimumSize(68,34); + QSize prevIconSize; + prevIconSize.setHeight(34); + prevIconSize.setWidth(68); + buttonPrev->setIconSize(prevIconSize); + buttonPrev->setIcon(QIcon(":icons/prev.png")); + buttonPrev->setFlat(true); + m_resultsLayout->addWidget(buttonPrev,m_currentRow,10,1,1); + + + // search similar boutton + QPushButton *buttonSimilar = new QPushButton(); + buttonSimilar->setMaximumSize(64,34); + buttonSimilar->setMinimumSize(64,34); + QSize similarIconSize; + similarIconSize.setHeight(34); + similarIconSize.setWidth(64); + buttonSimilar->setIconSize(similarIconSize); + buttonSimilar->setIcon(QIcon(":icons/similar.png")); + buttonSimilar->setFlat(true); + m_resultsLayout->addWidget(buttonSimilar,m_currentRow,12,1,1); + + //TODO add here the others informations + //m_resultsLayout->addWidget(X,m_currentRow+1,4,1,9); + + // add the separator + QFrame *hLine = new QFrame(); + hLine->setFrameStyle(QFrame::HLine | QFrame::Raised); + hLine->setMaximumHeight(1); + hLine->setMinimumHeight(1); + m_resultsLayout->setRowMinimumHeight(m_currentRow+2,1); + m_resultsLayout->addWidget(hLine,m_currentRow+2,1,1,12); } + + +