mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-22 18:52:30 +01:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
a8cad9eb76
@ -40,8 +40,8 @@ build:shared_windows_release:
|
||||
script:
|
||||
- python -m pip install -U pip wheel
|
||||
- python -m pip install -U aqtinstall
|
||||
- aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- python -m aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- python -m aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- cd Tools
|
||||
- python setup.py
|
||||
- python build.py -type release -use-aqt -installer
|
||||
@ -58,8 +58,8 @@ build:windows_release:
|
||||
script:
|
||||
- python -m pip install -U pip wheel
|
||||
- python -m pip install -U aqtinstall
|
||||
- aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- python -m aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- python -m aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- cd Tools
|
||||
- python setup.py
|
||||
- python build.py -type release -use-aqt -installer
|
||||
@ -75,8 +75,8 @@ build:windows_release_steam:
|
||||
script:
|
||||
- python -m pip install -U pip wheel
|
||||
- python -m pip install -U aqtinstall
|
||||
- aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- python -m aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- python -m aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- cd Tools
|
||||
- python setup.py
|
||||
- python build.py -type release -steam -use-aqt -installer
|
||||
@ -92,8 +92,8 @@ build:osx_release:
|
||||
script:
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- python3 -m aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- python3 -m aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- cd Tools
|
||||
- python3 setup.py
|
||||
- python3 build.py -type release -use-aqt -installer
|
||||
@ -109,8 +109,8 @@ build:osx_release_steam:
|
||||
script:
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- python3 -m aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- python3 -m aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- cd Tools
|
||||
- python3 setup.py
|
||||
- python3 build.py -type release -steam -use-aqt -installer
|
||||
@ -137,8 +137,8 @@ build:linux_release:
|
||||
- apt install mesa-common-dev libxkbcommon-* libfontconfig curl zip unzip tar git pkg-config apt-transport-https ca-certificates gnupg software-properties-common wget software-properties-common wget python3-pip build-essential libgl1-mesa-dev lld ninja-build cmake -y
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
|
||||
- aqt install-tool -O ../aqt linux desktop tools_ifw
|
||||
- python3 -m aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
|
||||
- python3 -m aqt install-tool -O ../aqt linux desktop tools_ifw
|
||||
- cd Tools
|
||||
- python3 setup.py
|
||||
- python3 build.py -type release -steam -use-aqt -installer
|
||||
@ -154,8 +154,8 @@ release:windows_steam:
|
||||
script:
|
||||
- python -m pip install -U pip wheel
|
||||
- python -m pip install -U aqtinstall
|
||||
- aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- python -m aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- python -m aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- cd Tools
|
||||
- python setup.py
|
||||
- python build.py -type release -use-aqt -steam
|
||||
@ -173,8 +173,8 @@ release:windows_standalone:
|
||||
script:
|
||||
- python -m pip install -U pip wheel
|
||||
- python -m pip install -U aqtinstall
|
||||
- aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- python -m aqt install-qt -O ../aqt windows desktop $QT_VERSION win64_msvc2019_64 -m all
|
||||
- python -m aqt install-tool -O ../aqt windows desktop tools_ifw
|
||||
- cd Tools
|
||||
- python setup.py
|
||||
- python build.py -type release -use-aqt -installer
|
||||
@ -192,8 +192,8 @@ release:osx_steam:
|
||||
script:
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- python -m aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- python -m aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- cd Tools
|
||||
- python3 setup.py
|
||||
- python3 build.py -type release -steam -use-aqt -sign
|
||||
@ -211,8 +211,8 @@ release:osx_standalone:
|
||||
script:
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- python3 -m aqt install-qt -O ../aqt mac desktop $QT_VERSION clang_64 -m all
|
||||
- python3 -m aqt install-tool -O ../aqt mac desktop tools_ifw
|
||||
- cd Tools
|
||||
- python3 setup.py
|
||||
- python3 build.py -type release -installer -use-aqt -sign
|
||||
@ -241,8 +241,8 @@ release:linux_steam:
|
||||
- apt install mesa-common-dev libxkbcommon-* libfontconfig curl zip unzip tar git pkg-config apt-transport-https ca-certificates gnupg software-properties-common wget software-properties-common wget python3-pip build-essential libgl1-mesa-dev lld ninja-build cmake -y
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
|
||||
- aqt install-tool -O ../aqt linux desktop tools_ifw
|
||||
- python3 -m aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
|
||||
- python3 -m aqt install-tool -O ../aqt linux desktop tools_ifw
|
||||
- curl -OL $CQTDEPLOYER_URL
|
||||
- chmod +x ./CQtDeployer_*.deb
|
||||
- apt install ./CQtDeployer_*.deb -y
|
||||
@ -274,8 +274,8 @@ release:linux_standalone:
|
||||
- apt install mesa-common-dev libxkbcommon-* libfontconfig curl zip unzip tar git pkg-config apt-transport-https ca-certificates gnupg software-properties-common wget software-properties-common wget python3-pip build-essential libgl1-mesa-dev lld ninja-build cmake -y
|
||||
- pip3 install -U pip
|
||||
- pip3 install aqtinstall
|
||||
- aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
|
||||
- aqt install-tool -O ../aqt linux desktop tools_ifw
|
||||
- python3 -m aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
|
||||
- python3 -m aqt install-tool -O ../aqt linux desktop tools_ifw
|
||||
- cd Tools
|
||||
- python3 setup.py
|
||||
- python3 build.py -type release -installer -use-aqt
|
||||
|
@ -1,16 +1,12 @@
|
||||
# Variable must be around "" to be equal!
|
||||
if("${CPACK_IFW_ROOT}" STREQUAL "")
|
||||
# Hardcoded Qt paths that are used by the QtMaintanance tool for now...
|
||||
if(WIN32)
|
||||
if(${GITLAB_CI})
|
||||
set(SCREENPLAY_IFW_ROOT "${CMAKE_SOURCE_DIR}/../aqt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}")
|
||||
else()
|
||||
if(${GITLAB_CI})
|
||||
set(SCREENPLAY_IFW_ROOT "${CMAKE_SOURCE_DIR}/../aqt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}")
|
||||
else()
|
||||
if(WIN32)
|
||||
set(SCREENPLAY_IFW_ROOT "C:/Qt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}")
|
||||
endif()
|
||||
elseif(UNIX)
|
||||
if(${GITLAB_CI})
|
||||
set(SCREENPLAY_IFW_ROOT "${CMAKE_SOURCE_DIR}/../aqt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}")
|
||||
else()
|
||||
elseif(UNIX)
|
||||
set(SCREENPLAY_IFW_ROOT "$ENV{HOME}/Qt/Tools/QtInstallerFramework/${SCREENPLAY_IFW_VERSION}")
|
||||
endif()
|
||||
endif()
|
||||
|
@ -54,10 +54,11 @@ list(APPEND QML_DIRS "${SCREENPLAY_QML_MODULES_PATH}")
|
||||
set(QML_IMPORT_PATH "${QML_DIRS}" CACHE STRING "Qt Creator extra qml import paths")
|
||||
|
||||
set(SCREENPLAY_IFW_ROOT "")
|
||||
set(SCREENPLAY_IFW_VERSION "4.3")
|
||||
set(SCREENPLAY_IFW_VERSION "4.4")
|
||||
|
||||
set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlay-vcpkg")
|
||||
set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}")
|
||||
set(VCPKG_BIN_PATH "${VCPKG_INSTALLED_PATH}/bin")
|
||||
|
||||
option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON)
|
||||
option(SCREENPLAY_RELEASE "Marks this version as an official release version. This version uses different import paths and other settings." OFF)
|
||||
|
@ -364,6 +364,9 @@ if(WIN32)
|
||||
configure_file(${VCPKG_INSTALLED_PATH}/tools/sentry-native/crashpad_handler.exe ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY)
|
||||
configure_file(${VCPKG_INSTALLED_PATH}/tools/sentry-native/zlib1.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY)
|
||||
|
||||
configure_file(${VCPKG_BIN_PATH}/libssl-3-x64.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY)
|
||||
configure_file(${VCPKG_BIN_PATH}/libcrypto-3-x64.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY)
|
||||
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
|
@ -2,6 +2,7 @@ import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Controls.Material
|
||||
import QtQuick.Controls.Material.impl
|
||||
import ScreenPlaySysInfo
|
||||
|
||||
Window {
|
||||
@ -10,11 +11,10 @@ Window {
|
||||
height: 768
|
||||
visible: true
|
||||
title: qsTr("ScreenPlaySysInfo")
|
||||
color: "#19181E"
|
||||
|
||||
property color accentColor: "#FF9800"
|
||||
property color accentColor: Material.secondaryTextColor
|
||||
property string fontFamily: "Arial"
|
||||
property int fontPointSize: 16
|
||||
property int fontPointSize: 14
|
||||
|
||||
SysInfo {
|
||||
id: sysInfo
|
||||
@ -32,27 +32,44 @@ Window {
|
||||
return out
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
spacing: 40
|
||||
anchors.fill: parent
|
||||
anchors.margins: 20
|
||||
Rectangle {
|
||||
anchors.fill: wrapper
|
||||
anchors.margins: -50
|
||||
color: Material.backgroundColor
|
||||
radius: 4
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: ElevationEffect {
|
||||
elevation: 4
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id:wrapper
|
||||
spacing: 40
|
||||
anchors.centerIn: parent
|
||||
ColumnLayout {
|
||||
id: wrapperLeft
|
||||
Text {
|
||||
text: "IpAddress"
|
||||
color: root.accentColor
|
||||
font.family: root.fontFamily
|
||||
font.pointSize: 60
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
Layout.preferredWidth: 500
|
||||
|
||||
|
||||
ColumnLayout {
|
||||
spacing: 10
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Text {
|
||||
text: "Private Addresses"
|
||||
color: root.accentColor
|
||||
font {
|
||||
pointSize: 24
|
||||
family: root.fontFamily
|
||||
}
|
||||
}
|
||||
Text {
|
||||
text: root.stringListToString(
|
||||
ipAddress.privateIpV4AddressList)
|
||||
color: root.accentColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font {
|
||||
pointSize: 16
|
||||
family: "Fira Code"
|
||||
@ -62,22 +79,35 @@ Window {
|
||||
text: root.stringListToString(
|
||||
ipAddress.privateIpV6AddressList)
|
||||
color: root.accentColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font {
|
||||
pointSize: 16
|
||||
family: "Fira Code"
|
||||
}
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
color: root.accentColor
|
||||
Layout.preferredHeight: 5
|
||||
Layout.preferredHeight: 3
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
Text {
|
||||
text: "Public Addresses"
|
||||
color: root.accentColor
|
||||
font {
|
||||
pointSize: 24
|
||||
family: root.fontFamily
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
text: ipAddress.publicIpV4Address
|
||||
color: root.accentColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font {
|
||||
pointSize: 16
|
||||
family: root.fontFamily
|
||||
@ -86,7 +116,6 @@ Window {
|
||||
Text {
|
||||
text: ipAddress.publicIpV6Address
|
||||
color: root.accentColor
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
font {
|
||||
pointSize: 16
|
||||
family: root.fontFamily
|
||||
@ -96,18 +125,19 @@ Window {
|
||||
}
|
||||
Rectangle {
|
||||
color: root.accentColor
|
||||
Layout.fillHeight: true
|
||||
width: 10
|
||||
Layout.preferredHeight: 600
|
||||
width: 3
|
||||
}
|
||||
ColumnLayout {
|
||||
id: wrapperRight
|
||||
|
||||
spacing: 20
|
||||
Layout.preferredWidth: 500
|
||||
Text {
|
||||
id: txtGPU
|
||||
text: "GPU"
|
||||
color: root.accentColor
|
||||
font.family: root.fontFamily
|
||||
font.pointSize: 60
|
||||
font.pointSize: 36
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
|
||||
@ -137,20 +167,13 @@ Window {
|
||||
text: "UPTIME"
|
||||
color: root.accentColor
|
||||
font.family: root.fontFamily
|
||||
font.pointSize: 60
|
||||
font.pointSize: 36
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: valuesLayout
|
||||
spacing: 20
|
||||
Text {
|
||||
id: txtYears
|
||||
text: "YEARS " + sysInfo.uptime.years
|
||||
color: root.accentColor
|
||||
font.family: root.fontFamily
|
||||
font.pointSize: root.fontPointSize
|
||||
}
|
||||
Text {
|
||||
text: "DAYS " + sysInfo.uptime.days
|
||||
color: root.accentColor
|
||||
@ -183,13 +206,12 @@ Window {
|
||||
text: "CPU"
|
||||
color: root.accentColor
|
||||
font.family: root.fontFamily
|
||||
font.pointSize: 60
|
||||
font.pointSize: 36
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
Row {
|
||||
id: row
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredWidth: 300
|
||||
Text {
|
||||
id: txtCPUValue
|
||||
text: Math.floor(sysInfo.cpu.usage)
|
||||
@ -210,14 +232,10 @@ Window {
|
||||
text: "STORAGE"
|
||||
color: root.accentColor
|
||||
font.family: root.fontFamily
|
||||
font.pointSize: 60
|
||||
font.pointSize: 36
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
}
|
||||
|
||||
Item {
|
||||
Layout.fillWidth: true
|
||||
Layout.preferredHeight: 20
|
||||
}
|
||||
|
||||
ListView {
|
||||
id: storageListView
|
||||
@ -225,10 +243,12 @@ Window {
|
||||
Layout.preferredHeight: 100
|
||||
model: sysInfo.storage
|
||||
delegate: Item {
|
||||
width: storageListView.width
|
||||
width: 500
|
||||
height: 40
|
||||
Row {
|
||||
RowLayout {
|
||||
spacing: 10
|
||||
width: 500
|
||||
|
||||
Text {
|
||||
id: txtStorageName
|
||||
text: name
|
||||
@ -240,7 +260,7 @@ Window {
|
||||
from: 0
|
||||
to: bytesTotal
|
||||
value: bytesAvailable
|
||||
width: storageListView.width - txtStorageName.width - row.spacing
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5,12 +5,12 @@
|
||||
|
||||
#include "HelpersCommon.h"
|
||||
|
||||
template <class ObjType>
|
||||
class QQmlSmartListWrapper : public QQmlListProperty<ObjType> {
|
||||
template <class T>
|
||||
class QQmlSmartListWrapper : public QQmlListProperty<T> {
|
||||
public:
|
||||
typedef QVector<ObjType*> CppListType;
|
||||
typedef QQmlListProperty<ObjType> QmlListPropertyType;
|
||||
typedef QQmlSmartListWrapper<ObjType> SmartListWrapperType;
|
||||
typedef QVector<T*> CppListType;
|
||||
typedef QQmlListProperty<T> QmlListPropertyType;
|
||||
typedef QQmlSmartListWrapper<T> SmartListWrapperType;
|
||||
|
||||
typedef typename CppListType::const_iterator const_iterator;
|
||||
|
||||
@ -41,12 +41,12 @@ public:
|
||||
|
||||
static void callbackClear(QmlListPropertyType* prop) { static_cast<CppListType*>(prop->data)->clear(); }
|
||||
|
||||
static void callbackAppend(QmlListPropertyType* prop, ObjType* obj)
|
||||
static void callbackAppend(QmlListPropertyType* prop, T* obj)
|
||||
{
|
||||
static_cast<CppListType*>(prop->data)->append(obj);
|
||||
}
|
||||
|
||||
static ObjType* callbackAt(QmlListPropertyType* prop, qsizetype idx)
|
||||
static T* callbackAt(QmlListPropertyType* prop, qsizetype idx)
|
||||
{
|
||||
return static_cast<CppListType*>(prop->data)->at(idx);
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import QtQuick.Controls
|
||||
import QtQuick.Controls.Material
|
||||
import QtQuick.Controls.Material.impl
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import ScreenPlayWeather
|
||||
|
||||
Window {
|
||||
@ -16,8 +18,12 @@ Window {
|
||||
city: "Friedrichshafen"
|
||||
onReady: {
|
||||
rp.model = weather.days
|
||||
// Qt bug https://bugreports.qt.io/browse/QTBUG-105137
|
||||
test()
|
||||
}
|
||||
}
|
||||
function test() {}
|
||||
|
||||
function mapWeatherCode(code) {
|
||||
const weather_time = "" // or "-day", "-night"
|
||||
const weather_prefix = "wi" + weather_time + "-"
|
||||
@ -62,10 +68,29 @@ Window {
|
||||
return weather_prefix + "storm-showers"
|
||||
}
|
||||
}
|
||||
Rectangle {
|
||||
anchors.fill: wrapper
|
||||
color: Material.backgroundColor
|
||||
Material.elevation: 5
|
||||
radius: 4
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: wrapper
|
||||
color: Material.backgroundColor
|
||||
radius: 4
|
||||
|
||||
layer.enabled: true
|
||||
layer.effect: ElevationEffect {
|
||||
elevation: 4
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
anchors.margins: 20
|
||||
id: wrapper
|
||||
anchors.centerIn: parent
|
||||
width: implicitWidth + 100
|
||||
height: implicitHeight + 100
|
||||
TextField {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
@ -80,76 +105,87 @@ Window {
|
||||
+ "m - population: " + weather.population
|
||||
}
|
||||
|
||||
component TextItem: Column {
|
||||
property alias value: value.text
|
||||
property alias text: description.text
|
||||
Layout.preferredWidth: 120
|
||||
Text {
|
||||
id: value
|
||||
width: 120
|
||||
font.pointSize: 16
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
color: Material.primaryTextColor
|
||||
}
|
||||
Text {
|
||||
id: description
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
color: Material.secondaryTextColor
|
||||
width: 120
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Repeater {
|
||||
id: rp
|
||||
onModelChanged: print("MODEL CHANGED")
|
||||
onCountChanged: print(count)
|
||||
ColumnLayout {
|
||||
id: cl
|
||||
spacing: 20
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: day + "\nday"
|
||||
Layout.preferredWidth: 120
|
||||
TextItem {
|
||||
text: "Day"
|
||||
value: day
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: dateTime + "\ndateTime"
|
||||
TextItem {
|
||||
text: "Sunrise"
|
||||
value: sunrise
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: sunrise + "\nsunrise"
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: sunset + "\nsunset"
|
||||
TextItem {
|
||||
text: "Sunset"
|
||||
value: sunset
|
||||
}
|
||||
|
||||
Image {
|
||||
height: 64
|
||||
width: height
|
||||
sourceSize: Qt.size(height, height)
|
||||
layer {
|
||||
enabled: true
|
||||
effect: ColorOverlay {
|
||||
color: Material.primaryColor
|
||||
}
|
||||
}
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Image.AlignHCenter
|
||||
source: "qrc:/qml/ScreenPlayWeather/assets/icons/" + root.mapWeatherCode(
|
||||
weatherCode) + ".svg"
|
||||
}
|
||||
TextItem {
|
||||
text: "Weather Code"
|
||||
value: weatherCode
|
||||
}
|
||||
TextItem {
|
||||
text: "Temperature min"
|
||||
value: temperature_2m_min
|
||||
}
|
||||
TextItem {
|
||||
text: "Temperature max"
|
||||
value: temperature_2m_max
|
||||
}
|
||||
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: weatherCode + "\nweatherCode"
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: temperature_2m_min + "\ntemperature_2m_min"
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: temperature_2m_max + "\ntemperature_2m_max"
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: precipitationHours + "\nprecipitationHours"
|
||||
}
|
||||
Text {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
horizontalAlignment: Text.AlignHCenter
|
||||
text: precipitationSum + "\nprecipitationSum"
|
||||
}
|
||||
// TextItem {
|
||||
// text: "Precipitation Sum"
|
||||
// value: precipitationSum
|
||||
// }
|
||||
|
||||
// TextItem {
|
||||
// text: "Precipitation Hours"
|
||||
// value: precipitationHours
|
||||
// }
|
||||
}
|
||||
}
|
||||
}
|
||||
Button {
|
||||
text: "getDay"
|
||||
onClicked: {
|
||||
var day = weather.getDay(1)
|
||||
print("weatherCode:", day.weatherCode, day.precipitationSum)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,8 @@ class Day : public QObject {
|
||||
public:
|
||||
W_PROPERTY(int, day)
|
||||
W_PROPERTY(QDateTime, dateTime)
|
||||
W_PROPERTY(QDateTime, sunrise)
|
||||
W_PROPERTY(QDateTime, sunset)
|
||||
W_PROPERTY(QString, sunrise)
|
||||
W_PROPERTY(QString, sunset)
|
||||
W_PROPERTY_DEFAULT(int, weatherCode, 0)
|
||||
W_PROPERTY_DEFAULT(float, temperature_2m_min, 0.0f)
|
||||
W_PROPERTY_DEFAULT(float, temperature_2m_max, 0.0f)
|
||||
|
@ -25,7 +25,7 @@ void ScreenPlayWeather::updateLatitudeLongtitude(const QString& city)
|
||||
request.setUrl(url);
|
||||
auto* reply = m_networkAccessManager.get(request);
|
||||
|
||||
QObject::connect(reply, &QNetworkReply::readyRead, this, [this, reply]() {
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply]() {
|
||||
const QByteArray data = reply->readAll();
|
||||
if (data.size() <= 0)
|
||||
return;
|
||||
@ -50,7 +50,7 @@ void ScreenPlayWeather::updateLatitudeLongtitude(const QString& city)
|
||||
if (result.contains("population"))
|
||||
setPopulation(result.value("population").toInt());
|
||||
});
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, []() { qInfo() << "finished!"; });
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, []() { qInfo() << "updateLatitudeLongtitude finished!"; });
|
||||
QObject::connect(reply, &QNetworkReply::errorOccurred, this, []() { qInfo() << "errorOccurred!"; });
|
||||
}
|
||||
|
||||
@ -80,7 +80,7 @@ void ScreenPlayWeather::update()
|
||||
qInfo() << url;
|
||||
auto* reply = m_networkAccessManager.get(request);
|
||||
|
||||
QObject::connect(reply, &QNetworkReply::readyRead, this, [this, reply]() {
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, [this, reply]() {
|
||||
const QByteArray data = reply->readAll();
|
||||
if (data.size() <= 0)
|
||||
return;
|
||||
@ -108,9 +108,9 @@ void ScreenPlayWeather::update()
|
||||
for (int i = 0; i < time.size(); ++i) {
|
||||
auto day = new Day();
|
||||
day->set_day(i);
|
||||
day->set_sunrise(QDateTime::fromString(sunrise.at(i).toString(), m_dataTimeFormat));
|
||||
day->set_sunset(QDateTime::fromString(sunset.at(i).toString(), m_dataTimeFormat));
|
||||
day->set_dateTime(QDateTime::fromString(time.at(i).toString(), m_dataTimeFormat));
|
||||
day->set_sunrise(QDateTime::fromString(sunrise.at(i).toString(), m_dataTimeFormat).toString("mm:ss"));
|
||||
day->set_sunset(QDateTime::fromString(sunset.at(i).toString(), m_dataTimeFormat).toString("mm:ss"));
|
||||
day->set_weatherCode(weathercode.at(i).toInt());
|
||||
day->set_temperature_2m_min(ScreenPlayUtil::roundDecimalPlaces(temperature_2m_min.at(i).toDouble()));
|
||||
day->set_temperature_2m_max(ScreenPlayUtil::roundDecimalPlaces(temperature_2m_max.at(i).toDouble()));
|
||||
@ -121,7 +121,7 @@ void ScreenPlayWeather::update()
|
||||
const auto hourly = msgOpt->value("hourly").toObject();
|
||||
emit ready();
|
||||
});
|
||||
QObject::connect(reply, &QNetworkReply::finished, this, []() { qInfo() << "finished!"; });
|
||||
|
||||
QObject::connect(reply, &QNetworkReply::errorOccurred, this, []() { qInfo() << "errorOccurred!"; });
|
||||
}
|
||||
|
||||
|
@ -1,19 +0,0 @@
|
||||
cd ..
|
||||
|
||||
rem Download 7-zip
|
||||
curl.exe -L https://www.7-zip.org/a/7z1900.msi --ssl-no-revoke --output 7z.msi
|
||||
rem Extract 7z
|
||||
msiexec /a 7z.msi /qb TARGETDIR="%cd%\7z"
|
||||
|
||||
rem Donwload ffmpeg
|
||||
curl.exe -L https://www.gyan.dev/ffmpeg/builds/ffmpeg-release-full-shared.7z --ssl-no-revoke --output ffmpeg.7z
|
||||
rem Extract ffmpeg
|
||||
"%cd%\7z\Files\7-Zip\7z.exe" e -y ffmpeg.7z -o"%cd%\Common\ffmpeg" *.exe *.dll -r
|
||||
|
||||
rem Remove not used ffplay
|
||||
DEL Common\ffmpeg\ffplay.exe
|
||||
|
||||
rem Deleting FFmpeg temp
|
||||
DEL ffmpeg.7z
|
||||
DEL 7z.msi
|
||||
rmdir 7z /s /q
|
@ -1,42 +1,119 @@
|
||||
import zipfile
|
||||
from fileinput import filename
|
||||
import pathlib
|
||||
from zipfile import ZipFile
|
||||
from pathlib import Path
|
||||
import py7zr
|
||||
import platform
|
||||
from urllib.request import urlopen
|
||||
import os
|
||||
from shutil import move, rmtree
|
||||
from util import cd_repo_root_path
|
||||
|
||||
FFMPEG_VERSION = "5.0.1"
|
||||
|
||||
|
||||
def download_and_extract(file_base_path, name):
|
||||
print("Download: ", name)
|
||||
def download(
|
||||
download_server_base_url,
|
||||
extraction_path,
|
||||
name) -> str:
|
||||
|
||||
download_server_base_url = 'https://evermeet.cx/ffmpeg/'
|
||||
filedata = urlopen(download_server_base_url + name)
|
||||
url = download_server_base_url + name
|
||||
print(f"Downloading {name} from: {url}")
|
||||
filedata = urlopen(url)
|
||||
datatowrite = filedata.read()
|
||||
path_and_filename = os.path.join(file_base_path, name)
|
||||
path_and_filename = os.path.join(extraction_path, name)
|
||||
|
||||
print("Save tmp file: ", path_and_filename)
|
||||
with open(path_and_filename, 'wb') as f:
|
||||
f.write(datatowrite)
|
||||
|
||||
extraction_path = os.path.join(file_base_path, "../Common/ffmpeg")
|
||||
return path_and_filename
|
||||
|
||||
print("Extract to:", extraction_path)
|
||||
with zipfile.ZipFile(path_and_filename,"r") as zip_ref:
|
||||
|
||||
def extract_zip(extraction_path, path_and_filename):
|
||||
print(f"Extract {path_and_filename} to {extraction_path}")
|
||||
|
||||
with ZipFile(path_and_filename, "r") as zip_ref:
|
||||
zip_ref.extractall(extraction_path)
|
||||
|
||||
print("Delete tmp file: ", path_and_filename)
|
||||
os.remove(path_and_filename)
|
||||
print(f"Delete tmp file: {path_and_filename}")
|
||||
os.remove(path_and_filename)
|
||||
|
||||
def download_prebuild_ffmpeg():
|
||||
ffmpeg_7zip_name = 'ffmpeg-4.4.zip'
|
||||
ffprobe_7zip_name = 'ffprobe-4.4.zip'
|
||||
current_path = os.path.join(os.path.abspath(os.getcwd()),"")
|
||||
extraction_path = os.path.abspath(os.path.join(current_path, "../Common/ffmpeg"))
|
||||
|
||||
if not os.path.exists(extraction_path):
|
||||
os.makedirs(extraction_path)
|
||||
def extract_zip_executables(extraction_path, path_and_filename):
|
||||
files = []
|
||||
listOfFileNames = []
|
||||
with ZipFile(path_and_filename, 'r') as zipObj:
|
||||
# Get a list of all archived file names from the zip
|
||||
listOfFileNames = zipObj.namelist()
|
||||
# Iterate over the file names
|
||||
for fileName in listOfFileNames:
|
||||
# Check filename endswith csv
|
||||
if fileName.endswith('.exe'):
|
||||
# Extract a single file from zip
|
||||
zipObj.extract(fileName, extraction_path)
|
||||
print(f"Extract {fileName} to {extraction_path}")
|
||||
files.append(fileName)
|
||||
|
||||
download_and_extract(current_path, ffmpeg_7zip_name)
|
||||
download_and_extract(current_path, ffprobe_7zip_name)
|
||||
for file in files:
|
||||
abs_file_path = os.path.join(extraction_path, file)
|
||||
move(abs_file_path, extraction_path)
|
||||
print(f"Move {abs_file_path} to {extraction_path}")
|
||||
|
||||
print(f"Delete tmp zip file: {path_and_filename}")
|
||||
os.remove(path_and_filename)
|
||||
# We need the first folder name of a file:
|
||||
# ffmpeg-5.0.1-essentials_build/bin/ffmpeg.exe
|
||||
empty_ffmpeg_folder = os.path.join(extraction_path,os.path.dirname(os.path.dirname(files[0])))
|
||||
ffprobe = os.path.join(extraction_path,"ffprobe.exe")
|
||||
print(f"Delete not needed {ffprobe}")
|
||||
os.remove(ffprobe)
|
||||
print(f"Delete empty folder: {empty_ffmpeg_folder}")
|
||||
rmtree(empty_ffmpeg_folder)
|
||||
|
||||
|
||||
def download_prebuild_ffmpeg_mac(extraction_path: str):
|
||||
|
||||
print("Setup ffmpeg mac")
|
||||
ffmpeg_zip_name = f'ffmpeg-{FFMPEG_VERSION}.zip'
|
||||
ffprobe_zip_name = f'ffprobe-{FFMPEG_VERSION}.zip'
|
||||
download_server_base_url = 'https://evermeet.cx/ffmpeg/'
|
||||
|
||||
ffmpeg_path_and_filename = download(
|
||||
download_server_base_url, extraction_path, ffmpeg_zip_name)
|
||||
extract_zip(extraction_path, ffmpeg_path_and_filename)
|
||||
|
||||
ffprobe_path_and_filename = download(
|
||||
download_server_base_url, extraction_path, ffprobe_zip_name)
|
||||
extract_zip(extraction_path, ffprobe_path_and_filename)
|
||||
|
||||
|
||||
def download_prebuild_ffmpeg_windows(extraction_path: str):
|
||||
|
||||
print("Setup ffmpeg Windows")
|
||||
ffmpeg_shared_7zip_name = "ffmpeg-release-essentials.zip"
|
||||
download_server_base_url = 'https://www.gyan.dev/ffmpeg/builds/'
|
||||
|
||||
ffmpeg_path_and_filename = download(
|
||||
download_server_base_url, extraction_path, ffmpeg_shared_7zip_name)
|
||||
|
||||
extract_zip_executables(extraction_path, ffmpeg_path_and_filename)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
download_prebuild_ffmpeg()
|
||||
|
||||
# Make sure the script is always started from the same folder
|
||||
root_path = cd_repo_root_path()
|
||||
tools_path = os.path.join(root_path, "Tools")
|
||||
extraction_path = os.path.join(root_path, "Common/ffmpeg")
|
||||
|
||||
if os.path.exists(extraction_path):
|
||||
rmtree(extraction_path)
|
||||
|
||||
os.makedirs(extraction_path)
|
||||
|
||||
|
||||
if platform.system() == "Windows":
|
||||
download_prebuild_ffmpeg_windows(extraction_path)
|
||||
elif platform.os.system() == "Darwin":
|
||||
download_prebuild_ffmpeg_mac(extraction_path)
|
||||
|
10
Tools/install_requirements.py
Normal file
10
Tools/install_requirements.py
Normal file
@ -0,0 +1,10 @@
|
||||
#!/usr/bin/python3
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
|
||||
|
||||
def install_requirements():
|
||||
print("Set up required python modules")
|
||||
script_path = os.path.dirname(os.path.realpath(__file__))
|
||||
subprocess.check_call([sys.executable, "-m", "pip", "install", "-r", script_path + "/requirements.txt"])
|
3
Tools/requirements.txt
Normal file
3
Tools/requirements.txt
Normal file
@ -0,0 +1,3 @@
|
||||
pyunpack
|
||||
py7zr
|
||||
cmake-format
|
@ -1,15 +1,17 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
from install_requirements import install_requirements
|
||||
|
||||
install_requirements()
|
||||
|
||||
import argparse
|
||||
import shutil
|
||||
from platform import system
|
||||
from pathlib import Path
|
||||
from execute_util import execute
|
||||
from download_ffmpeg import download_prebuild_ffmpeg
|
||||
|
||||
vcpkg_version = "2ac61f8" # Master 23.04.2022
|
||||
|
||||
import download_ffmpeg
|
||||
|
||||
vcpkg_version = "98f8d00e89fb6a8019c2045cfa1edbe9d92d3405" # Master 09.07.2022
|
||||
|
||||
class commands_list():
|
||||
def __init__(self):
|
||||
@ -80,12 +82,8 @@ without the ScreenPlay-vcpkg folder (E.g. py .\setup.py --path "D:/Backup/Code/Q
|
||||
vcpkg_command = "vcpkg.exe"
|
||||
vcpkg_packages_list.append("infoware[d3d]")
|
||||
vcpkg_packages_list.append("sentry-native")
|
||||
if shutil.which("pwsh"):
|
||||
print("Using experimental pwsh, may not work properly.")
|
||||
platform_command.add("pwsh.exe -NoProfile -ExecutionPolicy Bypass .\scripts\\bootstrap.ps1", vcpkg_path)
|
||||
else:
|
||||
platform_command.add("bootstrap-vcpkg.bat", vcpkg_path, False)
|
||||
platform_command.add("download_ffmpeg.bat", project_source_path.joinpath("Tools"), False)
|
||||
platform_command.add("bootstrap-vcpkg.bat", vcpkg_path, False)
|
||||
download_ffmpeg.download_prebuild_ffmpeg_windows()
|
||||
vcpkg_triplet = ["x64-windows"]
|
||||
elif system() == "Darwin":
|
||||
vcpkg_command = "./vcpkg"
|
||||
@ -95,7 +93,7 @@ without the ScreenPlay-vcpkg folder (E.g. py .\setup.py --path "D:/Backup/Code/Q
|
||||
platform_command.add("./bootstrap-vcpkg.sh", vcpkg_path, False)
|
||||
platform_command.add("chmod +x vcpkg", vcpkg_path)
|
||||
vcpkg_triplet = ["x64-osx", "arm64-osx"]
|
||||
platform_command.add(download_prebuild_ffmpeg)
|
||||
download_ffmpeg.download_prebuild_ffmpeg_mac()
|
||||
elif system() == "Linux":
|
||||
vcpkg_command = "./vcpkg"
|
||||
#vcpkg_packages_list.append("infoware[opengl]")
|
||||
|
@ -1,7 +1,8 @@
|
||||
|
||||
|
||||
from pathlib import Path
|
||||
import os
|
||||
from pathlib import Path
|
||||
from os import chdir
|
||||
import subprocess
|
||||
|
||||
def run(cmd, cwd=Path.cwd()):
|
||||
@ -9,3 +10,14 @@ def run(cmd, cwd=Path.cwd()):
|
||||
if result.returncode != 0:
|
||||
raise RuntimeError(f"Failed to execute {cmd}")
|
||||
|
||||
|
||||
|
||||
def cd_repo_root_path() -> str:
|
||||
# Make sure the script is always started from the same
|
||||
# ScreenPlay root folder
|
||||
root_path = Path.cwd()
|
||||
if root_path.name == "Tools":
|
||||
root_path = root_path.parent
|
||||
print(f"Change root directory to: {root_path}")
|
||||
chdir(root_path)
|
||||
return root_path
|
||||
|
Loading…
Reference in New Issue
Block a user