Use null coalescing.
This commit is contained in:
@@ -26,7 +26,7 @@ TextField {
|
|||||||
states: [
|
states: [
|
||||||
State {
|
State {
|
||||||
name: "shown"
|
name: "shown"
|
||||||
when: textField.text.length !== 0 || textField.activeFocus
|
when: textField.text.length != 0 || textField.activeFocus
|
||||||
PropertyChanges { target: floatingPlaceholder; scale: 0.8 }
|
PropertyChanges { target: floatingPlaceholder; scale: 0.8 }
|
||||||
PropertyChanges { target: floatingPlaceholder; anchors.topMargin: -floatingPlaceholder.height * 0.4 }
|
PropertyChanges { target: floatingPlaceholder; anchors.topMargin: -floatingPlaceholder.height * 0.4 }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ RowLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Label {
|
Label {
|
||||||
readonly property int duration: content.info.duration || audio.duration || 0
|
readonly property int duration: content.info.duration ?? audio.duration ?? 0
|
||||||
|
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
|
||||||
@@ -193,14 +193,12 @@ RowLayout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function openSavedFile()
|
function openSavedFile() {
|
||||||
{
|
|
||||||
if (Qt.openUrlExternally(progressInfo.localPath)) return;
|
if (Qt.openUrlExternally(progressInfo.localPath)) return;
|
||||||
if (Qt.openUrlExternally(progressInfo.localDir)) return;
|
if (Qt.openUrlExternally(progressInfo.localDir)) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function humanSize(duration)
|
function humanSize(duration) {
|
||||||
{
|
|
||||||
if (!duration)
|
if (!duration)
|
||||||
return qsTr("Unknown", "Unknown duration")
|
return qsTr("Unknown", "Unknown duration")
|
||||||
if (duration < 1000)
|
if (duration < 1000)
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ RowLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
readonly property bool isThumbnail: !(content.info.thumbnail_info == null || content.thumbnailMediaId == null)
|
readonly property bool isThumbnail: content.info.thumbnail_info && content.thumbnailMediaId
|
||||||
readonly property var info: isThumbnail ? content.info.thumbnail_info : content.info
|
readonly property var info: isThumbnail ? content.info.thumbnail_info : content.info
|
||||||
readonly property string mediaId: isThumbnail ? content.thumbnailMediaId : content.mediaId
|
readonly property string mediaId: isThumbnail ? content.thumbnailMediaId : content.mediaId
|
||||||
readonly property int maxWidth: messageListView.width - (!sentByMe ? 36 + root.spacing : 0) - 48
|
readonly property int maxWidth: messageListView.width - (!sentByMe ? 36 + root.spacing : 0) - 48
|
||||||
|
|||||||
@@ -15,9 +15,9 @@ ColumnLayout {
|
|||||||
readonly property bool avatarVisible: !sentByMe && showAuthor
|
readonly property bool avatarVisible: !sentByMe && showAuthor
|
||||||
readonly property bool sentByMe: author.isLocalUser
|
readonly property bool sentByMe: author.isLocalUser
|
||||||
readonly property bool darkBackground: !sentByMe
|
readonly property bool darkBackground: !sentByMe
|
||||||
readonly property bool replyVisible: reply || false
|
readonly property bool replyVisible: reply ?? false
|
||||||
readonly property bool failed: marks === EventStatus.SendingFailed
|
readonly property bool failed: marks == EventStatus.SendingFailed
|
||||||
readonly property color authorColor: eventType === "notice" ? MPalette.primary : author.color
|
readonly property color authorColor: eventType == "notice" ? MPalette.primary : author.color
|
||||||
readonly property color replyAuthorColor: replyVisible ? reply.author.color : MPalette.accent
|
readonly property color replyAuthorColor: replyVisible ? reply.author.color : MPalette.accent
|
||||||
|
|
||||||
signal saveFileAs()
|
signal saveFileAs()
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import QtQuick.Layouts 1.12
|
|||||||
import Spectral.Setting 0.1
|
import Spectral.Setting 0.1
|
||||||
|
|
||||||
Flow {
|
Flow {
|
||||||
visible: (reaction && reaction.length > 0) || false
|
visible: (reaction && reaction.length > 0) ?? false
|
||||||
|
|
||||||
spacing: 8
|
spacing: 8
|
||||||
|
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ RowLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Image {
|
Image {
|
||||||
readonly property bool isThumbnail: !(content.info.thumbnail_info == null || content.thumbnailMediaId == null)
|
readonly property bool isThumbnail: content.info.thumbnail_info && content.thumbnailMediaId
|
||||||
readonly property var info: isThumbnail ? content.info.thumbnail_info : content.info
|
readonly property var info: isThumbnail ? content.info.thumbnail_info : content.info
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ Dialog {
|
|||||||
height: 48
|
height: 48
|
||||||
|
|
||||||
source: user.avatarMediaId
|
source: user.avatarMediaId
|
||||||
hint: user.displayName || "No Name"
|
hint: user.displayName ?? ""
|
||||||
|
|
||||||
Menu {
|
Menu {
|
||||||
id: contextMenu
|
id: contextMenu
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ Item {
|
|||||||
glowRadius: modelData.blur/2
|
glowRadius: modelData.blur/2
|
||||||
spread: 0.05
|
spread: 0.05
|
||||||
color: _shadowColors[index]
|
color: _shadowColors[index]
|
||||||
cornerRadius: modelData.blur + (effect.sourceItem.radius || 0)
|
cornerRadius: modelData.blur + (effect.sourceItem.radius ?? 0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ Item {
|
|||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
source: avatar
|
source: avatar
|
||||||
hint: name || "No Name"
|
hint: name ?? ""
|
||||||
}
|
}
|
||||||
|
|
||||||
ColumnLayout {
|
ColumnLayout {
|
||||||
@@ -236,7 +236,7 @@ Item {
|
|||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
text: name || "No Name"
|
text: name ?? ""
|
||||||
color: MPalette.foreground
|
color: MPalette.foreground
|
||||||
font.pixelSize: 16
|
font.pixelSize: 16
|
||||||
font.bold: unreadCount >= 0
|
font.bold: unreadCount >= 0
|
||||||
|
|||||||
@@ -130,9 +130,9 @@ Control {
|
|||||||
keyNavigationWraps: true
|
keyNavigationWraps: true
|
||||||
|
|
||||||
delegate: Control {
|
delegate: Control {
|
||||||
property string autoCompleteText: modelData.displayName || modelData.unicode
|
property string autoCompleteText: modelData.displayName ?? modelData.unicode
|
||||||
property bool isEmoji: modelData.unicode != null
|
property bool isEmoji: modelData.unicode != null
|
||||||
readonly property bool highlighted: autoCompleteListView.currentIndex === index
|
readonly property bool highlighted: autoCompleteListView.currentIndex == index
|
||||||
|
|
||||||
height: 36
|
height: 36
|
||||||
padding: 6
|
padding: 6
|
||||||
@@ -140,7 +140,7 @@ Control {
|
|||||||
background: Rectangle {
|
background: Rectangle {
|
||||||
visible: !isEmoji
|
visible: !isEmoji
|
||||||
color: highlighted ? border.color : "transparent"
|
color: highlighted ? border.color : "transparent"
|
||||||
border.color: isEmoji ? Material.accent : modelData.color
|
border.color: isEmoji ? MPalette.accent : modelData.color
|
||||||
border.width: 2
|
border.width: 2
|
||||||
radius: height / 2
|
radius: height / 2
|
||||||
}
|
}
|
||||||
@@ -164,7 +164,7 @@ Control {
|
|||||||
Layout.preferredHeight: 24
|
Layout.preferredHeight: 24
|
||||||
|
|
||||||
visible: !isEmoji
|
visible: !isEmoji
|
||||||
source: modelData.avatarMediaId || null
|
source: modelData.avatarMediaId ?? null
|
||||||
color: modelData.color ? Qt.darker(modelData.color, 1.1) : MPalette.accent
|
color: modelData.color ? Qt.darker(modelData.color, 1.1) : MPalette.accent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user