From 3b33ffc49ce99be438acbe7fc195103cd2832d6d Mon Sep 17 00:00:00 2001 From: Alexander Akulich Date: Fri, 11 Oct 2019 12:03:01 +0530 Subject: [PATCH] dialer: don't hardcode the account name to be account0 instead loop through available accounts and select the account which supports either ofono or tel protocol --- dialer/src/main.cpp | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/dialer/src/main.cpp b/dialer/src/main.cpp index 44486355..ad245522 100644 --- a/dialer/src/main.cpp +++ b/dialer/src/main.cpp @@ -29,6 +29,9 @@ #include #include #include +#include +#include +#include #include #include @@ -136,11 +139,29 @@ int main(int argc, char **argv) Tp::ClientRegistrarPtr registrar = Tp::ClientRegistrar::create(accountFactory, connectionFactory, channelFactory, contactFactory); + QEventLoop loop; + Tp::AccountManagerPtr manager = Tp::AccountManager::create(); + Tp::PendingReady *ready = manager->becomeReady(); + QObject::connect(ready, &Tp::PendingReady::finished, &loop, &QEventLoop::quit); + loop.exec(QEventLoop::ExcludeUserInputEvents); - Tp::AccountPtr simAccount = Tp::Account::create(TP_QT_ACCOUNT_MANAGER_BUS_NAME, QStringLiteral("/org/freedesktop/Telepathy/Account/ofono/ofono/account0"), - connectionFactory, channelFactory); - + Tp::AccountPtr simAccount; + const Tp::AccountSetPtr accountSet = manager->validAccounts(); + for (const Tp::AccountPtr &account : accountSet->accounts()) { + static const QStringList supportedProtocols = { + QLatin1String("ofono"), + QLatin1String("tel"), + }; + if (supportedProtocols.contains(account->protocolName())) { + simAccount = account; + break; + } + } + if (simAccount.isNull()) { + qCritical() << "Unable to get SIM account"; + return -1; + } const QString packagePath("org.kde.phone.dialer"); //usually we have an ApplicationWindow here, so we do not need to create a window by ourselves