mirror of https://github.com/KDE/kasts.git
Work on EntryList qml (WIP)
This commit is contained in:
parent
e092354696
commit
df9dd521f3
|
@ -19,22 +19,40 @@ Kirigami.SwipeListItem {
|
||||||
asynchronous: true
|
asynchronous: true
|
||||||
source: entry.image === "" ? "rss" : "file://"+Fetcher.image(entry.image)
|
source: entry.image === "" ? "rss" : "file://"+Fetcher.image(entry.image)
|
||||||
fillMode: Image.PreserveAspectFit
|
fillMode: Image.PreserveAspectFit
|
||||||
property int size: Kirigami.Units.iconSizes.medium
|
property int size: Kirigami.Units.gridUnit * 3
|
||||||
Layout.maximumHeight: size
|
Layout.maximumHeight: size
|
||||||
Layout.maximumWidth: size
|
Layout.maximumWidth: size
|
||||||
sourceSize.width: size
|
sourceSize.width: size
|
||||||
sourceSize.height: size
|
sourceSize.height: size
|
||||||
|
Layout.rightMargin: Kirigami.Units.smallSpacing
|
||||||
}
|
}
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
spacing: 0
|
spacing: 0
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.alignment: Qt.AlignVCenter
|
Layout.alignment: Qt.AlignVCenter
|
||||||
|
RowLayout{
|
||||||
|
Kirigami.Icon {
|
||||||
|
Layout.maximumHeight: 0.7 * supertitle.implicitHeight
|
||||||
|
Layout.maximumWidth: 0.7 * supertitle.implicitHeight
|
||||||
|
source: "source-playlist"
|
||||||
|
visible: entry.queueStatus
|
||||||
|
opacity: (entry.read) ? 0.4 : 0.7
|
||||||
|
}
|
||||||
|
Controls.Label {
|
||||||
|
id: supertitle
|
||||||
|
text: (entry.queueStatus ? "· " : "") + entry.updated.toLocaleDateString(Qt.locale(), Locale.NarrowFormat) + (entry.enclosure ? ( entry.enclosure.size !== 0 ? " · " + Math.floor(entry.enclosure.size/(1024*1024)) + "MB" : "") : "" )
|
||||||
|
Layout.fillWidth: true
|
||||||
|
elide: Text.ElideRight
|
||||||
|
font: Kirigami.Theme.smallFont
|
||||||
|
opacity: (entry.read) ? 0.4 : 0.7
|
||||||
|
}
|
||||||
|
}
|
||||||
Controls.Label {
|
Controls.Label {
|
||||||
text: entry.title
|
text: entry.title
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
font.weight: entry.read ? Font.Normal : Font.Bold
|
font.weight: Font.Normal
|
||||||
opacity: 1
|
opacity: (entry.read) ? 0.6 : 1
|
||||||
}
|
}
|
||||||
Loader {
|
Loader {
|
||||||
sourceComponent: entry.enclosure && entry.enclosure.status === Enclosure.Downloading ? downloadProgress : subtitle
|
sourceComponent: entry.enclosure && entry.enclosure.status === Enclosure.Downloading ? downloadProgress : subtitle
|
||||||
|
@ -42,11 +60,11 @@ Kirigami.SwipeListItem {
|
||||||
Component {
|
Component {
|
||||||
id: subtitle
|
id: subtitle
|
||||||
Controls.Label {
|
Controls.Label {
|
||||||
text: entry.updated.toLocaleString(Qt.locale(), Locale.ShortFormat) + (entry.authors.length === 0 ? "" : " " + i18nc("by <author(s)>", "by") + " " + entry.authors[0].name)
|
text: (Math.floor(entry.enclosure.duration/3600) < 10 ? "0" : "") + Math.floor(entry.enclosure.duration/3600) + ":" + (Math.floor(entry.enclosure.duration/60) % 60 < 10 ? "0" : "") + Math.floor(entry.enclosure.duration/60) % 60 + ":" + (Math.floor(entry.enclosure.duration) % 60 < 10 ? "0" : "") + Math.floor(entry.enclosure.duration) % 60
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
font: Kirigami.Theme.smallFont
|
font: Kirigami.Theme.smallFont
|
||||||
opacity: entry.read ? 0.7 : 0.9
|
opacity: (entry.read) ? 0.4 : 0.7
|
||||||
visible: !downloadProgress.visible
|
visible: !downloadProgress.visible
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
import QtQuick 2.14
|
import QtQuick 2.14
|
||||||
import QtQuick.Controls 2.14 as Controls
|
import QtQuick.Controls 2.14 as Controls
|
||||||
import QtQuick.Layouts 1.14
|
import QtQuick.Layouts 1.14
|
||||||
|
import QtGraphicalEffects 1.15
|
||||||
|
|
||||||
import org.kde.kirigami 2.12 as Kirigami
|
import org.kde.kirigami 2.12 as Kirigami
|
||||||
|
|
||||||
|
@ -77,9 +78,88 @@ Kirigami.ScrollablePage {
|
||||||
sourceComponent: entryListDelegate
|
sourceComponent: entryListDelegate
|
||||||
}
|
}
|
||||||
|
|
||||||
onOriginYChanged: contentY = originY
|
onOriginYChanged: contentY = originY // Why is this needed?
|
||||||
|
|
||||||
header: ColumnLayout {
|
headerPositioning: ListView.OverlayHeader
|
||||||
|
header: Item {
|
||||||
|
//anchors.top: parent.top
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.left: parent.left
|
||||||
|
height: Kirigami.Units.gridUnit * 12
|
||||||
|
MouseArea {
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked: {
|
||||||
|
while(pageStack.depth > 2)
|
||||||
|
pageStack.pop()
|
||||||
|
pageStack.push("qrc:/FeedDetailsPage.qml", {"feed": feed})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Image {
|
||||||
|
id: backgroundimage
|
||||||
|
source: page.feed.image === "" ? "rss" : "file://"+Fetcher.image(page.feed.image)
|
||||||
|
fillMode: Image.PreserveAspectCrop
|
||||||
|
anchors.fill: parent
|
||||||
|
asynchronous: true
|
||||||
|
}
|
||||||
|
GaussianBlur {
|
||||||
|
id: blur
|
||||||
|
anchors.fill: backgroundimage
|
||||||
|
source: backgroundimage
|
||||||
|
radius: 12
|
||||||
|
samples: 16
|
||||||
|
deviation: 6
|
||||||
|
}
|
||||||
|
ColorOverlay {
|
||||||
|
anchors.fill: blur
|
||||||
|
source: blur
|
||||||
|
color:"#87000000" //RGBA, but first value is actually the alpha channel
|
||||||
|
}
|
||||||
|
RowLayout {
|
||||||
|
property int size: Kirigami.Units.gridUnit * 7
|
||||||
|
property int margin: Kirigami.Units.gridUnit * 2
|
||||||
|
height: size
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.leftMargin: margin
|
||||||
|
anchors.rightMargin: margin
|
||||||
|
anchors.bottomMargin: margin
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: frontimage
|
||||||
|
source: page.feed.image === "" ? "rss" : "file://"+Fetcher.image(page.feed.image)
|
||||||
|
Layout.maximumHeight: parent.size
|
||||||
|
Layout.maximumWidth: parent.size
|
||||||
|
asynchronous: true
|
||||||
|
}
|
||||||
|
ColumnLayout {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
Layout.fillHeight: true
|
||||||
|
Layout.leftMargin: parent.margin/2
|
||||||
|
Controls.Label {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
text: page.feed.name
|
||||||
|
font.pointSize: 18
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
color: "white"
|
||||||
|
opacity: 1
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
Controls.Label {
|
||||||
|
Layout.fillWidth: true
|
||||||
|
text: page.feed.authors.length === 0 ? "" : i18nc("by <author(s)>", "by") + " " + page.feed.authors[0].name
|
||||||
|
font.pointSize: 14
|
||||||
|
horizontalAlignment: Text.AlignLeft
|
||||||
|
color: "white"
|
||||||
|
opacity: 1
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* ColumnLayout {
|
||||||
width: parent.width
|
width: parent.width
|
||||||
spacing: 0
|
spacing: 0
|
||||||
|
|
||||||
|
@ -122,6 +202,6 @@ Kirigami.ScrollablePage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue