annotate widgets/InfoWidget.cpp @ 154:1b8f08375391

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