void CImportDlg::OnInitDialog() { CXUIDialog::OnInitDialog(); m_hIcon = LoadIcon(m_engine->get_hInstance(), MAKEINTRESOURCE(IDI_IMPORT)); SendMessage(m_hWnd, WM_SETICON, (WPARAM) ICON_BIG, (LPARAM) m_hIcon); calcItemHeight(); import(); updateImportBtn(); fillList(); }
void AppletDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QStyleOptionViewItemV4 opt(option); QStyle *style = opt.widget ? opt.widget->style() : QApplication::style(); style->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget); const int left = option.rect.left(); const int top = option.rect.top(); const int width = option.rect.width(); const int height = calcItemHeight(option); bool leftToRight = (painter->layoutDirection() == Qt::LeftToRight); QIcon::Mode iconMode = QIcon::Normal; QColor foregroundColor = (option.state.testFlag(QStyle::State_Selected)) ? option.palette.color(QPalette::HighlightedText) : option.palette.color(QPalette::Text); // Painting main column QFont titleFont = option.font; titleFont.setBold(true); titleFont.setPointSize(titleFont.pointSize() + 2); QPixmap pixmap(width, height); pixmap.fill(Qt::transparent); QPainter p(&pixmap); p.translate(-option.rect.topLeft()); QLinearGradient gradient; QString title = index.model()->data(index, Qt::DisplayRole).toString(); QString description = index.model()->data(index, AppletDelegate::DescriptionRole).toString(); // Painting // Text int textInner = 2 * UNIVERSAL_PADDING + MAIN_ICON_SIZE; p.setPen(foregroundColor); p.setFont(titleFont); p.drawText(left + (leftToRight ? textInner : 0), top, width - textInner, height / 2, Qt::AlignBottom | Qt::AlignLeft, title); p.setFont(option.font); p.drawText(left + (leftToRight ? textInner : 0), top + height / 2, width - textInner, height / 2, Qt::AlignTop | Qt::AlignLeft, description); // Main icon const QIcon& icon = qVariantValue<QIcon>(index.model()->data(index, Qt::DecorationRole)); icon.paint(&p, leftToRight ? left + UNIVERSAL_PADDING : left + width - UNIVERSAL_PADDING - MAIN_ICON_SIZE, top + UNIVERSAL_PADDING, MAIN_ICON_SIZE, MAIN_ICON_SIZE, Qt::AlignCenter, iconMode); // Gradient part of the background - fading of the text at the end if (leftToRight) { gradient = QLinearGradient(left + width - UNIVERSAL_PADDING - FADE_LENGTH, 0, left + width - UNIVERSAL_PADDING, 0); gradient.setColorAt(0, Qt::white); gradient.setColorAt(1, Qt::transparent); } else { gradient = QLinearGradient(left + UNIVERSAL_PADDING, 0, left + UNIVERSAL_PADDING + FADE_LENGTH, 0); gradient.setColorAt(0, Qt::transparent); gradient.setColorAt(1, Qt::white); } QRect paintRect = option.rect; p.setCompositionMode(QPainter::CompositionMode_DestinationIn); p.fillRect(paintRect, gradient); if (leftToRight) { gradient.setStart(left + width - FADE_LENGTH, 0); gradient.setFinalStop(left + width, 0); } else { gradient.setStart(left + UNIVERSAL_PADDING, 0); gradient.setFinalStop(left + UNIVERSAL_PADDING + FADE_LENGTH, 0); } paintRect.setHeight(UNIVERSAL_PADDING + MAIN_ICON_SIZE / 2); p.fillRect(paintRect, gradient); p.end(); painter->drawPixmap(option.rect.topLeft(), pixmap); }
int AppletDelegate::calcItemHeight(const QStyleOptionViewItem& option) const { // Painting main column QFont titleFont = option.font; titleFont.setBold(true); titleFont.setPointSize(titleFont.pointSize() + 2); int textHeight = QFontInfo(titleFont).pixelSize() + QFontInfo(option.font).pixelSize(); //kDebug() << textHeight << qMax(textHeight, MAIN_ICON_SIZE) + 2 * UNIVERSAL_PADDING; return qMax(textHeight, MAIN_ICON_SIZE) + 2 * UNIVERSAL_PADDING; } QSize AppletDelegate::sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const { Q_UNUSED(index) return QSize(200, calcItemHeight(option)); } void WallpaperWidget::settingsChanged(bool isModified) { emit modified(isModified); } class BackgroundDialogPrivate { public: BackgroundDialogPrivate(Plasma::Containment* c, Plasma::View* v) : containmentModel(0), wallpaper(0), view(v), containment(c),