Warning, /plasma-mobile/spacebar/src/contents/ui/FullscreenPage.qml is written in an unsupported language. File is not indexed.
0001 // SPDX-FileCopyrightText: 2021 Michael Lang <criticaltemp@protonmail.com>
0002 //
0003 // SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004
0005 import QtQuick
0006 import QtQuick.Layouts
0007 import QtQuick.Controls as Controls
0008
0009 import org.kde.kirigami as Kirigami
0010
0011 import org.kde.spacebar
0012
0013 Kirigami.ScrollablePage {
0014 id: page
0015 padding: Kirigami.Units.largeSpacing
0016 title: recipients
0017
0018 property real pointSize: Kirigami.Theme.defaultFont.pointSize + SettingsManager.messageFontSize
0019 property string recipients: ""
0020 property string text: ""
0021 property var attachments: []
0022 property string folder: ""
0023
0024 ColumnLayout {
0025 spacing: Kirigami.Units.largeSpacing
0026
0027 // message contents
0028 Controls.Label {
0029 visible: !!page.text
0030 Layout.alignment: Qt.AlignHCenter
0031 Layout.maximumWidth: page.width - Kirigami.Units.largeSpacing * 2
0032 text: Utils.textToHtml(page.text)
0033 wrapMode: Text.Wrap
0034 textFormat: Text.StyledText
0035 linkColor: Kirigami.Theme.linkColor
0036 color: Kirigami.Theme.textColor
0037 font.pointSize: pointSize
0038 font.family: "Noto Sans, Noto Color Emoji"
0039 }
0040
0041 Repeater {
0042 model: attachments
0043
0044 Column {
0045 Layout.alignment: Qt.AlignHCenter
0046 spacing: Kirigami.Units.smallSpacing
0047
0048 property bool isImage: modelData.mimeType.indexOf("image/") >= 0
0049 property string filePath: "file://" + folder + "/" + (modelData.fileName || "")
0050
0051 RowLayout {
0052 visible: !isImage && !modelData.text
0053 Kirigami.Icon {
0054 source: modelData.iconName
0055 }
0056 Text {
0057 text: modelData.name
0058 color: Kirigami.Theme.textColor
0059 font.pointSize: pointSize
0060 }
0061 MouseArea {
0062 width: parent.width
0063 height: parent.height
0064 onDoubleClicked: Qt.openUrlExternally(filePath)
0065 }
0066 }
0067
0068 Image {
0069 id: image
0070 source: isImage ? filePath : ""
0071 fillMode: Image.PreserveAspectFit
0072 sourceSize.width: Math.round(page.width) - Kirigami.Units.largeSpacing * 2
0073 height: Math.min(root.height * 0.8, image.implicitHeight)
0074 cache: false
0075
0076 MouseArea {
0077 anchors.fill: parent
0078 onClicked: if (!page.flicking) {
0079 pageStack.layers.push("qrc:/PreviewPage.qml", {
0080 filePath: filePath,
0081 type: modelData.mimeType
0082 } )
0083 }
0084 }
0085
0086 AnimatedImage {
0087 source: modelData.mimeType == "image/gif" ? parent.source : ""
0088 anchors.fill: parent
0089 cache: false
0090 }
0091 }
0092
0093 Controls.Label {
0094 visible: !!modelData.text
0095 anchors.horizontalCenter: parent.horizontalCenter
0096 width: Math.min(page.width, implicitWidth)
0097 text: Utils.textToHtml(modelData.text)
0098 wrapMode: Text.Wrap
0099 textFormat: Text.StyledText
0100 linkColor: Kirigami.Theme.linkColor
0101 color: Kirigami.Theme.textColor
0102 font.pointSize: pointSize
0103 font.family: "Noto Sans, Noto Color Emoji"
0104 }
0105 }
0106 }
0107 }
0108 }