You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
147 lines
5.1 KiB
147 lines
5.1 KiB
/******************************************************************** |
|
KSld - the KDE Screenlocker Daemon |
|
This file is part of the KDE project. |
|
|
|
Copyright (C) 2011 Martin Gräßlin <mgraesslin@kde.org> |
|
|
|
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.0 |
|
import org.kde.plasma.components 2.0 as PlasmaComponents |
|
import org.kde.plasma.extras 2.0 as PlasmaExtras |
|
import org.kde.kscreenlocker 1.0 |
|
|
|
Item { |
|
property alias switchUserSupported: sessions.switchUserSupported |
|
implicitWidth: theme.mSize(theme.defaultFont).width * 55 |
|
implicitHeight: theme.mSize(theme.defaultFont).height * 25 |
|
signal activateSession() |
|
signal startNewSession() |
|
signal cancel() |
|
Sessions { |
|
id: sessions |
|
} |
|
anchors { |
|
fill: parent |
|
margins: 6 |
|
} |
|
PlasmaExtras.ScrollArea { |
|
anchors { |
|
left: parent.left |
|
right: parent.right |
|
bottom: buttonRow.top |
|
bottomMargin: 5 |
|
} |
|
height: parent.height - explainText.implicitHeight - buttonRow.height - 10 |
|
|
|
ListView { |
|
model: sessions.model |
|
id: userSessionsView |
|
anchors.fill: parent |
|
|
|
delegate: PlasmaComponents.ListItem { |
|
content: PlasmaComponents.Label { |
|
text: i18ndc("kscreenlocker_greet", "thesession name and the location where the session is running (what vt)", "%1 (%2)", session, location) |
|
} |
|
} |
|
highlight: PlasmaComponents.Highlight { |
|
hover: true |
|
width: parent.width |
|
} |
|
focus: true |
|
MouseArea { |
|
anchors.fill: parent |
|
onClicked: userSessionsView.currentIndex = userSessionsView.indexAt(mouse.x, mouse.y) |
|
onDoubleClicked: { |
|
sessions.activateSession(userSessionsView.indexAt(mouse.x, mouse.y)); |
|
activateSession(); |
|
} |
|
} |
|
} |
|
} |
|
|
|
PlasmaComponents.Label { |
|
id: explainText |
|
text: i18nd("kscreenlocker_greet", "The current session will be hidden " + |
|
"and a new login screen or an existing session will be displayed.\n" + |
|
"An F-key is assigned to each session; " + |
|
"F%1 is usually assigned to the first session, " + |
|
"F%2 to the second session and so on. " + |
|
"You can switch between sessions by pressing " + |
|
"Ctrl, Alt and the appropriate F-key at the same time. " + |
|
"Additionally, the KDE Panel and Desktop menus have " + |
|
"actions for switching between sessions.", |
|
7, 8) |
|
wrapMode: Text.Wrap |
|
anchors { |
|
top: parent.top |
|
left: parent.left |
|
right: parent.right |
|
} |
|
} |
|
PlasmaComponents.ButtonRow { |
|
id: buttonRow |
|
exclusive: false |
|
spacing: theme.mSize(theme.defaultFont).width / 2 |
|
property bool showAccel: false |
|
|
|
AccelButton { |
|
id: activateSession |
|
label: i18nd("kscreenlocker_greet", "Activate") |
|
iconSource: "fork" |
|
onClicked: { |
|
sessions.activateSession(userSessionsView.currentIndex); |
|
activateSession(); |
|
} |
|
} |
|
AccelButton { |
|
id: newSession |
|
label: i18nd("kscreenlocker_greet", "Start New Session") |
|
iconSource: "fork" |
|
visible: sessions.startNewSessionSupported |
|
onClicked: { |
|
sessions.startNewSession(); |
|
startNewSession(); |
|
} |
|
} |
|
AccelButton { |
|
id: cancelSession |
|
label: i18nd("kscreenlocker_greet", "Cancel") |
|
iconSource: "dialog-cancel" |
|
onClicked: cancel() |
|
} |
|
anchors.bottom: parent.bottom |
|
anchors.horizontalCenter: userSessionsUI.horizontalCenter |
|
} |
|
|
|
Keys.onPressed: { |
|
var alt = (event.modifiers & Qt.AltModifier); |
|
buttonRow.showAccel = alt; |
|
|
|
if (alt) { |
|
var buttons = [activateSession, newSession, cancelSession]; |
|
for (var b = 0; b < buttons.length; ++b) { |
|
if (event.key == buttons[b].accelKey) { |
|
buttonRow.showAccel = false; |
|
buttons[b].clicked(); |
|
break; |
|
} |
|
} |
|
} |
|
} |
|
|
|
Keys.onReleased: { |
|
buttonRow.showAccel = (event.modifiers & Qt.AltModifier) |
|
} |
|
}
|
|
|