lbajardsilogic@7
|
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
|
lbajardsilogic@7
|
2
|
lbajardsilogic@7
|
3 /* Sound Access
|
lbajardsilogic@7
|
4 EASAIER client application.
|
lbajardsilogic@7
|
5 Silogic 2007. Laure Bajard.
|
lbajardsilogic@7
|
6
|
lbajardsilogic@7
|
7 This program is free software; you can redistribute it and/or
|
lbajardsilogic@7
|
8 modify it under the terms of the GNU General Public License as
|
lbajardsilogic@7
|
9 published by the Free Software Foundation; either version 2 of the
|
lbajardsilogic@7
|
10 License, or (at your option) any later version. See the file
|
benoitrigolleau@115
|
11 COPYING included with this distribution for more information .
|
lbajardsilogic@7
|
12 */
|
lbajardsilogic@7
|
13
|
lbajardsilogic@7
|
14 #include "InfoWidget.h"
|
lbajardsilogic@7
|
15
|
lbajardsilogic@7
|
16 #include <QScrollArea>
|
lbajardsilogic@7
|
17 #include <QLayoutItem>
|
lbajardsilogic@7
|
18
|
lbajardsilogic@7
|
19 #include <iostream>
|
lbajardsilogic@7
|
20
|
lbajardsilogic@7
|
21 #include "sv/main/MainWindow.h"
|
lbajardsilogic@154
|
22 #include "RelatedMediaWidget.h"
|
lbajardsilogic@155
|
23 #include "AdvancedToolBox.h"
|
lbajardsilogic@7
|
24
|
lbajardsilogic@154
|
25 InfoWidget::InfoWidget(RelatedMediaWidget * relMediaWidget) : QWidget()
|
lbajardsilogic@7
|
26 {
|
lbajardsilogic@7
|
27 m_infoLayout = new QGridLayout;
|
lbajardsilogic@7
|
28
|
lbajardsilogic@7
|
29 QWidget *infoWidget = new QWidget;
|
lbajardsilogic@7
|
30 infoWidget->setLayout(m_infoLayout);
|
lbajardsilogic@7
|
31
|
lbajardsilogic@155
|
32 AdvancedToolBox * toolBox= new AdvancedToolBox;
|
lbajardsilogic@156
|
33 toolBox->addItem("File Information", infoWidget);
|
lbajardsilogic@155
|
34 toolBox->addItem("Related Media", relMediaWidget);
|
lbajardsilogic@7
|
35
|
lbajardsilogic@156
|
36 QScrollArea * scrollArea = new QScrollArea;
|
lbajardsilogic@156
|
37 scrollArea->setWidget(toolBox);
|
lbajardsilogic@156
|
38 scrollArea->setWidgetResizable(true);
|
lbajardsilogic@156
|
39
|
lbajardsilogic@7
|
40 QVBoxLayout *mainLayout = new QVBoxLayout;
|
lbajardsilogic@156
|
41 mainLayout->addWidget(scrollArea);
|
lbajardsilogic@7
|
42
|
lbajardsilogic@7
|
43 setLayout(mainLayout);
|
lbajardsilogic@7
|
44 }
|
lbajardsilogic@7
|
45
|
lbajardsilogic@7
|
46 InfoWidget::~InfoWidget()
|
lbajardsilogic@7
|
47 {}
|
lbajardsilogic@7
|
48
|
lbajardsilogic@7
|
49 void InfoWidget::reset()
|
lbajardsilogic@7
|
50 {
|
lbajardsilogic@7
|
51 QLayoutItem *child;
|
lbajardsilogic@7
|
52 while ((child = m_infoLayout->takeAt(0)) != 0) {
|
lbajardsilogic@7
|
53 delete child->widget();
|
lbajardsilogic@7
|
54 }
|
lbajardsilogic@7
|
55 }
|
lbajardsilogic@7
|
56 void InfoWidget::displayAudioSourceInfo(AudioSourceInfoModel* model)
|
lbajardsilogic@7
|
57 {
|
lbajardsilogic@90
|
58 reset();
|
lbajardsilogic@90
|
59
|
lbajardsilogic@244
|
60 std::map<QString, QStringList*> info = model->getInfo();
|
lbajardsilogic@244
|
61 std::map<QString, QStringList*>::iterator iterInfo;
|
lbajardsilogic@7
|
62 QLabel* proper;
|
benoitrigolleau@142
|
63 QLabel* icon;
|
lbajardsilogic@7
|
64 QLabel* value;
|
lbajardsilogic@7
|
65
|
lbajardsilogic@7
|
66 int row = 0;
|
lbajardsilogic@90
|
67
|
benoitrigolleau@142
|
68 m_infoLayout->setColumnMinimumWidth(1,20);
|
benoitrigolleau@142
|
69 m_infoLayout->setColumnMinimumWidth(3,20);
|
benoitrigolleau@142
|
70
|
lbajardsilogic@90
|
71 //display author and title at first
|
lbajardsilogic@257
|
72 iterInfo = info.find("title");
|
lbajardsilogic@90
|
73 if (iterInfo!= info.end())
|
lbajardsilogic@7
|
74 {
|
benoitrigolleau@142
|
75 proper = new QLabel(iterInfo->first.toUpper());
|
lbajardsilogic@257
|
76 value = new QLabel(iterInfo->second->join(" - "));
|
lbajardsilogic@257
|
77 m_infoLayout->addWidget(proper, row, 2,1,1);
|
benoitrigolleau@142
|
78 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@90
|
79 row++;
|
lbajardsilogic@90
|
80 }
|
lbajardsilogic@90
|
81 iterInfo = info.find("author");
|
lbajardsilogic@90
|
82 if (iterInfo!= info.end())
|
lbajardsilogic@90
|
83 {
|
benoitrigolleau@142
|
84 proper = new QLabel(iterInfo->first.toUpper());
|
lbajardsilogic@257
|
85 value = new QLabel(iterInfo->second->join(" - "));
|
lbajardsilogic@257
|
86 m_infoLayout->addWidget(proper, row, 2,1,1);
|
benoitrigolleau@142
|
87 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@7
|
88 row++;
|
lbajardsilogic@7
|
89 }
|
lbajardsilogic@257
|
90 iterInfo = info.find("performer_name");
|
lbajardsilogic@257
|
91 if (iterInfo!= info.end())
|
lbajardsilogic@257
|
92 {
|
lbajardsilogic@257
|
93 proper = new QLabel("PERFORMER");
|
lbajardsilogic@257
|
94 value = new QLabel(iterInfo->second->join(" - "));
|
lbajardsilogic@257
|
95 m_infoLayout->addWidget(proper, row, 2,1,1);
|
lbajardsilogic@257
|
96 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@257
|
97 row++;
|
lbajardsilogic@257
|
98 }
|
benoitrigolleau@142
|
99 row++;
|
lbajardsilogic@257
|
100
|
benoitrigolleau@142
|
101
|
lbajardsilogic@90
|
102 //display other info
|
lbajardsilogic@90
|
103 for (iterInfo = info.begin(); iterInfo != info.end(); iterInfo++)
|
lbajardsilogic@90
|
104 {
|
lbajardsilogic@257
|
105 if ( (iterInfo->first != "title") && (iterInfo->first != "author") && (iterInfo->first != "performer_name") && (iterInfo->first != "event_label") && (iterInfo->first != "signal"))
|
lbajardsilogic@90
|
106 {
|
lbajardsilogic@257
|
107 proper = new QLabel(iterInfo->first.toUpper());
|
lbajardsilogic@257
|
108 QStringList *values = iterInfo->second;
|
lbajardsilogic@257
|
109 QString label = "";
|
lbajardsilogic@257
|
110 for (int i = 0; i < values->size(); ++i)
|
lbajardsilogic@257
|
111 {
|
lbajardsilogic@257
|
112 QString curVal = values->at(i);
|
lbajardsilogic@257
|
113 if (curVal.contains("http:"))
|
lbajardsilogic@257
|
114 {
|
lbajardsilogic@257
|
115 curVal = curVal.right(curVal.length() - curVal.lastIndexOf('/') - 1);
|
lbajardsilogic@257
|
116 curVal = curVal.right(curVal.length() - curVal.lastIndexOf('#') - 1);
|
lbajardsilogic@257
|
117 }
|
lbajardsilogic@257
|
118 label += curVal;
|
lbajardsilogic@257
|
119 if (i+1 < values->size())
|
lbajardsilogic@257
|
120 label += " - ";
|
benoitrigolleau@142
|
121 }
|
lbajardsilogic@257
|
122 value = new QLabel(label);
|
lbajardsilogic@257
|
123
|
lbajardsilogic@257
|
124 m_infoLayout->addWidget(proper, row, 2,1,1);
|
lbajardsilogic@257
|
125 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@257
|
126 row++;
|
lbajardsilogic@257
|
127 }
|
lbajardsilogic@257
|
128 }
|
lbajardsilogic@90
|
129
|
lbajardsilogic@257
|
130 iterInfo = info.find("event_label");
|
lbajardsilogic@257
|
131 if (iterInfo!= info.end())
|
lbajardsilogic@257
|
132 {
|
lbajardsilogic@257
|
133 proper = new QLabel("TIMELINE INFORMATION");
|
lbajardsilogic@257
|
134 value = new QLabel("");
|
lbajardsilogic@257
|
135 QString label;
|
lbajardsilogic@257
|
136 QStringList::const_iterator constIterator;
|
lbajardsilogic@257
|
137 for (constIterator = iterInfo->second->constBegin(); constIterator != iterInfo->second->constEnd(); ++constIterator)
|
lbajardsilogic@251
|
138 {
|
lbajardsilogic@257
|
139 label += "<a href=\"";
|
lbajardsilogic@257
|
140 label += *constIterator;
|
lbajardsilogic@257
|
141 label += "\">";
|
lbajardsilogic@257
|
142 label += *constIterator;
|
lbajardsilogic@257
|
143 label += "</a> - ";
|
lbajardsilogic@251
|
144 }
|
lbajardsilogic@257
|
145 value->setText(label);
|
lbajardsilogic@257
|
146 //connect the main window to the linkActivated signal
|
lbajardsilogic@257
|
147 connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
|
lbajardsilogic@244
|
148 m_infoLayout->addWidget(proper, row, 2,1,1);
|
lbajardsilogic@244
|
149 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@244
|
150 row++;
|
lbajardsilogic@90
|
151 }
|
lbajardsilogic@90
|
152
|
benoitrigolleau@142
|
153 m_infoLayout->setColumnStretch( 4, 1);
|
benoitrigolleau@144
|
154 m_infoLayout->setRowStretch( row, 1);
|
lbajardsilogic@7
|
155 }
|