1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 22:26:32 +02:00

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 :)
This commit is contained in:
Dominik Schmidt
2011-06-30 01:27:49 +02:00
parent 3d297795c2
commit 25775b5051
2 changed files with 12 additions and 27 deletions

View File

@@ -315,26 +315,21 @@ QtScriptResolver::saveConfig()
QWidget* QWidget*
QtScriptResolver::findWidget(QWidget* widget, const QStringList& widgetPath) QtScriptResolver::findWidget(QWidget* widget, const QString& objectName)
{ {
if( !widget || !widget->isWidgetType() ) if( !widget || !widget->isWidgetType() )
return 0; return 0;
qDebug() << Q_FUNC_INFO << widget->objectName() << widgetPath; if( widget->objectName() == objectName )
if( widgetPath.isEmpty() )
return widget; return widget;
QString searchName = widgetPath.first();
foreach( QObject* child, widget->children() ) foreach( QObject* child, widget->children() )
{ {
if( child->isWidgetType() && child->objectName() == searchName ) QWidget* found = findWidget(qobject_cast< QWidget* >( child ), objectName);
{
QStringList newWidgetPath = widgetPath; if( found )
newWidgetPath.removeFirst(); return found;
return findWidget(qobject_cast< QWidget* >( child ), newWidgetPath);
}
} }
return 0; return 0;
@@ -378,13 +373,8 @@ QtScriptResolver::loadDataFromWidgets()
{ {
QVariantMap data = dataWidget.toMap(); QVariantMap data = dataWidget.toMap();
QStringList widgetPath; QString widgetName = data["widget"].toString();
foreach(const QVariant& pathItem, data["widget"].toList()) QWidget* widget= findWidget( m_configWidget.data(), widgetName );
{
widgetPath << pathItem.toString();
}
QWidget* widget= findWidget( m_configWidget.data(), widgetPath );
QString value = widgetData( widget, data["property"].toString() ).toString(); QString value = widgetData( widget, data["property"].toString() ).toString();
@@ -403,16 +393,11 @@ QtScriptResolver::fillDataInWidgets( const QVariantMap& data )
qDebug() << Q_FUNC_INFO << data; qDebug() << Q_FUNC_INFO << data;
foreach(const QVariant& dataWidget, m_dataWidgets) foreach(const QVariant& dataWidget, m_dataWidgets)
{ {
QStringList widgetPath; QString widgetName = dataWidget.toMap()["widget"].toString();
foreach(const QVariant& pathItem, dataWidget.toMap()["widget"].toList()) QWidget* widget= findWidget( m_configWidget.data(), widgetName );
{
widgetPath << pathItem.toString();
}
QWidget* widget= findWidget( m_configWidget.data(), widgetPath );
if( !widget ) 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); Q_ASSERT(false);
return; return;
} }

View File

@@ -119,7 +119,7 @@ signals:
private: private:
virtual void loadUi(); 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 ); void setWidgetData( const QVariant& value, QWidget* widget, const QString& property );
QVariant widgetData( QWidget* widget, const QString& property ); QVariant widgetData( QWidget* widget, const QString& property );
QVariantMap loadDataFromWidgets(); QVariantMap loadDataFromWidgets();