annotate widgets/RelatedMediaWidget.cpp @ 154:1b8f08375391

add the RelatedMediaWidget in the InfoWidget
author lbajardsilogic
date Thu, 15 Nov 2007 10:46:57 +0000
parents 98df77b4f041
children 708c00883180
rev   line source
lbajardsilogic@143 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
lbajardsilogic@143 2
lbajardsilogic@143 3 /* Sound Access
lbajardsilogic@143 4 EASAIER client application.
lbajardsilogic@143 5 Silogic 2007. Laure Bajard.
lbajardsilogic@143 6
lbajardsilogic@143 7 This program is free software; you can redistribute it and/or
lbajardsilogic@143 8 modify it under the terms of the GNU General Public License as
lbajardsilogic@143 9 published by the Free Software Foundation; either version 2 of the
lbajardsilogic@143 10 License, or (at your option) any later version. See the file
lbajardsilogic@143 11 COPYING included with this distribution for more information .
lbajardsilogic@143 12 */
lbajardsilogic@143 13
lbajardsilogic@143 14 #include "RelatedMediaWidget.h"
lbajardsilogic@143 15
lbajardsilogic@143 16 #include <QLayoutItem>
lbajardsilogic@143 17 #include <QLinearGradient>
lbajardsilogic@143 18
lbajardsilogic@143 19 #include <iostream>
lbajardsilogic@143 20
lbajardsilogic@143 21 #include "sv/main/MainWindow.h"
lbajardsilogic@154 22 #include "AdvancedToolBox.h"
lbajardsilogic@143 23
lbajardsilogic@143 24 RelatedMediaWidget::RelatedMediaWidget() : QWidget() ,
lbajardsilogic@143 25 m_nbRelMedia(0),
lbajardsilogic@154 26 m_painter(0),
lbajardsilogic@154 27 m_relMediaMaxHeight(150)
lbajardsilogic@143 28 {
lbajardsilogic@143 29 m_relMediaLayout = new QGridLayout;
lbajardsilogic@143 30
lbajardsilogic@143 31 QWidget *mediaWidget = new QWidget;
lbajardsilogic@143 32 mediaWidget->setLayout(m_relMediaLayout);
lbajardsilogic@143 33
lbajardsilogic@154 34 m_scrollArea = new QScrollArea;
lbajardsilogic@154 35 m_scrollArea->setWidget(mediaWidget);
lbajardsilogic@154 36 m_scrollArea->setWidgetResizable(true);
lbajardsilogic@154 37 m_scrollArea->setMinimumHeight(m_relMediaMaxHeight + 50);
lbajardsilogic@154 38
lbajardsilogic@154 39 AdvancedToolBox * toolBox= new AdvancedToolBox;
lbajardsilogic@154 40 toolBox->addItem("Related Media", m_scrollArea);
lbajardsilogic@143 41
lbajardsilogic@143 42 QVBoxLayout *mainLayout = new QVBoxLayout;
lbajardsilogic@154 43 mainLayout->addWidget(toolBox);
lbajardsilogic@154 44 mainLayout->setSpacing(0);
lbajardsilogic@154 45 mainLayout->setMargin(0);
lbajardsilogic@143 46
lbajardsilogic@143 47 setLayout(mainLayout);
lbajardsilogic@143 48 }
lbajardsilogic@143 49
lbajardsilogic@143 50 RelatedMediaWidget::~RelatedMediaWidget()
lbajardsilogic@143 51 {}
lbajardsilogic@143 52
lbajardsilogic@143 53 void RelatedMediaWidget::reset()
lbajardsilogic@143 54 {
lbajardsilogic@143 55 m_nbRelMedia = 0;
lbajardsilogic@143 56
lbajardsilogic@143 57 QLayoutItem *child;
lbajardsilogic@143 58 while ((child = m_relMediaLayout->takeAt(0)) != 0) {
lbajardsilogic@143 59 delete child->widget();
lbajardsilogic@143 60 }
lbajardsilogic@143 61 }
lbajardsilogic@143 62
lbajardsilogic@143 63 void RelatedMediaWidget::addRelatedMedia(const QString &filename)
lbajardsilogic@143 64 {
lbajardsilogic@153 65 QString imageSource;
lbajardsilogic@153 66 QString extension = filename.right(filename.length() - (filename.lastIndexOf('.') + 1));
lbajardsilogic@153 67
lbajardsilogic@153 68 int width;
lbajardsilogic@153 69 int height;
lbajardsilogic@154 70
lbajardsilogic@153 71 if (extension == "pdf")
lbajardsilogic@153 72 {
lbajardsilogic@153 73 imageSource = ":icons/icon_pdf.png";
lbajardsilogic@153 74 } else
lbajardsilogic@153 75 {
lbajardsilogic@153 76 imageSource = filename;
lbajardsilogic@153 77 }
lbajardsilogic@153 78
lbajardsilogic@153 79 QPixmap image(imageSource);
lbajardsilogic@154 80 if (image.height() > m_relMediaMaxHeight)
lbajardsilogic@153 81 {
lbajardsilogic@154 82 height = m_relMediaMaxHeight;
lbajardsilogic@154 83 width = image.width() * m_relMediaMaxHeight / image.height();
lbajardsilogic@153 84 } else
lbajardsilogic@153 85 {
lbajardsilogic@153 86 height = image.height();
lbajardsilogic@153 87 width = image.width();
lbajardsilogic@153 88 }
lbajardsilogic@153 89
lbajardsilogic@143 90 QLabel *mediaLabel = new QLabel();
lbajardsilogic@153 91 mediaLabel->setText("<html><header><style type=\"text/css\">a {text-decoration: none;}</style></header><body><a href=\"" + filename +
lbajardsilogic@153 92 "\"><img src=\"" + imageSource + "\" width=\"" + QString::number(width) + "\" height=\"" + QString::number(height) + "\">&nbsp;</a></body></html>");
lbajardsilogic@143 93
lbajardsilogic@143 94 connect(mediaLabel, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(runExternProcess(QString)));
lbajardsilogic@143 95
lbajardsilogic@143 96 m_relMediaLayout->addWidget(mediaLabel, 0, m_nbRelMedia);
lbajardsilogic@143 97 m_nbRelMedia++;
lbajardsilogic@143 98 }