From 25775b505137ecac7809aaac716413043754cf38 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Thu, 30 Jun 2011 01:27:49 +0200 Subject: [PATCH] Make the Resolver API expect a widgetName instead of a widgetPath We dont have gazillions of widgets in one dialog, so make the API a bit easier to use :) --- src/resolvers/qtscriptresolver.cpp | 37 +++++++++--------------------- src/resolvers/qtscriptresolver.h | 2 +- 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/src/resolvers/qtscriptresolver.cpp b/src/resolvers/qtscriptresolver.cpp index abe4e17de..4ff0e0151 100644 --- a/src/resolvers/qtscriptresolver.cpp +++ b/src/resolvers/qtscriptresolver.cpp @@ -315,26 +315,21 @@ QtScriptResolver::saveConfig() QWidget* -QtScriptResolver::findWidget(QWidget* widget, const QStringList& widgetPath) +QtScriptResolver::findWidget(QWidget* widget, const QString& objectName) { if( !widget || !widget->isWidgetType() ) return 0; - qDebug() << Q_FUNC_INFO << widget->objectName() << widgetPath; - - if( widgetPath.isEmpty() ) + if( widget->objectName() == objectName ) return widget; - QString searchName = widgetPath.first(); foreach( QObject* child, widget->children() ) { - if( child->isWidgetType() && child->objectName() == searchName ) - { - QStringList newWidgetPath = widgetPath; - newWidgetPath.removeFirst(); - return findWidget(qobject_cast< QWidget* >( child ), newWidgetPath); - } + QWidget* found = findWidget(qobject_cast< QWidget* >( child ), objectName); + + if( found ) + return found; } return 0; @@ -378,13 +373,8 @@ QtScriptResolver::loadDataFromWidgets() { QVariantMap data = dataWidget.toMap(); - QStringList widgetPath; - foreach(const QVariant& pathItem, data["widget"].toList()) - { - widgetPath << pathItem.toString(); - } - - QWidget* widget= findWidget( m_configWidget.data(), widgetPath ); + QString widgetName = data["widget"].toString(); + QWidget* widget= findWidget( m_configWidget.data(), widgetName ); QString value = widgetData( widget, data["property"].toString() ).toString(); @@ -403,16 +393,11 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data ) qDebug() << Q_FUNC_INFO << data; foreach(const QVariant& dataWidget, m_dataWidgets) { - QStringList widgetPath; - foreach(const QVariant& pathItem, dataWidget.toMap()["widget"].toList()) - { - widgetPath << pathItem.toString(); - } - - QWidget* widget= findWidget( m_configWidget.data(), widgetPath ); + QString widgetName = dataWidget.toMap()["widget"].toString(); + QWidget* widget= findWidget( m_configWidget.data(), widgetName ); if( !widget ) { - qDebug() << Q_FUNC_INFO << "widget specified in resolver was not found:" << widgetPath; + qDebug() << Q_FUNC_INFO << "widget specified in resolver was not found:" << widgetName; Q_ASSERT(false); return; } diff --git a/src/resolvers/qtscriptresolver.h b/src/resolvers/qtscriptresolver.h index 6ea58c5e0..a988b1e9e 100644 --- a/src/resolvers/qtscriptresolver.h +++ b/src/resolvers/qtscriptresolver.h @@ -119,7 +119,7 @@ signals: private: virtual void loadUi(); - QWidget* findWidget( QWidget* widget, const QStringList& widgetPath ); + QWidget* findWidget( QWidget* widget, const QString& objectName ); void setWidgetData( const QVariant& value, QWidget* widget, const QString& property ); QVariant widgetData( QWidget* widget, const QString& property ); QVariantMap loadDataFromWidgets();