annotate widgets/ListResultGeneralItemWidget.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents be6d31baecb9
children
rev   line source
benoitrigolleau@108 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
benoitrigolleau@108 2
benoitrigolleau@108 3 /*
benoitrigolleau@108 4 Sound Access
benoitrigolleau@108 5 EASAIER client application.
benoitrigolleau@108 6 Silogic 2007. Benoit Rigolleau.
benoitrigolleau@108 7
benoitrigolleau@108 8 This program is free software; you can redistribute it and/or
benoitrigolleau@108 9 modify it under the terms of the GNU General Public License as
benoitrigolleau@108 10 published by the Free Software Foundation; either version 2 of the
benoitrigolleau@108 11 License, or (at your option) any later version. See the file
benoitrigolleau@108 12 COPYING included with this distribution for more information.
benoitrigolleau@108 13 */
benoitrigolleau@108 14
benoitrigolleau@108 15 #include "ListResultGeneralItemWidget.h"
benoitrigolleau@108 16
benoitrigolleau@108 17 #include "CriteriaDialog.h"
benoitrigolleau@108 18 #include <QPixmap>
benoitrigolleau@112 19 #include <QDesktopWidget>
benoitrigolleau@112 20 #include <QSize>
benoitrigolleau@112 21 #include <iostream>
benoitrigolleau@108 22
benoitrigolleau@108 23 ListResultGeneralItemWidget::ListResultGeneralItemWidget(QWidget *parent):QWidget(parent){
lbajardsilogic@191 24 vLayout1 = new QVBoxLayout();
lbajardsilogic@191 25 vLayout2 = new QVBoxLayout();
lbajardsilogic@191 26 hLayout1 = new QHBoxLayout();
lbajardsilogic@191 27 hLayout2 = new QHBoxLayout();
lbajardsilogic@191 28 hLayout3 = new QHBoxLayout();
lbajardsilogic@191 29 m_waitingWidget = new WaitingWidget();
lbajardsilogic@191 30
lbajardsilogic@191 31 m_labelRank = new QLabel();
lbajardsilogic@191 32 m_labelIcon = new QLabel();
lbajardsilogic@191 33 m_labelTitleArtist = new QLabel();
lbajardsilogic@191 34 label4 = new QLabel(""); // for the icons
lbajardsilogic@191 35 label5 = new QLabel(""); // for the options
lbajardsilogic@191 36
lbajardsilogic@191 37 m_buttonPrev = new QPushButton();
lbajardsilogic@191 38 m_buttonSimilar = new QPushButton();
lbajardsilogic@191 39
benoitrigolleau@108 40 m_confidenceListWidget= new ConfidenceListWidget();
benoitrigolleau@108 41 m_confidenceListWidget->setMaximumWidth(180);
benoitrigolleau@108 42
benoitrigolleau@108 43
benoitrigolleau@108 44 // set parameters for each component
benoitrigolleau@108 45
benoitrigolleau@108 46 m_labelRank->setMaximumWidth(40);
benoitrigolleau@108 47 m_labelRank->setMinimumWidth(40);
benoitrigolleau@108 48 m_labelIcon->setMaximumWidth(40);
benoitrigolleau@108 49 m_labelIcon->setMinimumWidth(40);
benoitrigolleau@108 50 label4->setMaximumWidth(40);
benoitrigolleau@108 51 label4->setMinimumWidth(40);
benoitrigolleau@108 52
benoitrigolleau@108 53 m_labelRank->setAlignment(Qt::AlignCenter);
benoitrigolleau@108 54 m_labelIcon->setAlignment(Qt::AlignCenter);
benoitrigolleau@108 55
benoitrigolleau@112 56 m_buttonPrev->setMaximumSize(68,34);
benoitrigolleau@112 57 m_buttonPrev->setMinimumSize(68,34);
benoitrigolleau@112 58 m_buttonSimilar->setMaximumSize(64,34);
benoitrigolleau@112 59 m_buttonSimilar->setMinimumSize(64,34);
benoitrigolleau@112 60 QSize similarIconSize;
benoitrigolleau@112 61 QSize prevIconSize;
benoitrigolleau@112 62 similarIconSize.setHeight(34);
benoitrigolleau@112 63 similarIconSize.setWidth(64);
benoitrigolleau@112 64 prevIconSize.setHeight(34);
benoitrigolleau@112 65 prevIconSize.setWidth(68);
benoitrigolleau@112 66
benoitrigolleau@112 67 m_buttonSimilar->setIconSize(similarIconSize);
benoitrigolleau@112 68 m_buttonPrev->setIconSize(prevIconSize);
benoitrigolleau@112 69
benoitrigolleau@112 70
benoitrigolleau@112 71 m_buttonPrev->setIcon(QIcon(":icons/prev.png"));
benoitrigolleau@112 72 m_buttonPrev->setFlat(true);
benoitrigolleau@112 73 m_buttonSimilar->setIcon(QIcon(":icons/similar.png"));
benoitrigolleau@112 74 m_buttonSimilar->setFlat(true);
benoitrigolleau@108 75
benoitrigolleau@108 76 //////////////
benoitrigolleau@108 77 /*QFrame *vLine = new QFrame();
benoitrigolleau@108 78 vLine->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 79 vLine->setMaximumWidth(1);
benoitrigolleau@108 80 vLine->setMinimumWidth(1);
benoitrigolleau@108 81 QFrame *vLine2 = new QFrame();
benoitrigolleau@108 82 vLine2->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 83 vLine2->setMaximumWidth(1);
benoitrigolleau@108 84 vLine2->setMinimumWidth(1);*/
benoitrigolleau@108 85
benoitrigolleau@108 86 QWidget *mainWidget = new QWidget();
benoitrigolleau@108 87
benoitrigolleau@108 88 hLayout1->setMargin(0);
benoitrigolleau@108 89 hLayout1->setSpacing(0);
benoitrigolleau@108 90 //hLayout1->addWidget(vLine);
benoitrigolleau@108 91 hLayout1->addWidget(mainWidget);
benoitrigolleau@108 92 //hLayout1->addWidget(vLine2);
benoitrigolleau@108 93
benoitrigolleau@108 94 //////////
benoitrigolleau@108 95
benoitrigolleau@108 96 QFrame *hLine = new QFrame();
benoitrigolleau@108 97 hLine->setFrameStyle(QFrame::HLine | QFrame::Raised);
benoitrigolleau@108 98 hLine->setMaximumHeight(1);
benoitrigolleau@108 99 hLine->setMinimumHeight(1);
benoitrigolleau@108 100
benoitrigolleau@108 101 vLayout1->setMargin(0);
benoitrigolleau@108 102 vLayout1->setSpacing(0);
benoitrigolleau@108 103 vLayout1->addLayout(hLayout1);
benoitrigolleau@108 104 vLayout1->addWidget(hLine);
benoitrigolleau@108 105
benoitrigolleau@108 106 this->setLayout(vLayout1);
benoitrigolleau@108 107
benoitrigolleau@108 108 ////////
benoitrigolleau@108 109
benoitrigolleau@108 110 /*QFrame *vLine3 = new QFrame();
benoitrigolleau@108 111 vLine3->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 112 vLine3->setMaximumWidth(1);
benoitrigolleau@108 113 vLine3->setMinimumWidth(1);
benoitrigolleau@108 114 QFrame *vLine4 = new QFrame();
benoitrigolleau@108 115 vLine4->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 116 vLine4->setMaximumWidth(1);
benoitrigolleau@108 117 vLine4->setMinimumWidth(1);*/
benoitrigolleau@108 118
benoitrigolleau@108 119 mainWidget->setLayout(hLayout2);
benoitrigolleau@108 120 hLayout2->setMargin(0);
benoitrigolleau@108 121 hLayout2->setSpacing(0);
benoitrigolleau@108 122
benoitrigolleau@108 123 hLayout2->addWidget(m_labelRank);
benoitrigolleau@108 124 //hLayout2->addWidget(vLine3);
benoitrigolleau@108 125 hLayout2->addWidget(m_labelIcon);
benoitrigolleau@108 126 //hLayout2->addWidget(vLine4);
benoitrigolleau@108 127 hLayout2->addWidget(m_waitingWidget);
benoitrigolleau@108 128
benoitrigolleau@108 129 //////
benoitrigolleau@108 130
benoitrigolleau@108 131 m_waitingWidget->setLayout(vLayout2);
benoitrigolleau@108 132 vLayout2->addLayout(hLayout3);
benoitrigolleau@108 133 vLayout2->addWidget(label5);
benoitrigolleau@108 134 vLayout2->setMargin(0);
benoitrigolleau@108 135 vLayout2->setSpacing(0);
benoitrigolleau@108 136
benoitrigolleau@108 137 /////
benoitrigolleau@108 138 /*QFrame *vLine5 = new QFrame();
benoitrigolleau@108 139 vLine5->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 140 vLine5->setMaximumWidth(1);
benoitrigolleau@108 141 vLine5->setMinimumWidth(1);
benoitrigolleau@108 142 QFrame *vLine6 = new QFrame();
benoitrigolleau@108 143 vLine6->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 144 vLine6->setMaximumWidth(1);
benoitrigolleau@108 145 vLine6->setMinimumWidth(1);
benoitrigolleau@108 146 QFrame *vLine7 = new QFrame();
benoitrigolleau@108 147 vLine7->setFrameStyle(QFrame::VLine | QFrame::Raised);
benoitrigolleau@108 148 vLine7->setMaximumWidth(1);
benoitrigolleau@108 149 vLine7->setMinimumWidth(1);*/
benoitrigolleau@108 150
benoitrigolleau@108 151 hLayout3->setMargin(0);
benoitrigolleau@108 152 hLayout3->setSpacing(0);
benoitrigolleau@108 153 hLayout3->addWidget(m_labelTitleArtist);
benoitrigolleau@108 154 //hLayout3->addWidget(vLine5);
benoitrigolleau@108 155 hLayout3->addWidget(m_confidenceListWidget);
benoitrigolleau@108 156 //hLayout3->addWidget(vLine6);
benoitrigolleau@108 157 hLayout3->addWidget(label4);
benoitrigolleau@108 158 //hLayout3->addWidget(vLine7);
benoitrigolleau@108 159 hLayout3->addWidget(m_buttonPrev);
benoitrigolleau@108 160 hLayout3->addWidget(m_buttonSimilar);
benoitrigolleau@108 161
benoitrigolleau@108 162 connect(m_buttonSimilar, SIGNAL(clicked()), this, SLOT(displayCriteria()));
benoitrigolleau@126 163 connect(m_labelTitleArtist, SIGNAL(linkActivated(QString)), this, SIGNAL(linkActivated(QString)));
benoitrigolleau@108 164
benoitrigolleau@108 165 }
lbajardsilogic@191 166 ListResultGeneralItemWidget::~ListResultGeneralItemWidget()
lbajardsilogic@191 167 {}
benoitrigolleau@108 168
benoitrigolleau@126 169 void ListResultGeneralItemWidget::setTitleAndAuthorName(QString author,QString title, QString uri){
benoitrigolleau@126 170 QString aux = title;
benoitrigolleau@126 171 if(aux.length() > 50){
benoitrigolleau@126 172 aux.truncate(47);
benoitrigolleau@126 173 aux+="...";
benoitrigolleau@126 174 }
benoitrigolleau@126 175
benoitrigolleau@126 176 QString label;
benoitrigolleau@126 177 label = author+" - \"";
benoitrigolleau@126 178 label += "<a href=\"";
benoitrigolleau@126 179 label += uri;
benoitrigolleau@126 180 label += "\">";
benoitrigolleau@126 181 label += aux;
benoitrigolleau@126 182 label += "</a>";
benoitrigolleau@126 183 m_labelTitleArtist->setText(label);
benoitrigolleau@126 184 m_labelTitleArtist->setToolTip(title);
benoitrigolleau@108 185 }
benoitrigolleau@108 186
benoitrigolleau@108 187 void ListResultGeneralItemWidget::setRank(int rank){
benoitrigolleau@108 188 m_labelRank->setText(QString().setNum(rank));
benoitrigolleau@108 189 }
benoitrigolleau@108 190
benoitrigolleau@108 191 void ListResultGeneralItemWidget::setType(int type){
benoitrigolleau@108 192 QString pixmapName;
benoitrigolleau@108 193 switch(type){
benoitrigolleau@108 194 case 0:
benoitrigolleau@108 195 pixmapName.append(":icons/musicIcon.png");
benoitrigolleau@108 196 break;
benoitrigolleau@108 197 case 1:
benoitrigolleau@108 198 pixmapName.append(":icons/speechIcon.png");
benoitrigolleau@108 199 break;
benoitrigolleau@108 200
benoitrigolleau@108 201 default:
benoitrigolleau@108 202 break;
benoitrigolleau@108 203 }
benoitrigolleau@108 204 m_labelIcon->setPixmap(QPixmap(pixmapName));
benoitrigolleau@108 205 }
benoitrigolleau@108 206
benoitrigolleau@108 207 void ListResultGeneralItemWidget::addConfidence(int confidence, QString confidenceName){
benoitrigolleau@108 208 m_confidenceListWidget->addConfidence(confidence,confidenceName);
benoitrigolleau@108 209 }
benoitrigolleau@108 210
benoitrigolleau@108 211 void ListResultGeneralItemWidget::displayCriteria(){
benoitrigolleau@108 212 m_criteriaDialog = new CriteriaDialog();
benoitrigolleau@108 213 m_criteriaDialog->addCriteria("criteria 1");
benoitrigolleau@108 214 m_criteriaDialog->addCriteria("criteria 2");
benoitrigolleau@108 215 m_criteriaDialog->addCriteria("criteria 3");
benoitrigolleau@112 216
benoitrigolleau@112 217 QDesktopWidget screen;
benoitrigolleau@112 218
benoitrigolleau@112 219 int wscreen = screen.screenGeometry().width();
benoitrigolleau@112 220 int hscreen = screen.screenGeometry().height();
benoitrigolleau@112 221 int wcursor = QCursor::pos().x();
benoitrigolleau@112 222 int hcursor = QCursor::pos().y();
benoitrigolleau@112 223 int wdialog = m_criteriaDialog->width();
benoitrigolleau@112 224 int hdialog = m_criteriaDialog->height();
benoitrigolleau@112 225
benoitrigolleau@112 226 int posx = wcursor;
benoitrigolleau@112 227 int posy = hcursor;
benoitrigolleau@112 228
benoitrigolleau@112 229 if(wcursor+wdialog > wscreen){
benoitrigolleau@112 230 posx = wscreen - wdialog;
benoitrigolleau@112 231 }
benoitrigolleau@112 232 if(hcursor+(hdialog+40) > hscreen){
benoitrigolleau@112 233 posy = hscreen - (hdialog+40);
benoitrigolleau@112 234 }
benoitrigolleau@112 235
benoitrigolleau@112 236
benoitrigolleau@112 237 std::cerr << "wscreen:"<< wscreen
benoitrigolleau@112 238 <<" hscreen:"<<hscreen
benoitrigolleau@112 239 <<" wdialog:"<<wdialog
benoitrigolleau@112 240 <<" hdialog:"<<hdialog
benoitrigolleau@112 241 << std::endl;
benoitrigolleau@112 242
benoitrigolleau@112 243 m_criteriaDialog->setLocation(posx,posy);
benoitrigolleau@108 244 m_criteriaDialog->setOpacity(0.9);
benoitrigolleau@108 245 if(m_criteriaDialog->exec()){
benoitrigolleau@108 246 m_waitingWidget->setAnimation(true);
benoitrigolleau@112 247 }else{
benoitrigolleau@112 248 m_waitingWidget->setAnimation(false);
benoitrigolleau@108 249 }
benoitrigolleau@108 250 delete m_criteriaDialog;
benoitrigolleau@108 251 }
benoitrigolleau@108 252
benoitrigolleau@108 253
benoitrigolleau@108 254