mirror of
https://invent.kde.org/marcoa/shift-shell.git
synced 2026-04-26 14:23:09 +00:00
dialer
This commit is contained in:
parent
e601a8200b
commit
45977acb2e
4 changed files with 204 additions and 0 deletions
41
shell/contents/components/DialerButton.qml
Normal file
41
shell/contents/components/DialerButton.qml
Normal file
|
|
@ -0,0 +1,41 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
Text {
|
||||||
|
width: parent.width / parent.columns
|
||||||
|
height: parent.buttonHeight
|
||||||
|
horizontalAlignment: Qt.AlignHCenter
|
||||||
|
verticalAlignment: Qt.AlignVCenter
|
||||||
|
font.pixelSize: Math.floor((width - (units.largeSpacing)) / 2)
|
||||||
|
property alias sub: longHold.text;
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
addNumber(parent.text);
|
||||||
|
}
|
||||||
|
|
||||||
|
onPressAndHold: {
|
||||||
|
if (longHold.visible) {
|
||||||
|
addNumber(longHold.text);
|
||||||
|
} else {
|
||||||
|
addNumber(parent.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: longHold
|
||||||
|
visible: text.length > 0
|
||||||
|
opacity: 0.7
|
||||||
|
height: parent.height
|
||||||
|
width: parent.width / 3
|
||||||
|
verticalAlignment: Qt.AlignVCenter
|
||||||
|
anchors {
|
||||||
|
top: parent.top
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
|
||||||
|
font.pixelSize: parent.pixelSize * .8
|
||||||
|
}
|
||||||
|
}
|
||||||
37
shell/contents/components/DialerIconButton.qml
Normal file
37
shell/contents/components/DialerIconButton.qml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width / parent.columns
|
||||||
|
height: parent.buttonHeight
|
||||||
|
property var callback
|
||||||
|
property string text
|
||||||
|
property string sub
|
||||||
|
property alias source: icon.source
|
||||||
|
|
||||||
|
PlasmaCore.IconItem {
|
||||||
|
id: icon
|
||||||
|
width: units.iconSizes.medium
|
||||||
|
height: width
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
if (callback) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
addNumber(parent.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onPressAndHold: {
|
||||||
|
if (longHold.visible) {
|
||||||
|
addNumber(longHold.text);
|
||||||
|
} else {
|
||||||
|
addNumber(parent.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
37
shell/contents/components/DialerSvgButton.qml
Normal file
37
shell/contents/components/DialerSvgButton.qml
Normal file
|
|
@ -0,0 +1,37 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
|
||||||
|
Item {
|
||||||
|
width: parent.width / parent.columns
|
||||||
|
height: parent.buttonHeight
|
||||||
|
property var callback
|
||||||
|
property string text
|
||||||
|
property string sub
|
||||||
|
property alias svg: icon.svg
|
||||||
|
|
||||||
|
PlasmaCore.SvgItem{
|
||||||
|
id: icon
|
||||||
|
width: units.iconSizes.medium
|
||||||
|
height: width
|
||||||
|
anchors.centerIn: parent
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
if (callback) {
|
||||||
|
callback();
|
||||||
|
} else {
|
||||||
|
addNumber(parent.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
onPressAndHold: {
|
||||||
|
if (longHold.visible) {
|
||||||
|
addNumber(longHold.text);
|
||||||
|
} else {
|
||||||
|
addNumber(parent.text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
89
shell/contents/views/Dialer.qml
Normal file
89
shell/contents/views/Dialer.qml
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
import QtQuick 2.0
|
||||||
|
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||||
|
import "../components"
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: dialer
|
||||||
|
anchors.fill: parent;
|
||||||
|
color: "white"
|
||||||
|
opacity: 0.5
|
||||||
|
|
||||||
|
property bool calling: false // needs to be connected to a system service
|
||||||
|
property bool enableButtons: calling
|
||||||
|
|
||||||
|
function addNumber(number) {
|
||||||
|
status.text = status.text + number
|
||||||
|
}
|
||||||
|
|
||||||
|
function call() {
|
||||||
|
if (!calling) {
|
||||||
|
console.log("Calling: " + status.text);
|
||||||
|
} else {
|
||||||
|
console.log("Hanging up: " + status.text);
|
||||||
|
status.text = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
dialer.calling = !dialer.calling;
|
||||||
|
}
|
||||||
|
|
||||||
|
function fromContacts() {
|
||||||
|
console.log("Should get from contacts!");
|
||||||
|
status.text = "+41 76 555 5555"
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: status
|
||||||
|
height: parent.height / 6
|
||||||
|
width: parent.width
|
||||||
|
horizontalAlignment: Qt.AlignRight
|
||||||
|
verticalAlignment: Qt.AlignVCenter
|
||||||
|
font.pixelSize: one.font.pixelSize
|
||||||
|
}
|
||||||
|
|
||||||
|
Grid {
|
||||||
|
id: pad
|
||||||
|
columns: 3
|
||||||
|
spacing: 0
|
||||||
|
property int buttonHeight: height / 5
|
||||||
|
anchors {
|
||||||
|
top: status.bottom
|
||||||
|
bottom: parent.bottom
|
||||||
|
left: parent.left
|
||||||
|
right: parent.right
|
||||||
|
}
|
||||||
|
|
||||||
|
height: parent.height - status.height
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
DialerButton { id: one; text: "1" }
|
||||||
|
DialerButton { text: "2" }
|
||||||
|
DialerButton { text: "3" }
|
||||||
|
|
||||||
|
DialerButton { text: "4" }
|
||||||
|
DialerButton { text: "5" }
|
||||||
|
DialerButton { text: "6" }
|
||||||
|
|
||||||
|
DialerButton { text: "7" }
|
||||||
|
DialerButton { text: "8" }
|
||||||
|
DialerButton { text: "9" }
|
||||||
|
|
||||||
|
DialerButton { text: "*"; }
|
||||||
|
DialerButton { text: "0"; sub: "+"; }
|
||||||
|
DialerButton { text: "#" }
|
||||||
|
|
||||||
|
DialerIconButton {
|
||||||
|
source: "im-user"
|
||||||
|
callback: fromContacts
|
||||||
|
}
|
||||||
|
DialerIconButton {
|
||||||
|
id: callButton
|
||||||
|
source: dialer.calling ? "call-stop" : "call-start"
|
||||||
|
callback: call
|
||||||
|
}
|
||||||
|
DialerIconButton {
|
||||||
|
source: "edit-clear"
|
||||||
|
callback: function() { status.text = status.text.substr(0, status.text.length - 1); }
|
||||||
|
}
|
||||||
|
//DialerSvgButton { svg: PlasmaCore.Svg { imagePath: "edit-clear.svg" } }
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue