Warning, /network/neochat/src/qml/MessageSourceSheet.qml is written in an unsupported language. File is not indexed.

0001 // SPDX-FileCopyrightText: 2019 Black Hat <bhat@encom.eu.org>
0002 // SPDX-FileCopyrightText: 2020 Tobias Fella <tobias.fella@kde.org>
0003 // SPDX-License-Identifier: GPL-3.0-only
0004 
0005 import QtQuick
0006 import QtQuick.Controls as QQC2
0007 import QtQuick.Layouts
0008 
0009 import org.kde.kirigami as Kirigami
0010 import org.kde.syntaxhighlighting
0011 
0012 import org.kde.neochat
0013 
0014 Kirigami.Page {
0015     id: root
0016     property string sourceText
0017 
0018     topPadding: 0
0019     leftPadding: 0
0020     rightPadding: 0
0021     bottomPadding: 0
0022 
0023     title: i18n("Event Source")
0024 
0025     QQC2.ScrollView {
0026         id: scrollView
0027         anchors.fill: parent
0028         contentWidth: availableWidth
0029 
0030         // HACK: Hide unnecessary horizontal scrollbar (https://bugreports.qt.io/browse/QTBUG-83890)
0031         QQC2.ScrollBar.horizontal.policy: QQC2.ScrollBar.AlwaysOff
0032 
0033         QQC2.TextArea {
0034             id: sourceTextArea
0035             Layout.fillWidth: true
0036 
0037             leftPadding: lineNumberColumn.width + lineNumberColumn.anchors.leftMargin + Kirigami.Units.smallSpacing * 2
0038 
0039             text: root.sourceText
0040             readOnly: true
0041             textFormat: TextEdit.PlainText
0042             wrapMode: TextEdit.Wrap
0043 
0044             // opt-out of whatever spell checker a styled TextArea might come with
0045             Kirigami.SpellCheck.enabled: false
0046 
0047             onWidthChanged: lineModel.resetModel()
0048             onHeightChanged: lineModel.resetModel()
0049 
0050             SyntaxHighlighter {
0051                 textEdit: sourceTextArea
0052                 definition: "JSON"
0053                 repository: Repository
0054             }
0055 
0056             ColumnLayout {
0057                 id: lineNumberColumn
0058 
0059                 anchors {
0060                     top: sourceTextArea.top
0061                     topMargin: sourceTextArea.topPadding
0062                     left: sourceTextArea.left
0063                     leftMargin: Kirigami.Units.smallSpacing
0064                 }
0065                 spacing: 0
0066                 Repeater {
0067                     id: repeater
0068                     model: LineModel {
0069                         id: lineModel
0070                         document: sourceTextArea.textDocument
0071                     }
0072                     delegate: QQC2.Label {
0073                         id: label
0074                         required property int index
0075                         required property int docLineHeight
0076                         Layout.fillWidth: true
0077                         Layout.preferredHeight: docLineHeight
0078                         topPadding: 1
0079                         horizontalAlignment: Text.AlignRight
0080                         text: index + 1
0081                         color: Kirigami.Theme.disabledTextColor
0082                     }
0083                 }
0084             }
0085 
0086             background: Rectangle {
0087                 Kirigami.Theme.colorSet: Kirigami.Theme.View
0088                 Kirigami.Theme.inherit: false
0089                 color: Kirigami.Theme.backgroundColor
0090             }
0091         }
0092     }
0093 
0094     Kirigami.Separator {
0095         anchors {
0096             top: parent.top
0097             bottom: parent.bottom
0098             left: parent.left
0099             leftMargin: lineNumberColumn.width + lineNumberColumn.anchors.leftMargin + Kirigami.Units.smallSpacing
0100         }
0101     }
0102 }