annotate widgets/InfoWidget.cpp @ 142:c1ea7af931e7

new result display
author benoitrigolleau
date Mon, 12 Nov 2007 14:50:15 +0000
parents 1ae07a8c28a0
children f3dce7a985cf
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@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\">&nbsp;</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@142 131 m_infoLayout->setRowStretch( row+1, 1);
lbajardsilogic@7 132 }