diff --git a/dialer/src/CMakeLists.txt b/dialer/src/CMakeLists.txt index 99a72bd0..6f5cd881 100644 --- a/dialer/src/CMakeLists.txt +++ b/dialer/src/CMakeLists.txt @@ -3,9 +3,9 @@ set(plasmaphonedialer_SRCS dialerutils.cpp call-handler.cpp call-manager.cpp + resources.qrc ) -qt5_add_resources(RESOURCES resources.qrc) -add_executable(plasmaphonedialer ${plasmaphonedialer_SRCS} ${RESOURCES}) +add_executable(plasmaphonedialer ${plasmaphonedialer_SRCS}) target_compile_definitions(plasmaphonedialer PRIVATE -DPROJECT_VERSION="${PROJECT_VERSION}") find_package(PhoneNumber COMPONENTS PhoneNumber REQUIRED) diff --git a/dialer/src/main.cpp b/dialer/src/main.cpp index 2bff2b2b..905f1e40 100644 --- a/dialer/src/main.cpp +++ b/dialer/src/main.cpp @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -162,19 +163,15 @@ int main(int argc, char **argv) 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 - auto *obj = new KDeclarative::QmlObject(); - obj->setTranslationDomain(packagePath); - obj->setInitializationDelayed(true); - obj->setSource(QUrl("qrc:///main.qml")); - obj->engine()->rootContext()->setContextProperty("commandlineArguments", parser.positionalArguments()); + QQmlApplicationEngine engine; + engine.rootContext()->setContextObject(new KLocalizedContext(&engine)); auto *dialerUtils = new DialerUtils(simAccount); - obj->engine()->rootContext()->setContextProperty("dialerUtils", QVariant::fromValue(dialerUtils)); + engine.rootContext()->setContextProperty("dialerUtils", QVariant::fromValue(dialerUtils)); + engine.rootContext()->setContextProperty("commandlineArguments", parser.positionalArguments()); - obj->completeInitialization(); + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); Tp::SharedPtr callHandler(new CallHandler(dialerUtils)); registrar->registerClient(Tp::AbstractClientPtr::dynamicCast(callHandler), "Plasma.Dialer"); @@ -184,39 +181,33 @@ int main(int argc, char **argv) KAboutData::setApplicationData(aboutData); - //The root is not a window? - //have to use a normal QQuickWindow since the root item is already created - QWindow *window = qobject_cast(obj->rootObject()); - if (window) { - QObject::connect(&service, &KDBusService::activateRequested, [=](const QStringList &arguments, const QString &workingDirectory) { - Q_UNUSED(workingDirectory); - window->show(); - window->requestActivate(); - if (arguments.length() > 0) { - QString numberArg = arguments[1]; - if (numberArg.startsWith("call://")) { - numberArg = numberArg.mid(7); - } - obj->rootObject()->metaObject()->invokeMethod(obj->rootObject(), "call", Q_ARG(QVariant, numberArg)); - } - }); - if (!parser.isSet(daemonOption)) { - window->show(); - window->requestActivate(); - } - window->setTitle(obj->package().metadata().name()); - window->setIcon(QIcon::fromTheme(obj->package().metadata().iconName())); + QWindow *window = qobject_cast(engine.rootObjects()[0]); - if (!parser.positionalArguments().isEmpty()) { - QString numberArg = parser.positionalArguments().first(); + Q_ASSERT(window); + + QObject::connect(&service, &KDBusService::activateRequested, [=](const QStringList &arguments, const QString &workingDirectory) { + Q_UNUSED(workingDirectory); + window->show(); + window->requestActivate(); + if (arguments.length() > 0) { + QString numberArg = arguments[1]; if (numberArg.startsWith("call://")) { numberArg = numberArg.mid(7); } - qWarning() << "Calling" << numberArg; - obj->rootObject()->metaObject()->invokeMethod(obj->rootObject(), "call", Q_ARG(QVariant, numberArg)); + dialerUtils->dial(numberArg); } - } else { - qWarning() << "Error loading the ApplicationWindow"; + }); + if (!parser.isSet(daemonOption)) { + window->show(); + window->requestActivate(); + } + if (!parser.positionalArguments().isEmpty()) { + QString numberArg = parser.positionalArguments().first(); + if (numberArg.startsWith("call://")) { + numberArg = numberArg.mid(7); + } + qWarning() << "Calling" << numberArg; + dialerUtils->dial(numberArg); } return app.exec(); diff --git a/dialer/src/contents/ui/Call/AnswerSwipe.qml b/dialer/src/qml/Call/AnswerSwipe.qml similarity index 100% rename from dialer/src/contents/ui/Call/AnswerSwipe.qml rename to dialer/src/qml/Call/AnswerSwipe.qml diff --git a/dialer/src/contents/ui/Call/Avatar.qml b/dialer/src/qml/Call/Avatar.qml similarity index 100% rename from dialer/src/contents/ui/Call/Avatar.qml rename to dialer/src/qml/Call/Avatar.qml diff --git a/dialer/src/contents/ui/Call/CallPage.qml b/dialer/src/qml/Call/CallPage.qml similarity index 100% rename from dialer/src/contents/ui/Call/CallPage.qml rename to dialer/src/qml/Call/CallPage.qml diff --git a/dialer/src/contents/ui/Dialer/ContactsList.qml b/dialer/src/qml/Dialer/ContactsList.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/ContactsList.qml rename to dialer/src/qml/Dialer/ContactsList.qml diff --git a/dialer/src/contents/ui/Dialer/CustomSectionScroller.qml b/dialer/src/qml/Dialer/CustomSectionScroller.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/CustomSectionScroller.qml rename to dialer/src/qml/Dialer/CustomSectionScroller.qml diff --git a/dialer/src/contents/ui/Dialer/DialPage.qml b/dialer/src/qml/Dialer/DialPage.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/DialPage.qml rename to dialer/src/qml/Dialer/DialPage.qml diff --git a/dialer/src/contents/ui/Dialer/Dialer.qml b/dialer/src/qml/Dialer/Dialer.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/Dialer.qml rename to dialer/src/qml/Dialer/Dialer.qml diff --git a/dialer/src/contents/ui/Dialer/History.qml b/dialer/src/qml/Dialer/History.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/History.qml rename to dialer/src/qml/Dialer/History.qml diff --git a/dialer/src/contents/ui/Dialer/HistoryDelegate.qml b/dialer/src/qml/Dialer/HistoryDelegate.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/HistoryDelegate.qml rename to dialer/src/qml/Dialer/HistoryDelegate.qml diff --git a/dialer/src/contents/ui/Dialer/RoundImage.qml b/dialer/src/qml/Dialer/RoundImage.qml similarity index 100% rename from dialer/src/contents/ui/Dialer/RoundImage.qml rename to dialer/src/qml/Dialer/RoundImage.qml diff --git a/dialer/src/contents/ui/Dialer/private/SectionScroller.js b/dialer/src/qml/Dialer/private/SectionScroller.js similarity index 100% rename from dialer/src/contents/ui/Dialer/private/SectionScroller.js rename to dialer/src/qml/Dialer/private/SectionScroller.js diff --git a/dialer/src/contents/ui/Dialpad/DialerButton.qml b/dialer/src/qml/Dialpad/DialerButton.qml similarity index 100% rename from dialer/src/contents/ui/Dialpad/DialerButton.qml rename to dialer/src/qml/Dialpad/DialerButton.qml diff --git a/dialer/src/contents/ui/Dialpad/DialerIconButton.qml b/dialer/src/qml/Dialpad/DialerIconButton.qml similarity index 100% rename from dialer/src/contents/ui/Dialpad/DialerIconButton.qml rename to dialer/src/qml/Dialpad/DialerIconButton.qml diff --git a/dialer/src/contents/ui/Dialpad/Dialpad.qml b/dialer/src/qml/Dialpad/Dialpad.qml similarity index 100% rename from dialer/src/contents/ui/Dialpad/Dialpad.qml rename to dialer/src/qml/Dialpad/Dialpad.qml diff --git a/dialer/src/contents/ui/Dialpad/PhoneNumberInput.qml b/dialer/src/qml/Dialpad/PhoneNumberInput.qml similarity index 100% rename from dialer/src/contents/ui/Dialpad/PhoneNumberInput.qml rename to dialer/src/qml/Dialpad/PhoneNumberInput.qml diff --git a/dialer/src/contents/ui/main.qml b/dialer/src/qml/main.qml similarity index 99% rename from dialer/src/contents/ui/main.qml rename to dialer/src/qml/main.qml index 47746a40..c19503f8 100644 --- a/dialer/src/contents/ui/main.qml +++ b/dialer/src/qml/main.qml @@ -33,6 +33,8 @@ ApplicationWindow { width: 1080 height: 800 + visible: false + //keep track if we were visible when ringing property bool wasVisible //was the last call an incoming one? diff --git a/dialer/src/resources.qrc b/dialer/src/resources.qrc index 57992488..dff3c1fc 100644 --- a/dialer/src/resources.qrc +++ b/dialer/src/resources.qrc @@ -1,20 +1,20 @@ - contents/ui/main.qml - contents/ui/Call/AnswerSwipe.qml - contents/ui/Call/CallPage.qml - contents/ui/Call/Avatar.qml - contents/ui/Dialer/Dialer.qml - contents/ui/Dialer/ContactsList.qml - contents/ui/Dialer/DialPage.qml - contents/ui/Dialer/private/SectionScroller.js - contents/ui/Dialer/RoundImage.qml - contents/ui/Dialer/History.qml - contents/ui/Dialer/CustomSectionScroller.qml - contents/ui/Dialer/HistoryDelegate.qml - contents/ui/Dialpad/Dialpad.qml - contents/ui/Dialpad/PhoneNumberInput.qml - contents/ui/Dialpad/DialerButton.qml - contents/ui/Dialpad/DialerIconButton.qml + qml/main.qml + qml/Call/AnswerSwipe.qml + qml/Call/CallPage.qml + qml/Call/Avatar.qml + qml/Dialer/Dialer.qml + qml/Dialer/ContactsList.qml + qml/Dialer/DialPage.qml + qml/Dialer/private/SectionScroller.js + qml/Dialer/RoundImage.qml + qml/Dialer/History.qml + qml/Dialer/CustomSectionScroller.qml + qml/Dialer/HistoryDelegate.qml + qml/Dialpad/Dialpad.qml + qml/Dialpad/PhoneNumberInput.qml + qml/Dialpad/DialerButton.qml + qml/Dialpad/DialerIconButton.qml