summaryrefslogtreecommitdiffstats
path: root/src/designer/src/components/taskmenu/itemlisteditor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/designer/src/components/taskmenu/itemlisteditor.cpp')
-rw-r--r--src/designer/src/components/taskmenu/itemlisteditor.cpp135
1 files changed, 77 insertions, 58 deletions
diff --git a/src/designer/src/components/taskmenu/itemlisteditor.cpp b/src/designer/src/components/taskmenu/itemlisteditor.cpp
index ffa793c17..893716565 100644
--- a/src/designer/src/components/taskmenu/itemlisteditor.cpp
+++ b/src/designer/src/components/taskmenu/itemlisteditor.cpp
@@ -1,30 +1,5 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the Qt Designer of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#include "itemlisteditor.h"
#include <abstractformbuilder.h>
@@ -41,6 +16,8 @@
QT_BEGIN_NAMESPACE
+using namespace Qt::StringLiterals;
+
namespace qdesigner_internal {
class ItemPropertyBrowser : public QtTreePropertyBrowser
@@ -53,7 +30,7 @@ public:
const QString widthSampleString = QCoreApplication::translate("ItemPropertyBrowser", "XX Icon Selected off");
m_width = fontMetrics().horizontalAdvance(widthSampleString);
setSplitterPosition(m_width);
- m_width += fontMetrics().horizontalAdvance(QStringLiteral("/this/is/some/random/path"));
+ m_width += fontMetrics().horizontalAdvance(u"/this/is/some/random/path"_s);
}
QSize sizeHint() const override
@@ -70,7 +47,6 @@ AbstractItemEditor::AbstractItemEditor(QDesignerFormWindowInterface *form, QWidg
: QWidget(parent),
m_iconCache(qobject_cast<FormWindowBase *>(form)->iconCache())
{
- setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
m_propertyManager = new DesignerPropertyManager(form->core(), this);
m_editorFactory = new DesignerEditorFactory(form->core(), this);
m_editorFactory->setSpacing(0);
@@ -116,24 +92,29 @@ static QStringList c2qStringList(const char * const in[])
return out;
}
-void AbstractItemEditor::setupProperties(PropertyDefinition *propList)
+void AbstractItemEditor::setupProperties(const PropertyDefinition *propList,
+ Qt::Alignment alignDefault)
{
for (int i = 0; propList[i].name; i++) {
int type = propList[i].typeFunc ? propList[i].typeFunc() : propList[i].type;
int role = propList[i].role;
- QtVariantProperty *prop = m_propertyManager->addProperty(type, QLatin1String(propList[i].name));
+ QtVariantProperty *prop = m_propertyManager->addProperty(type, QLatin1StringView(propList[i].name));
+ if (role == Qt::TextAlignmentRole) {
+ prop->setAttribute(DesignerPropertyManager::alignDefaultAttribute(),
+ QVariant(uint(alignDefault)));
+ }
Q_ASSERT(prop);
if (role == Qt::ToolTipPropertyRole || role == Qt::WhatsThisPropertyRole)
- prop->setAttribute(QStringLiteral("validationMode"), ValidationRichText);
+ prop->setAttribute(u"validationMode"_s, ValidationRichText);
else if (role == Qt::DisplayPropertyRole)
- prop->setAttribute(QStringLiteral("validationMode"), ValidationMultiLine);
+ prop->setAttribute(u"validationMode"_s, ValidationMultiLine);
else if (role == Qt::StatusTipPropertyRole)
- prop->setAttribute(QStringLiteral("validationMode"), ValidationSingleLine);
+ prop->setAttribute(u"validationMode"_s, ValidationSingleLine);
else if (role == ItemFlagsShadowRole)
- prop->setAttribute(QStringLiteral("flagNames"), c2qStringList(itemFlagNames));
+ prop->setAttribute(u"flagNames"_s, c2qStringList(itemFlagNames));
else if (role == Qt::CheckStateRole)
- prop->setAttribute(QStringLiteral("enumNames"), c2qStringList(checkStateNames));
- prop->setAttribute(QStringLiteral("resettable"), true);
+ prop->setAttribute(u"enumNames"_s, c2qStringList(checkStateNames));
+ prop->setAttribute(u"resettable"_s, true);
m_properties.append(prop);
m_rootProperties.append(prop);
m_propertyToRole.insert(prop, role);
@@ -148,9 +129,11 @@ void AbstractItemEditor::setupObject(QWidget *object)
m_editorFactory->setFormWindowBase(fwb);
}
-void AbstractItemEditor::setupEditor(QWidget *object, PropertyDefinition *propList)
+void AbstractItemEditor::setupEditor(QWidget *object,
+ const PropertyDefinition *propList,
+ Qt::Alignment alignDefault)
{
- setupProperties(propList);
+ setupProperties(propList, alignDefault);
setupObject(object);
}
@@ -208,6 +191,9 @@ void AbstractItemEditor::resetProperty(QtProperty *property)
if (m_propertyManager->resetIconSubProperty(property))
return;
+ if (m_propertyManager->resetTextAlignmentProperty(property))
+ return;
+
BoolBlocker block(m_updatingBrowser);
QtVariantProperty *prop = m_propertyManager->variantProperty(property);
@@ -240,23 +226,26 @@ void AbstractItemEditor::cacheReloaded()
void AbstractItemEditor::updateBrowser()
{
BoolBlocker block(m_updatingBrowser);
- for (QtVariantProperty *prop : qAsConst(m_properties)) {
+ for (QtVariantProperty *prop : std::as_const(m_properties)) {
int role = m_propertyToRole.value(prop);
QVariant val = getItemData(role);
+
+ bool modified = false;
if (!val.isValid()) {
if (role == ItemFlagsShadowRole)
val = QVariant::fromValue(defaultItemFlags());
else
val = QVariant(QMetaType(prop->value().userType()), nullptr);
- prop->setModified(false);
} else {
- prop->setModified(true);
+ modified = role != Qt::TextAlignmentRole
+ || val.toUInt() != DesignerPropertyManager::alignDefault(prop);
}
+ prop->setModified(modified);
prop->setValue(val);
}
if (m_propertyBrowser->topLevelItems().isEmpty()) {
- for (QtVariantProperty *prop : qAsConst(m_rootProperties))
+ for (QtVariantProperty *prop : std::as_const(m_rootProperties))
m_propertyBrowser->addProperty(prop);
}
}
@@ -282,12 +271,26 @@ ItemListEditor::ItemListEditor(QDesignerFormWindowInterface *form, QWidget *pare
injectPropertyBrowser(this, ui.widget);
connect(ui.showPropertiesButton, &QAbstractButton::clicked,
this, &ItemListEditor::togglePropertyBrowser);
+
+ connect(ui.newListItemButton, &QAbstractButton::clicked,
+ this, &ItemListEditor::newListItemButtonClicked);
+ connect(ui.deleteListItemButton, &QAbstractButton::clicked,
+ this, &ItemListEditor::deleteListItemButtonClicked);
+ connect(ui.moveListItemUpButton, &QAbstractButton::clicked,
+ this, &ItemListEditor::moveListItemUpButtonClicked);
+ connect(ui.moveListItemDownButton, &QAbstractButton::clicked,
+ this, &ItemListEditor::moveListItemDownButtonClicked);
+ connect(ui.listWidget, &QListWidget::currentRowChanged,
+ this, &ItemListEditor::listWidgetCurrentRowChanged);
+ connect(ui.listWidget, &QListWidget::itemChanged,
+ this, &ItemListEditor::listWidgetItemChanged);
+
setPropertyBrowserVisible(false);
- QIcon upIcon = createIconSet(QString::fromUtf8("up.png"));
- QIcon downIcon = createIconSet(QString::fromUtf8("down.png"));
- QIcon minusIcon = createIconSet(QString::fromUtf8("minus.png"));
- QIcon plusIcon = createIconSet(QString::fromUtf8("plus.png"));
+ QIcon upIcon = createIconSet("up.png"_L1);
+ QIcon downIcon = createIconSet("down.png"_L1);
+ QIcon minusIcon = createIconSet("minus.png"_L1);
+ QIcon plusIcon = createIconSet("plus.png"_L1);
ui.moveListItemUpButton->setIcon(upIcon);
ui.moveListItemDownButton->setIcon(downIcon);
ui.newListItemButton->setIcon(plusIcon);
@@ -296,9 +299,11 @@ ItemListEditor::ItemListEditor(QDesignerFormWindowInterface *form, QWidget *pare
connect(iconCache(), &DesignerIconCache::reloaded, this, &AbstractItemEditor::cacheReloaded);
}
-void ItemListEditor::setupEditor(QWidget *object, PropertyDefinition *propList)
+void ItemListEditor::setupEditor(QWidget *object,
+ const PropertyDefinition *propList,
+ Qt::Alignment alignDefault)
{
- AbstractItemEditor::setupEditor(object, propList);
+ AbstractItemEditor::setupEditor(object, propList, alignDefault);
if (ui.listWidget->count() > 0)
ui.listWidget->setCurrentRow(0);
@@ -313,12 +318,14 @@ void ItemListEditor::setCurrentIndex(int idx)
m_updating = false;
}
-void ItemListEditor::on_newListItemButton_clicked()
+void ItemListEditor::newListItemButtonClicked()
{
int row = ui.listWidget->currentRow() + 1;
QListWidgetItem *item = new QListWidgetItem(m_newItemText);
item->setData(Qt::DisplayPropertyRole, QVariant::fromValue(PropertySheetStringValue(m_newItemText)));
+ if (m_alignDefault != 0)
+ item->setTextAlignment(Qt::Alignment(m_alignDefault));
item->setFlags(item->flags() | Qt::ItemIsEditable);
if (row < ui.listWidget->count())
ui.listWidget->insertItem(row, item);
@@ -330,7 +337,7 @@ void ItemListEditor::on_newListItemButton_clicked()
ui.listWidget->editItem(item);
}
-void ItemListEditor::on_deleteListItemButton_clicked()
+void ItemListEditor::deleteListItemButtonClicked()
{
int row = ui.listWidget->currentRow();
@@ -347,7 +354,7 @@ void ItemListEditor::on_deleteListItemButton_clicked()
ui.listWidget->setCurrentRow(row);
}
-void ItemListEditor::on_moveListItemUpButton_clicked()
+void ItemListEditor::moveListItemUpButtonClicked()
{
int row = ui.listWidget->currentRow();
if (row <= 0)
@@ -358,7 +365,7 @@ void ItemListEditor::on_moveListItemUpButton_clicked()
emit itemMovedUp(row);
}
-void ItemListEditor::on_moveListItemDownButton_clicked()
+void ItemListEditor::moveListItemDownButtonClicked()
{
int row = ui.listWidget->currentRow();
if (row == -1 || row == ui.listWidget->count() - 1)
@@ -369,14 +376,14 @@ void ItemListEditor::on_moveListItemDownButton_clicked()
emit itemMovedDown(row);
}
-void ItemListEditor::on_listWidget_currentRowChanged()
+void ItemListEditor::listWidgetCurrentRowChanged()
{
updateEditor();
if (!m_updating)
emit indexChanged(ui.listWidget->currentRow());
}
-void ItemListEditor::on_listWidget_itemChanged(QListWidgetItem *item)
+void ItemListEditor::listWidgetItemChanged(QListWidgetItem *item)
{
if (m_updatingBrowser)
return;
@@ -408,11 +415,13 @@ void ItemListEditor::setItemData(int role, const QVariant &v)
{
QListWidgetItem *item = ui.listWidget->currentItem();
bool reLayout = false;
- if ((role == Qt::EditRole && (v.toString().count(QLatin1Char('\n')) != item->data(role).toString().count(QLatin1Char('\n'))))
- || role == Qt::FontRole)
+ if ((role == Qt::EditRole
+ && (v.toString().count(u'\n') != item->data(role).toString().count(u'\n')))
+ || role == Qt::FontRole) {
reLayout = true;
+ }
QVariant newValue = v;
- if (role == Qt::FontRole && newValue.type() == QVariant::Font) {
+ if (role == Qt::FontRole && newValue.metaType().id() == QMetaType::QFont) {
QFont oldFont = ui.listWidget->font();
QFont newFont = qvariant_cast<QFont>(newValue).resolve(oldFont);
newValue = QVariant::fromValue(newFont);
@@ -466,6 +475,16 @@ void ItemListEditor::updateEditor()
else
m_propertyBrowser->clear();
}
+
+uint ItemListEditor::alignDefault() const
+{
+ return m_alignDefault;
+}
+
+void ItemListEditor::setAlignDefault(uint newAlignDefault)
+{
+ m_alignDefault = newAlignDefault;
+}
} // namespace qdesigner_internal
QT_END_NAMESPACE