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
|
lbajardsilogic@7
|
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;
|
lbajardsilogic@7
|
57 QLabel* value;
|
lbajardsilogic@7
|
58
|
lbajardsilogic@7
|
59 int row = 0;
|
lbajardsilogic@90
|
60
|
lbajardsilogic@90
|
61 //display author and title at first
|
lbajardsilogic@90
|
62 iterInfo = info.find("title");
|
lbajardsilogic@90
|
63 if (iterInfo!= info.end())
|
lbajardsilogic@7
|
64 {
|
lbajardsilogic@7
|
65 proper = new QLabel(iterInfo->first);
|
lbajardsilogic@90
|
66 value = new QLabel(iterInfo->second);
|
lbajardsilogic@90
|
67 m_infoLayout->addWidget(proper, row, 0);
|
lbajardsilogic@90
|
68 m_infoLayout->addWidget(value, row, 1);
|
lbajardsilogic@90
|
69 row++;
|
lbajardsilogic@90
|
70 }
|
lbajardsilogic@90
|
71 iterInfo = info.find("author");
|
lbajardsilogic@90
|
72 if (iterInfo!= info.end())
|
lbajardsilogic@90
|
73 {
|
lbajardsilogic@90
|
74 proper = new QLabel(iterInfo->first);
|
lbajardsilogic@90
|
75 value = new QLabel(iterInfo->second);
|
lbajardsilogic@7
|
76 m_infoLayout->addWidget(proper, row, 0);
|
lbajardsilogic@7
|
77 m_infoLayout->addWidget(value, row, 1);
|
lbajardsilogic@7
|
78 row++;
|
lbajardsilogic@7
|
79 }
|
lbajardsilogic@7
|
80
|
lbajardsilogic@90
|
81 //display other info
|
lbajardsilogic@90
|
82 for (iterInfo = info.begin(); iterInfo != info.end(); iterInfo++)
|
lbajardsilogic@90
|
83 {
|
lbajardsilogic@90
|
84 if ((iterInfo->first != "title") && (iterInfo->first != "author"))
|
lbajardsilogic@90
|
85 {
|
lbajardsilogic@90
|
86 proper = new QLabel(iterInfo->first);
|
lbajardsilogic@90
|
87
|
lbajardsilogic@90
|
88 QString valueText(iterInfo->second);
|
lbajardsilogic@90
|
89
|
lbajardsilogic@90
|
90 if (valueText.right(4) == ".xml")
|
lbajardsilogic@90
|
91 {
|
lbajardsilogic@90
|
92 value = new QLabel();
|
lbajardsilogic@90
|
93 value->setText("<a href=\"" + iterInfo->second + "\">" + iterInfo->second + "</a>");
|
lbajardsilogic@90
|
94 //connect the main window to the linkActivated signal
|
lbajardsilogic@90
|
95 connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
|
lbajardsilogic@90
|
96
|
lbajardsilogic@90
|
97 } else {
|
lbajardsilogic@90
|
98 value = new QLabel(iterInfo->second);
|
lbajardsilogic@90
|
99 }
|
lbajardsilogic@90
|
100
|
lbajardsilogic@90
|
101 m_infoLayout->addWidget(proper, row, 0);
|
lbajardsilogic@90
|
102 m_infoLayout->addWidget(value, row, 1);
|
lbajardsilogic@90
|
103 row++;
|
lbajardsilogic@90
|
104 }
|
lbajardsilogic@90
|
105 }
|
lbajardsilogic@90
|
106
|
lbajardsilogic@7
|
107 m_infoLayout->setColumnStretch( 1, 1);
|
lbajardsilogic@7
|
108 }
|