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
|