Commit 88359531 authored by eekkelund's avatar eekkelund

[Lockscreen] DeviceLock: add missing attemps and visual feedback if attemp...

[Lockscreen] DeviceLock: add missing attemps and visual feedback if attemp failed. Add notifications to lockscreen. Add displayOff if lockscreen on for 7sek
parent 50d5cd22
......@@ -14,6 +14,8 @@ Item {
property bool shouldAuthenticate: Lipstick.compositor.visible
&& authenticator.availableMethods !== 0
property int remainingAttempts
onShouldAuthenticateChanged: {
if (shouldAuthenticate) {
DeviceLock.authorization.requestChallenge()
......@@ -36,16 +38,18 @@ Item {
}
}
Authenticator {
id: authenticator
onAuthenticated: {
DeviceLock.unlock(authenticationToken)
Desktop.instance.setLockScreen(false)
Desktop.instance.codepadVisible = false
remainingAttempts = 0
}
onFeedback: {
console.log('### still locked', feedback, attemptsRemaining)
remainingAttempts = attemptsRemaining
animation.start()
}
}
......@@ -53,6 +57,21 @@ Item {
anchors.fill: parent
spacing: Theme.itemSpacingLarge
SequentialAnimation {
id: animation;
SequentialAnimation {
loops: 4
NumberAnimation { target: codePad; property: "anchors.horizontalCenterOffset"; to: 55; duration: 50 }
NumberAnimation { target: codePad; property: "anchors.horizontalCenterOffset"; to: 0; duration: 50 }
}
NumberAnimation { target: codePad; property: "anchors.horizontalCenterOffset"; to: 0; duration: 100 }
}
Label {
font.pixelSize: Theme.fontSizeMedium
width: parent.width
text: remainingAttempts > 0 ? qsTr("Attempts remaining:") + " " + remainingAttempts : ""
anchors.horizontalCenter: parent.horizontalCenter
}
TextField {
id: lockCodeField
anchors.horizontalCenter: parent.horizontalCenter
......@@ -62,6 +81,7 @@ Item {
}
GridLayout {
id: codePad
height: parent.height
width: parent.width
anchors.horizontalCenter: parent.horizontalCenter
......
......@@ -190,7 +190,7 @@ MouseArea {
}
Timer {//Just placeholder to get visual feedback
id:deleteTimer
interval: 5000
interval: 3000
onTriggered: {
iconWrapper.opacity=1.0
enabled = true
......
import QtQuick 2.0
import QtQuick 2.6
import org.nemomobile.lipstick 0.1
import org.nemomobile.devicelock 1.0
import org.nemomobile.configuration 1.0
import "notifications"
Image {
id: lockScreen
source: lockScreenWallpaper.value
fillMode: Image.PreserveAspectCrop
property bool displayOn
ConfigurationValue{
id: lockScreenWallpaper
key: "/home/glacier/lockScreen/wallpaperImage"
......@@ -22,22 +26,78 @@ Image {
right: parent.right
}
}
DeviceLockUI {
id: deviceLockUI
visible: false//DeviceLock.state === DeviceLock.Locked
anchors {
top: clock.bottom
left: parent.left
}
height: parent.height-clock.height
width: parent.width
MouseArea {
id:mouseArea
anchors.fill: parent
}
Connections {
target:Lipstick.compositor
onDisplayOff: {
displayOn = false
displayOffTimer.stop()
}
onDisplayOn:{
displayOn = true
displayOffTimer.stop()
}
}
//visible:
z: 201
Connections {
target: LipstickSettings
onLockscreenVisibleChanged: {
if (lockscreenVisible() && displayOn) {
displayOffTimer.restart()
}
}
}
Timer {
id:displayOffTimer
interval: 7000
onRunningChanged: {
if(running && !displayOn) {
stop()
}
}
onTriggered: {
if(displayOn && lockscreenVisible() && !Lipstick.compositor.gestureOnGoing && !codepad.visible) {
setLockScreen(true)
Lipstick.compositor.setDisplayOff()
}
}
}
MouseArea {
anchors.fill: parent
ListView {
id: notificationColumn
opacity: codePad.visible ? 1 - codePad.opacity : 1
anchors{
top: clock.bottom
topMargin: Theme.itemSpacingHuge
bottom:parent.bottom
bottomMargin: Theme.itemSpacingHuge
left:parent.left
leftMargin: Theme.itemSpacingLarge
right:parent.right
rightMargin: Theme.itemSpacingLarge
}
interactive:false
spacing: 0
model: NotificationListModel {
id: notifmodel
}
delegate: NotificationItem {
enabled:DeviceLock.state !== DeviceLock.Locked
scale: notificationColumn.opacity
transformOrigin: Item.Left
iconSize: Theme.itemHeightMedium
appName.font.pixelSize: Theme.fontSizeSmall
appName.visible: DeviceLock.state !== DeviceLock.Locked
appName.anchors.verticalCenter: appIcon.verticalCenter
appName.anchors.top: null
appBody.font.pixelSize: Theme.fontSizeTiny
appBody.visible: false
appSummary.visible: false
}
}
}
......@@ -46,9 +46,17 @@ Page {
// This is used in the favorites page and in the lock screen
WallClock {
id: wallClock
enabled: true /* XXX: Disable when display is off */
enabled: true
updateFrequency: WallClock.Minute
}
//force refresh
Connections {
target: Lipstick.compositor
onDisplayAboutToBeOn: {
wallClock.enabled = false
wallClock.enabled = true
}
}
// This is used in the lock screen
ConfigurationValue {
id: wallpaperSource
......
......@@ -30,7 +30,6 @@
****************************************************************************************/
import QtQuick 2.6
import org.nemomobile.lipstick 0.1
import QtQuick.Controls 1.4
import QtQuick.Controls.Nemo 1.0
import QtQuick.Controls.Styles.Nemo 1.0
import org.nemomobile.contacts 1.0
......@@ -151,7 +150,6 @@ Item {
filterType: PeopleModel.FilterAll
filterPattern: searchString
requiredProperty: PeopleModel.PhoneNumberRequired
//searchableProperty: root.searchableProperty
}
//Orginal function ** Copyright (C) 2013 Jolla Ltd. ** Contact: Joona Petrell <joona.petrell@jollamobile.com>
......
......@@ -59,7 +59,7 @@ Item {
property int oldY
anchors.fill: row
z: row.z + 10
enabled: !lockscreenVisible()
//enabled: !lockscreenVisible()
onClicked: {
if(oldX != mouseX && oldY !== mouseY && row.childAt(mouseX, mouseY) && row.currentChild !== row.childAt(mouseX, mouseY)) {
row.currentChild = row.childAt(mouseX, mouseY)
......
......@@ -45,6 +45,8 @@ Compositor {
property Item topmostApplicationWindow
property Item topmostAlarmWindow: null
property bool gestureOnGoing
function windowToFront(winId) {
var o = root.windowForId(winId)
var window = null
......@@ -141,6 +143,7 @@ Compositor {
swipeAnimation.stop()
cancelAnimation.stop()
lockAnimation.stop()
gestureOnGoing = true
if (root.appActive) {
state = "swipe"
}
......@@ -176,6 +179,9 @@ Compositor {
// Locks
if (!Desktop.instance.lockscreenVisible()) {
Desktop.instance.setLockScreen(true)
if(gesture == "down") {
setDisplayOff()
}
}
// Brings up codepad, only left and right swipes allowed for it for now
else if (Desktop.instance.lockscreenVisible() && !Desktop.instance.codepad.visible && DeviceLock.state == DeviceLock.Locked && (gesture !== "down" && gesture !== "up")) {
......@@ -193,7 +199,8 @@ Compositor {
cancelAnimation.start()
}
}
}
gestureOnGoing = false
}
// States are for the animations that follow your finger during swipes
states: [
// Swipe state is when app is on and you are swiping it to background or closing it
......
......@@ -6,7 +6,14 @@ MouseArea {
id: notifyArea
height: childrenRect.height
width: rootitem.width
width: parent.width
property alias appIcon: appIcon
property alias appBody: appBody
property alias appName: appName
property alias appSummary: appSummary
property int iconSize: Theme.itemHeightExtraLarge
drag.target: notifyArea
drag.axis: Drag.XAxis
......@@ -54,10 +61,10 @@ MouseArea {
Image {
id: appIcon
height: Theme.itemHeightExtraLarge
width: height
property string defaultIcon: "/usr/share/lipstick-glacier-home-qt5/qml/images/glacier.svg"
height: iconSize
width: iconSize
anchors{
left: parent.left
leftMargin: Theme.itemSpacingLarge
......@@ -78,7 +85,7 @@ MouseArea {
Label {
id: appName
text: modelData.appName
width: (rootitem.width-appIcon.width)-Theme.itemSpacingHuge
width: (parent.width-appIcon.width)-Theme.itemSpacingHuge
color: Theme.textColor
font.pixelSize: Theme.fontSizeMedium
font.capitalization: Font.AllUppercase
......@@ -93,7 +100,7 @@ MouseArea {
Label {
id: appSummary
text: modelData.summary
width: (rootitem.width-appIcon.width)-Theme.itemSpacingHuge
width: (parent.width-appIcon.width)-Theme.itemSpacingHuge
color: Theme.textColor
font.pixelSize: Theme.fontSizeLarge
//font.bold :true
......@@ -109,7 +116,7 @@ MouseArea {
Label {
id: appBody
width: (rootitem.width-appIcon.width)-Theme.itemSpacingHuge
width: (parent.width-appIcon.width)-Theme.itemSpacingHuge
text: modelData.body
color: Theme.textColor
font.pixelSize: Theme.fontSizeMedium
......
......@@ -35,7 +35,9 @@ Item {
}
MouseArea {
id:mouse
anchors.fill: parent
anchors.centerIn: parent
width: parent.width + Theme.itemSpacingSmall
height: parent.height + Theme.itemSpacingSmall
enabled: !lockscreenVisible()
onClicked: parent.clicked()
}
......
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