Commit 79a7eb36 authored by Aleksi Suomalainen's avatar Aleksi Suomalainen

Merge pull request #31 from filippz/master

Rotation logic rewrite and bugfix
parents e9156fc8 11ac1239
......@@ -9,7 +9,7 @@ Name: lipstick-glacier-home-qt5
# << macros
Summary: A nice homescreen for Glacier experience
Version: 0.16
Version: 0.17
Release: 1
Group: System/GUI/Other
License: BSD
......
Name: lipstick-glacier-home-qt5
Summary: A nice homescreen for Glacier experience
Version: 0.16
Version: 0.17
Release: 1
Group: System/GUI/Other
License: BSD
......
......@@ -57,7 +57,7 @@ int main(int argc, char **argv)
nativeOrientation = app.primaryScreen()->nativeOrientation();
}
}
app.engine()->rootContext()->setContextProperty("nativeOrientation", v);
app.engine()->rootContext()->setContextProperty("nativeOrientation", nativeOrientation);
qmlRegisterType<GlacierWindowModel>("org.nemomobile.glacier", 1, 0 ,"GlacierWindowModel");
app.setQmlPath("/usr/share/lipstick-glacier-home-qt5/qml/MainScreen.qml");
// Give these to the environment inside the lipstick homescreen
......
......@@ -29,27 +29,41 @@
**
****************************************************************************************/
function rotateObject(obj, r, nr) {
import QtQuick 2.1
import QtQuick.Window 2.1
import org.nemomobile.lipstick 0.1
if (obj.rotation !== r) {
var nativeIsPortrait = ((nr === 0) || (nr === 180))
var isPortrait = ((r === 0) || (r === 180))
Item {
var correction = 0
var isNative=((nativeIsPortrait || isPortrait) && !(nativeIsPortrait && isPortrait)) //xor
//xor
if ((isNative || !nativeIsPortrait) && !(isNative && !nativeIsPortrait)) {
correction = obj.width / 2 - obj.height / 2
}
var diff = Math.abs(r - obj.rotation)
obj.rotation = r
if ((diff === 90) || (diff === 270)) {
console.log("rotateObject swapping w,h")
var w = obj.width
obj.width = obj.height
obj.height = w
QtObject {
id: privateProperties
property int nativeRotation: Screen.angleBetween(nativeOrientation, Screen.primaryOrientation)
property bool nativeIsPortrait: ((nativeRotation === 0) || (nativeRotation === 180))
}
function rotateObject(obj, o) {
var r = Screen.angleBetween(o, Screen.primaryOrientation)
if (obj.rotation !== r) {
var isPortrait = ((r === 0) || (r === 180))
var correction = 0
var isNative=((privateProperties.nativeIsPortrait || isPortrait) && !(privateProperties.nativeIsPortrait && isPortrait)) //xor
var diff = Math.abs(r - obj.rotation)
//xor
if ((isNative || !privateProperties.nativeIsPortrait) && !(isNative && !privateProperties.nativeIsPortrait)) {
correction = obj.width / 2 - obj.height / 2
if (diff === 180)
correction = -correction
}
obj.rotation = r
if ((diff === 90) || (diff === 270)) {
var w = obj.width
obj.width = obj.height
obj.height = w
}
obj.x = correction
obj.y = -correction
}
obj.x = correction
obj.y = -correction
}
}
......@@ -38,7 +38,6 @@ import org.nemomobile.time 1.0
import org.nemomobile.configuration 1.0
import org.nemomobile.lipstick 0.1
import "scripts/desktop.js" as Desktop
import "scripts/rotation.js" as Rotation
Page {
// This is used in the favorites page and in the lock screen
......@@ -71,17 +70,23 @@ Page {
id: statusbar
}
GlacierRotation {
id: glacierRotation
}
orientation: Lipstick.compositor.screenOrientation
onOrientationChanged: {
Rotation.rotateObject(desktop.parent, Screen.angleBetween(orientation,Screen.primaryOrientation), Screen.angleBetween(nativeOrientation, Screen.primaryOrientation))
glacierRotation.rotateObject(desktop.parent, orientation)
}
onParentChanged: {
Rotation.rotateObject(desktop.parent, Screen.angleBetween(nativeOrientation, Screen.primaryOrientation), Screen.angleBetween(nativeOrientation, Screen.primaryOrientation))
glacierRotation.rotateObject(desktop.parent, nativeOrientation)
}
Component.onCompleted: {
Desktop.instance = desktop
Lipstick.compositor.screenOrientation = nativeOrientation
}
function lockscreenVisible() {
......
......@@ -34,7 +34,8 @@ qml.files = qml/MainScreen.qml \
qml/VolumeControl.qml \
qml/BatteryPanel.qml \
qml/CommonPanel.qml \
qml/ShutdownScreen.qml
qml/ShutdownScreen.qml \
qml/GlacierRotation.qml
qmlcompositor.path = /usr/share/lipstick-glacier-home-qt5/qml/compositor
qmlcompositor.files = qml/compositor/WindowWrapperMystic.qml \
......@@ -106,6 +107,6 @@ OTHER_FILES += qml/*.qml \
qml/BatteryPanel.qml \
qml/CommonPanel.qml \
qml/ShutdownScreen.qml \
qml/scripts/rotation.js
qml/GlacierRotation.qml
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment