mobile UI: correctly determine the number of columns when screen size changes

This also deals with a bug we had before where we didn't re-start the calculation
for the various sizes from the assumption of 'at least 21 grid units'. Now you can
rotate the device and the right thing will happen.

Small warning - this checks the orientation of the screen, which is exactly what
you want it to do on your device. When running mobile on desktop this may not be
what you expect. Even if the window has a portrait aspect ratio, your screen is
likely still landscape... so testing this feature in mobile on desktop mode is a
bit harder...

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-02-08 11:11:45 -08:00
parent 96a56cf04d
commit 3bb9b08f33
2 changed files with 8 additions and 1 deletions

View file

@ -1,3 +1,4 @@
Mobile: add option to only show one column in portrait mode
Mobile: fix potential crash when adding / editing dives
Mobile: automatically scroll the dive edit screen so that the notes edit cursor stays visible
Desktop: ignore dive sites without location in proximity search

View file

@ -571,7 +571,12 @@ if you have network connectivity and want to sync your data to cloud storage."),
function setupUnits() {
// some screens are too narrow for Subsurface-mobile to render well
// try to hack around that by making sure that we can fit at least 21 gridUnits in a row
var numColumns = Math.floor(rootItem.width/pageStack.defaultColumnWidth)
var numColumns = Math.max(Math.floor(rootItem.width / (21 * Kirigami.Units.gridUnit)), 1)
if (Screen.primaryOrientation === Qt.PortraitOrientation && PrefDisplay.singleColumnPortrait) {
manager.appendTextToLog("show only one column in portrait mode");
numColumns = 1;
}
rootItem.colWidth = numColumns > 1 ? Math.floor(rootItem.width / numColumns) : rootItem.width;
var kirigamiGridUnit = Kirigami.Units.gridUnit
var widthInGridUnits = Math.floor(rootItem.colWidth / kirigamiGridUnit)
@ -587,6 +592,7 @@ if you have network connectivity and want to sync your data to cloud storage."),
// change our glabal grid unit
Kirigami.Units.gridUnit = kirigamiGridUnit
}
pageStack.defaultColumnWidth = rootItem.colWidth
manager.appendTextToLog("Done setting up sizes")
}