Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Plasma
Plasma Mobile
Commits
b9fb0516
Commit
b9fb0516
authored
Oct 31, 2019
by
Nicolas Fella
Committed by
Bhushan Shah
Oct 31, 2019
Browse files
Rewrite the lockscreen
This simplifies the lockscreen code.
parent
7d12429e
Changes
3
Hide whitespace changes
Inline
Side-by-side
look-and-feel/contents/
components
/InfoPane.qml
→
look-and-feel/contents/
lockscreen
/InfoPane.qml
View file @
b9fb0516
...
...
@@ -30,7 +30,7 @@ ColumnLayout {
text
:
Qt
.
formatTime
(
timeSource
.
data
[
"
Local
"
][
"
DateTime
"
])
//we fill the width then align the text so that we can make the text shrink to fit
Layout.fillWidth
:
true
horizontalAlignment
:
Text
.
Align
Right
horizontalAlignment
:
Text
.
Align
HCenter
font.weight
:
Font
.
DemiBold
fontSizeMode
:
Text
.
HorizontalFit
...
...
@@ -39,11 +39,11 @@ ColumnLayout {
PlasmaComponents.Label
{
text
:
Qt
.
formatDate
(
timeSource
.
data
[
"
Local
"
][
"
DateTime
"
],
Qt
.
DefaultLocaleLongDate
);
Layout.alignment
:
Qt
.
Align
Right
Layout.alignment
:
Qt
.
Align
HCenter
}
RowLayout
{
Layout.alignment
:
Qt
.
Align
Right
Layout.alignment
:
Qt
.
Align
HCenter
visible
:
pmSource
.
data
[
"
Battery
"
][
"
Has Cumulative
"
]
PW.BatteryIcon
{
...
...
@@ -69,7 +69,7 @@ ColumnLayout {
return
i18nd
(
"
plasma_lookandfeel_org.kde.lookandfeel
"
,
"
%1% battery remaining
"
,
battery
.
percent
)
}
}
Layout.alignment
:
Qt
.
Align
Right
Layout.alignment
:
Qt
.
Align
HCenter
wrapMode
:
Text
.
Wrap
}
}
...
...
look-and-feel/contents/lockscreen/LockScreen.qml
View file @
b9fb0516
...
...
@@ -19,76 +19,107 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
import
QtQuick
2.0
import
QtQuick
.
Controls
1.1
import
QtQuick
.
Layouts
1.1
import
org
.
kde
.
plasma
.
components
2.0
as
PlasmaComponents
import
org
.
kde
.
plasma
.
core
2.0
as
PlasmaCore
import
org
.
kde
.
plasma
.
private
.
sessions
2
.0
import
org
.
kde
.
plasma
.
workspace
.
keyboardlayout
1
.0
import
"
../components
"
Image
{
id
:
root
property
bool
viewVisible
:
false
property
bool
debug
:
false
property
string
notification
property
Item
userSelect
:
null
property
int
interfaceVersion
:
org_kde_plasma_screenlocker_greeter_interfaceVersion
?
org_kde_plasma_screenlocker_greeter_interfaceVersion
:
0
signal
clearPassword
()
PlasmaCore.ColorScope
{
id
:
block
colorGroup
:
PlasmaCore
.
Theme
.
ComplementaryColorGroup
anchors.fill
:
parent
source
:
backgroundPath
||
"
../components/artwork/background.png
"
fillMode
:
Image
.
PreserveAspectCrop
asynchronous
:
true
Rectangle
{
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
color
:
PlasmaCore
.
ColorScope
.
backgroundColor
opacity
:
0.8
height
:
infoPane
.
height
+
units
.
largeSpacing
*
2
}
onStatusChanged
:
{
if
(
status
==
Image
.
Error
)
{
source
=
"
../components/artwork/background.png
"
;
}
InfoPane
{
id
:
infoPane
anchors.top
:
parent
.
top
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
anchors.topMargin
:
units
.
largeSpacing
}
LayoutMirroring.enabled
:
Qt
.
application
.
layoutDirection
===
Qt
.
RightToLeft
LayoutMirroring.childrenInherit
:
true
Rectangle
{
anchors.bottom
:
parent
.
bottom
anchors.left
:
parent
.
left
anchors.right
:
parent
.
right
color
:
PlasmaCore
.
ColorScope
.
backgroundColor
opacity
:
0.8
height
:
mainLayout
.
height
+
units
.
largeSpacing
*
2
}
Connections
{
target
:
authenticator
onFailed
:
{
root
.
notification
=
i18nd
(
"
plasma_lookandfeel_org.kde.lookandfeel
"
,
"
Unlocking failed
"
);
}
onGraceLockedChanged
:
{
if
(
!
authenticator
.
graceLocked
)
{
root
.
notification
=
""
;
root
.
clearPassword
();
}
}
onMessage
:
{
root
.
notification
=
msg
;
ColumnLayout
{
id
:
mainLayout
anchors
{
left
:
parent
.
left
right
:
parent
.
right
bottom
:
parent
.
bottom
bottomMargin
:
units
.
largeSpacing
}
onError
:
{
root
.
notification
=
err
;
}
}
spacing
:
units
.
largeSpacing
RowLayout
{
Layout.alignment
:
Qt
.
AlignHCenter
SessionsModel
{
id
:
sessionsModel
}
PlasmaComponents.TextField
{
id
:
passwordInput
placeholderText
:
i18nd
(
"
plasma_lookandfeel_org.kde.lookandfeel
"
,
"
Password
"
)
echoMode
:
TextInput
.
Password
enabled
:
!
authenticator
.
graceLocked
onAccepted
:
actionButton
.
clicked
(
null
)
focus
:
false
PlasmaCore.DataSource
{
id
:
keystateSource
engine
:
"
keystate
"
connectedSources
:
"
Caps Lock
"
}
onVisibleChanged
:
{
if
(
visible
)
{
forceActiveFocus
();
}
text
=
""
;
}
onTextChanged
:
{
if
(
text
==
""
)
{
clearTimer
.
stop
();
}
else
{
clearTimer
.
restart
();
}
}
StackView
{
id
:
stackView
anchors.fill
:
parent
Timer
{
id
:
clearTimer
interval
:
30000
repeat
:
false
onTriggered
:
{
passwordInput
.
text
=
""
;
}
}
}
initialItem
:
Loader
{
active
:
root
.
viewVisible
source
:
"
MainBlock.qml
"
DialerIconButton
{
source
:
"
edit-clear
"
callback
:
function
()
{
if
(
passwordInput
.
text
.
length
>
0
)
{
passwordInput
.
text
=
passwordInput
.
text
.
substr
(
0
,
passwordInput
.
text
.
length
-
1
);
}
}
}
}
}
Component.onCompleted
:
{
// version support checks
if
(
root
.
interfaceVersion
<
1
)
{
// ksmserver of 5.4, with greeter of 5.5
root
.
viewVisible
=
true
;
Dialer
{
id
:
dialer
Layout.fillWidth
:
true
}
PlasmaComponents.Button
{
id
:
actionButton
Layout.alignment
:
Qt
.
AlignHCenter
Layout.minimumWidth
:
passwordInput
.
width
text
:
i18n
(
"
Unlock
"
)
enabled
:
!
authenticator
.
graceLocked
onClicked
:
authenticator
.
tryUnlock
(
passwordInput
.
text
);
}
}
}
look-and-feel/contents/lockscreen/MainBlock.qml
deleted
100644 → 0
View file @
7d12429e
/********************************************************************
This file is part of the KDE project.
Copyright (C) 2014 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*********************************************************************/
import
QtQuick
2.5
import
QtQuick
.
Layouts
1.1
import
QtQuick
.
Controls
1.1
import
org
.
kde
.
plasma
.
components
2.0
as
PlasmaComponents
import
org
.
kde
.
plasma
.
core
2.0
as
PlasmaCore
import
org
.
kde
.
plasma
.
workspace
.
keyboardlayout
1.0
import
"
../components
"
PlasmaCore.ColorScope
{
id
:
block
colorGroup
:
PlasmaCore
.
Theme
.
ComplementaryColorGroup
anchors.fill
:
parent
Component.onCompleted
:
appearAnimation
.
running
=
true
;
SequentialAnimation
{
id
:
appearAnimation
ParallelAnimation
{
YAnimator
{
target
:
topPanel
from
:
-
topPanel
.
height
to
:
0
duration
:
units
.
longDuration
}
YAnimator
{
target
:
bottomPanel
from
:
block
.
height
to
:
block
.
height
-
bottomPanel
.
height
duration
:
units
.
longDuration
}
}
ScriptAction
{
script
:
{
topPanel
.
anchors
.
top
=
block
.
top
;
bottomPanel
.
anchors
.
bottom
=
block
.
bottom
;
}
}
}
Item
{
id
:
topPanel
y
:
-
height
anchors
{
left
:
parent
.
left
right
:
parent
.
right
}
height
:
infoPane
.
height
+
units
.
largeSpacing
*
2
Rectangle
{
anchors.fill
:
parent
color
:
PlasmaCore
.
ColorScope
.
backgroundColor
opacity
:
0.8
}
InfoPane
{
id
:
infoPane
anchors.centerIn
:
parent
}
}
Item
{
id
:
bottomPanel
height
:
mainLayout
.
height
+
units
.
largeSpacing
*
2
anchors
{
left
:
parent
.
left
right
:
parent
.
right
}
y
:
parent
.
height
Rectangle
{
anchors.fill
:
parent
color
:
PlasmaCore
.
ColorScope
.
backgroundColor
opacity
:
0.8
}
function
unlockFunction
()
{
authenticator
.
tryUnlock
(
passwordInput
.
text
);
}
ColumnLayout
{
id
:
mainLayout
anchors
{
left
:
parent
.
left
right
:
parent
.
right
verticalCenter
:
parent
.
verticalCenter
}
spacing
:
units
.
largeSpacing
RowLayout
{
anchors.horizontalCenter
:
parent
.
horizontalCenter
PlasmaComponents.TextField
{
id
:
passwordInput
placeholderText
:
i18nd
(
"
plasma_lookandfeel_org.kde.lookandfeel
"
,
"
Password
"
)
echoMode
:
TextInput
.
Password
enabled
:
!
authenticator
.
graceLocked
onAccepted
:
actionButton
.
clicked
(
null
)
focus
:
false
onVisibleChanged
:
{
if
(
visible
)
{
forceActiveFocus
();
}
text
=
""
;
}
onTextChanged
:
{
if
(
text
==
""
)
{
clearTimer
.
stop
();
}
else
{
clearTimer
.
restart
();
}
}
Timer
{
id
:
clearTimer
interval
:
30000
repeat
:
false
onTriggered
:
{
passwordInput
.
text
=
""
;
}
}
}
DialerIconButton
{
source
:
"
edit-clear
"
callback
:
function
()
{
if
(
passwordInput
.
text
.
length
>
0
)
{
passwordInput
.
text
=
passwordInput
.
text
.
substr
(
0
,
passwordInput
.
text
.
length
-
1
);
}
}
}
Connections
{
target
:
root
onClearPassword
:
{
passwordInput
.
selectAll
();
passwordInput
.
forceActiveFocus
();
}
}
}
Dialer
{
id
:
dialer
Layout.fillWidth
:
true
}
PlasmaComponents.Button
{
id
:
actionButton
Layout.alignment
:
Qt
.
AlignHCenter
Layout.minimumWidth
:
passwordInput
.
width
text
:
i18n
(
"
Unlock
"
)
enabled
:
!
authenticator
.
graceLocked
onClicked
:
{
bottomPanel
.
unlockFunction
();
}
}
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment