lbajardsilogic@143: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ lbajardsilogic@143: lbajardsilogic@143: /* Sound Access lbajardsilogic@143: EASAIER client application. lbajardsilogic@143: Silogic 2007. Laure Bajard. lbajardsilogic@143: lbajardsilogic@143: This program is free software; you can redistribute it and/or lbajardsilogic@143: modify it under the terms of the GNU General Public License as lbajardsilogic@143: published by the Free Software Foundation; either version 2 of the lbajardsilogic@143: License, or (at your option) any later version. See the file lbajardsilogic@143: COPYING included with this distribution for more information . lbajardsilogic@143: */ lbajardsilogic@143: lbajardsilogic@143: #include "RelatedMediaWidget.h" lbajardsilogic@143: lbajardsilogic@143: #include lbajardsilogic@143: #include lbajardsilogic@155: #include lbajardsilogic@163: #include lbajardsilogic@257: #include lbajardsilogic@143: lbajardsilogic@143: #include lbajardsilogic@143: lbajardsilogic@143: #include "sv/main/MainWindow.h" lbajardsilogic@143: lbajardsilogic@143: RelatedMediaWidget::RelatedMediaWidget() : QWidget() , lbajardsilogic@143: m_nbRelMedia(0), lbajardsilogic@154: m_painter(0), lbajardsilogic@154: m_relMediaMaxHeight(150) lbajardsilogic@143: { lbajardsilogic@163: m_relMediaLayout = new FlowLayout; lbajardsilogic@168: //m_relMediaLayout->setSizeConstraint(QLayout::SetMinimumSize); lbajardsilogic@143: lbajardsilogic@168: setLayout(m_relMediaLayout); lbajardsilogic@143: } lbajardsilogic@143: lbajardsilogic@143: RelatedMediaWidget::~RelatedMediaWidget() lbajardsilogic@143: {} lbajardsilogic@143: lbajardsilogic@143: void RelatedMediaWidget::reset() lbajardsilogic@143: { lbajardsilogic@143: m_nbRelMedia = 0; lbajardsilogic@143: lbajardsilogic@143: QLayoutItem *child; lbajardsilogic@143: while ((child = m_relMediaLayout->takeAt(0)) != 0) { lbajardsilogic@143: delete child->widget(); lbajardsilogic@143: } lbajardsilogic@143: } lbajardsilogic@143: lbajardsilogic@257: void RelatedMediaWidget::addRelatedMedia(const QString &filename, std::map relMediaList) lbajardsilogic@143: { lbajardsilogic@153: QString imageSource; lbajardsilogic@153: QString extension = filename.right(filename.length() - (filename.lastIndexOf('.') + 1)); lbajardsilogic@153: lbajardsilogic@153: int width; lbajardsilogic@153: int height; lbajardsilogic@154: lbajardsilogic@153: if (extension == "pdf") lbajardsilogic@153: { lbajardsilogic@153: imageSource = ":icons/icon_pdf.png"; lbajardsilogic@153: } else lbajardsilogic@153: { lbajardsilogic@153: imageSource = filename; lbajardsilogic@153: } lbajardsilogic@153: lbajardsilogic@153: QPixmap image(imageSource); lbajardsilogic@154: if (image.height() > m_relMediaMaxHeight) lbajardsilogic@153: { lbajardsilogic@154: height = m_relMediaMaxHeight; lbajardsilogic@154: width = image.width() * m_relMediaMaxHeight / image.height(); lbajardsilogic@153: } else lbajardsilogic@153: { lbajardsilogic@153: height = image.height(); lbajardsilogic@153: width = image.width(); lbajardsilogic@153: } lbajardsilogic@153: lbajardsilogic@143: QLabel *mediaLabel = new QLabel(); lbajardsilogic@153: mediaLabel->setText("
 "); lbajardsilogic@143: lbajardsilogic@143: connect(mediaLabel, SIGNAL(linkActivated(QString)), MainWindow::instance(), SLOT(runExternProcess(QString))); lbajardsilogic@143: lbajardsilogic@157: QLabel *textLabel = new QLabel(); lbajardsilogic@258: QString uri = "file:/" + filename.right(filename.length() - filename.lastIndexOf("/data")); lbajardsilogic@257: std::map::iterator iter = relMediaList.find(uri); lbajardsilogic@257: if (iter != relMediaList.end()) lbajardsilogic@257: { lbajardsilogic@257: textLabel->setText("" + (iter->second).left(50) + "second + "\">..."); lbajardsilogic@257: connect(textLabel, SIGNAL(linkActivated(QString)), this, SLOT(showLabel(QString))); lbajardsilogic@257: } else { lbajardsilogic@257: textLabel->setText("Info may be added here..."); lbajardsilogic@257: } lbajardsilogic@157: lbajardsilogic@163: QVBoxLayout *mediaLayout = new QVBoxLayout; lbajardsilogic@163: mediaLayout->addWidget(mediaLabel); lbajardsilogic@163: mediaLayout->addWidget(textLabel); lbajardsilogic@163: lbajardsilogic@163: QWidget *mediaWidget = new QWidget; lbajardsilogic@163: mediaWidget->setLayout(mediaLayout); lbajardsilogic@163: lbajardsilogic@163: m_relMediaLayout->addWidget(mediaWidget); lbajardsilogic@157: lbajardsilogic@143: m_nbRelMedia++; lbajardsilogic@143: } lbajardsilogic@257: lbajardsilogic@257: void RelatedMediaWidget::showLabel(QString label) lbajardsilogic@257: { lbajardsilogic@257: QTextEdit *showLabel = new QTextEdit; lbajardsilogic@257: showLabel->setReadOnly(true); lbajardsilogic@257: showLabel->setHtml("

" + label + "

"); lbajardsilogic@257: showLabel->show(); lbajardsilogic@257: }