166 lines
5.2 KiB
QML
166 lines
5.2 KiB
QML
|
import QtQuick 2.0
|
||
|
import Sailfish.Silica 1.0
|
||
|
import QtGraphicalEffects 1.0
|
||
|
|
||
|
BackgroundItem {
|
||
|
signal send (string notice)
|
||
|
|
||
|
id: delegate
|
||
|
//property string text: "0"
|
||
|
width: parent.width
|
||
|
signal navigateTo(string link)
|
||
|
height: lblText.paintedHeight + (lblText.text.length > 0 ? Theme.paddingLarge : 0 )+ lblName.paintedHeight + (isReblog ? Theme.paddingLarge + iconRT.height : 0) + Theme.paddingLarge
|
||
|
Image {
|
||
|
id: iconRT
|
||
|
y: Theme.paddingLarge
|
||
|
anchors {
|
||
|
right: avatar.right
|
||
|
}
|
||
|
visible: isReblog
|
||
|
width: Theme.iconSizeExtraSmall
|
||
|
height: width
|
||
|
source: "image://theme/icon-s-retweet?" + (pressed ? Theme.primaryColor : Theme.secondaryColor)
|
||
|
}
|
||
|
Label {
|
||
|
id: lblRtByName
|
||
|
visible: isReblog
|
||
|
anchors {
|
||
|
left: lblName.left
|
||
|
bottom: iconRT.bottom
|
||
|
}
|
||
|
text: '@' + retweetScreenName + ' boosted'
|
||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||
|
color: Theme.secondaryColor
|
||
|
}
|
||
|
Image {
|
||
|
id: avatar
|
||
|
x: Theme.horizontalPageMargin
|
||
|
y: Theme.paddingLarge + (isReblog ? iconRT.height+Theme.paddingMedium : 0)
|
||
|
asynchronous: true
|
||
|
width: Theme.iconSizeMedium
|
||
|
height: width
|
||
|
smooth: true
|
||
|
source: account_avatar
|
||
|
visible: true
|
||
|
MouseArea {
|
||
|
anchors.fill: parent
|
||
|
onClicked: {
|
||
|
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
|
||
|
"user_id": account_id,
|
||
|
"displayname": displayname,
|
||
|
"username": username,
|
||
|
"profileImage": account_avatar
|
||
|
})
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
Label {
|
||
|
id: lblName
|
||
|
anchors {
|
||
|
top: avatar.top
|
||
|
topMargin: 0
|
||
|
left: avatar.right
|
||
|
leftMargin: Theme.paddingMedium
|
||
|
}
|
||
|
text: displayname
|
||
|
font.weight: Font.Bold
|
||
|
font.pixelSize: Theme.fontSizeSmall
|
||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||
|
}
|
||
|
|
||
|
Image {
|
||
|
id: iconVerified
|
||
|
y: Theme.paddingLarge
|
||
|
anchors {
|
||
|
left: lblName.right
|
||
|
leftMargin: Theme.paddingSmall
|
||
|
verticalCenter: lblName.verticalCenter
|
||
|
}
|
||
|
visible: account_locked
|
||
|
width: account_locked ? Theme.iconSizeExtraSmall*0.8 : 0
|
||
|
opacity: 0.8
|
||
|
height: width
|
||
|
source: "image://theme/icon-s-secure?" + (pressed
|
||
|
? Theme.highlightColor
|
||
|
: Theme.primaryColor)
|
||
|
}
|
||
|
|
||
|
|
||
|
Label {
|
||
|
id: lblScreenName
|
||
|
anchors {
|
||
|
left: iconVerified.right
|
||
|
right: lblDate.left
|
||
|
leftMargin: Theme.paddingMedium
|
||
|
baseline: lblName.baseline
|
||
|
}
|
||
|
truncationMode: TruncationMode.Fade
|
||
|
text: '@'+username
|
||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||
|
color: (pressed ? Theme.secondaryHighlightColor : Theme.secondaryColor)
|
||
|
}
|
||
|
Label {
|
||
|
function timestamp() {
|
||
|
var txt = Format.formatDate(created_at, Formatter.Timepoint)
|
||
|
var elapsed = Format.formatDate(created_at, Formatter.DurationElapsedShort)
|
||
|
return (elapsed ? elapsed : txt )
|
||
|
}
|
||
|
id: lblDate
|
||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||
|
text: Format.formatDate(created_at, new Date() - created_at < 60*60*1000 ? Formatter.DurationElapsedShort : Formatter.TimeValueTwentyFourHours)
|
||
|
font.pixelSize: Theme.fontSizeExtraSmall
|
||
|
horizontalAlignment: Text.AlignRight
|
||
|
anchors {
|
||
|
right: parent.right
|
||
|
baseline: lblName.baseline
|
||
|
rightMargin: Theme.paddingLarge
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Label {
|
||
|
id: lblText
|
||
|
anchors {
|
||
|
left: lblName.left
|
||
|
right: parent.right
|
||
|
top: lblScreenName.bottom
|
||
|
topMargin: Theme.paddingSmall
|
||
|
rightMargin: Theme.paddingLarge
|
||
|
}
|
||
|
height: content.length ? paintedHeight : 0
|
||
|
onLinkActivated: {
|
||
|
console.log(link)
|
||
|
if (link[0] === "@") {
|
||
|
pageStack.push(Qt.resolvedUrl("../Profile.qml"), {
|
||
|
"name": "",
|
||
|
"username": link.substring(1),
|
||
|
"profileImage": ""
|
||
|
})
|
||
|
} else if (link[0] === "#") {
|
||
|
|
||
|
pageStack.pop(pageStack.find(function(page) {
|
||
|
var check = page.isFirstPage === true;
|
||
|
if (check)
|
||
|
page.onLinkActivated(link)
|
||
|
return check;
|
||
|
}));
|
||
|
|
||
|
send(link)
|
||
|
} else {
|
||
|
pageStack.push(Qt.resolvedUrl("../Browser.qml"), {"href" : link})
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|
||
|
text: content
|
||
|
textFormat: Text.StyledText
|
||
|
linkColor : Theme.highlightColor
|
||
|
wrapMode: Text.Wrap
|
||
|
maximumLineCount: 6
|
||
|
font.pixelSize: Theme.fontSizeSmall
|
||
|
color: (pressed ? Theme.highlightColor : Theme.primaryColor)
|
||
|
}
|
||
|
|
||
|
}
|