File indexing completed on 2024-04-28 16:42:51

0001 // SPDX-FileCopyrightText: 2021 Alexey Andreyev <aa13q@ya.ru>
0002 //
0003 // SPDX-License-Identifier: LicenseRef-KDE-Accepted-GPL
0004 
0005 #include <KLocalizedString>
0006 #include <QCoreApplication>
0007 #include <QtDBus/QDBusConnection>
0008 
0009 #include "version.h"
0010 
0011 #include "contact-utils.h"
0012 #include "dialer-utils.h"
0013 
0014 #include "callutilsinterface.h"
0015 #include "deviceutilsinterface.h"
0016 
0017 #include "callhistorydatabaseadaptor.h"
0018 #include "contactutilsadaptor.h"
0019 #include "dialerutilsadaptor.h"
0020 
0021 #include "call-history-manager.h"
0022 #include "dialer-manager.h"
0023 #include "notification-manager.h"
0024 
0025 int main(int argc, char **argv)
0026 {
0027     QCoreApplication app(argc, argv);
0028 
0029     app.setApplicationVersion(QStringLiteral(PLASMADIALER_VERSION_STRING));
0030     app.setOrganizationDomain(QStringLiteral("kde.org"));
0031 
0032     KLocalizedString::setApplicationDomain("kde-telephony-daemon");
0033 
0034     // Disable app quit lock during KIO jobs usage via NetworkManager
0035     // > The application will quit when there are no more QEventLoopLockers operating on it
0036     // https://doc.qt.io/qt-6/qeventlooplocker.html#QEventLoopLocker
0037     // see also:
0038     // https://invent.kde.org/plasma/kwin/-/merge_requests/1267/diffs#620b62637a901cceddbd29857f98b9a970caf8f0_149_164
0039     app.setQuitLockEnabled(false); // prevent a finishing KJob from closing the app
0040 
0041     auto deviceUtils = new org::kde::telephony::DeviceUtils(QString::fromLatin1(org::kde::telephony::DeviceUtils::staticInterfaceName()),
0042                                                             QStringLiteral("/org/kde/telephony/DeviceUtils/tel/mm"),
0043                                                             QDBusConnection::sessionBus(),
0044                                                             &app);
0045 
0046     auto callUtils = new org::kde::telephony::CallUtils(QString::fromLatin1(org::kde::telephony::CallUtils::staticInterfaceName()),
0047                                                         QStringLiteral("/org/kde/telephony/CallUtils/tel/mm"),
0048                                                         QDBusConnection::sessionBus(),
0049                                                         &app);
0050 
0051     auto contactUtils = new ContactUtils(&app);
0052     auto dialerUtils = new DialerUtils(&app);
0053     auto callHistoryDatabase = new CallHistoryDatabase(&app);
0054 
0055     DialerTypes::registerMetaTypes();
0056 
0057     QObject::connect(deviceUtils, &org::kde::telephony::DeviceUtils::countryCodeChanged, contactUtils, &ContactUtils::changeCountryCode);
0058 
0059     QDBusConnection dbus = QDBusConnection::sessionBus();
0060 
0061     CallHistoryManager callHistoryManager(&app);
0062     callHistoryManager.setCallUtils(callUtils);
0063     callHistoryManager.setCallHistoryDatabase(callHistoryDatabase);
0064 
0065     DialerManager dialerManager(&app);
0066     dialerManager.setDialerUtils(dialerUtils);
0067     dialerManager.setCallUtils(callUtils);
0068 
0069     NotificationManager notificator(&app);
0070     notificator.setCallUtils(callUtils);
0071     notificator.setContactUtils(contactUtils);
0072 
0073     new CallHistoryDatabaseAdaptor(callHistoryDatabase);
0074     dbus.registerObject(QStringLiteral("/org/kde/telephony/CallHistoryDatabase/tel/mm"), callHistoryDatabase);
0075     dbus.registerService(QStringLiteral("org.kde.telephony.CallHistoryDatabase"));
0076 
0077     new ContactUtilsAdaptor(contactUtils);
0078     dbus.registerObject(QStringLiteral("/org/kde/telephony/ContactUtils/tel/mm"), contactUtils);
0079     dbus.registerService(QStringLiteral("org.kde.telephony.ContactUtils"));
0080 
0081     new DialerUtilsAdaptor(dialerUtils);
0082     dbus.registerObject(QStringLiteral("/org/kde/telephony/DialerUtils/tel/mm"), dialerUtils);
0083     dbus.registerService(QStringLiteral("org.kde.telephony.DialerUtils"));
0084 
0085     return app.exec();
0086 }