diff options
Diffstat (limited to 'src/designer/src/lib/shared/qdesigner_command.cpp')
-rw-r--r-- | src/designer/src/lib/shared/qdesigner_command.cpp | 205 |
1 files changed, 81 insertions, 124 deletions
diff --git a/src/designer/src/lib/shared/qdesigner_command.cpp b/src/designer/src/lib/shared/qdesigner_command.cpp index d6a6416ae..2633224e6 100644 --- a/src/designer/src/lib/shared/qdesigner_command.cpp +++ b/src/designer/src/lib/shared/qdesigner_command.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 "qdesigner_command_p.h" #include "qdesigner_propertycommand_p.h" @@ -75,10 +50,12 @@ Q_DECLARE_METATYPE(QWidgetList) QT_BEGIN_NAMESPACE +using namespace Qt::StringLiterals; + static inline void setPropertySheetWindowTitle(const QDesignerFormEditorInterface *core, QObject *o, const QString &t) { if (QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(core->extensionManager(), o)) { - const int idx = sheet->indexOf(QStringLiteral("windowTitle")); + const int idx = sheet->indexOf(u"windowTitle"_s); if (idx != -1) { sheet->setProperty(idx, t); sheet->setChanged(idx, true); @@ -89,8 +66,8 @@ static inline void setPropertySheetWindowTitle(const QDesignerFormEditorInterfac namespace qdesigner_internal { // Helpers for the dynamic properties that store Z/Widget order -static const char *widgetOrderPropertyC = "_q_widgetOrder"; -static const char *zOrderPropertyC = "_q_zOrder"; +static const char widgetOrderPropertyC[] = "_q_widgetOrder"; +static const char zOrderPropertyC[] = "_q_zOrder"; static void addToWidgetListDynamicProperty(QWidget *parentWidget, QWidget *widget, const char *name, int index = -1) { @@ -144,7 +121,7 @@ void InsertWidgetCommand::init(QWidget *widget, bool already_in_form, int layout m_cell.first = layoutRow; m_cell.second = layoutColumn; } else { - m_cell = deco ? deco->currentCell() : qMakePair(0, 0); + m_cell = deco ? deco->currentCell() : std::make_pair(0, 0); } m_widgetWasManaged = already_in_form; } @@ -153,10 +130,8 @@ static void recursiveUpdate(QWidget *w) { w->update(); - const QObjectList &l = w->children(); - const QObjectList::const_iterator cend = l.end(); - for ( QObjectList::const_iterator it = l.begin(); it != cend; ++it) { - if (QWidget *w = qobject_cast<QWidget*>(*it)) + for (auto *child : w->children()) { + if (QWidget *w = qobject_cast<QWidget*>(child)) recursiveUpdate(w); } } @@ -236,7 +211,7 @@ void InsertWidgetCommand::refreshBuddyLabels() if (label_list.isEmpty()) return; - const QString buddyProperty = QStringLiteral("buddy"); + const QString buddyProperty = u"buddy"_s; const QByteArray objectNameU8 = m_widget->objectName().toUtf8(); // Re-set the buddy (The sheet locates the object by name and sets it) for (QLabel *label : label_list) { @@ -266,8 +241,8 @@ void ChangeZOrderCommand::init(QWidget *widget) setText(QApplication::translate("Command", "Change Z-order of '%1'").arg(widget->objectName())); m_oldParentZOrder = qvariant_cast<QWidgetList>(widget->parentWidget()->property("_q_zOrder")); - const int index = m_oldParentZOrder.indexOf(m_widget); - if (index != -1 && index + 1 < m_oldParentZOrder.count()) + const qsizetype index = m_oldParentZOrder.indexOf(m_widget); + if (index != -1 && index + 1 < m_oldParentZOrder.size()) m_oldPreceding = m_oldParentZOrder.at(index + 1); } @@ -347,17 +322,14 @@ void ManageWidgetCommandHelper::init(const QDesignerFormWindowInterface *fw, QWi m_managedChildren.clear(); const QWidgetList children = m_widget->findChildren<QWidget *>(); - if (children.isEmpty()) - return; - m_managedChildren.reserve(children.size()); - const QWidgetList::const_iterator lcend = children.constEnd(); - for (QWidgetList::const_iterator it = children.constBegin(); it != lcend; ++it) - if (fw->isManaged(*it)) - m_managedChildren.push_back(*it); + for (auto *w : children) { + if (fw->isManaged(w)) + m_managedChildren.push_back(w); + } } -void ManageWidgetCommandHelper::init(QWidget *widget, const WidgetVector &managedChildren) +void ManageWidgetCommandHelper::init(QWidget *widget, const QWidgetList &managedChildren) { m_widget = widget; m_managedChildren = managedChildren; @@ -367,21 +339,15 @@ void ManageWidgetCommandHelper::manage(QDesignerFormWindowInterface *fw) { // Manage the managed children after parent fw->manageWidget(m_widget); - if (!m_managedChildren.isEmpty()) { - const WidgetVector::const_iterator lcend = m_managedChildren.constEnd(); - for (WidgetVector::const_iterator it = m_managedChildren.constBegin(); it != lcend; ++it) - fw->manageWidget(*it); - } + for (auto *w : std::as_const(m_managedChildren)) + fw->manageWidget(w); } void ManageWidgetCommandHelper::unmanage(QDesignerFormWindowInterface *fw) { // Unmanage the managed children first - if (!m_managedChildren.isEmpty()) { - const WidgetVector::const_iterator lcend = m_managedChildren.constEnd(); - for (WidgetVector::const_iterator it = m_managedChildren.constBegin(); it != lcend; ++it) - fw->unmanageWidget(*it); - } + for (auto *w : std::as_const(m_managedChildren)) + fw->unmanageWidget(w); fw->unmanageWidget(m_widget); } @@ -625,7 +591,7 @@ void PromoteToCustomWidgetCommand::init(const WidgetPointerList &widgets,const Q void PromoteToCustomWidgetCommand::redo() { - for (QWidget *w : qAsConst(m_widgets)) { + for (QWidget *w : std::as_const(m_widgets)) { if (w) promoteWidget(core(), w, m_customClassName); } @@ -644,7 +610,7 @@ void PromoteToCustomWidgetCommand::updateSelection() void PromoteToCustomWidgetCommand::undo() { - for (QWidget *w : qAsConst(m_widgets)) { + for (QWidget *w : std::as_const(m_widgets)) { if (w) demoteWidget(core(), w); } @@ -697,11 +663,10 @@ void CursorSelectionState::restore(QDesignerFormWindowInterface *formWindow) con } else { // Select current as last formWindow->clearSelection(false); - const WidgetPointerList::const_iterator cend = m_selection.constEnd(); - for (WidgetPointerList::const_iterator it = m_selection.constBegin(); it != cend; ++it) - if (QWidget *w = *it) - if (w != m_current) - formWindow->selectWidget(*it, true); + for (const auto &wp : m_selection) { + if (!wp.isNull() && wp.data() != m_current) + formWindow->selectWidget(wp.data(), true); + } if (m_current) formWindow->selectWidget(m_current, true); } @@ -857,7 +822,7 @@ void BreakLayoutCommand::redo() m_layout->breakLayout(); delete deco; // release the extension - for (QWidget *widget : qAsConst(m_widgets)) { + for (QWidget *widget : std::as_const(m_widgets)) { widget->resize(widget->size().expandedTo(QSize(16, 16))); } // Update unless we are in an intermediate state of morphing layout @@ -994,7 +959,7 @@ void ToolBoxCommand::addPage() QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(formWindow()->core()->extensionManager(), m_toolBox); if (sheet) { qdesigner_internal::PropertySheetStringValue itemText(m_itemText); - sheet->setProperty(sheet->indexOf(QStringLiteral("currentItemText")), QVariant::fromValue(itemText)); + sheet->setProperty(sheet->indexOf(u"currentItemText"_s), QVariant::fromValue(itemText)); } m_widget->show(); @@ -1085,7 +1050,7 @@ void AddToolBoxPageCommand::init(QToolBox *toolBox, InsertionMode mode) m_widget = new QDesignerWidget(formWindow(), m_toolBox); m_itemText = QApplication::translate("Command", "Page"); m_itemIcon = QIcon(); - m_widget->setObjectName(QStringLiteral("page")); + m_widget->setObjectName(u"page"_s); formWindow()->ensureUniqueObjectName(m_widget); setText(QApplication::translate("Command", "Insert Page")); @@ -1146,7 +1111,8 @@ void TabWidgetCommand::addPage() QDesignerPropertySheetExtension *sheet = qt_extension<QDesignerPropertySheetExtension*>(formWindow()->core()->extensionManager(), m_tabWidget); if (sheet) { qdesigner_internal::PropertySheetStringValue itemText(m_itemText); - sheet->setProperty(sheet->indexOf(QStringLiteral("currentTabText")), QVariant::fromValue(itemText)); + sheet->setProperty(sheet->indexOf(u"currentTabText"_s), + QVariant::fromValue(itemText)); } formWindow()->clearSelection(); @@ -1202,7 +1168,7 @@ void AddTabPageCommand::init(QTabWidget *tabWidget, InsertionMode mode) m_widget = new QDesignerWidget(formWindow(), m_tabWidget); m_itemText = QApplication::translate("Command", "Page"); m_itemIcon = QIcon(); - m_widget->setObjectName(QStringLiteral("tab")); + m_widget->setObjectName(u"tab"_s); formWindow()->ensureUniqueObjectName(m_widget); setText(QApplication::translate("Command", "Insert Page")); @@ -1378,7 +1344,7 @@ void AddStackedWidgetPageCommand::init(QStackedWidget *stackedWidget, InsertionM if (mode == InsertAfter) m_index++; m_widget = new QDesignerWidget(formWindow(), m_stackedWidget); - m_widget->setObjectName(QStringLiteral("page")); + m_widget->setObjectName(u"page"_s); formWindow()->ensureUniqueObjectName(m_widget); setText(QApplication::translate("Command", "Insert Page")); @@ -1437,7 +1403,7 @@ void CreateMenuBarCommand::init(QMainWindow *mainWindow) { m_mainWindow = mainWindow; QDesignerFormEditorInterface *core = formWindow()->core(); - m_menuBar = qobject_cast<QMenuBar*>(core->widgetFactory()->createWidget(QStringLiteral("QMenuBar"), m_mainWindow)); + m_menuBar = qobject_cast<QMenuBar*>(core->widgetFactory()->createWidget(u"QMenuBar"_s, m_mainWindow)); core->widgetFactory()->initialize(m_menuBar); } @@ -1448,7 +1414,7 @@ void CreateMenuBarCommand::redo() c = qt_extension<QDesignerContainerExtension*>(core->extensionManager(), m_mainWindow); c->addWidget(m_menuBar); - m_menuBar->setObjectName(QStringLiteral("menuBar")); + m_menuBar->setObjectName(u"menuBar"_s); formWindow()->ensureUniqueObjectName(m_menuBar); core->metaDataBase()->add(m_menuBar); formWindow()->emitSelectionChanged(); @@ -1528,7 +1494,7 @@ void CreateStatusBarCommand::init(QMainWindow *mainWindow) { m_mainWindow = mainWindow; QDesignerFormEditorInterface *core = formWindow()->core(); - m_statusBar = qobject_cast<QStatusBar*>(core->widgetFactory()->createWidget(QStringLiteral("QStatusBar"), m_mainWindow)); + m_statusBar = qobject_cast<QStatusBar*>(core->widgetFactory()->createWidget(u"QStatusBar"_s, m_mainWindow)); core->widgetFactory()->initialize(m_statusBar); } @@ -1539,7 +1505,7 @@ void CreateStatusBarCommand::redo() c = qt_extension<QDesignerContainerExtension*>(core->extensionManager(), m_mainWindow); c->addWidget(m_statusBar); - m_statusBar->setObjectName(QStringLiteral("statusBar")); + m_statusBar->setObjectName(u"statusBar"_s); formWindow()->ensureUniqueObjectName(m_statusBar); core->metaDataBase()->add(m_statusBar); formWindow()->emitSelectionChanged(); @@ -1616,7 +1582,7 @@ void AddToolBarCommand::init(QMainWindow *mainWindow, Qt::ToolBarArea area) m_mainWindow = mainWindow; QDesignerWidgetFactoryInterface * wf = formWindow()->core()->widgetFactory(); // Pass on 0 parent first to avoid reparenting flicker. - m_toolBar = qobject_cast<QToolBar*>(wf->createWidget(QStringLiteral("QToolBar"), nullptr)); + m_toolBar = qobject_cast<QToolBar*>(wf->createWidget(u"QToolBar"_s, nullptr)); m_toolBar->setProperty("_q_desiredArea", QVariant(area)); wf->initialize(m_toolBar); m_toolBar->hide(); @@ -1630,7 +1596,7 @@ void AddToolBarCommand::redo() QDesignerContainerExtension *c = qt_extension<QDesignerContainerExtension*>(core->extensionManager(), m_mainWindow); c->addWidget(m_toolBar); - m_toolBar->setObjectName(QStringLiteral("toolBar")); + m_toolBar->setObjectName(u"toolBar"_s); formWindow()->ensureUniqueObjectName(m_toolBar); setPropertySheetWindowTitle(core, m_toolBar, m_toolBar->objectName()); formWindow()->emitSelectionChanged(); @@ -1679,7 +1645,7 @@ void AddDockWidgetCommand::init(QMainWindow *mainWindow) { m_mainWindow = mainWindow; QDesignerFormEditorInterface *core = formWindow()->core(); - m_dockWidget = qobject_cast<QDockWidget*>(core->widgetFactory()->createWidget(QStringLiteral("QDockWidget"), m_mainWindow)); + m_dockWidget = qobject_cast<QDockWidget*>(core->widgetFactory()->createWidget(u"QDockWidget"_s, m_mainWindow)); } void AddDockWidgetCommand::redo() @@ -1688,7 +1654,7 @@ void AddDockWidgetCommand::redo() QDesignerContainerExtension *c = qt_extension<QDesignerContainerExtension*>(core->extensionManager(), m_mainWindow); c->addWidget(m_dockWidget); - m_dockWidget->setObjectName(QStringLiteral("dockWidget")); + m_dockWidget->setObjectName(u"dockWidget"_s); formWindow()->ensureUniqueObjectName(m_dockWidget); formWindow()->manageWidget(m_dockWidget); formWindow()->emitSelectionChanged(); @@ -1769,7 +1735,7 @@ void AdjustWidgetSizeCommand::updatePropertyEditor() const { if (QDesignerPropertyEditorInterface *propertyEditor = formWindow()->core()->propertyEditor()) { if (propertyEditor->object() == m_widget) - propertyEditor->setPropertyValue(QStringLiteral("geometry"), m_widget->geometry(), true); + propertyEditor->setPropertyValue(u"geometry"_s, m_widget->geometry(), true); } } // ------------ ChangeFormLayoutItemRoleCommand @@ -2043,16 +2009,16 @@ void AddContainerWidgetPageCommand::init(QWidget *containerWidget, ContainerType case PageContainer: setText(QApplication::translate("Command", "Insert Page")); m_widget = new QDesignerWidget(formWindow(), m_containerWidget); - m_widget->setObjectName(QStringLiteral("page")); + m_widget->setObjectName(u"page"_s); break; case MdiContainer: setText(QApplication::translate("Command", "Insert Subwindow")); m_widget = new QDesignerWidget(formWindow(), m_containerWidget); - m_widget->setObjectName(QStringLiteral("subwindow")); + m_widget->setObjectName(u"subwindow"_s); setPropertySheetWindowTitle(core, m_widget, QApplication::translate("Command", "Subwindow")); break; case WizardContainer: // Apply style, don't manage - m_widget = core->widgetFactory()->createWidget(QStringLiteral("QWizardPage"), nullptr); + m_widget = core->widgetFactory()->createWidget(u"QWizardPage"_s, nullptr); break; } formWindow()->ensureUniqueObjectName(m_widget); @@ -2145,9 +2111,7 @@ static void copyRolesFromItem(ItemData *id, const T *item, bool editor) template<class T> static void copyRolesToItem(const ItemData *id, T *item, DesignerIconCache *iconCache, bool editor) { - QHash<int, QVariant>::const_iterator it = id->m_properties.constBegin(), - end = id->m_properties.constEnd(); - for (; it != end; ++it) + for (auto it = id->m_properties.cbegin(), end = id->m_properties.cend(); it != end; ++it) { if (it.value().isValid()) { if (!editor && it.key() == ItemFlagsShadowRole) { item->setFlags((Qt::ItemFlags)it.value().toInt()); @@ -2173,6 +2137,7 @@ static void copyRolesToItem(const ItemData *id, T *item, DesignerIconCache *icon } } } + } if (editor) item->setFlags(item->flags() | Qt::ItemIsEditable); @@ -2221,8 +2186,7 @@ ItemData::ItemData(const QTreeWidgetItem *item, int column) void ItemData::fillTreeItemColumn(QTreeWidgetItem *item, int column, DesignerIconCache *iconCache) const { - QHash<int, QVariant>::const_iterator it = m_properties.constBegin(), end = m_properties.constEnd(); - for (; it != end; ++it) + for (auto it = m_properties.cbegin(), end = m_properties.cend(); it != end; ++it) { if (it.value().isValid()) { item->setData(column, it.key(), it.value()); switch (it.key()) { @@ -2244,6 +2208,7 @@ void ItemData::fillTreeItemColumn(QTreeWidgetItem *item, int column, DesignerIco break; } } + } } ListContents::ListContents(const QTreeWidgetItem *item) @@ -2420,19 +2385,19 @@ void TableWidgetContents::applyToTableWidget(QTableWidget *tableWidget, Designer row++; } // items - const TableItemMap::const_iterator icend = m_items.constEnd(); - for (TableItemMap::const_iterator it = m_items.constBegin(); it != icend; ++ it) - tableWidget->setItem(it.key().first, it.key().second, it.value().createTableItem(iconCache, editor)); + for (auto it = m_items.cbegin(), icend = m_items.cend(); it != icend; ++ it) { + tableWidget->setItem(it.key().first, it.key().second, + it.value().createTableItem(iconCache, editor)); + } } -bool TableWidgetContents::operator==(const TableWidgetContents &rhs) const +bool comparesEqual(const TableWidgetContents &lhs, + const TableWidgetContents &rhs) noexcept { - if (m_columnCount != rhs.m_columnCount || m_rowCount != rhs.m_rowCount) - return false; - - return m_horizontalHeader.m_items == rhs.m_horizontalHeader.m_items && - m_verticalHeader.m_items == rhs.m_verticalHeader.m_items && - m_items == rhs.m_items; + return lhs.m_columnCount == rhs.m_columnCount && lhs.m_rowCount == rhs.m_rowCount && + lhs.m_horizontalHeader.m_items == rhs.m_horizontalHeader.m_items && + lhs.m_verticalHeader.m_items == rhs.m_verticalHeader.m_items && + lhs.m_items == rhs.m_items; } // ---- ChangeTableContentsCommand ---- @@ -2502,12 +2467,11 @@ QTreeWidgetItem *TreeWidgetContents::ItemContents::createTreeItem(DesignerIconCa return item; } -bool TreeWidgetContents::ItemContents::operator==(const TreeWidgetContents::ItemContents &rhs) const +bool comparesEqual(const TreeWidgetContents::ItemContents &lhs, + const TreeWidgetContents::ItemContents &rhs) noexcept { - return - m_itemFlags == rhs.m_itemFlags && - m_items == rhs.m_items && - m_children == rhs.m_children; + return lhs.m_itemFlags == rhs.m_itemFlags && lhs.m_items == rhs.m_items + && lhs.m_children == rhs.m_children; } void TreeWidgetContents::clear() @@ -2528,20 +2492,13 @@ void TreeWidgetContents::applyToTreeWidget(QTreeWidget *treeWidget, DesignerIcon { treeWidget->clear(); - treeWidget->setColumnCount(m_headerItem.m_items.count()); + treeWidget->setColumnCount(m_headerItem.m_items.size()); treeWidget->setHeaderItem(m_headerItem.createTreeItem(iconCache)); for (const ItemContents &ic : m_rootItems) treeWidget->addTopLevelItem(ic.createTreeItem(iconCache, editor)); treeWidget->expandAll(); } -bool TreeWidgetContents::operator==(const TreeWidgetContents &rhs) const -{ - return - m_headerItem == rhs.m_headerItem && - m_rootItems == rhs.m_rootItems; -} - // ---- ChangeTreeContentsCommand ---- ChangeTreeContentsCommand::ChangeTreeContentsCommand(QDesignerFormWindowInterface *formWindow) : QDesignerFormWindowCommand(QApplication::translate("Command", "Change Tree Contents"), formWindow), @@ -2653,19 +2610,19 @@ static RemoveActionCommand::ActionData findActionIn(QAction *action) { RemoveActionCommand::ActionData result; // We only want menus and toolbars, no toolbuttons. - const QWidgetList &associatedWidgets = action->associatedWidgets(); - for (QWidget *widget : associatedWidgets) { - if (qobject_cast<const QMenu *>(widget) || qobject_cast<const QToolBar *>(widget)) { - const auto actionList = widget->actions(); - const int size = actionList.size(); - for (int i = 0; i < size; ++i) { - if (actionList.at(i) == action) { - QAction *before = nullptr; - if (i + 1 < size) - before = actionList.at(i + 1); - result.append(RemoveActionCommand::ActionDataItem(before, widget)); - break; - } + const QObjectList associatedObjects = action->associatedObjects(); + for (QObject *obj : associatedObjects) { + if (!qobject_cast<const QMenu *>(obj) && !qobject_cast<const QToolBar *>(obj)) + continue; + QWidget *widget = static_cast<QWidget *>(obj); + const auto actionList = widget->actions(); + for (qsizetype i = 0, size = actionList.size(); i < size; ++i) { + if (actionList.at(i) == action) { + QAction *before = nullptr; + if (i + 1 < size) + before = actionList.at(i + 1); + result.append(RemoveActionCommand::ActionDataItem(before, widget)); + break; } } } @@ -2683,7 +2640,7 @@ void RemoveActionCommand::init(QAction *action) void RemoveActionCommand::redo() { QDesignerFormWindowInterface *fw = formWindow(); - for (const ActionDataItem &item : qAsConst(m_actionData)) { + for (const ActionDataItem &item : std::as_const(m_actionData)) { item.widget->removeAction(m_action); } // Notify components (for example, signal slot editor) @@ -2700,7 +2657,7 @@ void RemoveActionCommand::undo() { core()->actionEditor()->setFormWindow(formWindow()); core()->actionEditor()->manageAction(m_action); - for (const ActionDataItem &item : qAsConst(m_actionData)) + for (const ActionDataItem &item : std::as_const(m_actionData)) item.widget->insertAction(item.before, m_action); if (!m_actionData.isEmpty()) core()->objectInspector()->setFormWindow(formWindow()); |