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