Skip to content
Snippets Groups Projects
Commit b98aaffc authored by Ming Rui Zhang's avatar Ming Rui Zhang
Browse files

misc: fix SelectScreen window layout when more than three screens connect

Gitlab: #81
Change-Id: Iadae667ec883bf8044c3b72582087bcaacd8c78c
parent 3a023b07
No related branches found
No related tags found
No related merge requests found
......@@ -38,28 +38,18 @@ Window {
property int selectedScreenNumber: -1
// Decide whether to show screen area or entire screen.
property bool selectArea: false
// How many rows the ScrollView should have.
function calculateRepeaterModel() {
var numberOfScreens = Qt.application.screens.length
if (numberOfScreens % 2 === 1)
return numberOfScreens / 2 + 1
else
return numberOfScreens / 2
return Math.ceil(numberOfScreens / 2)
}
function calculateScreenNumber(index) {
if (index === 0 || index === 1)
return index
if (index % 2 === 0)
return index * 2
else
return index * 2 + 1
function calculateScreenNumber(index, isEven) {
return index * 2 + (isEven ? 2 : 1)
}
minimumWidth: minWidth
......@@ -67,10 +57,11 @@ Window {
title: "Screen sharing"
// Note: Qt.application.screens[0] is the app's current existing screen.
screen: Qt.application.screens[0]
modality: Qt.ApplicationModal
Rectangle {
id: selectScreenWindowRect
......@@ -80,7 +71,7 @@ Window {
id: screenListText
anchors.top: selectScreenWindowRect.top
anchors.topMargin: 20
anchors.topMargin: JamiTheme.preferredMarginSize
anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
font.pointSize: JamiTheme.textFontSize + 2
......@@ -91,16 +82,18 @@ Window {
ScrollView {
id: screenSelectionScrollView
anchors.centerIn: selectScreenWindowRect
anchors.top: screenListText.bottom
anchors.topMargin: JamiTheme.preferredMarginSize
anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
width: selectScreenWindowRect.width - 50
height: selectScreenWindowRect.height - 150
width: selectScreenWindowRect.width
height: selectScreenWindowRect.height -
(screenListText.height + selectButton.height + JamiTheme.preferredMarginSize * 4)
clip: true
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
// Column of rows repeater (two screen captures in a row).
Column {
id: screenSelectionScrollViewColumn
......@@ -115,21 +108,20 @@ Window {
Row {
id: screenInfoRow
spacing: 20
leftPadding: JamiTheme.preferredMarginSize
rightPadding: JamiTheme.preferredMarginSize
spacing: screenSelectionScrollViewColumn.spacing
Connections {
target: selectScreenWindow
function onSelectedScreenNumberChanged() {
// Recover from green state.
screenSelectionRectOdd.borderColor = JamiTheme.tabbarBorderColor
screenSelectionRectEven.borderColor = JamiTheme.tabbarBorderColor
}
}
// To make sure that two screen captures in one row,
// a repeater of two rect is needed, which one in charge
// of odd number screen, one in charge of even number screen.
......@@ -139,9 +131,9 @@ Window {
property string borderColor: JamiTheme.tabbarBorderColor
height: screenSelectionScrollView.height
width: screenSelectionScrollView.width / 2 - screenInfoRow.spacing / 2
width: screenSelectionScrollView.width / 2 -
screenInfoRow.spacing / 2 - JamiTheme.preferredMarginSize
radius: 10
border.color: borderColor
Image {
......@@ -160,7 +152,7 @@ Window {
Component.onCompleted: {
screenShotOdd.source = "data:image/png;base64,"
+ AvAdapter.captureScreen(
calculateScreenNumber(index))
calculateScreenNumber(index, false) - 1)
}
}
......@@ -172,8 +164,7 @@ Window {
anchors.horizontalCenter: screenSelectionRectOdd.horizontalCenter
font.pointSize: JamiTheme.textFontSize - 2
text: qsTr("Screen") + " " + (calculateScreenNumber(
index) + 1)
text: qsTr("Screen") + " " + calculateScreenNumber(index, false)
}
MouseArea {
......@@ -182,10 +173,9 @@ Window {
onClicked: {
if (selectedScreenNumber == -1
|| selectedScreenNumber !== calculateScreenNumber(
index)) {
selectedScreenNumber = calculateScreenNumber(
index)
|| selectedScreenNumber !==
calculateScreenNumber(index, false)) {
selectedScreenNumber = calculateScreenNumber(index, false)
screenSelectionRectOdd.borderColor
= JamiTheme.screenSelectionBorderGreen
}
......@@ -199,12 +189,17 @@ Window {
property string borderColor: JamiTheme.tabbarBorderColor
height: screenSelectionScrollView.height
width: screenSelectionScrollView.width / 2 - screenInfoRow.spacing / 2
width: screenSelectionScrollView.width / 2 -
screenInfoRow.spacing / 2 - JamiTheme.preferredMarginSize
radius: 10
border.color: borderColor
visible: (Qt.application.screens.length) % 2 != 1
visible: {
if (calculateScreenNumber(index, true) >=
Qt.application.screens.length)
return (Qt.application.screens.length) % 2 != 1
return true
}
Image {
id: screenShotEven
......@@ -223,8 +218,7 @@ Window {
if (screenSelectionRectEven.visible)
screenShotEven.source = "data:image/png;base64,"
+ AvAdapter.captureScreen(
calculateScreenNumber(
index + 1))
calculateScreenNumber(index, true) - 1)
}
}
......@@ -236,9 +230,7 @@ Window {
anchors.horizontalCenter: screenSelectionRectEven.horizontalCenter
font.pointSize: JamiTheme.textFontSize - 2
text: qsTr(
"Screen") + " " + (calculateScreenNumber(
index + 1) + 1)
text: qsTr("Screen") + " " + (calculateScreenNumber(index, true))
}
MouseArea {
......@@ -247,10 +239,9 @@ Window {
onClicked: {
if (selectedScreenNumber == -1
|| selectedScreenNumber !== calculateScreenNumber(
index + 1)) {
selectedScreenNumber = calculateScreenNumber(
index + 1)
|| selectedScreenNumber !==
calculateScreenNumber(index, true)) {
selectedScreenNumber = calculateScreenNumber(index, true)
screenSelectionRectEven.borderColor
= JamiTheme.screenSelectionBorderGreen
}
......@@ -260,13 +251,6 @@ Window {
}
}
}
background: Rectangle {
id: screenSelectionScrollViewBackground
radius: 10
border.color: JamiTheme.tabbarBorderColor
}
}
}
......@@ -274,7 +258,7 @@ Window {
id: selectButton
anchors.bottom: selectScreenWindowRect.bottom
anchors.bottomMargin: 10
anchors.bottomMargin: JamiTheme.preferredMarginSize
anchors.horizontalCenter: selectScreenWindowRect.horizontalCenter
visible: selectedScreenNumber != -1
......@@ -286,7 +270,7 @@ Window {
if (selectArea) {
selectScreenWindow.hide()
ScreenRubberBandCreation.createScreenRubberBandWindowObject(
selectScreenWindow, selectedScreenNumber)
selectScreenWindow, selectedScreenNumber - 1)
ScreenRubberBandCreation.showScreenRubberBandWindow()
......@@ -295,7 +279,7 @@ Window {
selectScreenWindow.close()
})
} else {
AvAdapter.shareEntireScreen(selectedScreenNumber)
AvAdapter.shareEntireScreen(selectedScreenNumber - 1)
selectScreenWindow.close()
}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment