Some work for dark theme support

This commit is contained in:
Dorian Zedler 2021-06-08 19:23:55 +02:00
parent 1d92099d1d
commit 6b87344bf1
Signed by: dorian
GPG key ID: 989DE36109AFA354
22 changed files with 151 additions and 98 deletions

View file

@ -37,7 +37,7 @@ Item {
Rectangle { Rectangle {
id: toolBar id: toolBar
color: "white" color: Material.background
anchors.fill: parent anchors.fill: parent
Rectangle { Rectangle {

View file

@ -0,0 +1,63 @@
/****************************************************************************
**
** Copyright (C) 2017 The Qt Company Ltd.
** Contact: http://www.qt.io/licensing/
**
** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL3$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see http://www.qt.io/terms-conditions. For further
** information use the contact form at http://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPLv3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or later as published by the Free
** Software Foundation and appearing in the file LICENSE.GPL included in
** the packaging of this file. Please review the following information to
** ensure the GNU General Public License version 2.0 requirements will be
** met: http://www.gnu.org/licenses/gpl-2.0.html.
**
** $QT_END_LICENSE$
**
****************************************************************************/
import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Controls.Material 2.15
import QtQuick.Controls.Material.impl 2.15
ItemDelegate {
id: control
Material.background: "transparent"
background: Rectangle {
implicitHeight: control.Material.delegateHeight
color: control.highlighted ? control.Material.listHighlightColor : control.Material.background
Ripple {
width: parent.width
height: parent.height
clip: visible
pressed: control.pressed
anchor: control
active: control.down || control.visualFocus || control.hovered
color: control.Material.rippleColor
}
}
}

View file

@ -1,8 +1,12 @@
import QtQuick 2.9 import QtQuick 2.9
import QtQuick.Controls 2.4 import QtQuick.Controls 2.4
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.12
import QtQuick.Templates 2.12 as T
import QtQuick.Controls.impl 2.12
import QtQuick.Controls.Material.impl 2.12
ItemDelegate { ColoredItemDelegate {
id: competitionDel id: competitionDel
property bool over property bool over
@ -81,15 +85,7 @@ ItemDelegate {
NumberAnimation { target: competitionDel; property: "scale"; from: 1; to: 0.8; duration: 400 } NumberAnimation { target: competitionDel; property: "scale"; from: 1; to: 0.8; duration: 400 }
} }
Rectangle { Material.background: control.getCompCatData(catId) === undefined ? app.federalColor:control.getCompCatData(catId)["bgcolor"]
id: delBackroundRect
anchors.fill: parent
opacity: 0.5
color: control.getCompCatData(catId) === undefined ? "white":control.getCompCatData(catId)["bgcolor"]
}
Column { Column {
id: compDelCol id: compDelCol
@ -146,8 +142,6 @@ ItemDelegate {
Label { Label {
id: dateLa id: dateLa
color: "grey"
text: date text: date
} }
} }

View file

@ -19,8 +19,10 @@
import QtQuick 2.9 import QtQuick 2.9
import QtQuick.Controls 2.4 import QtQuick.Controls 2.4
import QtGraphicalEffects 1.0 import QtGraphicalEffects 1.0
import QtQuick.Controls.Material 2.12
import QtQuick.Controls.Material.impl 2.12
ToolButton { MouseArea {
id: control id: control
property string image property string image
@ -39,7 +41,7 @@ ToolButton {
} }
} }
contentItem: Item { Item {
id: controlBackgroundContainer id: controlBackgroundContainer
anchors.fill: parent anchors.fill: parent
@ -67,7 +69,7 @@ ToolButton {
radius: height * 0.2 radius: height * 0.2
color: control.down ? Qt.darker(control.backgroundColor, 1.03) : control.backgroundColor color: Material.dialogColor //control.down ? Qt.darker(control.backgroundColor, 1.03) : control.backgroundColor
Image { Image {
id: buttonIcon id: buttonIcon
@ -84,22 +86,30 @@ ToolButton {
scale: control.imageScale scale: control.imageScale
} }
Behavior on color { Ripple {
ColorAnimation { id: ripple
duration: 100 visible: true
clipRadius: controlBackground.radius
clip: true
width: parent.width
height: parent.height
pressed: control.pressed
anchor: control
active: control.pressed || control.visualFocus || control.containsMouse
color: control.Material.rippleColor
layer.enabled: true
layer.effect: OpacityMask {
maskSource: Item {
width: ripple.width
height: ripple.height
Rectangle {
anchors.fill: parent
radius: controlBackground.radius
}
}
} }
} }
} }
} }
Text {
id: conetntText
text: qsTr(control.text)
anchors.centerIn: parent
font: parent.font
color: control.textColor
opacity: control.enabled ? 1:0.4
}
} }

View file

@ -1,12 +1,13 @@
import QtQuick 2.15 import QtQuick 2.15
import QtQuick.Controls 2.15 import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15 import QtQuick.Layouts 1.15
import QtQuick.Controls.Material 2.15
ItemDelegate { ColoredItemDelegate {
id: partDel id: partDel
property int ind: index property int thisIndex: index
property var thisData: widgetData[ "participants" ][partDel.ind] property var thisData: widgetData[ "participants" ][partDel.thisIndex]
width: control.width width: control.width
height: partDelCol.showSideBySide ? 40:70 height: partDelCol.showSideBySide ? 40:70
@ -24,23 +25,14 @@ ItemDelegate {
app.openWidget({person:thisData["PerId"]}) app.openWidget({person:thisData["PerId"]})
} }
highlighted: partDel.thisIndex % 2 == 0
ParallelAnimation { ParallelAnimation {
id: fadeInPa id: fadeInPa
NumberAnimation { target: partDel; property: "opacity"; from: 0; to: 1.0; duration: 400 } NumberAnimation { target: partDel; property: "opacity"; from: 0; to: 1.0; duration: 400 }
NumberAnimation { target: partDel; property: "scale"; from: 0.8; to: 1.0; duration: 400 } NumberAnimation { target: partDel; property: "scale"; from: 0.8; to: 1.0; duration: 400 }
} }
Rectangle {
id: partDelBackgroundRect
anchors.fill: parent
width: partDel.width
color: partDel.ind % 2 == 0 ? "white":"lightgrey"
opacity: 0.2
}
GridLayout { GridLayout {
id: partDelCol id: partDelCol
@ -133,8 +125,8 @@ ItemDelegate {
function getDataForIcon(index){ function getDataForIcon(index){
// TODO: clean // TODO: clean
var resultString = widgetData[ "participants" ][partDel.ind]["boulder"+(index+1)] var resultString = widgetData[ "participants" ][partDel.thisIndex]["boulder"+(index+1)]
var numTrys = widgetData[ "participants" ][partDel.ind]["try"+(index+1)] var numTrys = widgetData[ "participants" ][partDel.thisIndex]["try"+(index+1)]
var resultList = [] var resultList = []
@ -311,6 +303,8 @@ ItemDelegate {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: "#dd000000"
text: boulderResCv.resultData[2] text: boulderResCv.resultData[2]
} }
@ -336,6 +330,8 @@ ItemDelegate {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: "#dd000000"
text: boulderResCv.resultData[1] text: boulderResCv.resultData[1]
} }
@ -360,6 +356,8 @@ ItemDelegate {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
color: "#dd000000"
text: boulderResCv.resultData[0] text: boulderResCv.resultData[0]
} }
} }
@ -427,7 +425,7 @@ ItemDelegate {
visible: index === 0 visible: index === 0
color: "grey" color: Material.primaryTextColor
} }
Rectangle { Rectangle {
@ -438,7 +436,7 @@ ItemDelegate {
width: 1 width: 1
height: parent.height height: parent.height
color: "grey" color: Material.primaryTextColor
} }
Label { Label {
@ -454,7 +452,9 @@ ItemDelegate {
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter horizontalAlignment: Text.AlignHCenter
text: widgetData[ "participants" ][partDel.ind]["result"+(generalResRep.routes[index][0])] === undefined ? "":widgetData[ "participants" ][partDel.ind]["result"+(generalResRep.routes[index][0])] text: widgetData["participants"][partDel.thisIndex]["result"+(generalResRep.routes[index][0])] === undefined ?
"":
widgetData[ "participants" ][partDel.thisIndex]["result"+(generalResRep.routes[index][0])]
} }
} }
@ -479,7 +479,7 @@ ItemDelegate {
font.pixelSize: Math.abs( height * 0.6 ) font.pixelSize: Math.abs( height * 0.6 )
minimumPixelSize: 1 minimumPixelSize: 1
text: widgetData[ "participants" ][partDel.ind]["result"] === undefined ? "":widgetData[ "participants" ][partDel.ind]["result"] text: widgetData[ "participants" ][partDel.thisIndex]["result"] === undefined ? "":widgetData[ "participants" ][partDel.thisIndex]["result"]
} }
} }
} }

View file

@ -83,6 +83,7 @@ Dialog {
background: Item { background: Item {
Rectangle { Rectangle {
id: backgroundRect id: backgroundRect
anchors { anchors {
fill: parent fill: parent
bottomMargin: -radius bottomMargin: -radius

View file

@ -385,7 +385,7 @@ Item {
width: parent.width width: parent.width
height: roundItem.tileSize height: roundItem.tileSize
//scale: 0.9 //scale: 0.9
color: "white" color: Material.dialogColor
border.color: "lightgrey" border.color: "lightgrey"
border.width: 0 border.width: 0
radius: height * 0.2 radius: height * 0.2
@ -438,7 +438,7 @@ Item {
font.bold: matchItm.winnerIndex === index font.bold: matchItm.winnerIndex === index
elide: "ElideRight" elide: "ElideRight"
color: matchItm.winnerIndex === index ? "green":"black" color: matchItm.winnerIndex === index ? Material.color(Material.Green):Material.primaryTextColor
text: matchItm.thisMatchData[index] !== undefined ? matchItm.thisMatchData[index]['firstname'] + " " + matchItm.thisMatchData[index]['lastname'] :"-" text: matchItm.thisMatchData[index] !== undefined ? matchItm.thisMatchData[index]['firstname'] + " " + matchItm.thisMatchData[index]['lastname'] :"-"
} }

View file

@ -19,6 +19,7 @@
import QtQuick 2.9 import QtQuick 2.9
import QtQuick.Controls 2.4 import QtQuick.Controls 2.4
import QtQuick.Layouts 1.0 import QtQuick.Layouts 1.0
import QtQuick.Controls.Material 2.12
import "../Components" import "../Components"
@ -59,7 +60,7 @@ Page {
height: menuGr.buttonSize height: menuGr.buttonSize
width: height width: height
image: "qrc:/icons/dav.png" image: Material.theme === Material.Dark ? "qrc:/icons/dav-dark.png":"qrc:/icons/dav.png"
onClicked: { onClicked: {
app.openWidget({nation:"GER"}) app.openWidget({nation:"GER"})
@ -73,7 +74,7 @@ Page {
height: menuGr.buttonSize height: menuGr.buttonSize
width: height width: height
image: "qrc:/icons/sac.png" image: Material.theme === Material.Dark ? "qrc:/icons/sac-dark.png":"qrc:/icons/sac.png"
onClicked: { onClicked: {
app.openWidget({nation:"SUI"}) app.openWidget({nation:"SUI"})
@ -139,6 +140,7 @@ Page {
DisclaimerDialog { DisclaimerDialog {
id: ifscDisclaimerDialog id: ifscDisclaimerDialog
Material.theme: root.Material.theme
title: "Where are the IFSC results?" title: "Where are the IFSC results?"
content: "Unfortunately, the IFSC has restricted the access to their data and <b>is not willing to share results with blueROCK anymore</b>. " + content: "Unfortunately, the IFSC has restricted the access to their data and <b>is not willing to share results with blueROCK anymore</b>. " +
"Because of this, blueROCK is no longer able to access and display IFSC results.<br><br>" + "Because of this, blueROCK is no longer able to access and display IFSC results.<br><br>" +
@ -147,6 +149,7 @@ Page {
DisclaimerDialog { DisclaimerDialog {
id: aboutBluerockDisclaimerDialog id: aboutBluerockDisclaimerDialog
Material.theme: root.Material.theme
title: "blueROCK v" + APP_VERSION + "<br>By <a href=\"https://itsblue.de\">Itsblue Development</a>" title: "blueROCK v" + APP_VERSION + "<br>By <a href=\"https://itsblue.de\">Itsblue Development</a>"
content: "This app was built using the <a href='https://qt.io'>Qt Framework</a> " + content: "This app was built using the <a href='https://qt.io'>Qt Framework</a> " +
"licensed under the <a href='https://www.gnu.org/licenses/lgpl-3.0.en.html'>GNU lgplV3 license</a>.<br><br>"+ "licensed under the <a href='https://www.gnu.org/licenses/lgpl-3.0.en.html'>GNU lgplV3 license</a>.<br><br>"+

View file

@ -248,6 +248,8 @@ Page {
SelectorPopup { SelectorPopup {
id: selectorPu id: selectorPu
Material.theme: root.Material.theme
contentItem: ListView { contentItem: ListView {
id: selectorLv id: selectorLv

View file

@ -19,6 +19,7 @@
import QtQuick 2.9 import QtQuick 2.9
import QtQuick.Controls 2.4 import QtQuick.Controls 2.4
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import QtQuick.Controls.Material 2.12
import "../Components" import "../Components"
@ -403,6 +404,8 @@ DataListView {
SelectorPopup { SelectorPopup {
id: filterSelectPu id: filterSelectPu
Material.theme: control.Material.theme
contentItem: ListView { contentItem: ListView {
id: selectorLv id: selectorLv

View file

@ -251,7 +251,7 @@ Page {
height: 1 height: 1
width: parent.width width: parent.width
color: "black" color: Material.foreground
} }

View file

@ -91,6 +91,8 @@ DataListView {
text: "" text: ""
highlighted: partDel.thisIndex % 2 == 0
onClicked: { onClicked: {
if(state === "closed"){ if(state === "closed"){
// close all other delegates // close all other delegates
@ -110,16 +112,6 @@ DataListView {
} }
} }
Rectangle {
anchors.fill: parent
width: partDel.width
color: partDel.thisIndex % 2 == 0 ? "white":"lightgrey"
opacity: 0.2
}
Column { Column {
id: partDelCol id: partDelCol

View file

@ -165,15 +165,7 @@ DataListView {
text: "" text: ""
Rectangle { highlighted: partDel.thisIndex % 2 == 0
anchors.fill: parent
width: partDel.width
color: partDel.thisIndex % 2 == 0 ? "white":"lightgrey"
opacity: 0.2
}
Label { Label {
anchors.fill: parent anchors.fill: parent

View file

@ -138,15 +138,7 @@ DataListView {
text: "" text: ""
Rectangle { highlighted: partDel.thisIndex % 2 == 0
anchors.fill: parent
width: partDel.width
color: partDel.thisIndex % 2 == 0 ? "white":"lightgrey"
opacity: 0.2
}
Row { Row {
id: partDelFirstRow id: partDelFirstRow

View file

@ -39,6 +39,11 @@ Window {
property int errorCode: -1 property int errorCode: -1
property var colorShade: Material.theme === Material.Light ? Material.Shade300 : Material.Shade700
property color nationalAdultsColor: Material.color(Material.Green, colorShade)
property color nationalYouthColor: Material.color(Material.LightGreen, colorShade)
property color federalColor: Material.backgroundColor
// comp cats source: // comp cats source:
// - https://github.com/ralfbecker/ranking/blob/master/sitemgr/digitalrock/dav_calendar.php // - https://github.com/ralfbecker/ranking/blob/master/sitemgr/digitalrock/dav_calendar.php
// - https://github.com/ralfbecker/ranking/blob/master/sitemgr/digitalrock/sac_calendar.php // - https://github.com/ralfbecker/ranking/blob/master/sitemgr/digitalrock/sac_calendar.php
@ -50,7 +55,7 @@ Window {
'ger_meisterschaft' : { 'ger_meisterschaft' : {
'label' : 'Deutsche Meisterschaft', 'label' : 'Deutsche Meisterschaft',
'nation' : 'GER', 'nation' : 'GER',
'bgcolor' : '#A8F0A8', 'bgcolor' : app.nationalAdultsColor,//'#A8F0A8',
'sort_rank': 1, 'sort_rank': 1,
'cat_id' : [57, 59, 60] 'cat_id' : [57, 59, 60]
}, },
@ -61,7 +66,7 @@ Window {
'wettk_reg' : '^[0-9]{2,2}[_J]{1,1}[^WL]+.*', 'wettk_reg' : '^[0-9]{2,2}[_J]{1,1}[^WL]+.*',
'serie_reg' : '^[0-9]{2,2}_JC', 'serie_reg' : '^[0-9]{2,2}_JC',
// 'rang_title': 'Deutsche Jugend RANGLISTE', // 'rang_title': 'Deutsche Jugend RANGLISTE',
'bgcolor' : '#D8FFD8', 'bgcolor' : app.nationalYouthColor,//'#D8FFD8',
'sort_rank': 2, 'sort_rank': 2,
'cat_id' : [58] 'cat_id' : [58]
}, },
@ -71,7 +76,7 @@ Window {
'wettk_reg' : '^[0-9]{2,2}[_J]{1,1}LM.*', 'wettk_reg' : '^[0-9]{2,2}[_J]{1,1}LM.*',
'serie_reg' : '^[0-9]{2,2}[_J]{1,1}LM.*', 'serie_reg' : '^[0-9]{2,2}[_J]{1,1}LM.*',
'rang_title': '', 'rang_title': '',
'bgcolor' : '#F0F0F0', 'bgcolor' : app.federalColor, //'#F0F0F0',
'sort_rank': 3, 'sort_rank': 3,
'cat_id' : [61,56] 'cat_id' : [61,56]
}, },
@ -84,7 +89,7 @@ Window {
'wettk_reg' : '^[0-9]{2,2}_[^R].*', 'wettk_reg' : '^[0-9]{2,2}_[^R].*',
'serie_reg' : '.*', 'serie_reg' : '.*',
'rang_title': 'SWISS RANKING', 'rang_title': 'SWISS RANKING',
'bgcolor' : '#A8F0A8', 'bgcolor' : app.nationalAdultsColor, //'#A8F0A8',
'sort_rank': 1, 'sort_rank': 1,
'cat_id' : [62,63] 'cat_id' : [62,63]
}, },
@ -94,7 +99,7 @@ Window {
'wettk_reg' : '^[0-9]{2,2}_[^R].*', 'wettk_reg' : '^[0-9]{2,2}_[^R].*',
'serie_reg' : '.*', 'serie_reg' : '.*',
'rang_title': 'SWISS RANKING', 'rang_title': 'SWISS RANKING',
'bgcolor' : '#D8FFD8', 'bgcolor' : app.nationalYouthColor, //'#D8FFD8',
'sort_rank': 2, 'sort_rank': 2,
'cat_id' : [65] 'cat_id' : [65]
}, },
@ -103,7 +108,7 @@ Window {
'nation' : 'SUI', 'nation' : 'SUI',
'wettk_reg' : '^[0-9]{2,2}_RG_.*', 'wettk_reg' : '^[0-9]{2,2}_RG_.*',
'rang_title': '', 'rang_title': '',
'bgcolor' : '#F0F0F0', 'bgcolor' : app.federalColor, //'#F0F0F0',
'sort_rank': 3, 'sort_rank': 3,
'cat_id' : [64] 'cat_id' : [64]
}, },
@ -112,7 +117,7 @@ Window {
'nation' : 'SUI', 'nation' : 'SUI',
'wettk_reg' : '^[0-9]{2,2}_RC_.*', 'wettk_reg' : '^[0-9]{2,2}_RC_.*',
'rang_title': '', 'rang_title': '',
'bgcolor' : '#F0F0F0', 'bgcolor' : app.federalColor, //'#F0F0F0',
'sort_rank': 4, 'sort_rank': 4,
'cat_id' : [84] 'cat_id' : [84]
} }
@ -120,7 +125,7 @@ Window {
anchors.fill: parent anchors.fill: parent
//Material.theme: Material.Dark Material.theme: Material.Dark
Component.onCompleted: { Component.onCompleted: {
//loadingDl.open() //loadingDl.open()
@ -247,8 +252,6 @@ Window {
font.bold: true font.bold: true
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter
color: "black"
text: getText() text: getText()
function getText(){ function getText(){
@ -287,8 +290,6 @@ Window {
font.bold: false font.bold: false
color: "black"
text: getText() text: getText()
function getText(){ function getText(){

View file

@ -26,5 +26,6 @@
<file>Components/SpeedFlowChartPopup.qml</file> <file>Components/SpeedFlowChartPopup.qml</file>
<file>Components/BlueRockBadge.qml</file> <file>Components/BlueRockBadge.qml</file>
<file>Components/DisclaimerDialog.qml</file> <file>Components/DisclaimerDialog.qml</file>
<file>Components/ColoredItemDelegate.qml</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

View file

@ -1,7 +1,6 @@
<RCC> <RCC>
<qresource prefix="/"> <qresource prefix="/">
<file>icons/dav.png</file> <file>icons/dav.png</file>
<file>icons/ifsc.png</file>
<file>icons/sac.png</file> <file>icons/sac.png</file>
<file>icons/back.png</file> <file>icons/back.png</file>
<file>icons/backDark.png</file> <file>icons/backDark.png</file>
@ -26,8 +25,6 @@
<file>icons/bluerock/20x20@4/drawer.png</file> <file>icons/bluerock/20x20@4/drawer.png</file>
<file>icons/bluerock/20x20@4/menu.png</file> <file>icons/bluerock/20x20@4/menu.png</file>
<file>icons/bluerock/index.theme</file> <file>icons/bluerock/index.theme</file>
<file>icons/dig_rock.klein.jpg</file>
<file>icons/dig_rock.klein.png</file>
<file>icons/bluerock/20x20/calendar.png</file> <file>icons/bluerock/20x20/calendar.png</file>
<file>icons/bluerock/20x20@2/calendar.png</file> <file>icons/bluerock/20x20@2/calendar.png</file>
<file>icons/bluerock/20x20@3/calendar.png</file> <file>icons/bluerock/20x20@3/calendar.png</file>
@ -80,5 +77,7 @@
<file>screenshots/SpeedFlowchartDemo/ios/1.jpeg</file> <file>screenshots/SpeedFlowchartDemo/ios/1.jpeg</file>
<file>screenshots/SpeedFlowchartDemo/ios/2.jpeg</file> <file>screenshots/SpeedFlowchartDemo/ios/2.jpeg</file>
<file>screenshots/SpeedFlowchartDemo/ios/3.jpeg</file> <file>screenshots/SpeedFlowchartDemo/ios/3.jpeg</file>
<file>icons/dav-dark.png</file>
<file>icons/sac-dark.png</file>
</qresource> </qresource>
</RCC> </RCC>