annotate widgets/InfoWidget.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 057856cf81a2
children
rev   line source
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@244 60 std::map<QString, QStringList*> info = model->getInfo();
lbajardsilogic@244 61 std::map<QString, QStringList*>::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@257 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@257 76 value = new QLabel(iterInfo->second->join(" - "));
lbajardsilogic@257 77 m_infoLayout->addWidget(proper, row, 2,1,1);
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@257 85 value = new QLabel(iterInfo->second->join(" - "));
lbajardsilogic@257 86 m_infoLayout->addWidget(proper, row, 2,1,1);
benoitrigolleau@142 87 m_infoLayout->addWidget(value, row, 4,1,1);
lbajardsilogic@7 88 row++;
lbajardsilogic@7 89 }
lbajardsilogic@257 90 iterInfo = info.find("performer_name");
lbajardsilogic@257 91 if (iterInfo!= info.end())
lbajardsilogic@257 92 {
lbajardsilogic@257 93 proper = new QLabel("PERFORMER");
lbajardsilogic@257 94 value = new QLabel(iterInfo->second->join(" - "));
lbajardsilogic@257 95 m_infoLayout->addWidget(proper, row, 2,1,1);
lbajardsilogic@257 96 m_infoLayout->addWidget(value, row, 4,1,1);
lbajardsilogic@257 97 row++;
lbajardsilogic@257 98 }
benoitrigolleau@142 99 row++;
lbajardsilogic@257 100
benoitrigolleau@142 101
lbajardsilogic@90 102 //display other info
lbajardsilogic@90 103 for (iterInfo = info.begin(); iterInfo != info.end(); iterInfo++)
lbajardsilogic@90 104 {
lbajardsilogic@257 105 if ( (iterInfo->first != "title") && (iterInfo->first != "author") && (iterInfo->first != "performer_name") && (iterInfo->first != "event_label") && (iterInfo->first != "signal"))
lbajardsilogic@90 106 {
lbajardsilogic@257 107 proper = new QLabel(iterInfo->first.toUpper());
lbajardsilogic@257 108 QStringList *values = iterInfo->second;
lbajardsilogic@257 109 QString label = "";
lbajardsilogic@257 110 for (int i = 0; i < values->size(); ++i)
lbajardsilogic@257 111 {
lbajardsilogic@257 112 QString curVal = values->at(i);
lbajardsilogic@257 113 if (curVal.contains("http:"))
lbajardsilogic@257 114 {
lbajardsilogic@257 115 curVal = curVal.right(curVal.length() - curVal.lastIndexOf('/') - 1);
lbajardsilogic@257 116 curVal = curVal.right(curVal.length() - curVal.lastIndexOf('#') - 1);
lbajardsilogic@257 117 }
lbajardsilogic@257 118 label += curVal;
lbajardsilogic@257 119 if (i+1 < values->size())
lbajardsilogic@257 120 label += " - ";
benoitrigolleau@142 121 }
lbajardsilogic@257 122 value = new QLabel(label);
lbajardsilogic@257 123
lbajardsilogic@257 124 m_infoLayout->addWidget(proper, row, 2,1,1);
lbajardsilogic@257 125 m_infoLayout->addWidget(value, row, 4,1,1);
lbajardsilogic@257 126 row++;
lbajardsilogic@257 127 }
lbajardsilogic@257 128 }
lbajardsilogic@90 129
lbajardsilogic@257 130 iterInfo = info.find("event_label");
lbajardsilogic@257 131 if (iterInfo!= info.end())
lbajardsilogic@257 132 {
lbajardsilogic@257 133 proper = new QLabel("TIMELINE INFORMATION");
lbajardsilogic@257 134 value = new QLabel("");
lbajardsilogic@257 135 QString label;
lbajardsilogic@257 136 QStringList::const_iterator constIterator;
lbajardsilogic@257 137 for (constIterator = iterInfo->second->constBegin(); constIterator != iterInfo->second->constEnd(); ++constIterator)
lbajardsilogic@251 138 {
lbajardsilogic@257 139 label += "<a href=\"";
lbajardsilogic@257 140 label += *constIterator;
lbajardsilogic@257 141 label += "\">";
lbajardsilogic@257 142 label += *constIterator;
lbajardsilogic@257 143 label += "</a> - ";
lbajardsilogic@251 144 }
lbajardsilogic@257 145 value->setText(label);
lbajardsilogic@257 146 //connect the main window to the linkActivated signal
lbajardsilogic@257 147 connect(value, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(importEasaierLayer(QString)));
lbajardsilogic@244 148 m_infoLayout->addWidget(proper, row, 2,1,1);
lbajardsilogic@244 149 m_infoLayout->addWidget(value, row, 4,1,1);
lbajardsilogic@244 150 row++;
lbajardsilogic@90 151 }
lbajardsilogic@90 152
benoitrigolleau@142 153 m_infoLayout->setColumnStretch( 4, 1);
benoitrigolleau@144 154 m_infoLayout->setRowStretch( row, 1);
lbajardsilogic@7 155 }