/************************************************************************** ** ** This file is part of Qt Creator ** ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). ** ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** Commercial Usage ** ** Licensees holding valid Qt Commercial licenses may use this file in ** accordance with the Qt Commercial License Agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and Nokia. ** ** GNU Lesser General Public License Usage ** ** Alternatively, this file may be used under the terms of the GNU Lesser ** General Public License version 2.1 as published by the Free Software ** Foundation and appearing in the file LICENSE.LGPL included in the ** packaging of this file. Please review the following information to ** ensure the GNU Lesser General Public License version 2.1 requirements ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. ** ** If you are unsure which license is appropriate for your use, please ** contact the sales department at http://qt.nokia.com/contact. ** **************************************************************************/ #include "welcomemodetreewidget.h" #include #include #include #include namespace Utils { void WelcomeModeLabel::setStyledText(const QString &text) { QString rc = QLatin1String( "" "" "

" ""); rc += text; rc += QLatin1String("


"); setText(rc); } struct WelcomeModeTreeWidgetPrivate { WelcomeModeTreeWidgetPrivate() {} QIcon bullet; }; WelcomeModeTreeWidget::WelcomeModeTreeWidget(QWidget *parent) : QTreeWidget(parent), m_d(new WelcomeModeTreeWidgetPrivate) { m_d->bullet = QIcon(QLatin1String(":/welcome/images/list_bullet_arrow.png")); connect(this, SIGNAL(itemClicked(QTreeWidgetItem *, int)), SLOT(slotItemClicked(QTreeWidgetItem *))); viewport()->setAutoFillBackground(false); } WelcomeModeTreeWidget::~WelcomeModeTreeWidget() { delete m_d; } QSize WelcomeModeTreeWidget::minimumSizeHint() const { return QSize(); } QSize WelcomeModeTreeWidget::sizeHint() const { return QSize(QTreeWidget::sizeHint().width(), 30 * topLevelItemCount()); } QTreeWidgetItem *WelcomeModeTreeWidget::addItem(const QString &label, const QString &data, const QString &toolTip) { QTreeWidgetItem *item = new QTreeWidgetItem(this); item->setIcon(0, m_d->bullet); item->setSizeHint(0, QSize(24, 30)); QLabel *lbl = new QLabel(label); lbl->setTextInteractionFlags(Qt::NoTextInteraction); lbl->setCursor(QCursor(Qt::PointingHandCursor)); lbl->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); QBoxLayout *lay = new QVBoxLayout; lay->setContentsMargins(3, 2, 0, 0); lay->addWidget(lbl); QWidget *wdg = new QWidget; wdg->setLayout(lay); setItemWidget(item, 1, wdg); item->setData(0, Qt::UserRole, data); if (!toolTip.isEmpty()) wdg->setToolTip(toolTip); return item; } void WelcomeModeTreeWidget::slotAddNewsItem(const QString &title, const QString &description, const QString &link) { int itemWidth = width()-header()->sectionSize(0); QFont f = font(); QString elidedText = QFontMetrics(f).elidedText(description, Qt::ElideRight, itemWidth); f.setBold(true); QString elidedTitle = QFontMetrics(f).elidedText(title, Qt::ElideRight, itemWidth); QString data = QString::fromLatin1("%1
%2").arg(elidedTitle).arg(elidedText); addTopLevelItem(addItem(data, link, link)); } void WelcomeModeTreeWidget::slotItemClicked(QTreeWidgetItem *item) { emit activated(item->data(0, Qt::UserRole).toString()); } }