2020-10-31 22:49:03 +03:00
import QtQuick 2.6
2020-10-19 13:20:02 +03:00
import Sailfish . Silica 1.0
2020-11-25 02:23:38 +03:00
import WerkWolf . Fernschreiber 1.0
2020-10-19 13:20:02 +03:00
import "../js/twemoji.js" as Emoji
import "../js/functions.js" as Functions
PhotoTextsListItem {
id: listItem
pictureThumbnail {
2020-11-15 01:50:12 +03:00
photoData: photo_small || ( { } )
2020-10-19 13:20:02 +03:00
}
property int ownUserId
// chat title
2020-11-28 21:11:51 +03:00
primaryText.text: title ? Emoji . emojify ( title + ( display . notification_settings . mute_for > 0 ? " 🔇" : "" ) , Theme . fontSizeMedium ) : qsTr ( "Unknown" )
2020-10-19 13:20:02 +03:00
// last user
2020-11-25 02:23:38 +03:00
prologSecondaryText.text: is_channel ? "" : ( last_message_sender_id ? ( last_message_sender_id !== ownUserId ? Emoji . emojify ( Functions . getUserName ( tdLibWrapper . getUserInformation ( last_message_sender_id ) ) , primaryText . font . pixelSize ) : qsTr ( "You" ) ) : "" )
2020-10-19 13:20:02 +03:00
// last message
2020-11-25 02:23:38 +03:00
secondaryText.text: last_message_text ? Emoji . emojify ( Functions . enhanceHtmlEntities ( last_message_text ) , Theme . fontSizeExtraSmall ) : "<i>" + qsTr ( "No message in this chat." ) + "</i>"
2020-10-19 13:20:02 +03:00
// message date
2020-11-25 02:23:38 +03:00
tertiaryText.text: ( last_message_date ? ( last_message_date . length === 0 ? "" : Functions . getDateTimeElapsed ( last_message_date ) + Emoji . emojify ( last_message_status , tertiaryText . font . pixelSize ) ) : "" )
2020-10-19 13:20:02 +03:00
unreadCount: unread_count
2020-11-25 02:23:38 +03:00
isSecret: ( chat_type === TelegramAPI . ChatTypeSecret )
2020-10-19 13:20:02 +03:00
openMenuOnPressAndHold: true //chat_id != overviewPage.ownUserId
2020-10-19 16:30:03 +03:00
2020-12-26 01:09:23 +03:00
onPressAndHold: {
contextMenuLoader . active = true ;
}
Loader {
id: contextMenuLoader
active: false
asynchronous: true
onStatusChanged: {
if ( status === Loader . Ready ) {
listItem . menu = item ;
listItem . openMenu ( ) ;
2020-10-19 13:20:02 +03:00
}
}
2020-12-26 01:09:23 +03:00
sourceComponent: Component {
ContextMenu {
MenuItem {
visible: unread_count > 0
onClicked: {
tdLibWrapper . viewMessage ( chat_id , display . last_message . id , true ) ;
}
text: qsTr ( "Mark all messages as read" )
}
2020-10-19 13:20:02 +03:00
2020-12-26 01:09:23 +03:00
MenuItem {
visible: chat_id != listItem . ownUserId
onClicked: {
var newNotificationSettings = display . notification_settings ;
if ( newNotificationSettings . mute_for > 0 ) {
newNotificationSettings . mute_for = 0 ;
} else {
newNotificationSettings . mute_for = 6666666 ;
}
newNotificationSettings . use_default_mute_for = false ;
tdLibWrapper . setChatNotificationSettings ( chat_id , newNotificationSettings ) ;
}
text: display . notification_settings . mute_for > 0 ? qsTr ( "Unmute Chat" ) : qsTr ( "Mute Chat" )
2020-10-19 13:20:02 +03:00
}
2020-12-26 01:09:23 +03:00
MenuItem {
onClicked: {
if ( pageStack . depth > 2 ) {
pageStack . pop ( pageStack . find ( function ( page ) { return ( page . _depth === 0 ) } ) , PageStackAction . Immediate ) ;
}
pageStack . push ( Qt . resolvedUrl ( "../pages/ChatInformationPage.qml" ) , { "chatInformation" : display } ) ;
}
text: model . display . type [ '@type' ] === "chatTypePrivate" ? qsTr ( "User Info" ) : qsTr ( "Group Info" )
}
2020-10-19 13:20:02 +03:00
}
}
}
}