| 
							- /*
 -  * Patchbay Canvas engine using QGraphicsView/Scene
 -  * Copyright (C) 2010-2012 Filipe Coelho <falktx@falktx.com>
 -  *
 -  * This program is free software; you can redistribute it and/or modify
 -  * it under the terms of the GNU General Public License as published by
 -  * the Free Software Foundation; either version 2 of the License, or
 -  * any later version.
 -  *
 -  * This program is distributed in the hope that it will be useful,
 -  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 -  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 -  * GNU General Public License for more details.
 -  *
 -  * For a full copy of the GNU General Public License see the COPYING file
 -  */
 - 
 - #include "canvasicon.h"
 - 
 - #include <QtGui/QPainter>
 - #include <QtGui/QGraphicsColorizeEffect>
 - #include <QtSvg/QSvgRenderer>
 - 
 - START_NAMESPACE_PATCHCANVAS
 - 
 - CanvasIcon::CanvasIcon(Icon icon, QString name, QGraphicsItem* parent) :
 -     QGraphicsSvgItem(parent)
 - {
 -     m_renderer = 0;
 -     p_size = QRectF(0, 0, 0, 0);
 - 
 -     m_colorFX = new QGraphicsColorizeEffect(this);
 -     m_colorFX->setColor(canvas.theme->box_text.color());
 - 
 -     setGraphicsEffect(m_colorFX);
 -     setIcon(icon, name);
 - }
 - 
 - CanvasIcon::~CanvasIcon()
 - {
 -     if (m_renderer)
 -         delete m_renderer;
 -     delete m_colorFX;
 - }
 - 
 - void CanvasIcon::setIcon(Icon icon, QString name)
 - {
 -     name = name.toLower();
 -     QString icon_path;
 - 
 -     if (icon == ICON_APPLICATION)
 -     {
 -         p_size = QRectF(3, 2, 19, 18);
 - 
 -         if (name.contains("audacious"))
 -         {
 -             p_size = QRectF(5, 4, 16, 16);
 -             icon_path = ":/scalable/pb_audacious.svg";
 -         }
 -         else if (name.contains("clementine"))
 -         {
 -             p_size = QRectF(5, 4, 16, 16);
 -             icon_path = ":/scalable/pb_clementine.svg";
 -         }
 -         else if (name.contains("jamin"))
 -         {
 -             p_size = QRectF(5, 3, 16, 16);
 -             icon_path = ":/scalable/pb_jamin.svg";
 -         }
 -         else if (name.contains("mplayer"))
 -         {
 -             p_size = QRectF(5, 4, 16, 16);
 -             icon_path = ":/scalable/pb_mplayer.svg";
 -         }
 -         else if (name.contains("vlc"))
 -         {
 -             p_size = QRectF(5, 3, 16, 16);
 -             icon_path = ":/scalable/pb_vlc.svg";
 -         }
 -         else
 -         {
 -             p_size = QRectF(5, 3, 16, 16);
 -             icon_path = ":/scalable/pb_generic.svg";
 -         }
 -     }
 -     else if (icon == ICON_HARDWARE)
 -     {
 -         p_size = QRectF(5, 2, 16, 16);
 -         icon_path = ":/scalable/pb_hardware.svg";
 - 
 -     }
 -     else if (icon == ICON_LADISH_ROOM)
 -     {
 -         p_size = QRectF(5, 2, 16, 16);
 -         icon_path = ":/scalable/pb_hardware.svg";
 -     }
 -     else
 -     {
 -         p_size = QRectF(0, 0, 0, 0);
 -         qCritical("PatchCanvas::CanvasIcon->setIcon(%s, %s) - unsupported Icon requested", icon2str(icon), name.toUtf8().constData());
 -         return;
 -     }
 - 
 -     if (m_renderer)
 -         delete m_renderer;
 - 
 -     m_renderer = new QSvgRenderer(icon_path, canvas.scene);
 -     setSharedRenderer(m_renderer);
 -     update();
 - }
 - 
 - int CanvasIcon::type() const
 - {
 -     return CanvasIconType;
 - }
 - 
 - QRectF CanvasIcon::boundingRect() const
 - {
 -     return p_size;
 - }
 - 
 - void CanvasIcon::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget)
 - {
 -     if (m_renderer)
 -     {
 -         painter->setRenderHint(QPainter::Antialiasing, false);
 -         painter->setRenderHint(QPainter::TextAntialiasing, false);
 -         m_renderer->render(painter, p_size);
 -     }
 -     else
 -         QGraphicsSvgItem::paint(painter, option, widget);
 - }
 - 
 - END_NAMESPACE_PATCHCANVAS
 
 
  |