feat(qt): Track info and Album info are selectable and copy basic or full text
Every field of both modals is a QbzSelectableText — artist, label and
musician names stay links. A copy button beside the close cross opens a
flyout: "Copy basic data" puts "{Track} - {Album} - {Artist}" (or
"{Album} - {Artist}") on the clipboard; "Copy full" formats the whole sheet
as plain text — the track's metadata, credits and copyright, or the album's
header plus the ACTIVE tab: credits per track with performers, or the
review. Album credit row heads stay plain because their click expands the
row. The two new strings ship in all eight catalogs.
cc
This commit is contained in:
12 files changed
+331
-156
No files matched your search
@@ -9,6 +9,7 @@
|
||||
// { "role": "PRODUCER", "roleRaw": "Producer", "names": ["A", "B"] }
|
||||
|
||||
import QtQuick
|
||||
import "../controls"
|
||||
import "../theme"
|
||||
|
||||
Column {
|
||||
@@ -33,46 +34,34 @@ Column {
|
||||
width: colW
|
||||
spacing: 6
|
||||
|
||||
Text {
|
||||
QbzSelectableText {
|
||||
width: cc.colW
|
||||
text: cc.cell ? (cc.cell.role || "") : ""
|
||||
color: cc.overAmbient ? "#b3ffffff" : theme.textMuted
|
||||
style: cc.overAmbient ? Text.Raised : Text.Normal
|
||||
styleColor: "#b0000000"
|
||||
font.pixelSize: 11
|
||||
font.weight: theme.weightSemibold
|
||||
font.letterSpacing: 0.5
|
||||
wrapMode: Text.WordWrap
|
||||
raised: cc.overAmbient
|
||||
pixelSize: 11
|
||||
weight: theme.weightSemibold
|
||||
letterSpacing: 0.5
|
||||
}
|
||||
|
||||
Column {
|
||||
spacing: 2
|
||||
Repeater {
|
||||
model: cc.cell ? (cc.cell.names || []) : []
|
||||
delegate: Item {
|
||||
// Selectable AND a link: a click lands on the musician, a drag
|
||||
// selects the name (QbzSelectableText, rich-text anchor).
|
||||
delegate: QbzSelectableText {
|
||||
id: nameRow
|
||||
required property string modelData
|
||||
width: cc.colW
|
||||
height: nameText.implicitHeight
|
||||
Text {
|
||||
id: nameText
|
||||
width: cc.colW
|
||||
text: nameRow.modelData
|
||||
color: nameArea.containsMouse ? cc.accentColor
|
||||
: (cc.overAmbient ? "#f2ffffff" : theme.textPrimary)
|
||||
style: cc.overAmbient ? Text.Raised : Text.Normal
|
||||
styleColor: "#b0000000"
|
||||
font.pixelSize: 14
|
||||
wrapMode: Text.WordWrap
|
||||
}
|
||||
MouseArea {
|
||||
id: nameArea
|
||||
anchors.fill: parent
|
||||
hoverEnabled: true
|
||||
cursorShape: Qt.PointingHandCursor
|
||||
onClicked: cc.nameClicked(nameRow.modelData,
|
||||
cc.cell ? (cc.cell.roleRaw || "") : "")
|
||||
}
|
||||
text: nameRow.modelData
|
||||
color: cc.overAmbient ? "#f2ffffff" : theme.textPrimary
|
||||
linkHref: "musician"
|
||||
linkHoverColor: cc.accentColor
|
||||
raised: cc.overAmbient
|
||||
pixelSize: 14
|
||||
onLinkActivated: cc.nameClicked(nameRow.modelData,
|
||||
cc.cell ? (cc.cell.roleRaw || "") : "")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user