1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
|
/****************************************************************************
**
** Copyright (C) 2013-2026 Jolla Ltd.
**
****************************************************************************/
import QtQuick 2.0
import Sailfish.Silica 1.0
import Sailfish.TextLinking 1.0
import "shared"
SocialMediaFeedItem {
id: item
property variant imageList
property int likeCount
property int commentCount
property int boostCount
property string _booster: item.stringValue("boostedBy", "rebloggedBy", "retweeter")
property string _displayName: item.stringValue("name", "displayName", "display_name")
property string _accountName: item.stringValue("accountName", "acct", "screenName", "username")
property string _bodyText: item.stringValue("body", "content", "text")
timestamp: item.stringValue("timestamp", "createdAt", "created_at")
avatar.y: item._booster.length > 0
? topMargin + boosterIcon.height + Theme.paddingSmall
: topMargin
contentHeight: Math.max(content.y + content.height, avatar.y + avatar.height) + bottomMargin
topMargin: item._booster.length > 0 ? Theme.paddingMedium : Theme.paddingLarge
userRemovable: false
Image {
id: boosterIcon
anchors {
right: avatar.right
top: parent.top
topMargin: item.topMargin
}
visible: item._booster.length > 0
source: "image://theme/icon-s-repost" + (item.highlighted ? "?" + Theme.highlightColor : "")
}
Text {
anchors {
left: content.left
right: content.right
verticalCenter: boosterIcon.verticalCenter
}
elide: Text.ElideRight
font.pixelSize: Theme.fontSizeExtraSmall
color: item.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
textFormat: Text.PlainText
visible: text.length > 0
text: item._booster.length > 0
? //: Shown above a post that is boosted by another user. %1 = name of user who boosted
//% "%1 boosted"
qsTrId("lipstick-jolla-home-la-boosted_by").arg(item._booster)
: ""
}
Column {
id: content
anchors {
left: avatar.right
leftMargin: Theme.paddingMedium
top: avatar.top
}
width: parent.width - x
Label {
width: parent.width
truncationMode: TruncationMode.Fade
text: item._displayName
color: item.highlighted ? Theme.highlightColor : Theme.primaryColor
textFormat: Text.PlainText
}
Label {
width: parent.width
truncationMode: TruncationMode.Fade
text: item._accountName.length > 0 && item._accountName.charAt(0) !== "@"
? "@" + item._accountName
: item._accountName
font.pixelSize: Theme.fontSizeSmall
color: item.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
textFormat: Text.PlainText
}
LinkedText {
width: parent.width
elide: Text.ElideRight
wrapMode: Text.Wrap
font.pixelSize: Theme.fontSizeSmall
shortenUrl: true
color: item.highlighted ? Theme.highlightColor : Theme.primaryColor
linkColor: Theme.highlightColor
plainText: item._bodyText
}
Text {
width: parent.width
height: previewRow.visible ? implicitHeight + Theme.paddingMedium : implicitHeight // add padding below
maximumLineCount: 1
elide: Text.ElideRight
wrapMode: Text.Wrap
color: item.highlighted ? Theme.secondaryHighlightColor : Theme.secondaryColor
font.pixelSize: Theme.fontSizeExtraSmall
text: item.formattedTime
textFormat: Text.PlainText
}
SocialMediaPreviewRow {
id: previewRow
width: parent.width + Theme.horizontalPageMargin // extend to right edge of notification area
imageList: item.imageList
downloader: item.downloader
accountId: item.accountId
connectedToNetwork: item.connectedToNetwork
highlighted: item.highlighted
eventsColumnMaxWidth: item.eventsColumnMaxWidth - item.avatar.width
}
}
function stringValue() {
for (var i = 0; i < arguments.length; ++i) {
var value = model[arguments[i]]
if (typeof value === "undefined" || value === null) {
continue
}
value = String(value)
if (value.length > 0) {
return value
}
}
return ""
}
}
|