Support almost all text formatting options

This commit is contained in:
Sebastian J. Wolf 2020-08-24 16:30:19 +02:00
parent 2ee8eceb18
commit a4318376e5
2 changed files with 55 additions and 1 deletions

View file

@ -107,6 +107,50 @@ function enhanceMessageText(formattedText) {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<b>" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</b>" ));
}
if (entityType === "textEntityTypeUrl") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<a href=\"" + messageText.substring(formattedText.entities[i].offset, ( formattedText.entities[i].offset + formattedText.entities[i].length )) + "\">" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</a>" ));
}
if (entityType === "textEntityTypeCode") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<pre>" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</pre>" ));
}
if (entityType === "textEntityTypeEmailAddress") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<a href=\"mailto:" + messageText.substring(formattedText.entities[i].offset, ( formattedText.entities[i].offset + formattedText.entities[i].length )) + "\">" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</a>" ));
}
if (entityType === "textEntityTypeItalic") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<i>" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</i>" ));
}
if (entityType === "textEntityTypeMention") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<a href=\"user:" + messageText.substring(formattedText.entities[i].offset, ( formattedText.entities[i].offset + formattedText.entities[i].length )) + "\">" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</a>" ));
}
if (entityType === "textEntityTypeMentionName") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<a href=\"userId://" + formattedText.entities[i].type.user_id + "\">" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</a>" ));
}
if (entityType === "textEntityTypePhoneNumber") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<a href=\"tel:" + messageText.substring(formattedText.entities[i].offset, ( formattedText.entities[i].offset + formattedText.entities[i].length )) + "\">" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</a>" ));
}
if (entityType === "textEntityTypePre") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<pre>" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</pre>" ));
}
if (entityType === "textEntityTypePreCode") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<pre>" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</pre>" ));
}
if (entityType === "textEntityTypeTextUrl") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<a href=\"" + formattedText.entities[i].type.url + "\">" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</a>" ));
}
if (entityType === "textEntityTypeUnderline") {
messageInsertions.push(new MessageInsertion(formattedText.entities[i].offset, "<u>" ));
messageInsertions.push(new MessageInsertion((formattedText.entities[i].offset + formattedText.entities[i].length), "</u>" ));
}
}
messageInsertions.sort( function(a, b) { return b.offset - a.offset } );
@ -130,3 +174,13 @@ function enhanceMessageText(formattedText) {
return messageText;
}
function handleLink(link) {
if (link.indexOf("user://") === 0) {
//pageStack.push(Qt.resolvedUrl("../pages/UserPage.qml"), {"userName": link.substring(7)});
} else if (link.indexOf("userid://") === 0) {
//pageStack.push(Qt.resolvedUrl("../pages/UserPage.qml"), {"userId": link.substring(9)});
} else {
Qt.openUrlExternally(link);
}
}

View file

@ -338,7 +338,7 @@ Page {
wrapMode: Text.Wrap
textFormat: Text.StyledText
onLinkActivated: {
// Functions.handleLink(link);
Functions.handleLink(link);
}
horizontalAlignment: (chatPage.myUserId === display.sender_user_id) ? Text.AlignRight : Text.AlignLeft
linkColor: Theme.highlightColor