Warning, /system/ubiquity-slideshow-neon/ubiquity-slideshow/slides/UbiquitySlide.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 Copyright 2019 Harald Sitter <sitter@kde.org>
0003
0004 This program is free software; you can redistribute it and/or
0005 modify it under the terms of the GNU General Public License as
0006 published by the Free Software Foundation; either version 3 of
0007 the License or any later version accepted by the membership of
0008 KDE e.V. (or its successor approved by the membership of KDE
0009 e.V.), which shall act as a proxy defined in Section 14 of
0010 version 3 of the license.
0011
0012 This program is distributed in the hope that it will be useful,
0013 but WITHOUT ANY WARRANTY; without even the implied warranty of
0014 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
0015 GNU General Public License for more details.
0016
0017 You should have received a copy of the GNU General Public License
0018 along with this program. If not, see <https://www.gnu.org/licenses/>.
0019 */
0020
0021 import QtQuick 2.0
0022 import QtQuick.Controls 2.5
0023 import QtQuick.XmlListModel 2.0
0024
0025 import calamares.slideshow 1.0
0026 import org.kde.kirigami 2.4 as Kirigami
0027 import org.kde.neon.calamares.slideshow.context 1.0
0028
0029 Slide {
0030 id: slide
0031 anchors.fill: parent
0032
0033 property string name
0034 property string textColor
0035
0036 // Extract the actual string out of the html. This requires all html
0037 // pages to have a standard div/h2 nexting and is somewhat abusing
0038 // the fact that xhtml and html are just about the same.
0039 XmlListModel {
0040 id: xmlModel
0041 query: "/div"
0042 source: slide.name + ".html"
0043
0044 XmlRole { name: "title"; query: "h2/string()" }
0045 XmlRole { name: "image"; query: "img/@src/string()" }
0046
0047 onCountChanged:{
0048 var item = get(0)
0049 background.source = item.image
0050 header.text = i18n(item.title)
0051 }
0052 }
0053
0054 Image {
0055 id: background
0056 anchors.fill: parent
0057 // Cropping would be nicer IMO. but it severely messes with my size
0058 // calculation
0059 fillMode: Image.PreserveAspectFit
0060 smooth: true
0061 clip: true
0062 }
0063
0064 Item {
0065 id: headerContainer
0066 x: (background.width - background.paintedWidth) / 2.0
0067 y: (background.height - background.paintedHeight) / 2.0
0068 width: background.paintedWidth
0069 height: background.paintedHeight
0070
0071 Kirigami.Heading {
0072 id: header
0073
0074 anchors.left: headerContainer.left
0075 anchors.top: headerContainer.top
0076 anchors.right: headerContainer.right
0077 anchors.margins: Kirigami.Units.largeSpacing
0078
0079 wrapMode: Text.Wrap
0080 level: 1
0081 color: textColor
0082 }
0083 }
0084 }