From bcc7561d50a7a15a47702cfeb037c7d563984d9c Mon Sep 17 00:00:00 2001 From: Christiaan Janssen <christiaan.janssen@nokia.com> Date: Tue, 9 Feb 2010 17:20:40 +0100 Subject: [PATCH] QmlDesigner.Navigator: Icons and error message on invalid id --- .../navigator/navigatortreemodel.cpp | 9 +++++- .../navigator/navigatortreeview.cpp | 31 ++++++++++++------- 2 files changed, 28 insertions(+), 12 deletions(-) diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp index 3f72e1f9aa7..654b05a8b77 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreemodel.cpp @@ -36,6 +36,7 @@ #include <invalididexception.h> #include <QMimeData> +#include <QMessageBox> namespace QmlDesigner { @@ -272,8 +273,14 @@ void NavigatorTreeModel::handleChangedItem(QStandardItem *item) try { if (ModelNode::isValidId(item->text())) node.setId(item->text()); - else + else { + QMessageBox errorDialog; + errorDialog.setModal(true); + errorDialog.setText(tr("Invalid id.\nOnly alphanumeric characters and underscore allowed.\nIds must begin with a lowercase letter.")); + errorDialog.exec(); + item->setText(node.id()); + } } catch (InvalidIdException &) { item->setText(node.id()); } diff --git a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp index f4a5feb936a..6c6defb53fc 100644 --- a/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp +++ b/src/plugins/qmldesigner/components/navigator/navigatortreeview.cpp @@ -44,7 +44,7 @@ QSize IconCheckboxItemDelegate::sizeHint(const QStyleOptionViewItem &option, { Q_UNUSED(option); Q_UNUSED(index); - return QSize(15,17); + return QSize(15,21); } void IconCheckboxItemDelegate::paint(QPainter *painter, @@ -63,10 +63,6 @@ void IconCheckboxItemDelegate::paint(QPainter *painter, else painter->drawPixmap(option.rect.x()+2,option.rect.y()+1,offPix); - painter->setOpacity(1.0); - painter->setPen(QColor(_separator_line_color_)); - painter->drawLine(option.rect.topLeft(),option.rect.bottomLeft()); - painter->restore(); } @@ -81,19 +77,32 @@ void IdItemDelegate::paint(QPainter *painter, ModelNode node = m_TreeModel->nodeForIndex(index); - // QIcon icon=node.metaInfo().icon(); - // if (icon.isNull()) icon = QIcon(":/ItemLibrary/images/default-icon.png"); - // QPixmap pixmap = icon.pixmap(option.rect.width(),option.rect.height()); - // painter->drawPixmap(option.rect.x()+1,option.rect.y(),pixmap); + QIcon icon=node.metaInfo().icon(); + if (icon.isNull()) icon = QIcon(":/ItemLibrary/images/default-icon.png"); + QPixmap pixmap = icon.pixmap(option.rect.width(),option.rect.height()-4); + painter->drawPixmap(option.rect.x()+5,option.rect.y()+2,pixmap); QString myString = node.id(); if (myString.isEmpty()) myString = node.simplifiedTypeName(); + // Check text length does not exceed available space + int extraSpace=12+pixmap.width(); + QFontMetrics metric(painter->fontMetrics()); + if (painter->fontMetrics().boundingRect(myString).width() > option.rect.width()-extraSpace) + { + QString origString(myString); + int cutpoint=origString.length()/2; + while (painter->fontMetrics().boundingRect(myString).width() > option.rect.width()-extraSpace) + { + cutpoint--; + myString = origString.left(cutpoint)+QLatin1String("...")+origString.right(cutpoint); + } + } + if (m_TreeModel->isNodeInvisible( index )) painter->setOpacity(0.5); - // painter->drawText(option.rect.bottomLeft()+QPoint(4+pixmap.width(),-4),myString); - painter->drawText(option.rect.bottomLeft()+QPoint(4,-4),myString); + painter->drawText(option.rect.bottomLeft()+QPoint(8+pixmap.width(),-4),myString); painter->restore(); } -- GitLab