diff options
author | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-11-29 14:41:20 +0100 |
---|---|---|
committer | Friedemann Kleint <Friedemann.Kleint@qt.io> | 2018-12-13 07:14:53 +0000 |
commit | e6d1071dd32d653f40c54df4141f7bd41aea7ea0 (patch) | |
tree | 22787cc0673cf84457e3d5dc4d7136cfc30646b2 /src/tools/uic/driver.h | |
parent | 4aac7b92c4a6cbcb0a12e6a209b210777fe610eb (diff) |
uic: Refactor DOM class lookup in class Driver
Change the API to take const Dom * classes and use a helper
function to do the insertion.
Task-number: PYSIDE-797
Change-Id: I079f5c92bae85d6246c14077db06e381b572cda5
Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
Diffstat (limited to 'src/tools/uic/driver.h')
-rw-r--r-- | src/tools/uic/driver.h | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/src/tools/uic/driver.h b/src/tools/uic/driver.h index 3808855783..1303d0bf8a 100644 --- a/src/tools/uic/driver.h +++ b/src/tools/uic/driver.h @@ -73,37 +73,41 @@ public: const QString &className=QString()); // symbol table - QString findOrInsertWidget(DomWidget *ui_widget); - QString findOrInsertSpacer(DomSpacer *ui_spacer); - QString findOrInsertLayout(DomLayout *ui_layout); - QString findOrInsertLayoutItem(DomLayoutItem *ui_layoutItem); + QString findOrInsertWidget(const DomWidget *ui_widget); + QString findOrInsertSpacer(const DomSpacer *ui_spacer); + QString findOrInsertLayout(const DomLayout *ui_layout); + QString findOrInsertLayoutItem(const DomLayoutItem *ui_layoutItem); QString findOrInsertName(const QString &name); - QString findOrInsertActionGroup(DomActionGroup *ui_group); - QString findOrInsertAction(DomAction *ui_action); + QString findOrInsertActionGroup(const DomActionGroup *ui_group); + QString findOrInsertAction(const DomAction *ui_action); QString findOrInsertButtonGroup(const DomButtonGroup *ui_group); // Find a group by its non-uniqified name const DomButtonGroup *findButtonGroup(const QString &attributeName) const; - DomWidget *widgetByName(const QString &name) const; - DomActionGroup *actionGroupByName(const QString &name) const; - DomAction *actionByName(const QString &name) const; + const DomWidget *widgetByName(const QString &name) const; + const DomActionGroup *actionGroupByName(const QString &name) const; + const DomAction *actionByName(const QString &name) const; bool useIdBasedTranslations() const { return m_idBasedTranslations; } void setUseIdBasedTranslations(bool u) { m_idBasedTranslations = u; } private: + template <class DomClass> using DomObjectHash = QHash<const DomClass *, QString>; + + template <class DomClass> + QString findOrInsert(DomObjectHash<DomClass> *domHash, const DomClass *dom, const QString &className); + Option m_option; QTextStream m_stdout; QTextStream *m_output; // symbol tables - QHash<DomWidget*, QString> m_widgets; - QHash<DomSpacer*, QString> m_spacers; - QHash<DomLayout*, QString> m_layouts; - QHash<DomActionGroup*, QString> m_actionGroups; - typedef QHash<const DomButtonGroup*, QString> ButtonGroupNameHash; - ButtonGroupNameHash m_buttonGroups; - QHash<DomAction*, QString> m_actions; + DomObjectHash<DomWidget> m_widgets; + DomObjectHash<DomSpacer> m_spacers; + DomObjectHash<DomLayout> m_layouts; + DomObjectHash<DomActionGroup> m_actionGroups; + DomObjectHash<DomButtonGroup> m_buttonGroups; + DomObjectHash<DomAction> m_actions; QHash<QString, bool> m_nameRepository; bool m_idBasedTranslations = false; }; |