benoitrigolleau@108: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ benoitrigolleau@108: benoitrigolleau@108: /* benoitrigolleau@108: Sound Access benoitrigolleau@108: EASAIER client application. benoitrigolleau@108: Silogic 2007. Benoit Rigolleau. benoitrigolleau@108: benoitrigolleau@108: This program is free software; you can redistribute it and/or benoitrigolleau@108: modify it under the terms of the GNU General Public License as benoitrigolleau@108: published by the Free Software Foundation; either version 2 of the benoitrigolleau@108: License, or (at your option) any later version. See the file benoitrigolleau@108: COPYING included with this distribution for more information. benoitrigolleau@108: */ benoitrigolleau@108: benoitrigolleau@108: #include "ListResultGeneralItemWidget.h" benoitrigolleau@108: benoitrigolleau@108: #include "CriteriaDialog.h" benoitrigolleau@108: #include benoitrigolleau@112: #include benoitrigolleau@112: #include benoitrigolleau@112: #include benoitrigolleau@108: benoitrigolleau@108: ListResultGeneralItemWidget::ListResultGeneralItemWidget(QWidget *parent):QWidget(parent){ lbajardsilogic@191: vLayout1 = new QVBoxLayout(); lbajardsilogic@191: vLayout2 = new QVBoxLayout(); lbajardsilogic@191: hLayout1 = new QHBoxLayout(); lbajardsilogic@191: hLayout2 = new QHBoxLayout(); lbajardsilogic@191: hLayout3 = new QHBoxLayout(); lbajardsilogic@191: m_waitingWidget = new WaitingWidget(); lbajardsilogic@191: lbajardsilogic@191: m_labelRank = new QLabel(); lbajardsilogic@191: m_labelIcon = new QLabel(); lbajardsilogic@191: m_labelTitleArtist = new QLabel(); lbajardsilogic@191: label4 = new QLabel(""); // for the icons lbajardsilogic@191: label5 = new QLabel(""); // for the options lbajardsilogic@191: lbajardsilogic@191: m_buttonPrev = new QPushButton(); lbajardsilogic@191: m_buttonSimilar = new QPushButton(); lbajardsilogic@191: benoitrigolleau@108: m_confidenceListWidget= new ConfidenceListWidget(); benoitrigolleau@108: m_confidenceListWidget->setMaximumWidth(180); benoitrigolleau@108: benoitrigolleau@108: benoitrigolleau@108: // set parameters for each component benoitrigolleau@108: benoitrigolleau@108: m_labelRank->setMaximumWidth(40); benoitrigolleau@108: m_labelRank->setMinimumWidth(40); benoitrigolleau@108: m_labelIcon->setMaximumWidth(40); benoitrigolleau@108: m_labelIcon->setMinimumWidth(40); benoitrigolleau@108: label4->setMaximumWidth(40); benoitrigolleau@108: label4->setMinimumWidth(40); benoitrigolleau@108: benoitrigolleau@108: m_labelRank->setAlignment(Qt::AlignCenter); benoitrigolleau@108: m_labelIcon->setAlignment(Qt::AlignCenter); benoitrigolleau@108: benoitrigolleau@112: m_buttonPrev->setMaximumSize(68,34); benoitrigolleau@112: m_buttonPrev->setMinimumSize(68,34); benoitrigolleau@112: m_buttonSimilar->setMaximumSize(64,34); benoitrigolleau@112: m_buttonSimilar->setMinimumSize(64,34); benoitrigolleau@112: QSize similarIconSize; benoitrigolleau@112: QSize prevIconSize; benoitrigolleau@112: similarIconSize.setHeight(34); benoitrigolleau@112: similarIconSize.setWidth(64); benoitrigolleau@112: prevIconSize.setHeight(34); benoitrigolleau@112: prevIconSize.setWidth(68); benoitrigolleau@112: benoitrigolleau@112: m_buttonSimilar->setIconSize(similarIconSize); benoitrigolleau@112: m_buttonPrev->setIconSize(prevIconSize); benoitrigolleau@112: benoitrigolleau@112: benoitrigolleau@112: m_buttonPrev->setIcon(QIcon(":icons/prev.png")); benoitrigolleau@112: m_buttonPrev->setFlat(true); benoitrigolleau@112: m_buttonSimilar->setIcon(QIcon(":icons/similar.png")); benoitrigolleau@112: m_buttonSimilar->setFlat(true); benoitrigolleau@108: benoitrigolleau@108: ////////////// benoitrigolleau@108: /*QFrame *vLine = new QFrame(); benoitrigolleau@108: vLine->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine->setMaximumWidth(1); benoitrigolleau@108: vLine->setMinimumWidth(1); benoitrigolleau@108: QFrame *vLine2 = new QFrame(); benoitrigolleau@108: vLine2->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine2->setMaximumWidth(1); benoitrigolleau@108: vLine2->setMinimumWidth(1);*/ benoitrigolleau@108: benoitrigolleau@108: QWidget *mainWidget = new QWidget(); benoitrigolleau@108: benoitrigolleau@108: hLayout1->setMargin(0); benoitrigolleau@108: hLayout1->setSpacing(0); benoitrigolleau@108: //hLayout1->addWidget(vLine); benoitrigolleau@108: hLayout1->addWidget(mainWidget); benoitrigolleau@108: //hLayout1->addWidget(vLine2); benoitrigolleau@108: benoitrigolleau@108: ////////// benoitrigolleau@108: benoitrigolleau@108: QFrame *hLine = new QFrame(); benoitrigolleau@108: hLine->setFrameStyle(QFrame::HLine | QFrame::Raised); benoitrigolleau@108: hLine->setMaximumHeight(1); benoitrigolleau@108: hLine->setMinimumHeight(1); benoitrigolleau@108: benoitrigolleau@108: vLayout1->setMargin(0); benoitrigolleau@108: vLayout1->setSpacing(0); benoitrigolleau@108: vLayout1->addLayout(hLayout1); benoitrigolleau@108: vLayout1->addWidget(hLine); benoitrigolleau@108: benoitrigolleau@108: this->setLayout(vLayout1); benoitrigolleau@108: benoitrigolleau@108: //////// benoitrigolleau@108: benoitrigolleau@108: /*QFrame *vLine3 = new QFrame(); benoitrigolleau@108: vLine3->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine3->setMaximumWidth(1); benoitrigolleau@108: vLine3->setMinimumWidth(1); benoitrigolleau@108: QFrame *vLine4 = new QFrame(); benoitrigolleau@108: vLine4->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine4->setMaximumWidth(1); benoitrigolleau@108: vLine4->setMinimumWidth(1);*/ benoitrigolleau@108: benoitrigolleau@108: mainWidget->setLayout(hLayout2); benoitrigolleau@108: hLayout2->setMargin(0); benoitrigolleau@108: hLayout2->setSpacing(0); benoitrigolleau@108: benoitrigolleau@108: hLayout2->addWidget(m_labelRank); benoitrigolleau@108: //hLayout2->addWidget(vLine3); benoitrigolleau@108: hLayout2->addWidget(m_labelIcon); benoitrigolleau@108: //hLayout2->addWidget(vLine4); benoitrigolleau@108: hLayout2->addWidget(m_waitingWidget); benoitrigolleau@108: benoitrigolleau@108: ////// benoitrigolleau@108: benoitrigolleau@108: m_waitingWidget->setLayout(vLayout2); benoitrigolleau@108: vLayout2->addLayout(hLayout3); benoitrigolleau@108: vLayout2->addWidget(label5); benoitrigolleau@108: vLayout2->setMargin(0); benoitrigolleau@108: vLayout2->setSpacing(0); benoitrigolleau@108: benoitrigolleau@108: ///// benoitrigolleau@108: /*QFrame *vLine5 = new QFrame(); benoitrigolleau@108: vLine5->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine5->setMaximumWidth(1); benoitrigolleau@108: vLine5->setMinimumWidth(1); benoitrigolleau@108: QFrame *vLine6 = new QFrame(); benoitrigolleau@108: vLine6->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine6->setMaximumWidth(1); benoitrigolleau@108: vLine6->setMinimumWidth(1); benoitrigolleau@108: QFrame *vLine7 = new QFrame(); benoitrigolleau@108: vLine7->setFrameStyle(QFrame::VLine | QFrame::Raised); benoitrigolleau@108: vLine7->setMaximumWidth(1); benoitrigolleau@108: vLine7->setMinimumWidth(1);*/ benoitrigolleau@108: benoitrigolleau@108: hLayout3->setMargin(0); benoitrigolleau@108: hLayout3->setSpacing(0); benoitrigolleau@108: hLayout3->addWidget(m_labelTitleArtist); benoitrigolleau@108: //hLayout3->addWidget(vLine5); benoitrigolleau@108: hLayout3->addWidget(m_confidenceListWidget); benoitrigolleau@108: //hLayout3->addWidget(vLine6); benoitrigolleau@108: hLayout3->addWidget(label4); benoitrigolleau@108: //hLayout3->addWidget(vLine7); benoitrigolleau@108: hLayout3->addWidget(m_buttonPrev); benoitrigolleau@108: hLayout3->addWidget(m_buttonSimilar); benoitrigolleau@108: benoitrigolleau@108: connect(m_buttonSimilar, SIGNAL(clicked()), this, SLOT(displayCriteria())); benoitrigolleau@126: connect(m_labelTitleArtist, SIGNAL(linkActivated(QString)), this, SIGNAL(linkActivated(QString))); benoitrigolleau@108: benoitrigolleau@108: } lbajardsilogic@191: ListResultGeneralItemWidget::~ListResultGeneralItemWidget() lbajardsilogic@191: {} benoitrigolleau@108: benoitrigolleau@126: void ListResultGeneralItemWidget::setTitleAndAuthorName(QString author,QString title, QString uri){ benoitrigolleau@126: QString aux = title; benoitrigolleau@126: if(aux.length() > 50){ benoitrigolleau@126: aux.truncate(47); benoitrigolleau@126: aux+="..."; benoitrigolleau@126: } benoitrigolleau@126: benoitrigolleau@126: QString label; benoitrigolleau@126: label = author+" - \""; benoitrigolleau@126: label += ""; benoitrigolleau@126: label += aux; benoitrigolleau@126: label += ""; benoitrigolleau@126: m_labelTitleArtist->setText(label); benoitrigolleau@126: m_labelTitleArtist->setToolTip(title); benoitrigolleau@108: } benoitrigolleau@108: benoitrigolleau@108: void ListResultGeneralItemWidget::setRank(int rank){ benoitrigolleau@108: m_labelRank->setText(QString().setNum(rank)); benoitrigolleau@108: } benoitrigolleau@108: benoitrigolleau@108: void ListResultGeneralItemWidget::setType(int type){ benoitrigolleau@108: QString pixmapName; benoitrigolleau@108: switch(type){ benoitrigolleau@108: case 0: benoitrigolleau@108: pixmapName.append(":icons/musicIcon.png"); benoitrigolleau@108: break; benoitrigolleau@108: case 1: benoitrigolleau@108: pixmapName.append(":icons/speechIcon.png"); benoitrigolleau@108: break; benoitrigolleau@108: benoitrigolleau@108: default: benoitrigolleau@108: break; benoitrigolleau@108: } benoitrigolleau@108: m_labelIcon->setPixmap(QPixmap(pixmapName)); benoitrigolleau@108: } benoitrigolleau@108: benoitrigolleau@108: void ListResultGeneralItemWidget::addConfidence(int confidence, QString confidenceName){ benoitrigolleau@108: m_confidenceListWidget->addConfidence(confidence,confidenceName); benoitrigolleau@108: } benoitrigolleau@108: benoitrigolleau@108: void ListResultGeneralItemWidget::displayCriteria(){ benoitrigolleau@108: m_criteriaDialog = new CriteriaDialog(); benoitrigolleau@108: m_criteriaDialog->addCriteria("criteria 1"); benoitrigolleau@108: m_criteriaDialog->addCriteria("criteria 2"); benoitrigolleau@108: m_criteriaDialog->addCriteria("criteria 3"); benoitrigolleau@112: benoitrigolleau@112: QDesktopWidget screen; benoitrigolleau@112: benoitrigolleau@112: int wscreen = screen.screenGeometry().width(); benoitrigolleau@112: int hscreen = screen.screenGeometry().height(); benoitrigolleau@112: int wcursor = QCursor::pos().x(); benoitrigolleau@112: int hcursor = QCursor::pos().y(); benoitrigolleau@112: int wdialog = m_criteriaDialog->width(); benoitrigolleau@112: int hdialog = m_criteriaDialog->height(); benoitrigolleau@112: benoitrigolleau@112: int posx = wcursor; benoitrigolleau@112: int posy = hcursor; benoitrigolleau@112: benoitrigolleau@112: if(wcursor+wdialog > wscreen){ benoitrigolleau@112: posx = wscreen - wdialog; benoitrigolleau@112: } benoitrigolleau@112: if(hcursor+(hdialog+40) > hscreen){ benoitrigolleau@112: posy = hscreen - (hdialog+40); benoitrigolleau@112: } benoitrigolleau@112: benoitrigolleau@112: benoitrigolleau@112: std::cerr << "wscreen:"<< wscreen benoitrigolleau@112: <<" hscreen:"<setLocation(posx,posy); benoitrigolleau@108: m_criteriaDialog->setOpacity(0.9); benoitrigolleau@108: if(m_criteriaDialog->exec()){ benoitrigolleau@108: m_waitingWidget->setAnimation(true); benoitrigolleau@112: }else{ benoitrigolleau@112: m_waitingWidget->setAnimation(false); benoitrigolleau@108: } benoitrigolleau@108: delete m_criteriaDialog; benoitrigolleau@108: } benoitrigolleau@108: benoitrigolleau@108: benoitrigolleau@108: