1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-02 12:20:45 +02:00

Immediately update delegate with widget config change

This commit is contained in:
Leo Franchi
2011-05-11 14:10:14 +02:00
parent 7ac7925ec6
commit 272a67b703
6 changed files with 32 additions and 3 deletions

View File

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

View File

@@ -257,6 +257,8 @@ ScriptResolver::setupConfWidget( const QVariantMap& m )
if( m.contains( "images" ) ) if( m.contains( "images" ) )
uiData = fixDataImagePaths( uiData, compressed, m[ "images" ].toMap() ); uiData = fixDataImagePaths( uiData, compressed, m[ "images" ].toMap() );
m_configWidget = QWeakPointer< QWidget >( widgetFromData( uiData, 0 ) ); 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; m_allResolvers << resolver;
if( enable ) if( enable )
m_enabledResolvers << resolver; 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(); endInsertRows();
} }
@@ -154,6 +160,19 @@ ResolversModel::enabledResolvers() const
} }
void 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() ResolversModel::addInstalledResolvers()
{ {
QList< QDir > pluginDirs; QList< QDir > pluginDirs;
@@ -179,4 +198,3 @@ ResolversModel::addInstalledResolvers()
} }
} }
} }

View File

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

View File

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