Git commit 5f2fa8da92a69f3e30bfbcb3572e24ea8f24fff4 by Marco Martin. Committed on 31/01/2014 at 22:02. Pushed by mart into branch 'mart/AppletAttached'. Seek ui M +61 -38 plasma/generic/applets/mediacontroller/contents/ui/ExpandedR= epresentation.qml M +1 -2 plasma/generic/applets/mediacontroller/contents/ui/main.qml M +2 -2 plasma/generic/dataengines/mpris2/playeractionjob.cpp http://commits.kde.org/kde-workspace/5f2fa8da92a69f3e30bfbcb3572e24ea8f24ff= f4 diff --git a/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRep= resentation.qml b/plasma/generic/applets/mediacontroller/contents/ui/Expand= edRepresentation.qml index 23d5d7b..fe131f8 100644 --- a/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresenta= tion.qml +++ b/plasma/generic/applets/mediacontroller/contents/ui/ExpandedRepresenta= tion.qml @@ -23,7 +23,7 @@ import org.kde.plasma.core 2.0 as PlasmaCore import org.kde.plasma.components 2.0 as PlasmaComponents import org.kde.plasma.extras 2.0 as PlasmaExtras = -Item { +ColumnLayout { id: expandedRepresentation = Layout.minimumWidth: Layout.minimumHeight * 1.333 @@ -33,76 +33,98 @@ Item { = property int controlSize: Math.min(height, width) / 4 = - anchors { - margins: units.largeSpacing - //fill: parent - } - + //anchors.margins: units.largeSpacing //Rectangle { color: "orange"; anchors.fill: parent } = - PlasmaExtras.Heading { - id: song - level: 3 - opacity: 0.6 + RowLayout { + id: titleRow + spacing: units.largeSpacing anchors { left: parent.left top: parent.top right: parent.right } - elide: Text.ElideRight - text: root.track =3D=3D "" ? i18n("No media playing") : root.track + Image { + source: mpris2Source.data[mpris2Source.last].Metadata["mpris:a= rtUrl"] + Layout.preferredHeight: Math.min(expandedRepresentation.height= /2, sourceSize.height) + Layout.preferredWidth: Layout.preferredHeight + visible: status =3D=3D Image.Ready + } + Column { + Layout.fillWidth: true + anchors.top: parent.top + spacing: units.largeSpacing + PlasmaExtras.Heading { + id: song + anchors { + left: parent.left + right: parent.right + } + level: 3 + opacity: 0.6 + + elide: Text.ElideRight + text: root.track =3D=3D "" ? i18n("No media playing") : ro= ot.track + } + + PlasmaExtras.Heading { + id: artist + anchors { + left: parent.left + right: parent.right + } + level: 4 + opacity: 0.3 + + elide: Text.ElideRight + text: root.noPlayer ? "" : root.artist + } + } } = - PlasmaExtras.Heading { - id: artist - level: 4 - opacity: 0.3 + PlasmaComponents.Slider { + z: 999 + maximumValue: mpris2Source.data[mpris2Source.last].Metadata["mpris= :length"] + value: mpris2Source.data[mpris2Source.last].Position anchors { - top: song.bottom - topMargin: units.smallSpacing left: parent.left right: parent.right } - elide: Text.ElideRight - text: root.noPlayer ? "" : root.artist + onValueChanged: { + if (pressed) { + var service =3D mpris2Source.serviceForSource(mpris2Source= .last); + var operation =3D service.operationDescription("Seek"); + operation.microseconds =3D value + service.startOperationCall(operation); + } + } } - Item { = + Item { + Layout.fillHeight: true anchors { - top: artist.bottom - //topMargin: (parent.height - artist.height - song.height - ro= ot.controlsSize) / 2 - bottom: parent.bottom - //bottom: parent.bottom - //horizontalCenter: parent.horizontalCenter left: parent.left right: parent.right } + + Row { id: playerControls property int controlsSize: theme.mSize(theme.defaultFont).heig= ht * 3 = //Rectangle { color: "orange"; anchors.fill: parent } = - anchors { - //top: artist.bottom - //topMargin: (parent.height - artist.height - song.height = - root.controlsSize) / 2 - verticalCenter: parent.verticalCenter - //bottom: parent.bottom - horizontalCenter: parent.horizontalCenter - //left: parent.left - } - - height: root.controlsSize - //height: 20 - width: (root.controlsSize * 3) + (units.largeSpacing * 2) + anchors.centerIn: parent spacing: units.largeSpacing = MediaControl { + anchors.verticalCenter: parent.verticalCenter source: "media-skip-backward" onTriggered: root.previous(); } = MediaControl { + width: expandedRepresentation.controlSize * 1.5 source: root.state =3D=3D "playing" ? "media-playback-paus= e" : "media-playback-start" onTriggered: { print("Clicked" + source + " " + root.state); @@ -115,6 +137,7 @@ Item { } = MediaControl { + anchors.verticalCenter: parent.verticalCenter source: "media-skip-forward" onTriggered: root.next(); } diff --git a/plasma/generic/applets/mediacontroller/contents/ui/main.qml b/= plasma/generic/applets/mediacontroller/contents/ui/main.qml index c06c44a..a793f09 100644 --- a/plasma/generic/applets/mediacontroller/contents/ui/main.qml +++ b/plasma/generic/applets/mediacontroller/contents/ui/main.qml @@ -32,7 +32,6 @@ Item { property string playerIcon: "" = = - property int baseSize: theme.mSize(theme.defaultFont).height property bool noPlayer: true = Plasmoid.switchWidth: units.gridUnit * 10 @@ -46,7 +45,7 @@ Item { id: mpris2Source engine: "mpris2" connectedSources: sources - interval: 0 + interval: 800 property string last onSourceAdded: { //print("XXX source added: " + source); diff --git a/plasma/generic/dataengines/mpris2/playeractionjob.cpp b/plasma= /generic/dataengines/mpris2/playeractionjob.cpp index d5ffcc0..81fdbdd 100644 --- a/plasma/generic/dataengines/mpris2/playeractionjob.cpp +++ b/plasma/generic/dataengines/mpris2/playeractionjob.cpp @@ -64,7 +64,7 @@ void PlayerActionJob::start() || operation =3D=3D QLatin1String("Previous")) { listenToCall(m_controller->playerInterface()->asyncCall(operation)= ); } else if (operation =3D=3D "Seek") { - if (parameters().value("microseconds").type() =3D=3D QVariant::Lon= gLong) { + if (parameters().value("microseconds").canConvert()) { listenToCall(m_controller->playerInterface()->Seek(parameters(= )["microseconds"].toLongLong())); } else { setErrorText("microseconds"); @@ -72,7 +72,7 @@ void PlayerActionJob::start() emitResult(); } } else if (operation =3D=3D "SetPosition") { - if (parameters().value("microseconds").type() =3D=3D QVariant::Lon= gLong) { + if (parameters().value("microseconds").canConvert()) { listenToCall(m_controller->playerInterface()->SetPosition( m_controller->trackId(), parameters()["microseconds"].toLongLong()));