diff --git a/Linphone/core/App.cpp b/Linphone/core/App.cpp index 657437139..3659e7153 100644 --- a/Linphone/core/App.cpp +++ b/Linphone/core/App.cpp @@ -310,6 +310,9 @@ void App::initCppInterfaces() { [](QQmlEngine *engine, QJSEngine *) -> QObject * { return new Constants(engine); }); qmlRegisterSingletonType("UtilsCpp", 1, 0, "UtilsCpp", [](QQmlEngine *engine, QJSEngine *) -> QObject * { return new Utils(engine); }); + qmlRegisterSingletonType( + "DesktopToolsCpp", 1, 0, "DesktopToolsCpp", + [](QQmlEngine *engine, QJSEngine *) -> QObject * { return new DesktopTools(engine); }); qmlRegisterSingletonType( "EnumsToStringCpp", 1, 0, "EnumsToStringCpp", [](QQmlEngine *engine, QJSEngine *) -> QObject * { return new EnumsToString(engine); }); diff --git a/Linphone/data/image/fullscreen.svg b/Linphone/data/image/fullscreen.svg new file mode 100644 index 000000000..ec1742d5f --- /dev/null +++ b/Linphone/data/image/fullscreen.svg @@ -0,0 +1,3 @@ + + + diff --git a/Linphone/tool/native/screen-saver/ScreenSaverDBus.cpp b/Linphone/tool/native/screen-saver/ScreenSaverDBus.cpp index 3421f80e8..2029f3201 100644 --- a/Linphone/tool/native/screen-saver/ScreenSaverDBus.cpp +++ b/Linphone/tool/native/screen-saver/ScreenSaverDBus.cpp @@ -28,48 +28,47 @@ // ============================================================================= namespace { - constexpr char ServiceName[] = "org.freedesktop.ScreenSaver"; - constexpr char ServicePath[] = "/ScreenSaver"; +constexpr char ServiceName[] = "org.freedesktop.ScreenSaver"; +constexpr char ServicePath[] = "/ScreenSaver"; +} // namespace + +ScreenSaverDBus::ScreenSaverDBus(QObject *parent) : QObject(parent), mBus(ServiceName, ServicePath, ServiceName) { } -ScreenSaverDBus::ScreenSaverDBus (QObject *parent) : QObject(parent), mBus(ServiceName, ServicePath, ServiceName) {} - -ScreenSaverDBus::~ScreenSaverDBus () { - setScreenSaverStatus(true); +ScreenSaverDBus::~ScreenSaverDBus() { + setScreenSaverStatus(true); } -bool ScreenSaverDBus::getScreenSaverStatus () const { - return mScreenSaverStatus; +bool ScreenSaverDBus::getScreenSaverStatus() const { + return mScreenSaverStatus; } -void ScreenSaverDBus::setScreenSaverStatus (bool status) { - if (status == mScreenSaverStatus) - return; +void ScreenSaverDBus::setScreenSaverStatus(bool status) { + if (status == mScreenSaverStatus) return; - if (status) { - QDBusMessage reply(mBus.call("UnInhibit", mToken)); - if (reply.type() == QDBusMessage::ErrorMessage) { - qWarning() << QStringLiteral("Uninhibit screen saver failed: `%1: %2`.") - .arg(reply.errorName()).arg(reply.errorMessage()); - return; - } else - qInfo("Uninhibit screen saver."); + if (status) { + QDBusMessage reply(mBus.call("UnInhibit", mToken)); + if (reply.type() == QDBusMessage::ErrorMessage) { + qWarning() << QStringLiteral("Uninhibit screen saver failed: `%1: %2`.") + .arg(reply.errorName()) + .arg(reply.errorMessage()); + return; + } else qInfo("Uninhibit screen saver."); - mToken = uint32_t(reply.arguments().first().toULongLong()); - mScreenSaverStatus = status; - emit screenSaverStatusChanged(mScreenSaverStatus); - return; - } + mScreenSaverStatus = status; + emit screenSaverStatusChanged(mScreenSaverStatus); + return; + } - QDBusMessage reply(mBus.call("Inhibit", QCoreApplication::applicationName(), "Inhibit asked for video stream")); - if (reply.type() == QDBusMessage::ErrorMessage) { - if (reply.errorName() != QLatin1String("org.freedesktop.DBus.Error.ServiceUnknown")) - qWarning() << QStringLiteral("Inhibit screen saver failed: `%1: %2`.") - .arg(reply.errorName()).arg(reply.errorMessage()); - return; - } else - qInfo("Inhibit screen saver."); - - mScreenSaverStatus = status; - emit screenSaverStatusChanged(mScreenSaverStatus); + QDBusMessage reply(mBus.call("Inhibit", QCoreApplication::applicationName(), "Inhibit asked for video stream")); + if (reply.type() == QDBusMessage::ErrorMessage) { + if (reply.errorName() != QLatin1String("org.freedesktop.DBus.Error.ServiceUnknown")) + qWarning() << QStringLiteral("Inhibit screen saver failed: `%1: %2`.") + .arg(reply.errorName()) + .arg(reply.errorMessage()); + return; + } else qInfo("Inhibit screen saver."); + mToken = uint32_t(reply.arguments().first().toULongLong()); + mScreenSaverStatus = status; + emit screenSaverStatusChanged(mScreenSaverStatus); } diff --git a/Linphone/view/App/CallsWindow.qml b/Linphone/view/App/CallsWindow.qml index d7c7bfea7..2e6541755 100644 --- a/Linphone/view/App/CallsWindow.qml +++ b/Linphone/view/App/CallsWindow.qml @@ -6,6 +6,7 @@ import Linphone import EnumsToStringCpp 1.0 import UtilsCpp 1.0 import SettingsCpp 1.0 +import DesktopToolsCpp 1.0 AppWindow { id: mainWindow @@ -51,6 +52,7 @@ AppWindow { } } onClosing: (close) => { + DesktopToolsCpp.screenSaverStatus = true if (callsModel.haveCall) { close.accepted = false terminateAllCallsDialog.open() @@ -108,7 +110,7 @@ AppWindow { } middleItemStackView.replace(inCallItem) } - + Connections { enabled: !!call target: call && call.core @@ -1133,8 +1135,8 @@ AppWindow { background: Item{} icon.width: 32 * DefaultStyle.dp icon.height: 32 * DefaultStyle.dp - textColor: down ? DefaultStyle.main1_500_main : DefaultStyle.main2_500main - contentImageColor: down ? DefaultStyle.main1_500_main : DefaultStyle.main2_500main + textColor: down || checked ? DefaultStyle.main1_500_main : DefaultStyle.main2_500main + contentImageColor: down || checked ? DefaultStyle.main1_500_main : DefaultStyle.main2_500main textSize: 14 * DefaultStyle.dp textWeight: 400 * DefaultStyle.dp spacing: 5 * DefaultStyle.dp @@ -1156,6 +1158,24 @@ AppWindow { moreOptionsButton.close() } } + MenuButton { + visible: mainWindow.conference + Layout.fillWidth: true + icon.source: AppIcons.fullscreen + icon.width: 32 * DefaultStyle.dp + icon.height: 32 * DefaultStyle.dp + text: qsTr("Mode Plein écran") + checkable: true + onToggled: { + if(checked) { + DesktopToolsCpp.screenSaverStatus = false + mainWindow.showFullScreen() + }else{ + DesktopToolsCpp.screenSaverStatus = true + mainWindow.showNormal() + } + } + } MenuButton { icon.source: AppIcons.callList Layout.fillWidth: true diff --git a/Linphone/view/Style/AppIcons.qml b/Linphone/view/Style/AppIcons.qml index 870a5f165..f3dd2a71e 100644 --- a/Linphone/view/Style/AppIcons.qml +++ b/Linphone/view/Style/AppIcons.qml @@ -99,4 +99,5 @@ QtObject { property string world: "image://internal/world.svg" property string detective: "image://internal/detective.svg" property string warningCircle: "image://internal/warning-circle.svg" + property string fullscreen: "image://internal/fullscreen.svg" }