annotate widgets/RelatedMediaWidget.cpp @ 282:d9319859a4cf tip

(none)
author benoitrigolleau
date Fri, 31 Oct 2008 11:00:24 +0000
parents 14e8a46d506d
children
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@257 20 #include <QTextEdit>
lbajardsilogic@143 21
lbajardsilogic@143 22 #include <iostream>
lbajardsilogic@143 23
lbajardsilogic@143 24 #include "sv/main/MainWindow.h"
lbajardsilogic@143 25
lbajardsilogic@143 26 RelatedMediaWidget::RelatedMediaWidget() : QWidget() ,
lbajardsilogic@143 27 m_nbRelMedia(0),
lbajardsilogic@154 28 m_painter(0),
lbajardsilogic@154 29 m_relMediaMaxHeight(150)
lbajardsilogic@143 30 {
lbajardsilogic@163 31 m_relMediaLayout = new FlowLayout;
lbajardsilogic@168 32 //m_relMediaLayout->setSizeConstraint(QLayout::SetMinimumSize);
lbajardsilogic@143 33
lbajardsilogic@168 34 setLayout(m_relMediaLayout);
lbajardsilogic@143 35 }
lbajardsilogic@143 36
lbajardsilogic@143 37 RelatedMediaWidget::~RelatedMediaWidget()
lbajardsilogic@143 38 {}
lbajardsilogic@143 39
lbajardsilogic@143 40 void RelatedMediaWidget::reset()
lbajardsilogic@143 41 {
lbajardsilogic@143 42 m_nbRelMedia = 0;
lbajardsilogic@143 43
lbajardsilogic@143 44 QLayoutItem *child;
lbajardsilogic@143 45 while ((child = m_relMediaLayout->takeAt(0)) != 0) {
lbajardsilogic@143 46 delete child->widget();
lbajardsilogic@143 47 }
lbajardsilogic@143 48 }
lbajardsilogic@143 49
lbajardsilogic@257 50 void RelatedMediaWidget::addRelatedMedia(const QString &filename, std::map<QString, QString> relMediaList)
lbajardsilogic@143 51 {
lbajardsilogic@153 52 QString imageSource;
lbajardsilogic@153 53 QString extension = filename.right(filename.length() - (filename.lastIndexOf('.') + 1));
lbajardsilogic@153 54
lbajardsilogic@153 55 int width;
lbajardsilogic@153 56 int height;
lbajardsilogic@154 57
lbajardsilogic@153 58 if (extension == "pdf")
lbajardsilogic@153 59 {
lbajardsilogic@153 60 imageSource = ":icons/icon_pdf.png";
lbajardsilogic@153 61 } else
lbajardsilogic@153 62 {
lbajardsilogic@153 63 imageSource = filename;
lbajardsilogic@153 64 }
lbajardsilogic@153 65
lbajardsilogic@153 66 QPixmap image(imageSource);
lbajardsilogic@154 67 if (image.height() > m_relMediaMaxHeight)
lbajardsilogic@153 68 {
lbajardsilogic@154 69 height = m_relMediaMaxHeight;
lbajardsilogic@154 70 width = image.width() * m_relMediaMaxHeight / image.height();
lbajardsilogic@153 71 } else
lbajardsilogic@153 72 {
lbajardsilogic@153 73 height = image.height();
lbajardsilogic@153 74 width = image.width();
lbajardsilogic@153 75 }
lbajardsilogic@153 76
lbajardsilogic@143 77 QLabel *mediaLabel = new QLabel();
lbajardsilogic@153 78 mediaLabel->setText("<html><header><style type=\"text/css\">a {text-decoration: none;}</style></header><body><a href=\"" + filename +
lbajardsilogic@153 79 "\"><img src=\"" + imageSource + "\" width=\"" + QString::number(width) + "\" height=\"" + QString::number(height) + "\">&nbsp;</a></body></html>");
lbajardsilogic@143 80
lbajardsilogic@143 81 connect(mediaLabel, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(runExternProcess(QString)));
lbajardsilogic@143 82
lbajardsilogic@157 83 QLabel *textLabel = new QLabel();
lbajardsilogic@258 84 QString uri = "file:/" + filename.right(filename.length() - filename.lastIndexOf("/data"));
lbajardsilogic@257 85 std::map<QString, QString>::iterator iter = relMediaList.find(uri);
lbajardsilogic@257 86 if (iter != relMediaList.end())
lbajardsilogic@257 87 {
lbajardsilogic@257 88 textLabel->setText("<html><a >" + (iter->second).left(50) + "</a><a href=\"" + iter->second + "\">...</a></html>");
lbajardsilogic@257 89 connect(textLabel, SIGNAL(linkActivated(QString)), this, SLOT(showLabel(QString)));
lbajardsilogic@257 90 } else {
lbajardsilogic@257 91 textLabel->setText("<html><a >Info may be added here</a><a href=\"" + filename + "\">...</a></html>");
lbajardsilogic@257 92 }
lbajardsilogic@157 93
lbajardsilogic@163 94 QVBoxLayout *mediaLayout = new QVBoxLayout;
lbajardsilogic@163 95 mediaLayout->addWidget(mediaLabel);
lbajardsilogic@163 96 mediaLayout->addWidget(textLabel);
lbajardsilogic@163 97
lbajardsilogic@163 98 QWidget *mediaWidget = new QWidget;
lbajardsilogic@163 99 mediaWidget->setLayout(mediaLayout);
lbajardsilogic@163 100
lbajardsilogic@163 101 m_relMediaLayout->addWidget(mediaWidget);
lbajardsilogic@157 102
lbajardsilogic@143 103 m_nbRelMedia++;
lbajardsilogic@143 104 }
lbajardsilogic@257 105
lbajardsilogic@257 106 void RelatedMediaWidget::showLabel(QString label)
lbajardsilogic@257 107 {
lbajardsilogic@257 108 QTextEdit *showLabel = new QTextEdit;
lbajardsilogic@257 109 showLabel->setReadOnly(true);
lbajardsilogic@257 110 showLabel->setHtml("<html><br><br>" + label + "</br></br></html>");
lbajardsilogic@257 111 showLabel->show();
lbajardsilogic@257 112 }