annotate widgets/RelatedMediaWidget.cpp @ 188:56c167f3648a

compilation under linux: resolve bug with std::min
author lbajardsilogic
date Tue, 27 Nov 2007 13:11:19 +0000
parents 00ab90498dcc
children 057856cf81a2
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@155 18 #include <QScrollArea>
lbajardsilogic@163 19 #include <QVBoxLayout>
lbajardsilogic@143 20
lbajardsilogic@143 21 #include <iostream>
lbajardsilogic@143 22
lbajardsilogic@143 23 #include "sv/main/MainWindow.h"
lbajardsilogic@143 24
lbajardsilogic@143 25 RelatedMediaWidget::RelatedMediaWidget() : QWidget() ,
lbajardsilogic@143 26 m_nbRelMedia(0),
lbajardsilogic@154 27 m_painter(0),
lbajardsilogic@154 28 m_relMediaMaxHeight(150)
lbajardsilogic@143 29 {
lbajardsilogic@163 30 m_relMediaLayout = new FlowLayout;
lbajardsilogic@168 31 //m_relMediaLayout->setSizeConstraint(QLayout::SetMinimumSize);
lbajardsilogic@143 32
lbajardsilogic@168 33 setLayout(m_relMediaLayout);
lbajardsilogic@143 34 }
lbajardsilogic@143 35
lbajardsilogic@143 36 RelatedMediaWidget::~RelatedMediaWidget()
lbajardsilogic@143 37 {}
lbajardsilogic@143 38
lbajardsilogic@143 39 void RelatedMediaWidget::reset()
lbajardsilogic@143 40 {
lbajardsilogic@143 41 m_nbRelMedia = 0;
lbajardsilogic@143 42
lbajardsilogic@143 43 QLayoutItem *child;
lbajardsilogic@143 44 while ((child = m_relMediaLayout->takeAt(0)) != 0) {
lbajardsilogic@143 45 delete child->widget();
lbajardsilogic@143 46 }
lbajardsilogic@143 47 }
lbajardsilogic@143 48
lbajardsilogic@143 49 void RelatedMediaWidget::addRelatedMedia(const QString &filename)
lbajardsilogic@143 50 {
lbajardsilogic@153 51 QString imageSource;
lbajardsilogic@153 52 QString extension = filename.right(filename.length() - (filename.lastIndexOf('.') + 1));
lbajardsilogic@153 53
lbajardsilogic@153 54 int width;
lbajardsilogic@153 55 int height;
lbajardsilogic@154 56
lbajardsilogic@153 57 if (extension == "pdf")
lbajardsilogic@153 58 {
lbajardsilogic@153 59 imageSource = ":icons/icon_pdf.png";
lbajardsilogic@153 60 } else
lbajardsilogic@153 61 {
lbajardsilogic@153 62 imageSource = filename;
lbajardsilogic@153 63 }
lbajardsilogic@153 64
lbajardsilogic@153 65 QPixmap image(imageSource);
lbajardsilogic@154 66 if (image.height() > m_relMediaMaxHeight)
lbajardsilogic@153 67 {
lbajardsilogic@154 68 height = m_relMediaMaxHeight;
lbajardsilogic@154 69 width = image.width() * m_relMediaMaxHeight / image.height();
lbajardsilogic@153 70 } else
lbajardsilogic@153 71 {
lbajardsilogic@153 72 height = image.height();
lbajardsilogic@153 73 width = image.width();
lbajardsilogic@153 74 }
lbajardsilogic@153 75
lbajardsilogic@143 76 QLabel *mediaLabel = new QLabel();
lbajardsilogic@153 77 mediaLabel->setText("<html><header><style type=\"text/css\">a {text-decoration: none;}</style></header><body><a href=\"" + filename +
lbajardsilogic@153 78 "\"><img src=\"" + imageSource + "\" width=\"" + QString::number(width) + "\" height=\"" + QString::number(height) + "\">&nbsp;</a></body></html>");
lbajardsilogic@143 79
lbajardsilogic@143 80 connect(mediaLabel, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(runExternProcess(QString)));
lbajardsilogic@143 81
lbajardsilogic@157 82 QLabel *textLabel = new QLabel();
lbajardsilogic@157 83 textLabel->setText("<html><a >Info may be added here</a><a href=\"" + filename + "\">...</a></html>");
lbajardsilogic@157 84
lbajardsilogic@163 85 QVBoxLayout *mediaLayout = new QVBoxLayout;
lbajardsilogic@163 86 mediaLayout->addWidget(mediaLabel);
lbajardsilogic@163 87 mediaLayout->addWidget(textLabel);
lbajardsilogic@163 88
lbajardsilogic@163 89 QWidget *mediaWidget = new QWidget;
lbajardsilogic@163 90 mediaWidget->setLayout(mediaLayout);
lbajardsilogic@163 91
lbajardsilogic@163 92 m_relMediaLayout->addWidget(mediaWidget);
lbajardsilogic@157 93
lbajardsilogic@143 94 m_nbRelMedia++;
lbajardsilogic@143 95 }