diff --git a/src/accounts/xmpp/XmppConfigWidget.cpp b/src/accounts/xmpp/XmppConfigWidget.cpp index a6001cc90..021e6289b 100644 --- a/src/accounts/xmpp/XmppConfigWidget.cpp +++ b/src/accounts/xmpp/XmppConfigWidget.cpp @@ -84,7 +84,7 @@ void XmppConfigWidget::launchExternalConfigDialog() { ConfigStorage* cs = AccountManager::instance()->configStorageForAccount( m_account->accountId() ); - cs->execConfigDialog(); + cs->execConfigDialog( this ); } diff --git a/src/libtomahawk/accounts/ConfigStorage.cpp b/src/libtomahawk/accounts/ConfigStorage.cpp index 07dac2233..2208420d6 100644 --- a/src/libtomahawk/accounts/ConfigStorage.cpp +++ b/src/libtomahawk/accounts/ConfigStorage.cpp @@ -52,7 +52,7 @@ ConfigStorage::icon() const bool -ConfigStorage::execConfigDialog() +ConfigStorage::execConfigDialog( QWidget* parent ) { return false; } diff --git a/src/libtomahawk/accounts/ConfigStorage.h b/src/libtomahawk/accounts/ConfigStorage.h index 7da7a82cd..2a56dac4d 100644 --- a/src/libtomahawk/accounts/ConfigStorage.h +++ b/src/libtomahawk/accounts/ConfigStorage.h @@ -45,7 +45,7 @@ public: virtual QPixmap icon() const; - virtual bool execConfigDialog(); + virtual bool execConfigDialog( QWidget* parent ); virtual QStringList accountIds() const = 0; diff --git a/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.cpp b/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.cpp index c8ef9b5b0..f04f41a77 100644 --- a/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.cpp +++ b/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.cpp @@ -27,14 +27,18 @@ #include "accounts/CredentialsManager.h" #include "utils/Logger.h" #include "utils/PluginLoader.h" +#include "utils/TomahawkUtilsGui.h" #include #include #include #include +#include +#include #include #include +#include @@ -82,19 +86,22 @@ Tomahawk::Accounts::TelepathyConfigStorage::icon() const bool -Tomahawk::Accounts::TelepathyConfigStorage::execConfigDialog() +Tomahawk::Accounts::TelepathyConfigStorage::execConfigDialog( QWidget* parent ) { - QProcess kcm; - kcm.start( "kcmshell4 kcm_ktp_accounts" ); - if ( !kcm.waitForStarted() ) - return false; + if ( !m_configWidgetPlugins.isEmpty() ) + { + QDialog dialog( parent ); + dialog.resize( parent->logicalDpiX() * 3.0, parent->logicalDpiY() * 2.2 ); + dialog.setLayout( new QVBoxLayout ); + dialog.layout()->addWidget( m_configWidgetPlugins.first()->configWidget() ); - if ( !kcm.waitForFinished( 600000 ) ) - return false; + QDialogButtonBox* box = new QDialogButtonBox( QDialogButtonBox::Close, Qt::Horizontal ); + dialog.layout()->addWidget( box ); + connect( box, SIGNAL( clicked( QAbstractButton* ) ), &dialog, SLOT( accept() ) ); + return dialog.exec(); + } - //TODO: this should probably be async - - return true; + return false; } diff --git a/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.h b/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.h index 530d28bc9..cc4910ebe 100644 --- a/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.h +++ b/src/libtomahawk/accounts/configstorage/telepathy/TelepathyConfigStorage.h @@ -51,7 +51,7 @@ public: QString prettyName() const; QPixmap icon() const; - bool execConfigDialog(); + bool execConfigDialog( QWidget* parent ); QStringList accountIds() const;