/* * Copyright 2009 Ben Boeckel * * 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 3 of the License, or * (at your option) 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. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ // Header include #include "ClassModel.h" // Sigtools includes #include "PluginModel.h" // KDE includes #include #include #include // Qt includes #include #include #include using namespace Sigtools; ClassModel::ClassModel(const QIcon& icon, const QString& name, const QString& description, PluginModel* parent) : BaseModel(parent), m_icon(icon), m_name(name), m_description(description) { } int ClassModel::rowCount() const { return 0; } Qt::ItemFlags ClassModel::flags() const { return Qt::ItemIsEnabled | Qt::ItemIsSelectable; } BaseModel* ClassModel::childItem(const int row) { Q_UNUSED(row) return NULL; } int ClassModel::findChild(BaseModel* model) const { Q_UNUSED(model) return -1; } void ClassModel::redraw(const int width) const { QFontMetrics regMetrics(KGlobalSettings::generalFont()); QFont smallFont = KGlobalSettings::smallestReadableFont(); smallFont.setItalic(true); QFontMetrics smallMetrics(smallFont); QSize nameSize = regMetrics.size(0, m_name); int maxWidth = qMax(nameSize.width() + nameSize.width() + horizSpacing, width); QSize descSize = smallMetrics.boundingRect(QRect(0, 0, maxWidth, 0), Qt::TextWordWrap, m_description).size(); int maxHeight = nameSize.height() + descSize.height() + vertSpacing; m_pixmap = QPixmap(maxWidth + 2 * borderWidth, maxHeight + 2 * borderWidth); m_pixmap.fill(KStatefulBrush(KColorScheme::View, KColorScheme::NormalBackground).brush(QPalette::Normal).color()); QPainter painter(&m_pixmap); int h = borderWidth; int w = borderWidth; painter.drawPixmap(w, h, KIcon(m_icon).pixmap(nameSize.height(), nameSize.height())); w += nameSize.height(); w += horizSpacing; painter.drawText(QRect(QPoint(w, h), QSize(maxWidth - w, nameSize.height())), Qt::AlignBottom | Qt::AlignLeft, m_name); w = borderWidth; h += nameSize.height(); h += vertSpacing; painter.setFont(smallFont); painter.drawText(QRect(QPoint(w, h), descSize), Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap, m_description); }