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@7
|
23
|
lbajardsilogic@154
|
24 InfoWidget::InfoWidget(RelatedMediaWidget * relMediaWidget) : QWidget()
|
lbajardsilogic@7
|
25 {
|
lbajardsilogic@7
|
26 m_infoLayout = new QGridLayout;
|
lbajardsilogic@7
|
27
|
lbajardsilogic@7
|
28 QWidget *infoWidget = new QWidget;
|
lbajardsilogic@7
|
29 infoWidget->setLayout(m_infoLayout);
|
lbajardsilogic@7
|
30
|
lbajardsilogic@7
|
31 QScrollArea * scrollArea = new QScrollArea;
|
lbajardsilogic@7
|
32 scrollArea->setWidget(infoWidget);
|
lbajardsilogic@7
|
33 scrollArea->setWidgetResizable(true);
|
lbajardsilogic@7
|
34
|
lbajardsilogic@7
|
35 QVBoxLayout *mainLayout = new QVBoxLayout;
|
lbajardsilogic@154
|
36 mainLayout->addWidget(scrollArea, Qt::AlignTop);
|
lbajardsilogic@154
|
37 mainLayout->addWidget(relMediaWidget, Qt::AlignTop);
|
lbajardsilogic@7
|
38
|
lbajardsilogic@7
|
39 setLayout(mainLayout);
|
lbajardsilogic@7
|
40 }
|
lbajardsilogic@7
|
41
|
lbajardsilogic@7
|
42 InfoWidget::~InfoWidget()
|
lbajardsilogic@7
|
43 {}
|
lbajardsilogic@7
|
44
|
lbajardsilogic@7
|
45 void InfoWidget::reset()
|
lbajardsilogic@7
|
46 {
|
lbajardsilogic@7
|
47 QLayoutItem *child;
|
lbajardsilogic@7
|
48 while ((child = m_infoLayout->takeAt(0)) != 0) {
|
lbajardsilogic@7
|
49 delete child->widget();
|
lbajardsilogic@7
|
50 }
|
lbajardsilogic@7
|
51 }
|
lbajardsilogic@7
|
52 void InfoWidget::displayAudioSourceInfo(AudioSourceInfoModel* model)
|
lbajardsilogic@7
|
53 {
|
lbajardsilogic@90
|
54 reset();
|
lbajardsilogic@90
|
55
|
lbajardsilogic@7
|
56 std::map<QString, QString> info = model->getInfo();
|
lbajardsilogic@7
|
57 std::map<QString, QString>::iterator iterInfo;
|
lbajardsilogic@7
|
58 QLabel* proper;
|
benoitrigolleau@142
|
59 QLabel* icon;
|
lbajardsilogic@7
|
60 QLabel* value;
|
lbajardsilogic@7
|
61
|
lbajardsilogic@7
|
62 int row = 0;
|
lbajardsilogic@90
|
63
|
benoitrigolleau@142
|
64 m_infoLayout->setColumnMinimumWidth(1,20);
|
benoitrigolleau@142
|
65 m_infoLayout->setColumnMinimumWidth(3,20);
|
benoitrigolleau@142
|
66
|
lbajardsilogic@90
|
67 //display author and title at first
|
lbajardsilogic@90
|
68 iterInfo = info.find("title");
|
lbajardsilogic@90
|
69 if (iterInfo!= info.end())
|
lbajardsilogic@7
|
70 {
|
benoitrigolleau@142
|
71 proper = new QLabel(iterInfo->first.toUpper());
|
lbajardsilogic@90
|
72 value = new QLabel(iterInfo->second);
|
benoitrigolleau@142
|
73 m_infoLayout->addWidget(proper, row, 0,1,3);
|
benoitrigolleau@142
|
74 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@90
|
75 row++;
|
lbajardsilogic@90
|
76 }
|
lbajardsilogic@90
|
77 iterInfo = info.find("author");
|
lbajardsilogic@90
|
78 if (iterInfo!= info.end())
|
lbajardsilogic@90
|
79 {
|
benoitrigolleau@142
|
80 proper = new QLabel(iterInfo->first.toUpper());
|
lbajardsilogic@90
|
81 value = new QLabel(iterInfo->second);
|
benoitrigolleau@142
|
82 m_infoLayout->addWidget(proper, row, 0,1,3);
|
benoitrigolleau@142
|
83 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@7
|
84 row++;
|
lbajardsilogic@7
|
85 }
|
benoitrigolleau@142
|
86 m_infoLayout->setRowMinimumHeight(row,25);
|
benoitrigolleau@142
|
87 row++;
|
benoitrigolleau@142
|
88
|
benoitrigolleau@142
|
89
|
lbajardsilogic@90
|
90 //display other info
|
lbajardsilogic@90
|
91 for (iterInfo = info.begin(); iterInfo != info.end(); iterInfo++)
|
lbajardsilogic@90
|
92 {
|
benoitrigolleau@142
|
93 if ((iterInfo->first != "title") && (iterInfo->first != "author") && (iterInfo->first.contains("http://purl.org/ontology/mo")))
|
lbajardsilogic@90
|
94 {
|
benoitrigolleau@142
|
95 QString properName;
|
benoitrigolleau@142
|
96 properName = iterInfo->first.split("#").last();
|
benoitrigolleau@142
|
97 proper = new QLabel(properName);
|
benoitrigolleau@142
|
98 icon = new QLabel();
|
benoitrigolleau@142
|
99 if(properName == "beats"){
|
benoitrigolleau@142
|
100 icon->setPixmap(QPixmap(":icons/instants.png"));
|
benoitrigolleau@142
|
101 }else if(properName == "chromagram"){
|
benoitrigolleau@142
|
102 icon->setPixmap(QPixmap(":icons/colour3d.png"));
|
benoitrigolleau@142
|
103 }else if(properName == "instruments"){
|
benoitrigolleau@142
|
104 icon->setPixmap(QPixmap(":icons/notes.png"));
|
benoitrigolleau@142
|
105 }else if(properName == "key"){
|
benoitrigolleau@142
|
106 icon->setPixmap(QPixmap(":icons/values.png"));
|
benoitrigolleau@142
|
107 }else if(properName == "tempo"){
|
benoitrigolleau@142
|
108 icon->setPixmap(QPixmap(":icons/values.png"));
|
benoitrigolleau@142
|
109 }else{
|
benoitrigolleau@142
|
110 //nothing
|
benoitrigolleau@142
|
111 }
|
lbajardsilogic@90
|
112
|
lbajardsilogic@90
|
113 QString valueText(iterInfo->second);
|
lbajardsilogic@90
|
114
|
lbajardsilogic@90
|
115 if (valueText.right(4) == ".xml")
|
lbajardsilogic@90
|
116 {
|
lbajardsilogic@90
|
117 value = new QLabel();
|
benoitrigolleau@142
|
118 //value->setIcon(QIcon(":icons/redo.png"));
|
benoitrigolleau@142
|
119 value->setText("<html><header><style type=\"text/css\">a {text-decoration: none;}</style></header><body><a href=\"" + iterInfo->second + "\"><img src=\":icons/addToLayer.png\"> </a></body></html>");
|
benoitrigolleau@142
|
120 value->setToolTip(tr("Add this layer to the layer list"));
|
lbajardsilogic@90
|
121 //connect the main window to the linkActivated signal
|
lbajardsilogic@90
|
122 connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
|
benoitrigolleau@142
|
123
|
benoitrigolleau@142
|
124 m_infoLayout->addWidget(icon,row,0,1,1);
|
benoitrigolleau@142
|
125 m_infoLayout->addWidget(proper, row, 2,1,1);
|
benoitrigolleau@142
|
126 m_infoLayout->addWidget(value, row, 4,1,1);
|
benoitrigolleau@142
|
127 row++;
|
benoitrigolleau@142
|
128 }
|
lbajardsilogic@90
|
129 }
|
lbajardsilogic@90
|
130 }
|
lbajardsilogic@90
|
131
|
benoitrigolleau@142
|
132 m_infoLayout->setColumnStretch( 4, 1);
|
benoitrigolleau@144
|
133 m_infoLayout->setRowStretch( row, 1);
|
lbajardsilogic@7
|
134 }
|