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@7
|
60 std::map<QString, QString> info = model->getInfo();
|
lbajardsilogic@7
|
61 std::map<QString, QString>::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@90
|
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@90
|
76 value = new QLabel(iterInfo->second);
|
benoitrigolleau@142
|
77 m_infoLayout->addWidget(proper, row, 0,1,3);
|
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@90
|
85 value = new QLabel(iterInfo->second);
|
benoitrigolleau@142
|
86 m_infoLayout->addWidget(proper, row, 0,1,3);
|
benoitrigolleau@142
|
87 m_infoLayout->addWidget(value, row, 4,1,1);
|
lbajardsilogic@7
|
88 row++;
|
lbajardsilogic@7
|
89 }
|
benoitrigolleau@142
|
90 m_infoLayout->setRowMinimumHeight(row,25);
|
benoitrigolleau@142
|
91 row++;
|
benoitrigolleau@142
|
92
|
benoitrigolleau@142
|
93
|
lbajardsilogic@90
|
94 //display other info
|
lbajardsilogic@90
|
95 for (iterInfo = info.begin(); iterInfo != info.end(); iterInfo++)
|
lbajardsilogic@90
|
96 {
|
benoitrigolleau@142
|
97 if ((iterInfo->first != "title") && (iterInfo->first != "author") && (iterInfo->first.contains("http://purl.org/ontology/mo")))
|
lbajardsilogic@90
|
98 {
|
benoitrigolleau@142
|
99 QString properName;
|
benoitrigolleau@142
|
100 properName = iterInfo->first.split("#").last();
|
benoitrigolleau@142
|
101 proper = new QLabel(properName);
|
benoitrigolleau@142
|
102 icon = new QLabel();
|
benoitrigolleau@142
|
103 if(properName == "beats"){
|
benoitrigolleau@142
|
104 icon->setPixmap(QPixmap(":icons/instants.png"));
|
benoitrigolleau@142
|
105 }else if(properName == "chromagram"){
|
benoitrigolleau@142
|
106 icon->setPixmap(QPixmap(":icons/colour3d.png"));
|
benoitrigolleau@142
|
107 }else if(properName == "instruments"){
|
benoitrigolleau@142
|
108 icon->setPixmap(QPixmap(":icons/notes.png"));
|
benoitrigolleau@142
|
109 }else if(properName == "key"){
|
benoitrigolleau@142
|
110 icon->setPixmap(QPixmap(":icons/values.png"));
|
benoitrigolleau@142
|
111 }else if(properName == "tempo"){
|
benoitrigolleau@142
|
112 icon->setPixmap(QPixmap(":icons/values.png"));
|
benoitrigolleau@142
|
113 }else{
|
benoitrigolleau@142
|
114 //nothing
|
benoitrigolleau@142
|
115 }
|
lbajardsilogic@90
|
116
|
lbajardsilogic@90
|
117 QString valueText(iterInfo->second);
|
lbajardsilogic@90
|
118
|
lbajardsilogic@90
|
119 if (valueText.right(4) == ".xml")
|
lbajardsilogic@90
|
120 {
|
lbajardsilogic@90
|
121 value = new QLabel();
|
benoitrigolleau@142
|
122 //value->setIcon(QIcon(":icons/redo.png"));
|
benoitrigolleau@142
|
123 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
|
124 value->setToolTip(tr("Add this layer to the layer list"));
|
lbajardsilogic@90
|
125 //connect the main window to the linkActivated signal
|
lbajardsilogic@90
|
126 connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
|
benoitrigolleau@142
|
127
|
benoitrigolleau@142
|
128 m_infoLayout->addWidget(icon,row,0,1,1);
|
benoitrigolleau@142
|
129 m_infoLayout->addWidget(proper, row, 2,1,1);
|
benoitrigolleau@142
|
130 m_infoLayout->addWidget(value, row, 4,1,1);
|
benoitrigolleau@142
|
131 row++;
|
benoitrigolleau@142
|
132 }
|
lbajardsilogic@90
|
133 }
|
lbajardsilogic@90
|
134 }
|
lbajardsilogic@90
|
135
|
benoitrigolleau@142
|
136 m_infoLayout->setColumnStretch( 4, 1);
|
benoitrigolleau@144
|
137 m_infoLayout->setRowStretch( row, 1);
|
lbajardsilogic@7
|
138 }
|