From 9cd021f517e55abc31b3fd9e405ea94ce9eda44d Mon Sep 17 00:00:00 2001 From: Friedemann Kleint Date: Tue, 15 Jan 2019 13:31:21 +0100 Subject: uic: Refactor reverse name lookup Add a helper routine to look up the dom classes by attribute name and change Driver::widgetByName() and Driver::actionByName() to use that as does Driver::actionGroupByName() (all these functions are called with names from the XML files). Remove the name normalization in WriteInitialization::findDeclaration() and refactor WriteInitialization::acceptActionRef() to call findOrInsert() to correctly use the unique name. Task-number: PYSIDE-797 Change-Id: I34058361964719c442182faf798f055f11b40412 Reviewed-by: Cristian Maureira-Fredes --- src/tools/uic/driver.cpp | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) (limited to 'src/tools/uic/driver.cpp') diff --git a/src/tools/uic/driver.cpp b/src/tools/uic/driver.cpp index 03fa1e17cf..7d690cd2fe 100644 --- a/src/tools/uic/driver.cpp +++ b/src/tools/uic/driver.cpp @@ -50,6 +50,17 @@ static inline QString actionGroupClass() { return QStringLiteral("QActionGroup") static inline QString actionClass() { return QStringLiteral("QAction"); } static inline QString buttonGroupClass() { return QStringLiteral("QButtonGroup"); } +template +const DomClass *Driver::findByAttributeName(const DomObjectHash &domHash, + const QString &name) const +{ + for (auto it = domHash.cbegin(), end = domHash.cend(); it != end; ++it) { + if (it.key()->attributeName() == name) + return it.key(); + } + return nullptr; +} + template QString Driver::findOrInsert(DomObjectHash *domHash, const DomClass *dom, const QString &className) @@ -111,11 +122,7 @@ QString Driver::findOrInsertButtonGroup(const DomButtonGroup *ui_group) // Find a group by its non-uniqified name const DomButtonGroup *Driver::findButtonGroup(const QString &attributeName) const { - for (auto it = m_buttonGroups.cbegin(), end = m_buttonGroups.cend(); it != end; ++it) { - if (it.key()->attributeName() == attributeName) - return it.key(); - } - return nullptr; + return findByAttributeName(m_buttonGroups, attributeName); } @@ -288,17 +295,17 @@ bool Driver::uic(const QString &fileName, QTextStream *out) const DomWidget *Driver::widgetByName(const QString &name) const { - return m_widgets.key(name); + return findByAttributeName(m_widgets, name); } const DomActionGroup *Driver::actionGroupByName(const QString &name) const { - return m_actionGroups.key(name); + return findByAttributeName(m_actionGroups, name); } const DomAction *Driver::actionByName(const QString &name) const { - return m_actions.key(name); + return findByAttributeName(m_actions, name); } QT_END_NAMESPACE -- cgit v1.2.3