mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-21 18:50:47 +03:00
Fix null errors in qml
This commit is contained in:
parent
77e241b9e5
commit
b05c101021
8 changed files with 24 additions and 21 deletions
|
@ -14,7 +14,7 @@ Rectangle {
|
|||
|
||||
Label {
|
||||
anchors.fill: parent
|
||||
text: chat.model.escapeEmoji(String.fromCodePoint(displayName.codePointAt(0)))
|
||||
text: timelineManager.escapeEmoji(String.fromCodePoint(displayName.codePointAt(0)))
|
||||
textFormat: Text.RichText
|
||||
font.pixelSize: avatar.height/2
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
|
|
|
@ -167,8 +167,9 @@ Page {
|
|||
|
||||
width: avatarSize
|
||||
height: avatarSize
|
||||
url: chat.model.roomAvatarUrl.replace("mxc://", "image://MxcImage/")
|
||||
displayName: chat.model.roomName
|
||||
|
||||
url: chat.model ? chat.model.roomAvatarUrl.replace("mxc://", "image://MxcImage/") : ""
|
||||
displayName: chat.model ? chat.model.roomName : qsTr("No room selected")
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
@ -182,7 +183,8 @@ Page {
|
|||
Layout.row: 0
|
||||
|
||||
font.pointSize: fontMetrics.font.pointSize * 1.1
|
||||
text: chat.model.roomName
|
||||
|
||||
text: chat.model ? chat.model.roomName : qsTr("No room selected")
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
|
@ -193,9 +195,10 @@ Page {
|
|||
Layout.fillWidth: true
|
||||
Layout.column: 2
|
||||
Layout.row: 1
|
||||
text: chat.model.roomTopic
|
||||
Layout.maximumHeight: fontMetrics.lineSpacing * 2 // show 2 lines
|
||||
clip: true
|
||||
|
||||
text: chat.model ? chat.model.roomTopic : ""
|
||||
}
|
||||
|
||||
ImageButton {
|
||||
|
@ -387,7 +390,7 @@ Page {
|
|||
|
||||
Label {
|
||||
id: userName
|
||||
text: chat.model.escapeEmoji(modelData.userName)
|
||||
text: timelineManager.escapeEmoji(modelData.userName)
|
||||
color: timelineManager.userColor(modelData.userId, colors.window)
|
||||
textFormat: Text.RichText
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ Item {
|
|||
DelegateChoice {
|
||||
roleValue: MtxEvent.EmoteMessage
|
||||
NoticeMessage {
|
||||
formatted: chat.model.escapeEmoji(modelData.userName) + " " + model.data.formattedBody
|
||||
formatted: timelineManager.escapeEmoji(modelData.userName) + " " + model.data.formattedBody
|
||||
color: timelineManager.userColor(modelData.userId, colors.window)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -37,7 +37,7 @@ Item {
|
|||
|
||||
Text {
|
||||
id: userName
|
||||
text: chat.model ? chat.model.escapeEmoji(reply.modelData.userName) : ""
|
||||
text: timelineManager.escapeEmoji(reply.modelData.userName)
|
||||
color: replyComponent.userColor
|
||||
textFormat: Text.RichText
|
||||
|
||||
|
|
|
@ -719,12 +719,6 @@ TimelineModel::formatDateSeparator(QDate date) const
|
|||
return date.toString(fmt);
|
||||
}
|
||||
|
||||
QString
|
||||
TimelineModel::escapeEmoji(QString str) const
|
||||
{
|
||||
return utils::replaceEmoji(str);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineModel::viewRawMessage(QString id) const
|
||||
{
|
||||
|
@ -1389,7 +1383,7 @@ TimelineModel::formatTypingUsers(const std::vector<QString> &users, QColor bg)
|
|||
QStringList uidWithoutLast;
|
||||
|
||||
auto formatUser = [this, bg](const QString &user_id) -> QString {
|
||||
auto uncoloredUsername = escapeEmoji(displayName(user_id));
|
||||
auto uncoloredUsername = utils::replaceEmoji(displayName(user_id));
|
||||
QString prefix =
|
||||
QString("<font color=\"%1\">").arg(manager_->userColor(user_id, bg).name());
|
||||
|
||||
|
@ -1439,7 +1433,7 @@ TimelineModel::formatJoinRuleEvent(QString id)
|
|||
return "";
|
||||
|
||||
QString user = QString::fromStdString(event->sender);
|
||||
QString name = escapeEmoji(displayName(user));
|
||||
QString name = utils::replaceEmoji(displayName(user));
|
||||
|
||||
switch (event->content.join_rule) {
|
||||
case mtx::events::state::JoinRule::Public:
|
||||
|
@ -1464,7 +1458,7 @@ TimelineModel::formatGuestAccessEvent(QString id)
|
|||
return "";
|
||||
|
||||
QString user = QString::fromStdString(event->sender);
|
||||
QString name = escapeEmoji(displayName(user));
|
||||
QString name = utils::replaceEmoji(displayName(user));
|
||||
|
||||
switch (event->content.guest_access) {
|
||||
case mtx::events::state::AccessState::CanJoin:
|
||||
|
@ -1489,7 +1483,7 @@ TimelineModel::formatHistoryVisibilityEvent(QString id)
|
|||
return "";
|
||||
|
||||
QString user = QString::fromStdString(event->sender);
|
||||
QString name = escapeEmoji(displayName(user));
|
||||
QString name = utils::replaceEmoji(displayName(user));
|
||||
|
||||
switch (event->content.history_visibility) {
|
||||
case mtx::events::state::Visibility::WorldReadable:
|
||||
|
@ -1522,7 +1516,7 @@ TimelineModel::formatPowerLevelEvent(QString id)
|
|||
return "";
|
||||
|
||||
QString user = QString::fromStdString(event->sender);
|
||||
QString name = escapeEmoji(displayName(user));
|
||||
QString name = utils::replaceEmoji(displayName(user));
|
||||
|
||||
// TODO: power levels rendering is actually a bit complex. work on this later.
|
||||
return tr("%1 has changed the room's permissions.").arg(name);
|
||||
|
@ -1551,7 +1545,7 @@ TimelineModel::formatMemberEvent(QString id)
|
|||
}
|
||||
|
||||
QString user = QString::fromStdString(event->state_key);
|
||||
QString name = escapeEmoji(displayName(user));
|
||||
QString name = utils::replaceEmoji(displayName(user));
|
||||
QString rendered;
|
||||
|
||||
// see table https://matrix.org/docs/spec/client_server/latest#m-room-member
|
||||
|
|
|
@ -197,7 +197,6 @@ public:
|
|||
Q_INVOKABLE QString formatGuestAccessEvent(QString id);
|
||||
Q_INVOKABLE QString formatPowerLevelEvent(QString id);
|
||||
|
||||
Q_INVOKABLE QString escapeEmoji(QString str) const;
|
||||
Q_INVOKABLE void viewRawMessage(QString id) const;
|
||||
Q_INVOKABLE void viewDecryptedRawMessage(QString id) const;
|
||||
Q_INVOKABLE void openUserProfile(QString userid) const;
|
||||
|
|
|
@ -206,6 +206,12 @@ TimelineViewManager::setHistoryView(const QString &room_id)
|
|||
}
|
||||
}
|
||||
|
||||
QString
|
||||
TimelineViewManager::escapeEmoji(QString str) const
|
||||
{
|
||||
return utils::replaceEmoji(str);
|
||||
}
|
||||
|
||||
void
|
||||
TimelineViewManager::openImageOverlay(QString mxcUrl, QString eventId) const
|
||||
{
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
bool isNarrowView() const { return isNarrowView_; }
|
||||
Q_INVOKABLE void openImageOverlay(QString mxcUrl, QString eventId) const;
|
||||
Q_INVOKABLE QColor userColor(QString id, QColor background);
|
||||
Q_INVOKABLE QString escapeEmoji(QString str) const;
|
||||
|
||||
Q_INVOKABLE QString userPresence(QString id) const;
|
||||
Q_INVOKABLE QString userStatus(QString id) const;
|
||||
|
|
Loading…
Reference in a new issue