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