diff options
Diffstat (limited to 'src/designer/src/lib/shared/newactiondialog.cpp')
-rw-r--r-- | src/designer/src/lib/shared/newactiondialog.cpp | 78 |
1 files changed, 46 insertions, 32 deletions
diff --git a/src/designer/src/lib/shared/newactiondialog.cpp b/src/designer/src/lib/shared/newactiondialog.cpp index d5380bfcb..2aea8bb57 100644 --- a/src/designer/src/lib/shared/newactiondialog.cpp +++ b/src/designer/src/lib/shared/newactiondialog.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 "newactiondialog_p.h" #include "ui_newactiondialog.h" @@ -37,10 +12,13 @@ #include <QtDesigner/abstractformwindow.h> #include <QtDesigner/abstractformeditor.h> +#include <QtCore/QMetaEnum> #include <QtWidgets/qpushbutton.h> QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + namespace qdesigner_internal { // Returns a combination of ChangeMask flags unsigned ActionData::compare(const ActionData &rhs) const @@ -58,6 +36,8 @@ unsigned ActionData::compare(const ActionData &rhs) const rc |= CheckableChanged; if (keysequence != rhs.keysequence) rc |= KeysequenceChanged ; + if (menuRole.value != rhs.menuRole.value) + rc |= MenuRoleChanged ; return rc; } @@ -72,12 +52,36 @@ NewActionDialog::NewActionDialog(ActionEditor *parent) : m_ui->tooltipEditor->setTextPropertyValidationMode(ValidationRichText); connect(m_ui->toolTipToolButton, &QAbstractButton::clicked, this, &NewActionDialog::slotEditToolTip); + connect(m_ui->editActionText, &QLineEdit::textEdited, + this, &NewActionDialog::onEditActionTextTextEdited); + connect(m_ui->editObjectName, &QLineEdit::textEdited, + this, &NewActionDialog::onEditObjectNameTextEdited); - m_ui->keysequenceResetToolButton->setIcon(createIconSet(QStringLiteral("resetproperty.png"))); + m_ui->keysequenceResetToolButton->setIcon(createIconSet("resetproperty.png"_L1)); connect(m_ui->keysequenceResetToolButton, &QAbstractButton::clicked, this, &NewActionDialog::slotResetKeySequence); - setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + // 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); + const auto value = menuRoles.value(i); + m_ui->menuRole->addItem(QLatin1StringView(key), value); + } + focusText(); updateButtons(); @@ -121,6 +125,11 @@ void NewActionDialog::focusCheckable() m_ui->checkableCheckBox->setFocus(); } +void NewActionDialog::focusMenuRole() +{ + m_ui->menuRole->setFocus(); +} + QString NewActionDialog::actionText() const { return m_ui->editActionText->text(); @@ -138,9 +147,12 @@ 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(); return rc; } @@ -149,17 +161,19 @@ 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()); m_ui->checkableCheckBox->setCheckState(d.checkable ? Qt::Checked : Qt::Unchecked); + m_ui->menuRole->setCurrentIndex(m_ui->menuRole->findData(d.menuRole.value)); // Suppress updating of the object name from the text for existing actions. m_autoUpdateObjectName = d.name.isEmpty(); updateButtons(); } -void NewActionDialog::on_editActionText_textEdited(const QString &text) +void NewActionDialog::onEditActionTextTextEdited(const QString &text) { if (m_autoUpdateObjectName) m_ui->editObjectName->setText(ActionEditor::actionTextToName(text)); @@ -167,7 +181,7 @@ void NewActionDialog::on_editActionText_textEdited(const QString &text) updateButtons(); } -void NewActionDialog::on_editObjectName_textEdited(const QString&) +void NewActionDialog::onEditObjectNameTextEdited(const QString&) { updateButtons(); m_autoUpdateObjectName = false; |