1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-03-25 10:19:41 +01:00

Immediately update delegate with widget config change

This commit is contained in:
Leo Franchi 2011-05-11 14:08:42 +02:00
parent bc9befa8a6
commit 15c02540d6
5 changed files with 30 additions and 1 deletions

View File

@ -65,9 +65,13 @@ public:
virtual QWidget* configUI() const = 0;
virtual void saveConfig() = 0;
public slots:
virtual void stop() = 0;
signals:
void changed(); // if config widget was added/removed
protected:
QWidget* widgetFromData( QByteArray& data, QWidget* parent = 0 );
QVariant configMsgFromWidget( QWidget* w );

View File

@ -257,6 +257,8 @@ ScriptResolver::setupConfWidget( const QVariantMap& m )
if( m.contains( "images" ) )
uiData = fixDataImagePaths( uiData, compressed, m[ "images" ].toMap() );
m_configWidget = QWeakPointer< QWidget >( widgetFromData( uiData, 0 ) );
emit changed();
}

View File

@ -125,6 +125,12 @@ ResolversModel::addResolver( const QString& resolver, bool enable )
m_allResolvers << resolver;
if( enable )
m_enabledResolvers << resolver;
if( Tomahawk::ExternalResolver* res = TomahawkApp::instance()->resolverForPath( resolver ) ) {
qDebug() << "Added resolver with config and stuff:" << res->configUI();
connect( res, SIGNAL( changed() ), this, SLOT( resolverChanged() ) );
} else
qDebug() << "No resolver object for path yet:" << resolver;
endInsertRows();
}
@ -153,6 +159,18 @@ ResolversModel::enabledResolvers() const
return m_enabledResolvers;
}
void
ResolversModel::resolverChanged()
{
Q_ASSERT( qobject_cast< Tomahawk::ExternalResolver* >( sender() ) );
Tomahawk::ExternalResolver* res = qobject_cast< Tomahawk::ExternalResolver* >( sender() );
qDebug() << "Got resolverChanged signal, does it have a config UI yet?" << res->configUI();
if( m_enabledResolvers.contains( res->filePath() ) ) {
QModelIndex idx = index( m_allResolvers.indexOf( res->filePath() ), 0, QModelIndex() );
emit dataChanged( idx, idx );
}
}
void
ResolversModel::addInstalledResolvers()
{

View File

@ -26,6 +26,7 @@
class ResolversModel : public QAbstractListModel
{
Q_OBJECT
public:
enum Roles {
ResolverName = Qt::UserRole + 15,
@ -47,6 +48,10 @@ public:
QStringList allResolvers() const;
QStringList enabledResolvers() const;
private slots:
void resolverChanged();
private:
void addInstalledResolvers();

View File

@ -440,8 +440,8 @@ SettingsDialog::addScriptResolver()
{
QString resolver = QFileDialog::getOpenFileName( this, tr( "Load script resolver file" ), qApp->applicationDirPath() );
if( !resolver.isEmpty() ) {
m_resolversModel->addResolver( resolver, true );
TomahawkApp::instance()->enableScriptResolver( resolver );
m_resolversModel->addResolver( resolver, true );
}
}