I can see secret chats... ;)
This commit is contained in:
parent
4713fbfba6
commit
a6d8328b10
21 changed files with 419 additions and 115 deletions
|
@ -1,5 +1,6 @@
|
||||||
import QtQuick 2.6
|
import QtQuick 2.6
|
||||||
import Sailfish.Silica 1.0
|
import Sailfish.Silica 1.0
|
||||||
|
import WerkWolf.Fernschreiber 1.0
|
||||||
|
|
||||||
import "../js/twemoji.js" as Emoji
|
import "../js/twemoji.js" as Emoji
|
||||||
import "../js/functions.js" as Functions
|
import "../js/functions.js" as Functions
|
||||||
|
@ -14,12 +15,13 @@ PhotoTextsListItem {
|
||||||
// chat title
|
// chat title
|
||||||
primaryText.text: title ? Emoji.emojify(title + ( display.notification_settings.mute_for > 0 ? " 🔇" : "" ), Theme.fontSizeMedium) : qsTr("Unknown")
|
primaryText.text: title ? Emoji.emojify(title + ( display.notification_settings.mute_for > 0 ? " 🔇" : "" ), Theme.fontSizeMedium) : qsTr("Unknown")
|
||||||
// last user
|
// last user
|
||||||
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") ) : qsTr("Unknown") )
|
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") ) : "" )
|
||||||
// last message
|
// last message
|
||||||
secondaryText.text: last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall) : qsTr("Unknown")
|
secondaryText.text: last_message_text ? Emoji.emojify(Functions.enhanceHtmlEntities(last_message_text), Theme.fontSizeExtraSmall) : "<i>" + qsTr("No message in this chat.") + "</i>"
|
||||||
// message date
|
// message date
|
||||||
tertiaryText.text: ( last_message_date ? Functions.getDateTimeElapsed(last_message_date) : qsTr("Unknown") ) + Emoji.emojify(last_message_status, tertiaryText.font.pixelSize)
|
tertiaryText.text: ( last_message_date ? ( last_message_date.length === 0 ? "" : Functions.getDateTimeElapsed(last_message_date) + Emoji.emojify(last_message_status, tertiaryText.font.pixelSize) ) : "" )
|
||||||
unreadCount: unread_count
|
unreadCount: unread_count
|
||||||
|
isSecret: ( chat_type === TelegramAPI.ChatTypeSecret )
|
||||||
|
|
||||||
openMenuOnPressAndHold: true//chat_id != overviewPage.ownUserId
|
openMenuOnPressAndHold: true//chat_id != overviewPage.ownUserId
|
||||||
menu: ContextMenu {
|
menu: ContextMenu {
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import QtQuick 2.6
|
import QtQuick 2.6
|
||||||
import Sailfish.Silica 1.0
|
import Sailfish.Silica 1.0
|
||||||
|
import WerkWolf.Fernschreiber 1.0
|
||||||
|
|
||||||
ListItem {
|
ListItem {
|
||||||
|
|
||||||
id: chatListViewItem
|
id: chatListViewItem
|
||||||
|
@ -10,6 +12,7 @@ ListItem {
|
||||||
property alias tertiaryText: tertiaryText //usually last message date
|
property alias tertiaryText: tertiaryText //usually last message date
|
||||||
|
|
||||||
property int unreadCount
|
property int unreadCount
|
||||||
|
property bool isSecret: false
|
||||||
property alias pictureThumbnail: pictureThumbnail
|
property alias pictureThumbnail: pictureThumbnail
|
||||||
|
|
||||||
contentHeight: mainRow.height + separator.height + 2 * Theme.paddingMedium
|
contentHeight: mainRow.height + separator.height + 2 * Theme.paddingMedium
|
||||||
|
@ -50,6 +53,27 @@ ListItem {
|
||||||
height: parent.width
|
height: parent.width
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: chatSecretBackground
|
||||||
|
color: Theme.overlayBackgroundColor
|
||||||
|
width: Theme.fontSizeExtraLarge
|
||||||
|
height: Theme.fontSizeExtraLarge
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
radius: parent.width / 2
|
||||||
|
visible: chatListViewItem.isSecret
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: chatSecretImage
|
||||||
|
source: "image://theme/icon-s-secure"
|
||||||
|
height: Theme.fontSizeMedium
|
||||||
|
width: Theme.fontSizeMedium
|
||||||
|
anchors.centerIn: chatSecretBackground
|
||||||
|
visible: chatListViewItem.isSecret
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Rectangle {
|
Rectangle {
|
||||||
id: chatUnreadMessagesCountBackground
|
id: chatUnreadMessagesCountBackground
|
||||||
color: Theme.highlightBackgroundColor
|
color: Theme.highlightBackgroundColor
|
||||||
|
@ -104,6 +128,7 @@ ListItem {
|
||||||
width: parent.width - Theme.paddingMedium - prologSecondaryText.width
|
width: parent.width - Theme.paddingMedium - prologSecondaryText.width
|
||||||
truncationMode: TruncationMode.Fade
|
truncationMode: TruncationMode.Fade
|
||||||
textFormat: Text.StyledText
|
textFormat: Text.StyledText
|
||||||
|
visible: prologSecondaryText.width < ( parent.width - Theme.paddingLarge )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -160,6 +160,7 @@ function getMessageText(message, simple, myself) {
|
||||||
|
|
||||||
return myself ? qsTr("sent an unsupported message: %1", "myself; %1 is message type").arg(message.content['@type'].substring(7)) : qsTr("sent an unsupported message: %1", "%1 is message type").arg(message.content['@type'].substring(7));
|
return myself ? qsTr("sent an unsupported message: %1", "myself; %1 is message type").arg(message.content['@type'].substring(7)) : qsTr("sent an unsupported message: %1", "%1 is message type").arg(message.content['@type'].substring(7));
|
||||||
}
|
}
|
||||||
|
|
||||||
function getChatPartnerStatusText(statusType, was_online) {
|
function getChatPartnerStatusText(statusType, was_online) {
|
||||||
switch(statusType) {
|
switch(statusType) {
|
||||||
case "userStatusEmpty":
|
case "userStatusEmpty":
|
||||||
|
@ -176,6 +177,18 @@ function getChatPartnerStatusText(statusType, was_online) {
|
||||||
return qsTr("offline, was recently online");
|
return qsTr("offline, was recently online");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSecretChatStatus(secretChatDetails) {
|
||||||
|
switch (secretChatDetails.state["@type"]) {
|
||||||
|
case "secretChatStateClosed":
|
||||||
|
return "<b>" + qsTr("Closed!") + "</b>";
|
||||||
|
case "secretChatStatePending":
|
||||||
|
return qsTr("Pending acknowledgement");
|
||||||
|
case "secretChatStateReady":
|
||||||
|
return qsTr("Ready to use");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function getChatMemberStatusText(statusType) {
|
function getChatMemberStatusText(statusType) {
|
||||||
// chatMemberStatusAdministrator, chatMemberStatusBanned, chatMemberStatusCreator, chatMemberStatusLeft, chatMemberStatusMember, and chatMemberStatusRestricted.
|
// chatMemberStatusAdministrator, chatMemberStatusBanned, chatMemberStatusCreator, chatMemberStatusLeft, chatMemberStatusMember, and chatMemberStatusRestricted.
|
||||||
switch(statusType) {
|
switch(statusType) {
|
||||||
|
|
|
@ -36,8 +36,10 @@ Page {
|
||||||
property bool isInitialized: false;
|
property bool isInitialized: false;
|
||||||
readonly property int myUserId: tdLibWrapper.getUserInformation().id;
|
readonly property int myUserId: tdLibWrapper.getUserInformation().id;
|
||||||
property var chatInformation;
|
property var chatInformation;
|
||||||
|
property var secretChatDetails;
|
||||||
property alias chatPicture: chatPictureThumbnail.photoData
|
property alias chatPicture: chatPictureThumbnail.photoData
|
||||||
property bool isPrivateChat: false;
|
property bool isPrivateChat: false;
|
||||||
|
property bool isSecretChat: false;
|
||||||
property bool isBasicGroup: false;
|
property bool isBasicGroup: false;
|
||||||
property bool isSuperGroup: false;
|
property bool isSuperGroup: false;
|
||||||
property bool isChannel: false;
|
property bool isChannel: false;
|
||||||
|
@ -108,6 +110,13 @@ Page {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
var statusText = Functions.getChatPartnerStatusText(chatPartnerInformation.status['@type'], chatPartnerInformation.status.was_online);
|
var statusText = Functions.getChatPartnerStatusText(chatPartnerInformation.status['@type'], chatPartnerInformation.status.was_online);
|
||||||
|
if (chatPage.secretChatDetails) {
|
||||||
|
if (statusText) {
|
||||||
|
statusText += " - ";
|
||||||
|
}
|
||||||
|
statusText += Functions.getSecretChatStatus(chatPage.secretChatDetails);
|
||||||
|
}
|
||||||
|
|
||||||
if (statusText) {
|
if (statusText) {
|
||||||
chatStatusText.text = statusText;
|
chatStatusText.text = statusText;
|
||||||
}
|
}
|
||||||
|
@ -138,12 +147,16 @@ Page {
|
||||||
chatView.currentIndex = -1;
|
chatView.currentIndex = -1;
|
||||||
chatView.lastReadSentIndex = 0;
|
chatView.lastReadSentIndex = 0;
|
||||||
var chatType = chatInformation.type['@type'];
|
var chatType = chatInformation.type['@type'];
|
||||||
isPrivateChat = ( chatType === "chatTypePrivate" );
|
isPrivateChat = ( chatType === "chatTypePrivate"|| chatType === "chatTypeSecret" );
|
||||||
|
isSecretChat = chatType === "chatTypeSecret";
|
||||||
isBasicGroup = ( chatType === "chatTypeBasicGroup" );
|
isBasicGroup = ( chatType === "chatTypeBasicGroup" );
|
||||||
isSuperGroup = ( chatType === "chatTypeSupergroup" );
|
isSuperGroup = ( chatType === "chatTypeSupergroup" );
|
||||||
if (isPrivateChat) {
|
if (isPrivateChat) {
|
||||||
chatPartnerInformation = tdLibWrapper.getUserInformation(chatInformation.type.user_id);
|
chatPartnerInformation = tdLibWrapper.getUserInformation(chatInformation.type.user_id);
|
||||||
updateChatPartnerStatusText();
|
updateChatPartnerStatusText();
|
||||||
|
if (isSecretChat) {
|
||||||
|
tdLibWrapper.getSecretChat(chatInformation.type.secret_chat_id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (isBasicGroup) {
|
else if (isBasicGroup) {
|
||||||
chatGroupInformation = tdLibWrapper.getBasicGroup(chatInformation.type.basic_group_id);
|
chatGroupInformation = tdLibWrapper.getBasicGroup(chatInformation.type.basic_group_id);
|
||||||
|
@ -410,6 +423,20 @@ Page {
|
||||||
pinnedMessageItem.pinnedMessage = message;
|
pinnedMessageItem.pinnedMessage = message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
onSecretChatReceived: {
|
||||||
|
if (secretChatId === chatInformation.type.secret_chat_id.toString()) {
|
||||||
|
Debug.log("[ChatPage] Received detailed information about this secret chat");
|
||||||
|
chatPage.secretChatDetails = secretChat;
|
||||||
|
updateChatPartnerStatusText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
onSecretChatUpdated: {
|
||||||
|
if (secretChatId === chatInformation.type.secret_chat_id.toString()) {
|
||||||
|
Debug.log("[ChatPage] Detailed information about this secret chat was updated");
|
||||||
|
chatPage.secretChatDetails = secretChat;
|
||||||
|
updateChatPartnerStatusText();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
|
@ -604,14 +631,18 @@ Page {
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
spacing: Theme.paddingMedium
|
spacing: Theme.paddingMedium
|
||||||
|
|
||||||
ProfileThumbnail {
|
Item {
|
||||||
id: chatPictureThumbnail
|
|
||||||
replacementStringHint: chatNameText.text
|
|
||||||
width: chatOverviewItem.height
|
width: chatOverviewItem.height
|
||||||
height: chatOverviewItem.height
|
height: chatOverviewItem.height
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
anchors.bottomMargin: chatPage.isPortrait ? Theme.paddingMedium : Theme.paddingSmall
|
anchors.bottomMargin: chatPage.isPortrait ? Theme.paddingMedium : Theme.paddingSmall
|
||||||
|
|
||||||
|
ProfileThumbnail {
|
||||||
|
id: chatPictureThumbnail
|
||||||
|
replacementStringHint: chatNameText.text
|
||||||
|
width: parent.height
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
// Setting it directly may cause an stale state for the thumbnail in case the chat page
|
// Setting it directly may cause an stale state for the thumbnail in case the chat page
|
||||||
// was previously loaded with a picture and now it doesn't have one. Instead setting it
|
// was previously loaded with a picture and now it doesn't have one. Instead setting it
|
||||||
// when the ChatModel indicates a change. This also avoids flickering when the page is loaded...
|
// when the ChatModel indicates a change. This also avoids flickering when the page is loaded...
|
||||||
|
@ -623,6 +654,28 @@ Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: chatSecretBackground
|
||||||
|
color: Theme.overlayBackgroundColor
|
||||||
|
width: chatPage.isPortrait ? Theme.fontSizeLarge : Theme.fontSizeMedium
|
||||||
|
height: width
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
radius: parent.width / 2
|
||||||
|
visible: chatPage.isSecretChat
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: chatSecretImage
|
||||||
|
source: "image://theme/icon-s-secure"
|
||||||
|
width: chatPage.isPortrait ? Theme.fontSizeSmall : Theme.fontSizeExtraSmall
|
||||||
|
height: width
|
||||||
|
anchors.centerIn: chatSecretBackground
|
||||||
|
visible: chatPage.isSecretChat
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
id: chatOverviewItem
|
id: chatOverviewItem
|
||||||
width: parent.width - chatPictureThumbnail.width - Theme.paddingMedium
|
width: parent.width - chatPictureThumbnail.width - Theme.paddingMedium
|
||||||
|
|
|
@ -166,7 +166,7 @@ Page {
|
||||||
Item {
|
Item {
|
||||||
id: privateChatItem
|
id: privateChatItem
|
||||||
height: parent.height
|
height: parent.height
|
||||||
width: parent.width / 2 + ( Theme.horizontalPageMargin / 2 )
|
width: parent.width / 2 // - ( Theme.horizontalPageMargin / 2 )
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
|
||||||
|
@ -218,7 +218,7 @@ Page {
|
||||||
wrapMode: Text.Wrap
|
wrapMode: Text.Wrap
|
||||||
elide: Text.ElideRight
|
elide: Text.ElideRight
|
||||||
textFormat: Text.StyledText
|
textFormat: Text.StyledText
|
||||||
text: qsTr("Transport-encrypted, stored in Telegram Cloud, sharable across devices")
|
text: qsTr("Transport-encrypted, uses Telegram Cloud, sharable across devices")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,7 +241,7 @@ Page {
|
||||||
Item {
|
Item {
|
||||||
id: secretChatItem
|
id: secretChatItem
|
||||||
height: parent.height
|
height: parent.height
|
||||||
width: parent.width / 2 + ( Theme.horizontalPageMargin / 2 )
|
width: parent.width / 2 //+ ( Theme.horizontalPageMargin / 2 )
|
||||||
anchors.left: privateChatItem.right
|
anchors.left: privateChatItem.right
|
||||||
anchors.top: parent.top
|
anchors.top: parent.top
|
||||||
|
|
||||||
|
@ -301,7 +301,7 @@ Page {
|
||||||
MouseArea {
|
MouseArea {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: {
|
onClicked: {
|
||||||
console.log("SECRET CHAT!");
|
tdLibWrapper.createNewSecretChat(display.id);
|
||||||
}
|
}
|
||||||
onPressed: {
|
onPressed: {
|
||||||
secretChatHighlightBackground.visible = true;
|
secretChatHighlightBackground.visible = true;
|
||||||
|
@ -344,7 +344,7 @@ Page {
|
||||||
|
|
||||||
InfoLabel {
|
InfoLabel {
|
||||||
id: loadingLabel
|
id: loadingLabel
|
||||||
text: qsTr("Loading contacs...")
|
text: qsTr("Loading contacts...")
|
||||||
}
|
}
|
||||||
|
|
||||||
BusyIndicator {
|
BusyIndicator {
|
||||||
|
|
|
@ -10,6 +10,10 @@ FernschreiberUtils::FernschreiberUtils(QObject *parent) : QObject(parent)
|
||||||
|
|
||||||
QString FernschreiberUtils::getMessageShortText(const QVariantMap &messageContent, const bool &myself)
|
QString FernschreiberUtils::getMessageShortText(const QVariantMap &messageContent, const bool &myself)
|
||||||
{
|
{
|
||||||
|
if (messageContent.isEmpty()) {
|
||||||
|
return QString();
|
||||||
|
}
|
||||||
|
|
||||||
QString contentType = messageContent.value("@type").toString();
|
QString contentType = messageContent.value("@type").toString();
|
||||||
|
|
||||||
if (contentType == "messageText") {
|
if (contentType == "messageText") {
|
||||||
|
|
|
@ -126,6 +126,8 @@ TDLibReceiver::TDLibReceiver(void *tdLibClient, QObject *parent) : QThread(paren
|
||||||
handlers.insert("users", &TDLibReceiver::processUsers);
|
handlers.insert("users", &TDLibReceiver::processUsers);
|
||||||
handlers.insert("error", &TDLibReceiver::processError);
|
handlers.insert("error", &TDLibReceiver::processError);
|
||||||
handlers.insert("ok", &TDLibReceiver::nop);
|
handlers.insert("ok", &TDLibReceiver::nop);
|
||||||
|
handlers.insert("secretChat", &TDLibReceiver::processSecretChat);
|
||||||
|
handlers.insert("updateSecretChat", &TDLibReceiver::processUpdateSecretChat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDLibReceiver::setActive(bool active)
|
void TDLibReceiver::setActive(bool active)
|
||||||
|
@ -523,3 +525,15 @@ void TDLibReceiver::processError(const QVariantMap &receivedInformation)
|
||||||
void TDLibReceiver::nop(const QVariantMap &)
|
void TDLibReceiver::nop(const QVariantMap &)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TDLibReceiver::processSecretChat(const QVariantMap &receivedInformation)
|
||||||
|
{
|
||||||
|
LOG("Received a secret chat");
|
||||||
|
emit secretChat(receivedInformation.value(ID).toString(), receivedInformation);
|
||||||
|
}
|
||||||
|
|
||||||
|
void TDLibReceiver::processUpdateSecretChat(const QVariantMap &receivedInformation)
|
||||||
|
{
|
||||||
|
LOG("A secret chat was updated");
|
||||||
|
emit secretChatUpdated(receivedInformation.value(ID).toString(), receivedInformation);
|
||||||
|
}
|
||||||
|
|
|
@ -85,7 +85,8 @@ signals:
|
||||||
void chatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId);
|
void chatPinnedMessageUpdated(qlonglong chatId, qlonglong pinnedMessageId);
|
||||||
void usersReceived(const QString &extra, const QVariantList &userIds, int totalUsers);
|
void usersReceived(const QString &extra, const QVariantList &userIds, int totalUsers);
|
||||||
void errorReceived(const int code, const QString &message);
|
void errorReceived(const int code, const QString &message);
|
||||||
|
void secretChat(const QString &secretChatId, const QVariantMap &secretChat);
|
||||||
|
void secretChatUpdated(const QString &secretChatId, const QVariantMap &secretChat);
|
||||||
private:
|
private:
|
||||||
typedef void (TDLibReceiver::*Handler)(const QVariantMap &);
|
typedef void (TDLibReceiver::*Handler)(const QVariantMap &);
|
||||||
|
|
||||||
|
@ -145,6 +146,8 @@ private:
|
||||||
void processUsers(const QVariantMap &receivedInformation);
|
void processUsers(const QVariantMap &receivedInformation);
|
||||||
void processError(const QVariantMap &receivedInformation);
|
void processError(const QVariantMap &receivedInformation);
|
||||||
void nop(const QVariantMap &receivedInformation);
|
void nop(const QVariantMap &receivedInformation);
|
||||||
|
void processSecretChat(const QVariantMap &receivedInformation);
|
||||||
|
void processUpdateSecretChat(const QVariantMap &receivedInformation);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TDLIBRECEIVER_H
|
#endif // TDLIBRECEIVER_H
|
||||||
|
|
|
@ -94,6 +94,8 @@ TDLibWrapper::TDLibWrapper(AppSettings *appSettings, MceInterface *mceInterface,
|
||||||
connect(this->tdLibReceiver, SIGNAL(messagesDeleted(QString, QVariantList)), this, SIGNAL(messagesDeleted(QString, QVariantList)));
|
connect(this->tdLibReceiver, SIGNAL(messagesDeleted(QString, QVariantList)), this, SIGNAL(messagesDeleted(QString, QVariantList)));
|
||||||
connect(this->tdLibReceiver, SIGNAL(chats(QVariantMap)), this, SIGNAL(chatsReceived(QVariantMap)));
|
connect(this->tdLibReceiver, SIGNAL(chats(QVariantMap)), this, SIGNAL(chatsReceived(QVariantMap)));
|
||||||
connect(this->tdLibReceiver, SIGNAL(chat(QVariantMap)), this, SLOT(handleChatReceived(QVariantMap)));
|
connect(this->tdLibReceiver, SIGNAL(chat(QVariantMap)), this, SLOT(handleChatReceived(QVariantMap)));
|
||||||
|
connect(this->tdLibReceiver, SIGNAL(secretChat(QString, QVariantMap)), this, SIGNAL(secretChatReceived(QString, QVariantMap)));
|
||||||
|
connect(this->tdLibReceiver, SIGNAL(secretChatUpdated(QString, QVariantMap)), this, SIGNAL(secretChatUpdated(QString, QVariantMap)));
|
||||||
connect(this->tdLibReceiver, SIGNAL(recentStickersUpdated(QVariantList)), this, SIGNAL(recentStickersUpdated(QVariantList)));
|
connect(this->tdLibReceiver, SIGNAL(recentStickersUpdated(QVariantList)), this, SIGNAL(recentStickersUpdated(QVariantList)));
|
||||||
connect(this->tdLibReceiver, SIGNAL(stickers(QVariantList)), this, SIGNAL(stickersReceived(QVariantList)));
|
connect(this->tdLibReceiver, SIGNAL(stickers(QVariantList)), this, SIGNAL(stickersReceived(QVariantList)));
|
||||||
connect(this->tdLibReceiver, SIGNAL(installedStickerSetsUpdated(QVariantList)), this, SIGNAL(installedStickerSetsUpdated(QVariantList)));
|
connect(this->tdLibReceiver, SIGNAL(installedStickerSetsUpdated(QVariantList)), this, SIGNAL(installedStickerSetsUpdated(QVariantList)));
|
||||||
|
@ -809,6 +811,15 @@ void TDLibWrapper::getContacts()
|
||||||
this->sendRequest(requestObject);
|
this->sendRequest(requestObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TDLibWrapper::getSecretChat(const QString &secretChatId)
|
||||||
|
{
|
||||||
|
LOG("Getting detailed information about secret chat" << secretChatId);
|
||||||
|
QVariantMap requestObject;
|
||||||
|
requestObject.insert(_TYPE, "getSecretChat");
|
||||||
|
requestObject.insert("secret_chat_id", secretChatId);
|
||||||
|
this->sendRequest(requestObject);
|
||||||
|
}
|
||||||
|
|
||||||
void TDLibWrapper::searchEmoji(const QString &queryString)
|
void TDLibWrapper::searchEmoji(const QString &queryString)
|
||||||
{
|
{
|
||||||
LOG("Searching emoji" << queryString);
|
LOG("Searching emoji" << queryString);
|
||||||
|
|
|
@ -164,6 +164,7 @@ public:
|
||||||
Q_INVOKABLE void joinChatByInviteLink(const QString &inviteLink);
|
Q_INVOKABLE void joinChatByInviteLink(const QString &inviteLink);
|
||||||
Q_INVOKABLE void getDeepLinkInfo(const QString &link);
|
Q_INVOKABLE void getDeepLinkInfo(const QString &link);
|
||||||
Q_INVOKABLE void getContacts();
|
Q_INVOKABLE void getContacts();
|
||||||
|
Q_INVOKABLE void getSecretChat(const QString &secretChatId);
|
||||||
|
|
||||||
// Others (candidates for extraction ;))
|
// Others (candidates for extraction ;))
|
||||||
Q_INVOKABLE void searchEmoji(const QString &queryString);
|
Q_INVOKABLE void searchEmoji(const QString &queryString);
|
||||||
|
@ -207,6 +208,8 @@ signals:
|
||||||
void messagesDeleted(const QString &chatId, const QVariantList &messageIds);
|
void messagesDeleted(const QString &chatId, const QVariantList &messageIds);
|
||||||
void chatsReceived(const QVariantMap &chats);
|
void chatsReceived(const QVariantMap &chats);
|
||||||
void chatReceived(const QVariantMap &chat);
|
void chatReceived(const QVariantMap &chat);
|
||||||
|
void secretChatReceived(const QString &secretChatId, const QVariantMap &secretChat);
|
||||||
|
void secretChatUpdated(const QString &secretChatId, const QVariantMap &secretChat);
|
||||||
void recentStickersUpdated(const QVariantList &stickerIds);
|
void recentStickersUpdated(const QVariantList &stickerIds);
|
||||||
void stickersReceived(const QVariantList &stickers);
|
void stickersReceived(const QVariantList &stickers);
|
||||||
void installedStickerSetsUpdated(const QVariantList &stickerSetIds);
|
void installedStickerSetsUpdated(const QVariantList &stickerSetIds);
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Nachrichten als gelesen markieren</translation>
|
<translation>Nachrichten als gelesen markieren</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation>Keine Nachricht in diesem Chat</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -894,35 +898,35 @@
|
||||||
<name>NewChatPage</name>
|
<name>NewChatPage</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Your Contacts</source>
|
<source>Your Contacts</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ihre Kontakte</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Sie haben keine Kontakte</translation>
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Privater Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Transportverschlüsselt, nutzt Telegram-Cloud, teilbar zwischen Geräten</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Geheimer Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>End-to-end-encrypted, accessible on this device only</source>
|
<source>End-to-end-encrypted, accessible on this device only</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Ende-zu-Ende-verschlüsselt, nur auf diesem Gerät zugreifbar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Suchen Sie einen Kontakt</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation>Lade Kontakte...</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -979,7 +983,7 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>New Chat</source>
|
<source>New Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Neuer Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1643,5 +1647,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Sie sind bereits Mitglied dieses Chats.</translation>
|
<translation>Sie sind bereits Mitglied dieses Chats.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation>Geschlossen!</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation>Ausstehende Bestätigung</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation>Einsatzbereit</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Mark all messages as read</translation>
|
<translation>Mark all messages as read</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -900,18 +904,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -924,6 +920,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1643,5 +1647,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>You are already a member of this chat.</translation>
|
<translation>You are already a member of this chat.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -257,6 +257,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Marcar todos como leídos</translation>
|
<translation>Marcar todos como leídos</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -890,18 +894,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -914,6 +910,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1624,5 +1628,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Ya eres miembro de este grupo.</translation>
|
<translation>Ya eres miembro de este grupo.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Merkitse kaikki viestit luetuiksi</translation>
|
<translation>Merkitse kaikki viestit luetuiksi</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -901,18 +905,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -925,6 +921,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1644,5 +1648,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Olet jo tämän ryhmän jäsen.</translation>
|
<translation>Olet jo tämän ryhmän jäsen.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -257,6 +257,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -890,18 +894,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -914,6 +910,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1624,5 +1628,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Segna tutti i messaggi come già letti</translation>
|
<translation>Segna tutti i messaggi come già letti</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -900,18 +904,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -924,6 +920,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1643,5 +1647,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Sei già membro di questa chat.</translation>
|
<translation>Sei già membro di questa chat.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -263,6 +263,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Zaznacz wszystkie wiadomości jako przeczytane</translation>
|
<translation>Zaznacz wszystkie wiadomości jako przeczytane</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -910,18 +914,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -934,6 +930,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1662,5 +1666,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Jesteś już członkiem tego czatu.</translation>
|
<translation>Jesteś już członkiem tego czatu.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -263,6 +263,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Отметить все сообщения как прочитанные</translation>
|
<translation>Отметить все сообщения как прочитанные</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -910,18 +914,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -934,6 +930,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1662,5 +1666,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Вы уже в этом чате.</translation>
|
<translation>Вы уже в этом чате.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Markera alla meddelanden som lästa</translation>
|
<translation>Markera alla meddelanden som lästa</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -900,18 +904,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -924,6 +920,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1643,5 +1647,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>Du är redan medlem i den här chatten.</translation>
|
<translation>Du är redan medlem i den här chatten.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -257,6 +257,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>标记全部消息为已读</translation>
|
<translation>标记全部消息为已读</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -890,18 +894,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -914,6 +910,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1624,5 +1628,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>你已是此对话成员。</translation>
|
<translation>你已是此对话成员。</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
|
@ -260,6 +260,10 @@
|
||||||
<source>Mark all messages as read</source>
|
<source>Mark all messages as read</source>
|
||||||
<translation>Mark all messages as read</translation>
|
<translation>Mark all messages as read</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No message in this chat.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>ChatPage</name>
|
<name>ChatPage</name>
|
||||||
|
@ -900,18 +904,10 @@
|
||||||
<source>You don't have any contacts.</source>
|
<source>You don't have any contacts.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Loading contacs...</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Private Chat</source>
|
<source>Private Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<source>Transport-encrypted, stored in Telegram Cloud, sharable across devices</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<source>Secret Chat</source>
|
<source>Secret Chat</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -924,6 +920,14 @@
|
||||||
<source>Search a contact</source>
|
<source>Search a contact</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Loading contacts...</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Transport-encrypted, uses Telegram Cloud, sharable across devices</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>NotificationManager</name>
|
<name>NotificationManager</name>
|
||||||
|
@ -1643,5 +1647,17 @@
|
||||||
<source>You are already a member of this chat.</source>
|
<source>You are already a member of this chat.</source>
|
||||||
<translation>You are already a member of this chat.</translation>
|
<translation>You are already a member of this chat.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Closed!</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Pending acknowledgement</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Ready to use</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
</TS>
|
</TS>
|
||||||
|
|
Loading…
Reference in a new issue