Commit c8a7a3bd authored by Tranter Madi's avatar Tranter Madi

Scroll the truncated song/artist text when long hovering over it

Summary: - When the text is truncated, we could hover over it to read the full text

Test Plan:
Everything works well

{F8084388}

Reviewers: #plasma, #vdg, ndavis, ngraham

Reviewed By: #vdg, ndavis, ngraham

Subscribers: ngraham, broulik, cblack, ndavis, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D27149
parent 5be0b548
/*
* Copyright 2020 by Tranter Madi <trmdi@yandex.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Library General Public License as
* published by the Free Software Foundation; either version 2, 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 Library General Public License for more details
*
* You should have received a copy of the GNU Library General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA.
*/
import QtQuick 2.6
MouseArea {
id: textWrapper
default property Text textItem
clip: textItem.elide === Text.ElideNone
hoverEnabled: true
onContainsMouseChanged: {
if (!containsMouse) {
state = ""
}
}
Timer {
id: timer
interval: 500
running: textWrapper.containsMouse
onTriggered: {
if (textWrapper.width < textItem.implicitWidth) {
textWrapper.state = "ShowRight"
}
}
}
states: [
State {
name: ""
PropertyChanges { target: textItem; x: 0 }
},
State {
name: "ShowRight"
PropertyChanges { target: textItem; x: textWrapper.width - textItem.implicitWidth }
}
]
transitions: Transition {
to: "ShowRight"
NumberAnimation {
target: textItem; properties: "x";
easing.type: Easing.Linear;
duration: Math.abs(textItem.implicitWidth - textWrapper.width)*25
}
}
}
......@@ -255,24 +255,43 @@ ColumnLayout {
Layout.fillWidth: true
spacing: 0
PlasmaComponents3.Label {
ScrollableTextWrapper {
id: songTextWrapper
Layout.fillWidth: true
lineHeight: 1
maximumLineCount: artistText.visible? 1 : 2
wrapMode: artistText.visible? Text.NoWrap : Text.Wrap
elide: Text.ElideRight
text: track || ""
}
Layout.preferredHeight: songText.height
PlasmaComponents3.Label {
id: songText
parent: songTextWrapper
width: parent.width
height: undefined
lineHeight: 1
maximumLineCount: artistText.visible? 1 : 2
wrapMode: Text.NoWrap
elide: parent.state ? Text.ElideNone : Text.ElideRight
text: track || ""
}
}
ScrollableTextWrapper {
id: artistTextWrapper
PlasmaExtras.DescriptiveLabel {
id: artistText
Layout.fillWidth: true
wrapMode: Text.NoWrap
lineHeight: 1
elide: Text.ElideRight
text: artist || ""
visible: text != ""
font.pointSize: theme.smallestFont.pointSize
Layout.preferredHeight: artistText.height
visible: artistText.text !== ""
PlasmaExtras.DescriptiveLabel {
id: artistText
parent: artistTextWrapper
width: parent.width
height: undefined
wrapMode: Text.NoWrap
lineHeight: 1
elide: parent.state ? Text.ElideNone : Text.ElideRight
text: artist || ""
font.pointSize: theme.smallestFont.pointSize
}
}
}
......
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