summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFriedemann Kleint <Friedemann.Kleint@qt.io>2024-02-09 14:11:55 +0100
committerFriedemann Kleint <Friedemann.Kleint@qt.io>2024-04-15 17:40:43 +0200
commitd0e2a4d3e12b2a75e085a0c8b498a31b4b312715 (patch)
tree185a8bbae098cdbed914ed4d8285e71ae1010c8f
parentc1276e62ff75e71e87c281c9a93c8491ab306b58 (diff)
Qt Designer: Add icon theme enums to the action editor
Rename the old string-based editor to XDG an add a new editor for the enumerations. Task-number: QTBUG-121823 Pick-to: 6.7 Change-Id: Iac32aaa75b558f564bb0add4a4747b5ac656eb6f Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
-rw-r--r--src/designer/src/lib/shared/newactiondialog.cpp19
-rw-r--r--src/designer/src/lib/shared/newactiondialog.ui50
2 files changed, 53 insertions, 16 deletions
diff --git a/src/designer/src/lib/shared/newactiondialog.cpp b/src/designer/src/lib/shared/newactiondialog.cpp
index 7c27e3ae2..2aea8bb57 100644
--- a/src/designer/src/lib/shared/newactiondialog.cpp
+++ b/src/designer/src/lib/shared/newactiondialog.cpp
@@ -61,6 +61,20 @@ NewActionDialog::NewActionDialog(ActionEditor *parent) :
connect(m_ui->keysequenceResetToolButton, &QAbstractButton::clicked,
this, &NewActionDialog::slotResetKeySequence);
+ // Clear XDG icon once a theme enum is chosen and vv.
+ auto *iconThemeEnumEditor = m_ui->iconThemeEnumEditor;
+ auto *iconThemeEditor = m_ui->iconThemeEditor;
+ connect(iconThemeEnumEditor, &IconThemeEnumEditor::edited,
+ this, [iconThemeEditor](int i) {
+ if (i >= 0)
+ iconThemeEditor->reset();
+ });
+ connect(iconThemeEditor, &IconThemeEditor::edited,
+ this, [iconThemeEnumEditor](const QString &t) {
+ if (!t.isEmpty())
+ iconThemeEnumEditor->reset();
+ });
+
const auto menuRoles = QMetaEnum::fromType<QAction::MenuRole>();
for (int i = 0; i < menuRoles.keyCount(); i++) {
const auto key = menuRoles.key(i);
@@ -133,7 +147,9 @@ ActionData NewActionDialog::actionData() const
rc.name = actionName();
rc.toolTip = m_ui->tooltipEditor->text();
rc.icon = m_ui->iconSelector->icon();
- rc.icon.setTheme(m_ui->iconThemeEditor->theme());
+ const int themeEnum = m_ui->iconThemeEnumEditor->themeEnum();
+ rc.icon.setThemeEnum(themeEnum);
+ rc.icon.setTheme(themeEnum == -1 ? m_ui->iconThemeEditor->theme() : QString{});
rc.checkable = m_ui->checkableCheckBox->checkState() == Qt::Checked;
rc.keysequence = PropertySheetKeySequenceValue(m_ui->keySequenceEdit->keySequence());
rc.menuRole.value = m_ui->menuRole->currentData().toInt();
@@ -145,6 +161,7 @@ void NewActionDialog::setActionData(const ActionData &d)
m_ui->editActionText->setText(d.text);
m_ui->editObjectName->setText(d.name);
m_ui->iconSelector->setIcon(d.icon.unthemed());
+ m_ui->iconThemeEnumEditor->setThemeEnum(d.icon.themeEnum());
m_ui->iconThemeEditor->setTheme(d.icon.theme());
m_ui->tooltipEditor->setText(d.toolTip);
m_ui->keySequenceEdit->setKeySequence(d.keysequence.value());
diff --git a/src/designer/src/lib/shared/newactiondialog.ui b/src/designer/src/lib/shared/newactiondialog.ui
index 733690d20..7fd99842b 100644
--- a/src/designer/src/lib/shared/newactiondialog.ui
+++ b/src/designer/src/lib/shared/newactiondialog.ui
@@ -1,5 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
-<comment>
+ <comment>
* Copyright (C) 2016 The Qt Company Ltd.
* SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
</comment>
@@ -9,8 +10,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>395</width>
- <height>372</height>
+ <width>381</width>
+ <height>291</height>
</rect>
</property>
<property name="windowTitle">
@@ -86,20 +87,20 @@
</item>
</layout>
</item>
- <item row="3" column="0">
+ <item row="4" column="0">
<widget class="QLabel" name="iconThemeLabel">
<property name="text">
- <string>Icon th&amp;eme:</string>
+ <string>Icon &amp;XDG theme:</string>
</property>
<property name="buddy">
<cstring>iconThemeEditor</cstring>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="4" column="1">
<widget class="qdesigner_internal::IconThemeEditor" name="iconThemeEditor" native="true"/>
</item>
- <item row="4" column="0">
+ <item row="5" column="0">
<widget class="QLabel" name="iconLabel">
<property name="text">
<string>&amp;Icon:</string>
@@ -109,7 +110,7 @@
</property>
</widget>
</item>
- <item row="4" column="1">
+ <item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout">
<item>
<widget class="qdesigner_internal::IconSelector" name="iconSelector" native="true"/>
@@ -129,14 +130,14 @@
</item>
</layout>
</item>
- <item row="5" column="1">
+ <item row="6" column="1">
<widget class="QCheckBox" name="checkableCheckBox">
<property name="text">
<string/>
</property>
</widget>
</item>
- <item row="5" column="0">
+ <item row="6" column="0">
<widget class="QLabel" name="checkableLabel">
<property name="text">
<string>&amp;Checkable:</string>
@@ -146,7 +147,7 @@
</property>
</widget>
</item>
- <item row="6" column="0">
+ <item row="7" column="0">
<widget class="QLabel" name="shortcutLabel">
<property name="text">
<string>&amp;Shortcut:</string>
@@ -156,10 +157,10 @@
</property>
</widget>
</item>
- <item row="6" column="1">
+ <item row="7" column="1">
<layout class="QHBoxLayout" name="keysequenceLayout">
<item>
- <widget class="QKeySequenceEdit" name="keySequenceEdit" native="true">
+ <widget class="QKeySequenceEdit" name="keySequenceEdit">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
@@ -177,7 +178,7 @@
</item>
</layout>
</item>
- <item row="7" column="0">
+ <item row="8" column="0">
<widget class="QLabel" name="label">
<property name="text">
<string>&amp;Menu role:</string>
@@ -187,9 +188,22 @@
</property>
</widget>
</item>
- <item row="7" column="1">
+ <item row="8" column="1">
<widget class="QComboBox" name="menuRole"/>
</item>
+ <item row="3" column="0">
+ <widget class="QLabel" name="iconThemeEnumLabel">
+ <property name="text">
+ <string>Icon &amp;theme:</string>
+ </property>
+ <property name="buddy">
+ <cstring>iconThemeEnumEditor</cstring>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="1">
+ <widget class="qdesigner_internal::IconThemeEnumEditor" name="iconThemeEnumEditor" native="true"/>
+ </item>
</layout>
</item>
<item>
@@ -243,6 +257,12 @@
<header>iconselector_p.h</header>
<container>1</container>
</customwidget>
+ <customwidget>
+ <class>qdesigner_internal::IconThemeEnumEditor</class>
+ <extends>QWidget</extends>
+ <header>iconselector_p.h</header>
+ <container>1</container>
+ </customwidget>
</customwidgets>
<tabstops>
<tabstop>editActionText</tabstop>