QmlDesigner: Improve readability of names in the easingcurve editor

- Increased item size
- Decreased font size
- Changed text background color
- Added tooltips
- Elide text in the middle

Change-Id: I8b83f5087487a5cf2dc435ee1eb3f6918a7e68a9
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2019-01-31 12:06:37 +01:00
parent 523ddee6c0
commit bce7c43fa1
2 changed files with 26 additions and 6 deletions

View File

@@ -32,7 +32,6 @@
#include <QAbstractButton> #include <QAbstractButton>
#include <QApplication> #include <QApplication>
#include <QContextMenuEvent> #include <QContextMenuEvent>
#include <QDebug>
#include <QMenu> #include <QMenu>
#include <QMessageBox> #include <QMessageBox>
#include <QPainter> #include <QPainter>
@@ -42,11 +41,12 @@
#include <QString> #include <QString>
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
#include <theme.h>
namespace QmlDesigner { namespace QmlDesigner {
constexpr int iconWidth = 64; constexpr int iconWidth = 86;
constexpr int iconHeight = 64; constexpr int iconHeight = 86;
constexpr int itemFrame = 3; constexpr int itemFrame = 3;
constexpr int itemWidth = iconWidth + 2 * itemFrame; constexpr int itemWidth = iconWidth + 2 * itemFrame;
constexpr int unsavedMarkSize = 18; constexpr int unsavedMarkSize = 18;
@@ -77,15 +77,15 @@ void PresetItemDelegate::paint(QPainter *painter,
auto textRect = QRect(option.rect.topLeft(), textSize); auto textRect = QRect(option.rect.topLeft(), textSize);
textRect.moveBottom(option.rect.bottom()); textRect.moveBottom(option.rect.bottom());
QFontMetrics fm(option.font); option.font.setPixelSize(Theme::instance()->smallFontPixelSize());
option.text = fm.elidedText(option.text, Qt::ElideRight, textRect.width());
painter->save();
painter->fillRect(option.rect, canvasBackground); painter->fillRect(option.rect, canvasBackground);
if (option.text.isEmpty()) if (option.text.isEmpty())
painter->fillRect(textRect, canvasBackground); painter->fillRect(textRect, canvasBackground);
else else
painter->fillRect(textRect, labelBackground); painter->fillRect(textRect, Theme::instance()->qmlDesignerButtonColor());
style->drawControl(QStyle::CE_ItemViewItem, &option, painter, option.widget); style->drawControl(QStyle::CE_ItemViewItem, &option, painter, option.widget);
@@ -108,6 +108,7 @@ void PresetItemDelegate::paint(QPainter *painter,
painter->drawText(asteriskRect, Qt::AlignTop | Qt::AlignRight, "*"); painter->drawText(asteriskRect, Qt::AlignTop | Qt::AlignRight, "*");
} }
} }
painter->restore();
} }
QSize PresetItemDelegate::sizeHint(const QStyleOptionViewItem &opt, const QModelIndex &index) const QSize PresetItemDelegate::sizeHint(const QStyleOptionViewItem &opt, const QModelIndex &index) const
@@ -185,6 +186,8 @@ PresetList::PresetList(QSettings::Scope scope, QWidget *parent)
setWrapping(true); setWrapping(true);
setTextElideMode(Qt::ElideMiddle);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
} }
@@ -278,6 +281,7 @@ void PresetList::readPresets()
auto *item = new QStandardItem(paintPreview(curves[i].curve()), curves[i].name()); auto *item = new QStandardItem(paintPreview(curves[i].curve()), curves[i].name());
item->setData(curveData, ItemRole_Data); item->setData(curveData, ItemRole_Data);
item->setEditable(m_scope == QSettings::UserScope); item->setEditable(m_scope == QSettings::UserScope);
item->setToolTip(curves[i].name());
simodel->setItem(i, item); simodel->setItem(i, item);
} }
@@ -318,6 +322,7 @@ void PresetList::revert(const QModelIndex &index)
item->setData(false, ItemRole_Dirty); item->setData(false, ItemRole_Dirty);
item->setData(paintPreview(curve.curve()), Qt::DecorationRole); item->setData(paintPreview(curve.curve()), Qt::DecorationRole);
item->setData(QVariant::fromValue(curve.curve()), ItemRole_Data); item->setData(QVariant::fromValue(curve.curve()), ItemRole_Data);
item->setToolTip(name);
return; return;
} }
} }
@@ -357,6 +362,16 @@ void PresetList::contextMenuEvent(QContextMenuEvent *event)
menu.exec(event->globalPos()); menu.exec(event->globalPos());
} }
void PresetList::dataChanged(const QModelIndex &topLeft,
const QModelIndex &bottomRight,
const QVector<int> &roles)
{
if (topLeft == bottomRight && roles.contains(0)) {
QVariant name = model()->data(topLeft, 0);
model()->setData(topLeft, name, Qt::ToolTipRole);
}
}
void PresetList::createItem() void PresetList::createItem()
{ {
EasingCurve curve; EasingCurve curve;
@@ -368,6 +383,7 @@ void PresetList::createItem(const QString &name, const EasingCurve &curve)
{ {
auto *item = new QStandardItem(paintPreview(curve), name); auto *item = new QStandardItem(paintPreview(curve), name);
item->setData(QVariant::fromValue(curve), ItemRole_Data); item->setData(QVariant::fromValue(curve), ItemRole_Data);
item->setToolTip(name);
int row = model()->rowCount(); int row = model()->rowCount();
qobject_cast<QStandardItemModel *>(model())->setItem(row, item); qobject_cast<QStandardItemModel *>(model())->setItem(row, item);

View File

@@ -99,6 +99,10 @@ public:
protected: protected:
void contextMenuEvent(QContextMenuEvent *event) override; void contextMenuEvent(QContextMenuEvent *event) override;
void dataChanged(const QModelIndex &topLeft,
const QModelIndex &bottomRight,
const QVector<int> &roles = QVector<int>()) override;
private: private:
QStringList allNames() const; QStringList allNames() const;