From 11268aadee373bfacbf72060e3e982a78ae19107 Mon Sep 17 00:00:00 2001 From: Daniel d'Andrada Date: Tue, 20 Mar 2018 13:32:24 +0100 Subject: [sysui] Pass NeptuneStyle.scale down to application windows Change-Id: I7a2d49a48e51f83080902bfb035179cd40fb8409 Reviewed-by: Bramastyo Harimukti Santoso --- imports/shared/utils/AppUIScreen.qml | 3 +++ imports/shared/utils/SecondaryWindow.qml | 11 ++++++++++- imports/system/models/application/ApplicationInfo.qml | 14 ++++++++++++++ sysui/display/ApplicationFrame.qml | 6 +++++- sysui/home/ApplicationWidget.qml | 4 ++++ sysui/instrumentcluster/InstrumentClusterWindow.qml | 4 ++++ sysui/instrumentcluster/SecondaryAppWindows.qml | 17 +++++++++-------- 7 files changed, 49 insertions(+), 10 deletions(-) diff --git a/imports/shared/utils/AppUIScreen.qml b/imports/shared/utils/AppUIScreen.qml index 9f2b8b1c..db235e52 100644 --- a/imports/shared/utils/AppUIScreen.qml +++ b/imports/shared/utils/AppUIScreen.qml @@ -119,6 +119,9 @@ ApplicationManagerWindow { case "neptuneCurrentHeight": root.currentHeight = value; break; + case "neptuneScale": + root.NeptuneStyle.scale = value; + break; case "neptuneState": root.neptuneState = value; break; diff --git a/imports/shared/utils/SecondaryWindow.qml b/imports/shared/utils/SecondaryWindow.qml index e8172f72..d0322dc8 100644 --- a/imports/shared/utils/SecondaryWindow.qml +++ b/imports/shared/utils/SecondaryWindow.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 Pelagicore AG +** Copyright (C) 2017-2018 Pelagicore AG ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Neptune 3 IVI UI. @@ -41,6 +41,15 @@ ApplicationManagerWindow { setWindowProperty("windowType", "secondary") visible = true } + + onWindowPropertyChanged: { + switch (name) { + case "neptuneScale": + root.NeptuneStyle.scale = value; + break; + } + } + UISettings { onThemeChanged: updateTheme() Component.onCompleted: updateTheme() diff --git a/imports/system/models/application/ApplicationInfo.qml b/imports/system/models/application/ApplicationInfo.qml index 47bb36c7..11268b02 100644 --- a/imports/system/models/application/ApplicationInfo.qml +++ b/imports/system/models/application/ApplicationInfo.qml @@ -79,6 +79,12 @@ QtObject { // Currrent window width property int currentWidth: 0 + // UI scale factor to be applied to window. See NeptuneStyle.scale + property real windowScale: 1 + + // UI scale factor to be applied to secondaryWindow. See NeptuneStyle.scale + property real secondaryWindowScale: 1 + // Whether the application window should be shown as a widget property bool asWidget: false @@ -136,6 +142,14 @@ QtObject { } } + onWindowScaleChanged: { + if (window) + AM.WindowManager.setWindowProperty(window, "neptuneScale", windowScale); + } + onSecondaryWindowScaleChanged: { + if (secondaryWindow) + AM.WindowManager.setWindowProperty(secondaryWindow, "neptuneScale", secondaryWindowScale); + } onWidgetHeightChanged: { if (window) AM.WindowManager.setWindowProperty(window, "neptuneWidgetHeight", widgetHeight); diff --git a/sysui/display/ApplicationFrame.qml b/sysui/display/ApplicationFrame.qml index 4286aa36..d68b9e19 100644 --- a/sysui/display/ApplicationFrame.qml +++ b/sysui/display/ApplicationFrame.qml @@ -1,6 +1,6 @@ /**************************************************************************** ** -** Copyright (C) 2017 Pelagicore AG +** Copyright (C) 2017-2018 Pelagicore AG ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Neptune 3 IVI UI. @@ -51,6 +51,10 @@ Item { target: root.appInfo; property: "currentWidth"; value: root.width } + Binding { + target: root.appInfo; property: "windowScale"; value: root.NeptuneStyle.scale + } + Binding { target: root.appInfo; property: "windowState"; value: "Maximized" } diff --git a/sysui/home/ApplicationWidget.qml b/sysui/home/ApplicationWidget.qml index 52a449b7..600b0b26 100644 --- a/sysui/home/ApplicationWidget.qml +++ b/sysui/home/ApplicationWidget.qml @@ -109,6 +109,10 @@ Item { } } + Binding { + target: root.appInfo; property: "windowScale"; value: root.NeptuneStyle.scale + } + Binding { target: root.appInfo; property: "widgetHeight"; value: root.widgetHeight } diff --git a/sysui/instrumentcluster/InstrumentClusterWindow.qml b/sysui/instrumentcluster/InstrumentClusterWindow.qml index 5235ca5a..a58b08a8 100644 --- a/sysui/instrumentcluster/InstrumentClusterWindow.qml +++ b/sysui/instrumentcluster/InstrumentClusterWindow.qml @@ -76,6 +76,10 @@ Window { onSecondaryWindowSwitchCountChanged: secondaryAppWindows.next(); } + onWidthChanged: { + root.contentItem.NeptuneStyle.scale = root.width / Style.instrumentClusterWidth; + } + Item { id: uiSlot anchors.centerIn: parent diff --git a/sysui/instrumentcluster/SecondaryAppWindows.qml b/sysui/instrumentcluster/SecondaryAppWindows.qml index 747c6c4e..8693587a 100644 --- a/sysui/instrumentcluster/SecondaryAppWindows.qml +++ b/sysui/instrumentcluster/SecondaryAppWindows.qml @@ -33,6 +33,7 @@ import QtQuick 2.7 import QtQml.Models 2.2 import animations 1.0 +import com.pelagicore.styles.neptune 3.0 import utils 1.0 Item { @@ -49,7 +50,7 @@ Item { property int selectedIndex: 0 readonly property string selectedApplicationId: selectedIndex < secondaryWindowList.count - ? secondaryWindowList.get(selectedIndex).applicationId + ? secondaryWindowList.get(selectedIndex).appInfo.id : "" readonly property bool empty: secondaryWindowList.count === 0 @@ -60,10 +61,9 @@ Item { target: model.appInfo onSecondaryWindowChanged: { if (model.appInfo.secondaryWindow) { - secondaryWindowList.append({"applicationId" : model.appInfo.id, - "secondaryWindow": model.appInfo.secondaryWindow}); + secondaryWindowList.append({"appInfo" : model.appInfo}); } else { - secondaryWindowList.removeWithAppId(model.applicationId); + secondaryWindowList.removeWithAppId(model.appInfo.id); } } } @@ -76,7 +76,7 @@ Item { var i; for (i = 0; i < count; i++) { var item = get(i); - if (item.applicationId === appId) { + if (item.appInfo.id === appId) { remove(i, 1); break; } @@ -104,9 +104,10 @@ Item { //visible: opacity > 0 Behavior on opacity { DefaultNumberAnimation {} } - Binding { target: model.secondaryWindow; property: "width"; value: secondaryWindowSlot.width } - Binding { target: model.secondaryWindow; property: "height"; value: secondaryWindowSlot.height } - Binding { target: model.secondaryWindow; property: "parent"; value: secondaryWindowSlot } + Binding { target: model.appInfo.secondaryWindow; property: "width"; value: secondaryWindowSlot.width } + Binding { target: model.appInfo.secondaryWindow; property: "height"; value: secondaryWindowSlot.height } + Binding { target: model.appInfo.secondaryWindow; property: "parent"; value: secondaryWindowSlot } + Binding { target: model.appInfo; property: "secondaryWindowScale"; value: secondaryWindowSlot.NeptuneStyle.scale } } } } -- cgit v1.2.3