1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-11-07 03:22:33 +01:00

Merge branch 'qt6-support' into 'master'

Add Qt6 support

Closes #138

See merge request kelteseth/ScreenPlay!85
This commit is contained in:
Elias Steurer 2021-11-12 14:09:02 +00:00
commit 80283f58f5
245 changed files with 35094 additions and 37994 deletions

3
.gitignore vendored
View File

@ -76,6 +76,9 @@ Common/vcpkg/**
Common/ffmpeg Common/ffmpeg
/Docs/html/screemplay.index /Docs/html/screemplay.index
#Steam
!ScreenPlayWorkshop/SteamSDK/redistributable_bin/linux64/libsteam_api.so
#CMake #CMake
CMakeLists.txt.user CMakeLists.txt.user
CMakeCache.txt CMakeCache.txt

View File

@ -97,7 +97,7 @@ build:linux_release:
- apt install mesa-common-dev 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 - apt install mesa-common-dev 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 aqtinstall - pip3 install aqtinstall
- mkdir Qt - mkdir Qt
- aqt install --outputdir Qt/ 5.15.2 linux desktop - aqt install --outputdir Qt/ 6.2.0 linux desktop
- cd Tools - cd Tools
- wget -q https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.2/CQtDeployer_1.5.2_OfflineInstaller_Linux64.run - wget -q https://github.com/QuasarApp/CQtDeployer/releases/download/1.5.2/CQtDeployer_1.5.2_OfflineInstaller_Linux64.run
- python3 setup.py - python3 setup.py

View File

@ -1,8 +1,7 @@
project(CMake) project(CMake)
set(FILES set(FILES # cmake-format: sortable
# cmake-format: sortable QtUpdateTranslations.cmake)
QtUpdateTranslations.cmake)
add_custom_target( add_custom_target(
${PROJECT_NAME} ${PROJECT_NAME}

View File

@ -9,7 +9,7 @@ function(qt_update_translations SOURCE_PATH TS_FILES)
foreach(_ts_file ${TS_FILES}) foreach(_ts_file ${TS_FILES})
message(STATUS "Update Translation: ${_ts_file}") message(STATUS "Update Translation: ${_ts_file}")
execute_process(COMMAND ${LUPDATE_EXECUTABLE} -noobsolete -recursive ${SOURCE_PATH} -ts ${_ts_file} OUTPUT_QUIET) execute_process(COMMAND ${LUPDATE_EXECUTABLE} -noobsolete -locations none -recursive ${SOURCE_PATH} -ts ${_ts_file} OUTPUT_QUIET)
execute_process(COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file} OUTPUT_QUIET) execute_process(COMMAND ${LRELEASE_EXECUTABLE} ${_ts_file} OUTPUT_QUIET)
endforeach() endforeach()

View File

@ -7,13 +7,12 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
option(SCREENPLAY_STEAM ON "For FOSS distribution so we do not bundle proprietary code.") option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON)
option(TESTS_ENABLED OFF) option(TESTS_ENABLED OFF)
# Add our *.cmake diretory to the CMAKE_MODULE_PATH, so that our includes are found # Add our *.cmake diretory to the CMAKE_MODULE_PATH, so that our includes are found
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH}) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
file(MAKE_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY}) file(MAKE_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD 20)
@ -30,7 +29,6 @@ if(${TESTS_ENABLED})
enable_testing() enable_testing()
endif() endif()
set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlay-vcpkg") set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlay-vcpkg")
set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}") set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}")
@ -94,4 +92,3 @@ message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}")
message(STATUS "[PROJECT] VCPKG_ARCH = ${VCPKG_ARCH}") message(STATUS "[PROJECT] VCPKG_ARCH = ${VCPKG_ARCH}")
message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}") message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}") message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}")

View File

@ -5,7 +5,7 @@
``` bash ``` bash
git clone --recursive https://gitlab.com/kelteseth/ScreenPlay.git ScreenPlay git clone --recursive https://gitlab.com/kelteseth/ScreenPlay.git ScreenPlay
``` ```
4. Download the latest __Qt 5.15.x__ for you platform. Earlier versions are not supported! 4. Download the latest __Qt 6.2.x__ for you platform. Earlier versions are not supported!
1. [Install instructions Windows](#windows) 1. [Install instructions Windows](#windows)
1. [Install instructions Linux](#linux) 1. [Install instructions Linux](#linux)
1. [Install instructions MacOSX](#macosx) 1. [Install instructions MacOSX](#macosx)
@ -15,10 +15,9 @@ cd Tools
py setup.py py setup.py
``` ```
* This will install these dependencies via __vcpkg__ * This will install these dependencies via __vcpkg__
* openSSL 1.1.1d * openSSL
* sentry-native * sentry-native
* doctest * doctest
* benchmark
* infoware * infoware
<div> <div>
@ -26,7 +25,7 @@ py setup.py
</div> </div>
5. Open __QtCreator__ and open the settings `Tools -> Options` 5. Open __QtCreator__ and open the settings `Tools -> Options`
6. Clone an existing kit like `Qt 5.15.2 MSVC2019 64bit` and add `ScreenPlay` to the new kit name 6. Clone an existing kit like `Qt 6.2.1 MSVC2019 64bit` and add `ScreenPlay` to the new kit name
5. Edit CMake variables amd add CMAKE_TOOLCHAIN_FILE and VCPKG_TARGET_TRIPLET 5. Edit CMake variables amd add CMAKE_TOOLCHAIN_FILE and VCPKG_TARGET_TRIPLET
* `Kits -> <Your_Kit> -> CMake Configuration` * `Kits -> <Your_Kit> -> CMake Configuration`
@ -54,9 +53,12 @@ VCPKG_TARGET_TRIPLET:STRING=x64-osx
1. [Download and install Qt 5 binary installer from qt.io](https://www.qt.io/download-qt-installer) 1. [Download and install Qt 5 binary installer from qt.io](https://www.qt.io/download-qt-installer)
- Install the Maintaince tool - Install the Maintaince tool
- Select the following features to install: - Select the following features to install:
- Qt 5.15.2 - Qt 6.2.1
- MSVC 2019 64-bit - MSVC 2019 64-bit
- Qt WebEngine - **ALL Additional Libraries**
- Qt Quick 3d
- Qt 5 Compatibility Module
- Qt Shader Tools
- Developer and Designer Tools - Developer and Designer Tools
- Cmake - Cmake
- Ninja - Ninja
@ -77,9 +79,12 @@ sudo zypper install -t pattern devel_basis
1. [Download and install Qt 5 binary installer from qt.io](https://www.qt.io/download-qt-installer) 1. [Download and install Qt 5 binary installer from qt.io](https://www.qt.io/download-qt-installer)
- Install the Maintaince tool - Install the Maintaince tool
- Select the following features to install: - Select the following features to install:
- Qt 5.15.2 - Qt 6.2.1
- GCC - GCC
- Qt WebEngine - **ALL Additional Libraries**
- Qt Quick 3d
- Qt 5 Compatibility Module
- Qt Shader Tools
- Developer and Designer Tools - Developer and Designer Tools
- OpenSSL 1.1.1.c Toolkit - OpenSSL 1.1.1.c Toolkit
- OpenSSL 64-bit binaries - OpenSSL 64-bit binaries
@ -89,8 +94,12 @@ sudo zypper install -t pattern devel_basis
1. [Download and install Qt 5 binary installer from qt.io](https://www.qt.io/download-qt-installer) 1. [Download and install Qt 5 binary installer from qt.io](https://www.qt.io/download-qt-installer)
- Install the Maintaince tool - Install the Maintaince tool
- Select the following features to install: - Select the following features to install:
- Qt 5.15.2 - Qt 6.2.1
- Qt WebEngine - Qt WebEngine
- **ALL Additional Libraries**
- Qt Quick 3d
- Qt 5 Compatibility Module
- Qt Shader Tools
- Developer and Designer Tools - Developer and Designer Tools
- OpenSSL 1.1.1.c Toolkit - OpenSSL 1.1.1.c Toolkit
- OpenSSL 64-bit binaries - OpenSSL 64-bit binaries

View File

@ -1,15 +1,19 @@
# Overview # Overview
ScreenPlay consists of 5 projects: ScreenPlay consists of 7 projects:
1. **ScreenPlay** 1. **ScreenPlay executable**
* The main ScreenPlay App UI with Create, Installed, Community and Settings * The main ScreenPlay App UI with Create, Installed, Community and Settings.
2. **ScreenPlaySDK** 2. **ScreenPlayWallpaper executable**
* A SDK used internally in the ScreenPlayWallpaper and ScreenPlayWidget to talk to the main ScreenPlay app via QLocalsockets (Windows Pipes and Unix sockets)
3. **ScreenPlaySysInfo**
* A qml plugin to read CPU, GPU, Network and all sort of statisitcs
4. **ScreenPlayWallpaper**
* The Wallpaper executable that is used for displaying a single wallpaper. This uses ScreenPlaySDK to talk via QLocalsockets with the main ScreenPlayApp. * The Wallpaper executable that is used for displaying a single wallpaper. This uses ScreenPlaySDK to talk via QLocalsockets with the main ScreenPlayApp.
5. **ScreenPlayWidget** 3. **ScreenPlayWidget executable**
* The Widget executable that is used for displaying a single widget. This uses ScreenPlaySDK to talk via QLocalsockets with the main ScreenPlayApp . * The Widget executable that is used for displaying a single widget. This uses ScreenPlaySDK to talk via QLocalsockets with the main ScreenPlayApp.
4. **ScreenPlayUtil lib**
* Util function, like project.json loading, that are needed in ScreenPlay and Workshop plugin.
5. **ScreenPlaySDK lLib**
* A SDK used internally in the ScreenPlayWallpaper and ScreenPlayWidget to talk to the main ScreenPlay app via QLocalsockets (Windows Pipes and Unix sockets).
6. **ScreenPlaySysInfo lib**
* A qml plugin to read CPU, GPU, Network and all sort of statisitcs.
7. **ScreenPlayWorkshop plugin**
* The Steam workshop plugin that is loaded at runtime.
![ProjectOverview.png](ProjectOverview.png) ![ProjectOverview.png](ProjectOverview.png)

View File

@ -1,4 +0,0 @@
---
BasedOnStyle: WebKit
...

View File

@ -4,16 +4,8 @@ set(CMAKE_CXX_STANDARD 20)
set(CMAKE_AUTORCC ON) set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOMOC ON)
find_package(QT NAMES Qt6 Qt5 COMPONENTS Core) set(SOURCES
find_package(OpenSSL REQUIRED) # cmake-format: sortable
find_package(benchmark CONFIG REQUIRED)
find_package(doctest CONFIG REQUIRED)
# CURL must be included before sentry because sentry needs the module and does not include it itself on macos...
find_package(CURL CONFIG REQUIRED)
find_package(sentry CONFIG REQUIRED)
set(src
app.cpp app.cpp
src/globalvariables.cpp src/globalvariables.cpp
src/createimportvideo.cpp src/createimportvideo.cpp
@ -31,7 +23,8 @@ set(src
src/create.cpp src/create.cpp
src/wizards.cpp) src/wizards.cpp)
set(headers set(HEADER
# cmake-format: sortable
app.h app.h
src/globalvariables.h src/globalvariables.h
src/createimportvideo.h src/createimportvideo.h
@ -51,31 +44,131 @@ set(headers
src/create.h src/create.h
src/wizards.h) src/wizards.h)
set(QML
# cmake-format: sortable
main.qml
qml/Create/Create.qml
qml/Create/Wizard.qml
qml/Create/StartInfo.qml
qml/Installed/Installed.qml
qml/Installed/ScreenPlayItem.qml
qml/Installed/ScreenPlayItemImage.qml
qml/Installed/Sidebar.qml
qml/Installed/InstalledWelcomeScreen.qml
qml/Community/Community.qml
qml/Community/XMLNewsfeed.qml
qml/Settings/SettingBool.qml
qml/Settings/Settings.qml
qml/Settings/SettingsButton.qml
qml/Settings/SettingsComboBox.qml
qml/Settings/SettingsExpander.qml
qml/Settings/SettingsHeader.qml
qml/Settings/SettingsHorizontalSeperator.qml
qml/Workshop/Workshop.qml
qml/Monitors/Monitors.qml
qml/Monitors/MonitorSelection.qml
qml/Monitors/MonitorSelectionItem.qml
qml/Monitors/MonitorsProjectSettingItem.qml
qml/Navigation/Navigation.qml
qml/Navigation/NavigationItem.qml
qml/Navigation/NavigationWallpaperConfiguration.qml
qml/Monitors/DefaultVideoControls.qml
qml/Common/TagSelector.qml
qml/Common/Tag.qml
qml/Common/ImageSelector.qml
qml/Common/Slider.qml
qml/Common/RippleEffect.qml
qml/Common/Shake.qml
qml/Common/Grow.qml
qml/Common/GrowIconLink.qml
qml/Common/CloseIcon.qml
qml/Common/Headline.qml
qml/Settings/SettingsPage.qml
qml/Community/CommunityNavItem.qml
qml/Workshop/ScreenPlayItem.qml
qml/Workshop/ScreenPlayItemImage.qml
qml/Workshop/Background.qml
qml/Workshop/WorkshopInstalled.qml
qml/Workshop/WorkshopItem.qml
qml/Workshop/Sidebar.qml
qml/Workshop/Navigation.qml
qml/Workshop/PopupOffline.qml
qml/Workshop/upload/PopupSteamWorkshopAgreement.qml
qml/Workshop/upload/UploadProject.qml
qml/Workshop/upload/UploadProjectBigItem.qml
qml/Workshop/upload/UploadProjectItem.qml
qml/Monitors/SaveNotification.qml
qml/Common/TrayIcon.qml
qml/Installed/Navigation.qml
qml/Common/Search.qml
qml/Common/MouseHoverBlocker.qml
qml/Create/Wizards/HTMLWallpaper.qml
qml/Create/Wizards/HTMLWidget.qml
qml/Create/Wizards/QMLWidget.qml
qml/Create/Wizards/QMLWallpaper.qml
qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaper.qml
qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaperInit.qml
qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaperResult.qml
qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaperVideoImportConvert.qml
qml/Create/Sidebar.qml
qml/Create/Wizards/ImportWebm/ImportWebm.qml
qml/Create/Wizards/ImportWebm/ImportWebmConvert.qml
qml/Create/Wizards/ImportWebm/ImportWebmInit.qml
qml/Common/Dialogs/MonitorConfiguration.qml
qml/Common/Dialogs/SteamNotAvailable.qml
qml/Create/Wizards/WizardPage.qml
qml/Create/Wizards/GifWallpaper.qml
qml/Common/TextField.qml
qml/Common/HeadlineSection.qml
qml/Create/Wizards/WebsiteWallpaper.qml
qml/Common/FileSelector.qml
qml/Create/WizardsFiles/QMLWidgetMain.qml
qml/Create/WizardsFiles/QMLWallpaperMain.qml
qml/Common/LicenseSelector.qml
qml/Common/Util.js
qml/Common/Dialogs/CriticalError.qml
qml/Common/ColorPicker.qml
qml/Create/StartInfoLinkImage.qml
qml/Workshop/SteamProfile.qml
qml/Workshop/SteamWorkshop.qml
qml/Workshop/Forum.qml
qml/Workshop/SteamWorkshopStartPage.qml
qml/Create/Wizards/Importh264/Importh264.qml
qml/Create/Wizards/Importh264/Importh264Convert.qml
qml/Create/Wizards/Importh264/Importh264Init.qml)
list( list(
APPEND APPEND
L10N_LIST L10N_LIST
# cmake-format: sortable # cmake-format: sortable
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_tr_TR.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_tr_TR.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_it_IT.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_it_IT.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_nl_NL.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_nl_NL.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_de_DE.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_de_DE.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_zh_CN.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_zh_CN.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_pt_BR.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_pt_BR.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_es_ES.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_es_ES.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_fr_FR.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_fr_FR.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_ko_KR.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_ko_KR.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_ru_RU.ts ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_ru_RU.ts
${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_vi_VN.ts) ${CMAKE_CURRENT_SOURCE_DIR}/translations/ScreenPlay_vi_VN.ts)
include(QtUpdateTranslations) include(QtUpdateTranslations)
qt_update_translations("${CMAKE_CURRENT_SOURCE_DIR}/qml" "${L10N_LIST}") qt_update_translations("${CMAKE_CURRENT_SOURCE_DIR}/qml" "${L10N_LIST}")
# Needed on macos # Needed on macos
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
find_package(OpenSSL REQUIRED)
find_package(benchmark CONFIG REQUIRED)
find_package(doctest CONFIG REQUIRED)
# CURL must be included before sentry because sentry needs the module and does not include it itself on macos...
find_package(CURL CONFIG REQUIRED)
find_package(sentry CONFIG REQUIRED)
find_package( find_package(
Qt${QT_VERSION_MAJOR} Qt6
COMPONENTS Core COMPONENTS Core
Quick Quick
Gui Gui
@ -83,48 +176,55 @@ find_package(
WebSockets WebSockets
Svg Svg
LinguistTools LinguistTools
WebEngine WebEngineQuick
QuickCompiler WebEngineCore
Test) Test)
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") qt_add_resources(RESOURCES Resources.qrc)
qt_add_resources(resources ScreenPlayAssets.qrc ScreenPlayQML.qrc) qt_add_big_resources(FONTS fonts.qrc)
else()
qtquick_compiler_add_resources(resources ScreenPlayAssets.qrc ScreenPlayQML.qrc)
endif()
add_library(ScreenPlayLib ${src} ${headers} ${resources} ${resources} ${fonts}) add_library(ScreenPlayLib ${SOURCES} ${HEADER} ${RESOURCES} ${FONTS})
target_include_directories(ScreenPlayLib PUBLIC ./ src/ )
target_include_directories(ScreenPlayLib PUBLIC ./ src/)
target_link_libraries( target_link_libraries(
ScreenPlayLib ScreenPlayLib
PUBLIC ScreenPlaySDK PUBLIC ScreenPlaySDK
ScreenPlayUtil ScreenPlayUtil
benchmark::benchmark benchmark::benchmark
benchmark::benchmark_main benchmark::benchmark_main
doctest::doctest doctest::doctest
sentry::sentry sentry::sentry
Threads::Threads Threads::Threads
Qt${QT_VERSION_MAJOR}::Quick Qt6::Quick
Qt${QT_VERSION_MAJOR}::Gui Qt6::Gui
Qt${QT_VERSION_MAJOR}::Widgets Qt6::Widgets
Qt${QT_VERSION_MAJOR}::Core Qt6::Core
Qt${QT_VERSION_MAJOR}::WebSockets Qt6::WebSockets
Qt${QT_VERSION_MAJOR}::Svg Qt6::Svg
Qt5::WebEngine) Qt6::WebEngineQuick
Qt6::WebEngineCore
SteamSDK)
if(${TESTS_ENABLED}) if(${TESTS_ENABLED})
add_executable(tst_ScreenPlay tests/tst_main.cpp) add_executable(tst_ScreenPlay tests/tst_main.cpp)
target_link_libraries(tst_ScreenPlay PRIVATE ScreenPlayLib Qt5::Test) target_link_libraries(tst_ScreenPlay PRIVATE ScreenPlayLib Qt6::Test)
endif() endif()
add_executable(${PROJECT_NAME} main.cpp) qt_add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlayLib) target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlayLib)
qt5_add_translation(qmFiles ${l10n}) target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
qt_add_big_resources(fonts fonts.qrc)
qt_add_translation(qmFiles ${l10n})
qt_add_qml_module(
${PROJECT_NAME}
URI
${PROJECT_NAME}
VERSION
1.0
QML_FILES
${QML})
if(WIN32) if(WIN32)
# Icon # Icon
@ -178,14 +278,12 @@ if(APPLE)
add_custom_command( add_custom_command(
TARGET ${PROJECT_NAME} TARGET ${PROJECT_NAME}
POST_BUILD POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../Common/ffmpeg/ffmpeg COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../Common/ffmpeg/ffmpeg ${CMAKE_BINARY_DIR}/bin/)
${CMAKE_BINARY_DIR}/bin/)
add_custom_command( add_custom_command(
TARGET ${PROJECT_NAME} TARGET ${PROJECT_NAME}
POST_BUILD POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../Common/ffmpeg/ffprobe COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../Common/ffmpeg/ffprobe ${CMAKE_BINARY_DIR}/bin/)
${CMAKE_BINARY_DIR}/bin/)
endif() endif()
add_custom_command( add_custom_command(

View File

@ -115,9 +115,7 @@
<file>legal/lgpl-2.1.txt</file> <file>legal/lgpl-2.1.txt</file>
<file>profiles.json</file> <file>profiles.json</file>
<file>qtquickcontrols2.conf</file> <file>qtquickcontrols2.conf</file>
<file>translations/ScreenPlay_zh_cn.qm</file>
<file>assets/images/Early_Access.png</file> <file>assets/images/Early_Access.png</file>
<file>translations/ScreenPlay_pt_br.qm</file>
<file>assets/icons/icon_sort-up-solid.svg</file> <file>assets/icons/icon_sort-up-solid.svg</file>
<file>assets/icons/icon_sort-down-solid.svg</file> <file>assets/icons/icon_sort-down-solid.svg</file>
<file>assets/icons/brand_reddit.svg</file> <file>assets/icons/brand_reddit.svg</file>
@ -148,5 +146,7 @@
<file>translations/ScreenPlay_nl_NL.ts</file> <file>translations/ScreenPlay_nl_NL.ts</file>
<file>translations/ScreenPlay_it_IT.qm</file> <file>translations/ScreenPlay_it_IT.qm</file>
<file>translations/ScreenPlay_it_IT.ts</file> <file>translations/ScreenPlay_it_IT.ts</file>
<file>qml/Create/WizardsFiles/HTMLWallpaperMain.html</file>
<file>qml/Create/WizardsFiles/HTMLWidgetMain.html</file>
</qresource> </qresource>
</RCC> </RCC>

View File

@ -1,98 +0,0 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>qml/Create/Create.qml</file>
<file>qml/Create/Wizard.qml</file>
<file>qml/Create/StartInfo.qml</file>
<file>qml/Installed/Installed.qml</file>
<file>qml/Installed/ScreenPlayItem.qml</file>
<file>qml/Installed/ScreenPlayItemImage.qml</file>
<file>qml/Installed/Sidebar.qml</file>
<file>qml/Installed/InstalledWelcomeScreen.qml</file>
<file>qml/Community/Community.qml</file>
<file>qml/Community/XMLNewsfeed.qml</file>
<file>qml/Settings/SettingBool.qml</file>
<file>qml/Settings/Settings.qml</file>
<file>qml/Settings/SettingsButton.qml</file>
<file>qml/Settings/SettingsComboBox.qml</file>
<file>qml/Settings/SettingsExpander.qml</file>
<file>qml/Settings/SettingsHeader.qml</file>
<file>qml/Settings/SettingsHorizontalSeperator.qml</file>
<file>qml/Workshop/Workshop.qml</file>
<file>qml/Monitors/Monitors.qml</file>
<file>qml/Monitors/MonitorSelection.qml</file>
<file>qml/Monitors/MonitorSelectionItem.qml</file>
<file>qml/Monitors/MonitorsProjectSettingItem.qml</file>
<file>qml/Navigation/Navigation.qml</file>
<file>qml/Navigation/NavigationItem.qml</file>
<file>qml/Navigation/NavigationWallpaperConfiguration.qml</file>
<file>qml/Monitors/DefaultVideoControls.qml</file>
<file>qml/Common/TagSelector.qml</file>
<file>qml/Common/Tag.qml</file>
<file>qml/Common/ImageSelector.qml</file>
<file>qml/Common/Slider.qml</file>
<file>qml/Common/RippleEffect.qml</file>
<file>qml/Common/Shake.qml</file>
<file>qml/Common/Grow.qml</file>
<file>qml/Common/GrowIconLink.qml</file>
<file>qml/Common/CloseIcon.qml</file>
<file>qml/Common/Headline.qml</file>
<file>qml/Settings/SettingsPage.qml</file>
<file>qml/Community/CommunityNavItem.qml</file>
<file>assets/icons/icon_supervisor_account.svg</file>
<file>assets/icons/icon_new_releases.svg</file>
<file>assets/icons/icon_report_problem.svg</file>
<file>assets/icons/icon_help_center.svg</file>
<file>assets/icons/icon_forum.svg</file>
<file>qml/Workshop/ScreenPlayItem.qml</file>
<file>qml/Workshop/ScreenPlayItemImage.qml</file>
<file>qml/Workshop/Background.qml</file>
<file>qml/Workshop/WorkshopInstalled.qml</file>
<file>qml/Workshop/WorkshopItem.qml</file>
<file>qml/Workshop/Sidebar.qml</file>
<file>qml/Workshop/Navigation.qml</file>
<file>qml/Workshop/PopupOffline.qml</file>
<file>qml/Workshop/upload/PopupSteamWorkshopAgreement.qml</file>
<file>qml/Workshop/upload/UploadProject.qml</file>
<file>qml/Workshop/upload/UploadProjectBigItem.qml</file>
<file>qml/Workshop/upload/UploadProjectItem.qml</file>
<file>qml/Monitors/SaveNotification.qml</file>
<file>qml/Common/TrayIcon.qml</file>
<file>qml/Installed/Navigation.qml</file>
<file>qml/Common/Search.qml</file>
<file>qml/Common/MouseHoverBlocker.qml</file>
<file>qml/Create/Wizards/HTMLWallpaper.qml</file>
<file>qml/Create/Wizards/HTMLWidget.qml</file>
<file>qml/Create/Wizards/QMLWidget.qml</file>
<file>qml/Create/Wizards/QMLWallpaper.qml</file>
<file>qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaper.qml</file>
<file>qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaperInit.qml</file>
<file>qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaperResult.qml</file>
<file>qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaperVideoImportConvert.qml</file>
<file>qml/Create/Sidebar.qml</file>
<file>qml/Create/Wizards/ImportWebm/ImportWebm.qml</file>
<file>qml/Create/Wizards/ImportWebm/ImportWebmConvert.qml</file>
<file>qml/Create/Wizards/ImportWebm/ImportWebmInit.qml</file>
<file>qml/Common/Dialogs/MonitorConfiguration.qml</file>
<file>qml/Common/Dialogs/SteamNotAvailable.qml</file>
<file>qml/Create/Wizards/WizardPage.qml</file>
<file>qml/Create/Wizards/GifWallpaper.qml</file>
<file>qml/Common/TextField.qml</file>
<file>qml/Common/HeadlineSection.qml</file>
<file>qml/Create/Wizards/WebsiteWallpaper.qml</file>
<file>qml/Common/FileSelector.qml</file>
<file>qml/Create/WizardsFiles/QMLWidgetMain.qml</file>
<file>qml/Create/WizardsFiles/QMLWallpaperMain.qml</file>
<file>qml/Create/WizardsFiles/HTMLWallpaperMain.html</file>
<file>qml/Create/WizardsFiles/HTMLWidgetMain.html</file>
<file>qml/Common/LicenseSelector.qml</file>
<file>qml/Common/Util.js</file>
<file>qml/Common/Dialogs/CriticalError.qml</file>
<file>qml/Common/ColorPicker.qml</file>
<file>qml/Create/StartInfoLinkImage.qml</file>
<file>qml/Workshop/SteamProfile.qml</file>
<file>qml/Workshop/SteamWorkshop.qml</file>
<file>qml/Workshop/Forum.qml</file>
<file>qml/Workshop/SteamWorkshopStartPage.qml</file>
</qresource>
</RCC>

View File

@ -1,5 +1,7 @@
#include "app.h" #include "app.h"
#include "steam/steam_qt_enums_generated.h"
namespace ScreenPlay { namespace ScreenPlay {
/*! /*!
\module ScreenPlay \module ScreenPlay
@ -58,7 +60,7 @@ App::App()
QGuiApplication::setOrganizationName("ScreenPlay"); QGuiApplication::setOrganizationName("ScreenPlay");
QGuiApplication::setOrganizationDomain("screen-play.app"); QGuiApplication::setOrganizationDomain("screen-play.app");
QGuiApplication::setApplicationName("ScreenPlay"); QGuiApplication::setApplicationName("ScreenPlay");
QGuiApplication::setApplicationVersion("0.14.0"); QGuiApplication::setApplicationVersion("0.15.0");
QGuiApplication::setQuitOnLastWindowClosed(false); QGuiApplication::setQuitOnLastWindowClosed(false);
QFontDatabase::addApplicationFont(":/assets/fonts/LibreBaskerville-Italic.ttf"); QFontDatabase::addApplicationFont(":/assets/fonts/LibreBaskerville-Italic.ttf");
@ -96,6 +98,16 @@ App::App()
qRegisterMetaType<MonitorListModel*>(); qRegisterMetaType<MonitorListModel*>();
qRegisterMetaType<ProfileListModel*>(); qRegisterMetaType<ProfileListModel*>();
// TODO: This is a workaround because I don't know how to
// init this in the ScreenPlayWorkshop plugin.
// Move to workshop plugin.
qmlRegisterUncreatableMetaObject(ScreenPlayWorkshopSteamEnums::staticMetaObject,
"WorkshopEnums",
1, 0,
"SteamEnums",
"Error: only enums");
// Registers the enums from globalvariables. // Registers the enums from globalvariables.
// Apparently this is the only way for qml to work // Apparently this is the only way for qml to work
// https://www.kdab.com/new-qt-5-8-meta-object-support-namespaces/ // https://www.kdab.com/new-qt-5-8-meta-object-support-namespaces/
@ -202,7 +214,7 @@ void App::init()
// Needed for macos .app files // Needed for macos .app files
m_mainWindowEngine->addPluginPath(QGuiApplication::instance()->applicationDirPath()); m_mainWindowEngine->addPluginPath(QGuiApplication::instance()->applicationDirPath());
#endif #endif
m_mainWindowEngine->load(QUrl(QStringLiteral("qrc:/main.qml"))); m_mainWindowEngine->load(QUrl(QStringLiteral("qrc:/ScreenPlay/main.qml")));
// Must be called last to display a error message on startup by the qml engine // Must be called last to display a error message on startup by the qml engine
m_screenPlayManager->init(m_globalVariables, m_monitorListModel, m_settings); m_screenPlayManager->init(m_globalVariables, m_monitorListModel, m_settings);

View File

@ -48,7 +48,7 @@
#include <QtGlobal> #include <QtGlobal>
#include <QtQml> #include <QtQml>
#include <QtSvg> #include <QtSvg>
#include <QtWebEngine> #include <QtWebEngineCore>
#include "src/create.h" #include "src/create.h"
#include "src/globalvariables.h" #include "src/globalvariables.h"

View File

@ -36,7 +36,8 @@
#include <QApplication> #include <QApplication>
#include <QCommandLineParser> #include <QCommandLineParser>
#include <QDebug> #include <QDebug>
#include <QtWebEngine/QtWebEngine> #include <QtWebEngineQuick>
#include <sentry.h> #include <sentry.h>
#define DOCTEST_CONFIG_IMPLEMENT #define DOCTEST_CONFIG_IMPLEMENT
#define DOCTEST_CONFIG_SUPER_FAST_ASSERTS #define DOCTEST_CONFIG_SUPER_FAST_ASSERTS
@ -44,11 +45,9 @@
int main(int argc, char* argv[]) int main(int argc, char* argv[])
{ {
Q_INIT_RESOURCE(ScreenPlayQML); Q_INIT_RESOURCE(Resources);
Q_INIT_RESOURCE(ScreenPlayAssets);
QtWebEngine::initialize(); QtWebEngineQuick::initialize();
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication::setAttribute(Qt::AA_ShareOpenGLContexts); QApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
QApplication qtGuiApp(argc, argv); QApplication qtGuiApp(argc, argv);

View File

@ -1,11 +1,11 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Window 2.2 import QtQuick.Window
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import QtGraphicalEffects 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0
import Settings 1.0 import Settings 1.0
import Qt5Compat.GraphicalEffects
import "qml/Monitors" as Monitors import "qml/Monitors" as Monitors
import "qml/Common" as Common import "qml/Common" as Common
import "qml/Common/Dialogs" as Dialogs import "qml/Common/Dialogs" as Dialogs
@ -38,12 +38,12 @@ ApplicationWindow {
} }
if (name === "Installed") { if (name === "Installed") {
stackView.replace("qrc:/qml/" + name + "/" + name + ".qml", { stackView.replace("qrc:/ScreenPlay/qml/" + name + "/" + name + ".qml", {
"sidebar": sidebar "sidebar": sidebar
}) })
return return
} }
stackView.replace("qrc:/qml/" + name + "/" + name + ".qml") stackView.replace("qrc:/ScreenPlay/qml/" + name + "/" + name + ".qml")
sidebar.state = "inactive" sidebar.state = "inactive"
} }
@ -193,7 +193,7 @@ ApplicationWindow {
Navigation.Navigation { Navigation.Navigation {
id: nav id: nav
onChangePage: { onChangePage: (name)=> {
monitors.close(); monitors.close();
switchPage(name); switchPage(name);
} }

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Particles 2.0 import QtQuick.Particles
Rectangle { Rectangle {
id: element id: element

View File

@ -1,6 +1,6 @@
import QtQuick 2.14 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
/*! /*!
\qmltype Close Icon \qmltype Close Icon

View File

@ -24,9 +24,9 @@
SOFTWARE. SOFTWARE.
*/ */
import QtQuick 2.12 import QtQuick
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Shapes 1.12 import QtQuick.Shapes 1.12
Pane { Pane {

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Window 2.2 import QtQuick.Window
import QtGraphicalEffects 1.15 import Qt5Compat.GraphicalEffects
import ScreenPlay 1.0 import ScreenPlay 1.0
Dialog { Dialog {

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Dialog { Dialog {

View File

@ -1,6 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.3 import QtQuick.Layouts
Dialog { Dialog {
id: dialogSteam id: dialogSteam

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Dialogs 1.2 import QtQuick.Dialogs
import ScreenPlay 1.0 import ScreenPlay 1.0
/*! /*!
@ -140,8 +140,8 @@ Item {
title: qsTr("Please choose a file") title: qsTr("Please choose a file")
onAccepted: { onAccepted: {
root.file = fileDialog.fileUrl; root.file = fileDialog.currentFile ;
txtName.text = fileDialog.fileUrl.toString(); txtName.text = fileDialog.currentFile.toString();
} }
} }

View File

@ -1,4 +1,4 @@
import QtQuick 2.12 import QtQuick
Scale { Scale {
id: root id: root

View File

@ -1,6 +1,6 @@
import QtQuick 2.0 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
Rectangle { Rectangle {
id: root id: root

View File

@ -1,5 +1,5 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {
@ -15,7 +15,6 @@ Item {
font.pointSize: 18 font.pointSize: 18
color: Material.primaryTextColor color: Material.primaryTextColor
text: "Headline" text: "Headline"
font.capitalization: Font.Capitalize
font.family: ScreenPlay.settings.font font.family: ScreenPlay.settings.font
} }

View File

@ -1,5 +1,5 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Text { Text {

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Dialogs 1.2 import QtQuick.Dialogs
import ScreenPlay 1.0 import ScreenPlay 1.0
/*! /*!

View File

@ -1,7 +1,7 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
ColumnLayout { ColumnLayout {

View File

@ -1,4 +1,4 @@
import QtQuick 2.0 import QtQuick
MouseArea { MouseArea {
anchors.fill: parent anchors.fill: parent

View File

@ -4,9 +4,9 @@
* (THE BSD 2-CLAUSE LICENSE) * (THE BSD 2-CLAUSE LICENSE)
*/ */
import QtQuick 2.0 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
Item { Item {
id: root id: root

View File

@ -1,5 +1,5 @@
import QtQuick 2.0 import QtQuick
import QtQuick.Controls 2.0 import QtQuick.Controls
import QtQuick.Controls.Material 2.0 import QtQuick.Controls.Material 2.0
import ScreenPlay 1.0 import ScreenPlay 1.0

View File

@ -1,4 +1,4 @@
import QtQuick 2.12 import QtQuick
Translate { Translate {
id: root id: root

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls.Material 2.0 as QQCM import QtQuick.Controls.Material 2.0 as QQCM
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls 2.2 as QQC import QtQuick.Controls as QQC
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,6 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,9 +1,9 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Window 2.14 import QtQuick.Window
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtQuick.Controls 2.14 as QQC import QtQuick.Controls as QQC
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.14 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,14 +1,14 @@
import QtQuick 2.0 import QtQuick
import Qt.labs.platform 1.0 import Qt.labs.platform 1.1
import ScreenPlay 1.0 import ScreenPlay 1.0
SystemTrayIcon { SystemTrayIcon {
id: root id: root
visible: true visible: true
iconSource: "qrc:/assets/icons/app.ico" icon.source: "qrc:/assets/icons/app.ico"
tooltip: qsTr("ScreenPlay - Double click to change you settings.") tooltip: qsTr("ScreenPlay - Double click to change you settings.")
onActivated: { onActivated: (reason)=>{
switch (reason) { switch (reason) {
case SystemTrayIcon.Unknown: case SystemTrayIcon.Unknown:
break; break;

View File

@ -1,10 +1,10 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import QtWebEngine 1.8 import QtWebEngine
Item { Item {
id: root id: root

View File

@ -1,6 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
TabButton { TabButton {

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import QtQuick.XmlListModel 2.12 import QtQml.XmlListModel
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {
@ -34,29 +34,29 @@ Item {
source: "https://screen-play.app/blog/index.xml" source: "https://screen-play.app/blog/index.xml"
query: "/rss/channel/item" query: "/rss/channel/item"
XmlRole { XmlListModelRole {
name: "title" name: "title"
query: "title/string()" elementName: "title"
} }
XmlRole { XmlListModelRole {
name: "image" name: "image"
query: "image/string()" elementName: "image"
} }
XmlRole { XmlListModelRole {
name: "pubDate" name: "pubDate"
query: "pubDate/string()" elementName: "pubDate"
} }
XmlRole { XmlListModelRole {
name: "link" name: "link"
query: "link/string()" elementName: "link"
} }
XmlRole { XmlListModelRole {
name: "description" name: "description"
query: "description/string()" elementName: "description"
} }
} }

View File

@ -1,10 +1,10 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Particles 2.0 import QtQuick.Particles
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0 import ScreenPlay.QMLUtilities 1.0
@ -14,7 +14,7 @@ Item {
Component.onCompleted: { Component.onCompleted: {
wizardContentWrapper.state = "in"; wizardContentWrapper.state = "in";
stackView.push("qrc:/qml/Create/StartInfo.qml"); stackView.push("qrc:/ScreenPlay/qml/Create/StartInfo.qml");
} }
Sidebar { Sidebar {

View File

@ -1,10 +1,10 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Particles 2.0 import QtQuick.Particles
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0 import ScreenPlay.QMLUtilities 1.0
@ -25,69 +25,6 @@ Rectangle {
color: Material.background color: Material.background
ListView { ListView {
/*
ListElement {
headline: qsTr("QML Particle Wallpaper")
source: ""
category: "Example Wallpaper"
}
ListElement {
headline: qsTr("Countdown Clock Wallpaper")
source: ""
category: "Example Wallpaper"
}
ListElement {
headline: qsTr("QML Water Shader Wallpaper")
source: ""
category: "Example Wallpaper"
}
ListElement {
headline: qsTr("QML Shadertoy Shader Wallpaper")
source: ""
category: "Example Wallpaper"
}
ListElement {
headline: qsTr("QML Lightning Shader Wallpaper")
source: ""
category: "Example Wallpaper"
}
ListElement {
headline: qsTr("Clock Widget")
source: "qrc:/qml/Create/Wizards/CreateEmptyWidget/CreateEmptyWidget.qml"
category: "Example Widget"
}
ListElement {
headline: qsTr("CPU Widget")
source: "qrc:/qml/Create/Wizards/CreateEmptyWidget/CreateEmptyWidget.qml"
category: "Example Widget"
}
ListElement {
headline: qsTr("Storage Widget")
source: "qrc:/qml/Create/Wizards/CreateEmptyWidget/CreateEmptyWidget.qml"
category: "Example Widget"
}
ListElement {
headline: qsTr("RAM Widget")
source: "qrc:/qml/Create/Wizards/CreateEmptyWidget/CreateEmptyWidget.qml"
category: "Example Widget"
}
ListElement {
headline: qsTr("XKCD Widget")
source: "qrc:/qml/Create/Wizards/CreateEmptyWidget/CreateEmptyWidget.qml"
category: "Example Widget"
}
*/
id: listView id: listView
objectName: "wizardsListView" objectName: "wizardsListView"
@ -106,7 +43,7 @@ Rectangle {
function onWizardExited() { function onWizardExited() {
root.expanded = true root.expanded = true
stackView.clear(StackView.PushTransition) stackView.clear(StackView.PushTransition)
stackView.push("qrc:/qml/Create/StartInfo.qml") stackView.push("qrc:/ScreenPlay/qml/Create/StartInfo.qml")
listView.currentIndex = 0 listView.currentIndex = 0
ScreenPlay.util.setNavigationActive(true) ScreenPlay.util.setNavigationActive(true)
} }
@ -117,63 +54,70 @@ Rectangle {
model: ListModel { model: ListModel {
ListElement { ListElement {
headline: qsTr("Tools Overview") headline: qsTr("Tools Overview")
source: "qrc:/qml/Create/StartInfo.qml" source: "qrc:/ScreenPlay/qml/Create/StartInfo.qml"
category: "Home" category: "Home"
objectName: "" objectName: ""
} }
ListElement { ListElement {
headline: qsTr("Video import and convert (all types)") headline: qsTr("Video Import h264 (.mp4)")
source: "qrc:/qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaper.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/Importh264/Importh264.qml"
category: "Video Wallpaper"
objectName: "videoImportConvert"
}
ListElement {
headline: qsTr("Video Import (.webm)")
source: "qrc:/qml/Create/Wizards/ImportWebm/ImportWebm.qml"
category: "Video Wallpaper" category: "Video Wallpaper"
objectName: "" objectName: ""
} }
ListElement {
headline: qsTr("Video Import VP8 & VP9 (.webm)")
source: "qrc:/ScreenPlay/qml/Create/Wizards/ImportWebm/ImportWebm.qml"
category: "Video Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("Video import (all types)")
source: "qrc:/ScreenPlay/qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaper.qml"
category: "Video Wallpaper"
objectName: "videoImportConvert"
}
ListElement { ListElement {
headline: qsTr("GIF Wallpaper") headline: qsTr("GIF Wallpaper")
source: "qrc:/qml/Create/Wizards/GifWallpaper.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/GifWallpaper.qml"
category: "Video Wallpaper" category: "Video Wallpaper"
objectName: "" objectName: ""
} }
ListElement { ListElement {
headline: qsTr("QML Wallpaper") headline: qsTr("QML Wallpaper")
source: "qrc:/qml/Create/Wizards/QMLWallpaper.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/QMLWallpaper.qml"
category: "Code Wallpaper" category: "Code Wallpaper"
objectName: "" objectName: ""
} }
ListElement { ListElement {
headline: qsTr("HTML5 Wallpaper") headline: qsTr("HTML5 Wallpaper")
source: "qrc:/qml/Create/Wizards/HTMLWallpaper.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/HTMLWallpaper.qml"
category: "Code Wallpaper" category: "Code Wallpaper"
objectName: "" objectName: ""
} }
ListElement { ListElement {
headline: qsTr("Website Wallpaper") headline: qsTr("Website Wallpaper")
source: "qrc:/qml/Create/Wizards/WebsiteWallpaper.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/WebsiteWallpaper.qml"
category: "Code Wallpaper" category: "Code Wallpaper"
objectName: "" objectName: ""
} }
ListElement { ListElement {
headline: qsTr("QML Widget") headline: qsTr("QML Widget")
source: "qrc:/qml/Create/Wizards/QMLWidget.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/QMLWidget.qml"
category: "Code Widgets" category: "Code Widgets"
objectName: "" objectName: ""
} }
ListElement { ListElement {
headline: qsTr("HTML Widget") headline: qsTr("HTML Widget")
source: "qrc:/qml/Create/Wizards/HTMLWidget.qml" source: "qrc:/ScreenPlay/qml/Create/Wizards/HTMLWidget.qml"
category: "Code Widgets" category: "Code Widgets"
objectName: "" objectName: ""
} }

View File

@ -1,10 +1,10 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Particles 2.0 import QtQuick.Particles
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0 import ScreenPlay.QMLUtilities 1.0
@ -16,7 +16,7 @@ Item {
Common.Headline { Common.Headline {
id: headline id: headline
text: qsTr("Free Tools to create wallpaper") text: qsTr("Free tools to help you to create wallpaper")
anchors { anchors {
top: parent.top top: parent.top
@ -33,7 +33,7 @@ Item {
color: Material.primaryTextColor color: Material.primaryTextColor
font.pointSize: 12 font.pointSize: 12
font.family: ScreenPlay.settings.font font.family: ScreenPlay.settings.font
text: qsTr("Below you can find tools to create wallaper beyond the tools that ScreenPlay provides for you!") text: qsTr("Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!")
anchors { anchors {
top: headline.bottom top: headline.bottom

View File

@ -1,10 +1,10 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Layouts 1.15 import QtQuick.Layouts
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Particles 2.0 import QtQuick.Particles
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0 import ScreenPlay.QMLUtilities 1.0

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import "../Common" import "../Common"

View File

@ -1,8 +1,7 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Layouts 1.14 import QtQuick.Layouts
import QtQuick.Dialogs 1.2
import ScreenPlay 1.0 import ScreenPlay 1.0
import "../../Common" as Common import "../../Common" as Common

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import "../../Common" as Common import "../../Common" as Common

View File

@ -1,8 +1,8 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Layouts 1.14 import QtQuick.Layouts
import QtQuick.Dialogs 1.2
import ScreenPlay 1.0 import ScreenPlay 1.0
import "../../Common" as Common import "../../Common" as Common

View File

@ -1,17 +1,17 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
Item { Item {
id: root id: root
signal wizardStarted() signal wizardStarted
signal wizardExited() signal wizardExited
signal next() signal next
SwipeView { SwipeView {
id: swipeView id: swipeView
@ -21,26 +21,25 @@ Item {
clip: true clip: true
CreateWallpaperInit { CreateWallpaperInit {
onNext: startConvert(filePath,codec); onNext: (filePath, codec) => {
function startConvert(filePath,codec){ startConvert(filePath, codec)
root.wizardStarted(); }
swipeView.currentIndex = 1;
createWallpaperVideoImportConvert.codec = codec;
createWallpaperVideoImportConvert.filePath = filePath;
ScreenPlay.create.createWallpaperStart(filePath, codec, quality);
} function startConvert(filePath, codec) {
root.wizardStarted()
swipeView.currentIndex = 1
createWallpaperVideoImportConvert.codec = codec
createWallpaperVideoImportConvert.filePath = filePath
ScreenPlay.create.createWallpaperStart(filePath, codec, quality)
} }
CreateWallpaperVideoImportConvert {
id: createWallpaperVideoImportConvert
onAbort: root.wizardExited()
}
CreateWallpaperResult {
}
} }
CreateWallpaperVideoImportConvert {
id: createWallpaperVideoImportConvert
onAbort: root.wizardExited()
}
CreateWallpaperResult {}
}
} }

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Dialogs 1.3 import QtQuick.Dialogs
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import "../../../Common" as Common import "../../../Common" as Common
@ -141,7 +141,7 @@ Item {
nameFilters: ["Video files (*.mp4 *.mpg *.mp2 *.mpeg *.ogv *.avi *.wmv *.m4v *.3gp *.flv)"] nameFilters: ["Video files (*.mp4 *.mpg *.mp2 *.mpeg *.ogv *.avi *.wmv *.m4v *.3gp *.flv)"]
onAccepted: { onAccepted: {
root.next(fileDialogImportVideo.fileUrl, model.get(comboBoxCodec.currentIndex).value); root.next(fileDialogImportVideo.currentFile , model.get(comboBoxCodec.currentIndex).value);
} }
} }

View File

@ -1,9 +1,9 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtQuick.Layouts 1.14 import QtQuick.Layouts
import QtQuick.Dialogs 1.2
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import ScreenPlay.Enums.ImportVideoState 1.0 import ScreenPlay.Enums.ImportVideoState 1.0
@ -202,7 +202,6 @@ Item {
id: txtConvertNumber id: txtConvertNumber
color: "white" color: "white"
text: qsTr("")
font.pointSize: 21 font.pointSize: 21
font.family: ScreenPlay.settings.font font.family: ScreenPlay.settings.font

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
@ -21,7 +21,7 @@ Item {
clip: true clip: true
ImportWebmInit { ImportWebmInit {
onNext: { onNext: (filePath) =>{
root.wizardStarted(); root.wizardStarted();
swipeView.currentIndex = 1; swipeView.currentIndex = 1;
createWallpaperVideoImportConvert.filePath = filePath; createWallpaperVideoImportConvert.filePath = filePath;

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import ScreenPlay.Enums.ImportVideoState 1.0 import ScreenPlay.Enums.ImportVideoState 1.0
@ -197,7 +197,6 @@ Item {
id: txtConvertNumber id: txtConvertNumber
color: "white" color: "white"
text: qsTr("")
font.pointSize: 21 font.pointSize: 21
font.family: ScreenPlay.settings.font font.family: ScreenPlay.settings.font

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Dialogs 1.3 import QtQuick.Dialogs
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import "../../../Common" as Common import "../../../Common" as Common
@ -168,7 +168,7 @@ Item {
nameFilters: ["Video files (*.webm)"] nameFilters: ["Video files (*.webm)"]
onAccepted: { onAccepted: {
root.next(fileDialogImportVideo.fileUrl); root.next(fileDialogImportVideo.currentFile);
} }
} }

View File

@ -0,0 +1,41 @@
import QtQuick
import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
Item {
id: root
signal wizardStarted()
signal wizardExited()
signal next()
SwipeView {
id: swipeView
anchors.fill: parent
interactive: false
clip: true
Importh264Init {
onNext: (filePath) =>{
root.wizardStarted();
swipeView.currentIndex = 1;
createWallpaperVideoImportConvert.filePath = filePath;
ScreenPlay.util.setNavigationActive(false);
ScreenPlay.create.importH264(filePath);
}
}
Importh264Convert {
id: createWallpaperVideoImportConvert
onExit: root.wizardExited()
}
}
}

View File

@ -0,0 +1,396 @@
import QtQuick
import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.Enums.ImportVideoState 1.0
import "../../../Common" as Common
Item {
id: root
property bool conversionFinishedSuccessful: false
property bool canSave: false
property string filePath
signal exit()
signal save()
function basename(str) {
let filenameWithExtentions = (str.slice(str.lastIndexOf("/") + 1));
let filename = filenameWithExtentions.split('.').slice(0, -1).join('.');
return filename;
}
function checkCanSave() {
if (canSave && conversionFinishedSuccessful)
btnSave.enabled = true;
else
btnSave.enabled = false;
}
onCanSaveChanged: root.checkCanSave()
onFilePathChanged: {
textFieldName.text = basename(filePath);
}
Connections {
function onCreateWallpaperStateChanged(state) {
switch (state) {
case ImportVideoState.AnalyseVideo:
txtConvert.text = qsTr("AnalyseVideo...");
break;
case ImportVideoState.ConvertingPreviewImage:
txtConvert.text = qsTr("Generating preview image...");
break;
case ImportVideoState.ConvertingPreviewThumbnailImage:
txtConvert.text = qsTr("Generating preview thumbnail image...");
break;
case ImportVideoState.ConvertingPreviewImageFinished:
imgPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.jpg";
imgPreview.visible = true;
break;
case ImportVideoState.ConvertingPreviewVideo:
txtConvert.text = qsTr("Generating 5 second preview video...");
break;
case ImportVideoState.ConvertingPreviewGif:
txtConvert.text = qsTr("Generating preview gif...");
break;
case ImportVideoState.ConvertingPreviewGifFinished:
gifPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.gif";
imgPreview.visible = false;
gifPreview.visible = true;
gifPreview.playing = true;
break;
case ImportVideoState.ConvertingAudio:
txtConvert.text = qsTr("Converting Audio...");
break;
case ImportVideoState.ConvertingVideo:
txtConvert.text = qsTr("Converting Video... This can take some time!");
break;
case ImportVideoState.ConvertingVideoError:
txtConvert.text = qsTr("Converting Video ERROR!");
break;
case ImportVideoState.AnalyseVideoError:
txtConvert.text = qsTr("Analyse Video ERROR!");
break;
case ImportVideoState.Finished:
txtConvert.text = "";
conversionFinishedSuccessful = true;
busyIndicator.running = false;
btnExit.enabled = false;
root.checkCanSave();
break;
}
}
function onProgressChanged(progress) {
var percentage = Math.floor(progress * 100);
if (percentage > 100 || progress > 0.95)
percentage = 100;
if (percentage === NaN)
print(progress, percentage);
txtConvertNumber.text = percentage + "%";
}
target: ScreenPlay.create
}
Common.Headline {
id: txtHeadline
text: qsTr("Import a video to a wallpaper")
anchors {
top: parent.top
left: parent.left
margins: 40
bottomMargin: 0
}
}
Item {
id: wrapperLeft
width: parent.width * 0.66
anchors {
left: parent.left
top: txtHeadline.bottom
margins: 30
bottom: parent.bottom
}
Rectangle {
id: imgWrapper
color: Material.color(Material.Grey)
anchors {
top: parent.top
right: parent.right
rightMargin: 20
bottom: previewSelector.top
bottomMargin: 20
left: parent.left
}
Image {
id: imgPreview
fillMode: Image.PreserveAspectCrop
asynchronous: true
visible: false
anchors.fill: parent
}
AnimatedImage {
id: gifPreview
fillMode: Image.PreserveAspectCrop
asynchronous: true
playing: true
visible: false
anchors.fill: parent
}
LinearGradient {
id: shadow
cached: true
anchors.fill: parent
start: Qt.point(0, height)
end: Qt.point(0, 0)
gradient: Gradient {
GradientStop {
id: gradientStop0
position: 0
color: "#DD000000"
}
GradientStop {
id: gradientStop1
position: 1
color: "#00000000"
}
}
}
BusyIndicator {
id: busyIndicator
anchors.centerIn: parent
running: true
}
Text {
id: txtConvertNumber
color: "white"
font.pointSize: 21
font.family: ScreenPlay.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: 40
}
}
Text {
id: txtConvert
color: Material.secondaryTextColor
text: qsTr("Generating preview video...")
font.pointSize: 14
font.family: ScreenPlay.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: 20
}
}
}
Common.ImageSelector {
id: previewSelector
height: 80
anchors {
right: parent.right
rightMargin: 20
left: parent.left
bottom: parent.bottom
}
}
}
Item {
id: wrapperRight
width: parent.width * 0.33
anchors {
top: txtHeadline.bottom
topMargin: 30
bottom: parent.bottom
right: parent.right
}
ColumnLayout {
id: column
spacing: 0
anchors {
right: parent.right
left: parent.left
margins: 30
top: parent.top
topMargin: 0
bottom: column1.top
bottomMargin: 50
}
Common.TextField {
id: textFieldName
placeholderText: qsTr("Name (required!)")
width: parent.width
Layout.fillWidth: true
onTextChanged: {
if (textFieldName.text.length >= 3)
canSave = true;
else
canSave = false;
}
}
Common.TextField {
id: textFieldDescription
placeholderText: qsTr("Description")
width: parent.width
Layout.fillWidth: true
}
Common.TextField {
id: textFieldYoutubeURL
placeholderText: qsTr("Youtube URL")
width: parent.width
Layout.fillWidth: true
}
Common.TagSelector {
id: textFieldTags
width: parent.width
Layout.fillWidth: true
}
}
Row {
id: column1
height: 80
width: childrenRect.width
spacing: 10
anchors {
right: parent.right
rightMargin: 30
bottomMargin: -10
bottom: parent.bottom
}
Button {
id: btnExit
text: qsTr("Abort")
Material.background: Material.Red
Material.foreground: "white"
font.family: ScreenPlay.settings.font
onClicked: {
root.exit();
ScreenPlay.create.cancel();
}
}
Button {
id: btnSave
objectName: "btnSave"
text: qsTr("Save")
enabled: false
Material.background: Material.accent
Material.foreground: "white"
font.family: ScreenPlay.settings.font
onClicked: {
if (conversionFinishedSuccessful) {
btnSave.enabled = false;
ScreenPlay.create.saveWallpaper(textFieldName.text, textFieldDescription.text, root.filePath, previewSelector.imageSource, textFieldYoutubeURL.text, Create.H264, textFieldTags.getTags());
savePopup.open();
}
}
}
}
}
Popup {
id: savePopup
modal: true
focus: true
width: 250
anchors.centerIn: parent
height: 200
onOpened: timerSave.start()
BusyIndicator {
anchors.centerIn: parent
running: true
}
Text {
text: qsTr("Save Wallpaper...")
color: Material.primaryTextColor
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 30
font.family: ScreenPlay.settings.font
}
Timer {
id: timerSave
interval: 1000 + Math.random() * 1000
onTriggered: {
savePopup.close();
ScreenPlay.util.setNavigationActive(true);
root.exit();
}
}
}
}

View File

@ -0,0 +1,162 @@
import QtQuick
import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Dialogs
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../../Common" as Common
import "../../"
Item {
id: root
signal next(var filePath)
ColumnLayout {
id: wrapper
spacing: 40
anchors {
top: parent.top
bottom: btnOpenDocs.top
left: parent.left
right: parent.right
margins: 20
}
Common.Headline {
Layout.fillWidth: true
text: qsTr("Import a .mp4 video")
}
RowLayout {
Layout.fillHeight: true
Layout.fillWidth: true
spacing: 40
ColumnLayout {
Layout.fillWidth: true
Layout.fillHeight: true
spacing: 40
Text {
id: txtDescription
text: qsTr("ScreenPlay V0.15 and up can play *.mp4 (also more known as h264). This can improove performance on older systems.")
color: Material.primaryTextColor
Layout.fillWidth: true
font.pointSize: 13
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
font.family: ScreenPlay.settings.font
}
DropArea {
id: dropArea
Layout.fillHeight: true
Layout.fillWidth: true
onExited: {
bg.color = Qt.darker(Material.backgroundColor)
}
onEntered: {
bg.color = Qt.darker(Qt.darker(
Material.backgroundColor))
drag.accept(Qt.LinkAction)
}
onDropped: {
let file = ScreenPlay.util.toLocal(drop.urls[0])
bg.color = Qt.darker(Qt.darker(
Material.backgroundColor))
if (file.endsWith(".mp4"))
root.next(drop.urls[0])
else
txtFile.text = qsTr(
"Invalid file type. Must be valid h264 (*.mp4)!")
}
Rectangle {
id: bg
anchors.fill: parent
radius: 3
color: Qt.darker(Material.backgroundColor)
}
Image {
id: bgPattern
anchors.fill: parent
fillMode: Image.Tile
opacity: 0.2
source: "qrc:/assets/images/noisy-texture-3.png"
}
Text {
id: txtFile
text: qsTr("Drop a *.mp4 file here or use 'Select file' below.")
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
color: Material.primaryTextColor
font.pointSize: 13
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
font.family: ScreenPlay.settings.font
anchors {
fill: parent
margins: 40
}
}
}
}
}
}
Button {
id: btnOpenDocs
text: qsTr("Open Documentation")
Material.background: Material.LightGreen
Material.foreground: "white"
icon.source: "qrc:/assets/icons/icon_document.svg"
icon.color: "white"
icon.width: 16
icon.height: 16
font.family: ScreenPlay.settings.font
onClicked: Qt.openUrlExternally(
"https://kelteseth.gitlab.io/ScreenPlayDocs/wallpaper/wallpaper/#performance")
anchors {
bottom: parent.bottom
left: parent.left
margins: 20
}
}
Button {
text: qsTr("Select file")
highlighted: true
font.family: ScreenPlay.settings.font
onClicked: {
fileDialogImportVideo.open()
}
FileDialog {
id: fileDialogImportVideo
nameFilters: ["Video files (*.mp4)"]
onAccepted: {
root.next(fileDialogImportVideo.currentFile)
}
}
anchors {
right: parent.right
bottom: parent.bottom
margins: 20
}
}
}

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import "../../Common" as Common import "../../Common" as Common

View File

@ -1,8 +1,8 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Layouts 1.14 import QtQuick.Layouts
import QtQuick.Dialogs 1.2
import ScreenPlay 1.0 import ScreenPlay 1.0
import "../../Common" as Common import "../../Common" as Common

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.2 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0
import "../../Common" as Common import "../../Common" as Common

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Controls.Material 2.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Window 2.12 import QtQuick.Window
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Create 1.0 import ScreenPlay.Create 1.0

View File

@ -1,4 +1,4 @@
import QtQuick 2.14 import QtQuick
Item { Item {
id: root id: root

View File

@ -1,4 +1,4 @@
import QtQuick 2.14 import QtQuick
Item { Item {
id: root id: root

View File

@ -1,9 +1,8 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Controls.Styles 1.4 import Qt5Compat.GraphicalEffects
import QtGraphicalEffects 1.0 import QtQuick.Controls.Material.impl
import QtQuick.Controls.Material.impl 2.12
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0 import ScreenPlay.Enums.InstalledType 1.0
import ScreenPlay.Enums.SearchType 1.0 import ScreenPlay.Enums.SearchType 1.0
@ -73,7 +72,7 @@ Item {
active: false active: false
z: 99 z: 99
anchors.fill: parent anchors.fill: parent
source: "qrc:/qml/Installed/InstalledWelcomeScreen.qml" source: "qrc:/ScreenPlay/qml/Installed/InstalledWelcomeScreen.qml"
} }
Connections { Connections {
@ -244,7 +243,7 @@ Item {
publishedFileID: m_publishedFileID publishedFileID: m_publishedFileID
itemIndex: index itemIndex: index
isScrolling: gridView.isScrolling isScrolling: gridView.isScrolling
onOpenContextMenu: { onOpenContextMenu: (position)=>{
// Set the menu to the current item informations // Set the menu to the current item informations
contextMenu.publishedFileID = delegate.publishedFileID; contextMenu.publishedFileID = delegate.publishedFileID;
contextMenu.absoluteStoragePath = delegate.absoluteStoragePath; contextMenu.absoluteStoragePath = delegate.absoluteStoragePath;

View File

@ -1,7 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Styles 1.4 import QtQuick.Controls.Material
import QtQuick.Controls.Material 2.2
import ScreenPlay 1.0 import ScreenPlay 1.0
import "../Common" import "../Common"

View File

@ -1,9 +1,8 @@
import QtQuick 2.0 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Controls.Styles 1.4 import Qt5Compat.GraphicalEffects
import QtGraphicalEffects 1.0 import QtQuick.Controls.Material.impl
import QtQuick.Controls.Material.impl 2.12
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0 import ScreenPlay.Enums.InstalledType 1.0
import ScreenPlay.Enums.SearchType 1.0 import ScreenPlay.Enums.SearchType 1.0

View File

@ -1,8 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Controls.Styles 1.4
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0 import ScreenPlay.Enums.InstalledType 1.0
import "../Common/Util.js" as JSUtil import "../Common/Util.js" as JSUtil
@ -225,7 +224,7 @@ Item {
screenPlayItemImage.state = "loaded" screenPlayItemImage.state = "loaded"
screenPlayItemImage.exit() screenPlayItemImage.exit()
} }
onClicked: { onClicked: (mouse)=> {
if (mouse.button === Qt.LeftButton) if (mouse.button === Qt.LeftButton)
ScreenPlay.util.setSidebarItem(root.screenId, root.type) ScreenPlay.util.setSidebarItem(root.screenId, root.type)
else if (mouse.button === Qt.RightButton) else if (mouse.button === Qt.RightButton)

View File

@ -1,4 +1,4 @@
import QtQuick 2.12 import QtQuick
Item { Item {
id: root id: root

View File

@ -1,10 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Extras 1.4 import QtQuick.Layouts
import QtQuick.Layouts 1.12 import QtQuick.Controls.Material
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material.impl
import QtQuick.Controls.Material.impl 2.12
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.FillMode 1.0 import ScreenPlay.Enums.FillMode 1.0
import ScreenPlay.Enums.InstalledType 1.0 import ScreenPlay.Enums.InstalledType 1.0

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.FillMode 1.0 import ScreenPlay.Enums.FillMode 1.0
import "../Common/" as SP import "../Common/" as SP

View File

@ -1,8 +1,7 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.12 import QtQuick.Controls.Material
import QtQuick.Controls.Material 2.12
import ScreenPlay 1.0 import ScreenPlay 1.0
Rectangle { Rectangle {
@ -168,15 +167,15 @@ Rectangle {
} }
layer.effect: InnerShadow { // layer.effect: InnerShadow {
cached: true // cached: true
fast: true // fast: true
smooth: true // smooth: true
radius: 32 // radius: 32
spread: 0.8 // spread: 0.8
verticalOffset: 3 // verticalOffset: 3
color: "#55000000" // color: "#55000000"
} // }
// Width of the Sidebar or Space that should be used // Width of the Sidebar or Space that should be used
} }

View File

@ -1,6 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0 import ScreenPlay.Enums.InstalledType 1.0

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0 import ScreenPlay.Enums.InstalledType 1.0
import "../Common/" as SP import "../Common/" as SP
@ -83,7 +83,7 @@ Popup {
monitorWithoutContentSelectable: false monitorWithoutContentSelectable: false
availableWidth: width - 20 availableWidth: width - 20
availableHeight: 150 availableHeight: 150
onRequestProjectSettings: { function onRequestProjectSettings() {
if (installedType === InstalledType.VideoWallpaper) { if (installedType === InstalledType.VideoWallpaper) {
videoControlWrapper.state = "visible"; videoControlWrapper.state = "visible";
customPropertiesGridView.visible = false; customPropertiesGridView.visible = false;

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Dialogs 1.2 import Qt.labs.platform 1.1
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,7 +1,7 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.14 import QtQuick.Controls.Material
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
Rectangle { Rectangle {

View File

@ -1,8 +1,8 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.12 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import ScreenPlay 1.0 import ScreenPlay 1.0
import "../Workshop" import "../Workshop"
import "../Common" import "../Common"
@ -80,7 +80,7 @@ Rectangle {
name: "Create" name: "Create"
text: qsTr("Create") text: qsTr("Create")
iconSource: "qrc:/assets/icons/icon_plus.svg" iconSource: "qrc:/assets/icons/icon_plus.svg"
onPageClicked: root.onPageChanged(name) onPageClicked: (name)=> {root.onPageChanged(name)}
objectName: "createTab" objectName: "createTab"
} }
@ -91,7 +91,7 @@ Rectangle {
name: "Workshop" name: "Workshop"
text: qsTr("Workshop") text: qsTr("Workshop")
iconSource: "qrc:/assets/icons/icon_steam.svg" iconSource: "qrc:/assets/icons/icon_steam.svg"
onPageClicked: root.onPageChanged(name) onPageClicked: (name)=> {root.onPageChanged(name)}
objectName: "workshopTab" objectName: "workshopTab"
} }
@ -103,7 +103,7 @@ Rectangle {
text: qsTr("Installed") text: qsTr("Installed")
amount: ScreenPlay.installedListModel.count amount: ScreenPlay.installedListModel.count
iconSource: "qrc:/assets/icons/icon_installed.svg" iconSource: "qrc:/assets/icons/icon_installed.svg"
onPageClicked: root.onPageChanged(name) onPageClicked: (name)=> {root.onPageChanged(name)}
objectName: "installedTab" objectName: "installedTab"
} }
@ -114,7 +114,7 @@ Rectangle {
name: "Community" name: "Community"
text: qsTr("Community") text: qsTr("Community")
iconSource: "qrc:/assets/icons/icon_community.svg" iconSource: "qrc:/assets/icons/icon_community.svg"
onPageClicked: root.onPageChanged(name) onPageClicked: (name)=> {root.onPageChanged(name)}
objectName: "communityTab" objectName: "communityTab"
} }
@ -125,7 +125,7 @@ Rectangle {
name: "Settings" name: "Settings"
text: qsTr("Settings") text: qsTr("Settings")
iconSource: "qrc:/assets/icons/icon_settings.svg" iconSource: "qrc:/assets/icons/icon_settings.svg"
onPageClicked: root.onPageChanged(name) onPageClicked: (name)=> {root.onPageChanged(name)}
objectName: "settingsTab" objectName: "settingsTab"
} }

View File

@ -1,6 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import ScreenPlay 1.0 import ScreenPlay 1.0
import "../Common" import "../Common"

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {
@ -54,7 +54,7 @@ Item {
text: settingsBool.description text: settingsBool.description
wrapMode: Text.WordWrap wrapMode: Text.WordWrap
linkColor: Material.color(Material.Orange) linkColor: Material.color(Material.Orange)
onLinkActivated: Qt.openUrlExternally(link) onLinkActivated: (link) => Qt.openUrlExternally(link)
color: Material.theme === Material.Light ? Qt.lighter(Material.foreground) : Qt.darker(Material.foreground) color: Material.theme === Material.Light ? Qt.lighter(Material.foreground) : Qt.darker(Material.foreground)
font.family: ScreenPlay.settings.font font.family: ScreenPlay.settings.font
verticalAlignment: Text.AlignVCenter verticalAlignment: Text.AlignVCenter

View File

@ -1,9 +1,9 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import Qt.labs.platform
import QtQuick.Dialogs 1.3 import QtQuick.Controls.Material
import QtQuick.Layouts 1.3 import QtQuick.Layouts
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import ScreenPlay 1.0 import ScreenPlay 1.0
import ScreenPlay.Enums.FillMode 1.0 import ScreenPlay.Enums.FillMode 1.0
import Settings 1.0 import Settings 1.0
@ -72,7 +72,7 @@ Item {
headline: qsTr("Autostart") headline: qsTr("Autostart")
description: qsTr("ScreenPlay will start with Windows and will setup your Desktop every time for you.") description: qsTr("ScreenPlay will start with Windows and will setup your Desktop every time for you.")
isChecked: ScreenPlay.settings.autostart isChecked: ScreenPlay.settings.autostart
onCheckboxChanged: { onCheckboxChanged: (checked) => {
ScreenPlay.settings.setAutostart(checked); ScreenPlay.settings.setAutostart(checked);
} }
} }
@ -98,7 +98,7 @@ Item {
headline: qsTr("Send anonymous crash reports and statistics") headline: qsTr("Send anonymous crash reports and statistics")
description: qsTr("Help us make ScreenPlay faster and more stable. All collected data is purely anonymous and only used for development purposes! We use <a href=\"https://sentry.io\">sentry.io</a> to collect and analyze this data. A <b>big thanks to them</b> for providing us with free premium support for open source projects!") description: qsTr("Help us make ScreenPlay faster and more stable. All collected data is purely anonymous and only used for development purposes! We use <a href=\"https://sentry.io\">sentry.io</a> to collect and analyze this data. A <b>big thanks to them</b> for providing us with free premium support for open source projects!")
isChecked: ScreenPlay.settings.anonymousTelemetry isChecked: ScreenPlay.settings.anonymousTelemetry
onCheckboxChanged: { onCheckboxChanged: (checked) => {
ScreenPlay.settings.setAnonymousTelemetry(checked); ScreenPlay.settings.setAnonymousTelemetry(checked);
} }
} }
@ -121,10 +121,8 @@ Item {
folderDialogSaveLocation.open(); folderDialogSaveLocation.open();
} }
FileDialog { FolderDialog {
id: folderDialogSaveLocation id: folderDialogSaveLocation
selectFolder: true
folder: ScreenPlay.globalVariables.localStoragePath folder: ScreenPlay.globalVariables.localStoragePath
onAccepted: { onAccepted: {
ScreenPlay.settings.setLocalStoragePath(folderDialogSaveLocation.fileUrls[0]); ScreenPlay.settings.setLocalStoragePath(folderDialogSaveLocation.fileUrls[0]);
@ -271,7 +269,7 @@ Item {
headline: qsTr("Pause wallpaper video rendering while another app is in the foreground") headline: qsTr("Pause wallpaper video rendering while another app is in the foreground")
description: qsTr("We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required!") description: qsTr("We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required!")
isChecked: ScreenPlay.settings.checkWallpaperVisible isChecked: ScreenPlay.settings.checkWallpaperVisible
onCheckboxChanged: { onCheckboxChanged: (checked) =>{
ScreenPlay.settings.setCheckWallpaperVisible(checked); ScreenPlay.settings.setCheckWallpaperVisible(checked);
} }
} }
@ -480,7 +478,7 @@ Item {
SettingsButton { SettingsButton {
icon.source: "qrc:/assets/icons/icon_launch.svg" icon.source: "qrc:/assets/icons/icon_launch.svg"
headline: qsTr("Version") headline: qsTr("Version")
description: qsTr("ScreenPlay Build Version ") + ScreenPlay.settings.gitBuildHash description: qsTr("ScreenPlay Build Version \n") + ScreenPlay.settings.gitBuildHash
buttonText: qsTr("Open Changelog") buttonText: qsTr("Open Changelog")
onButtonPressed: Qt.openUrlExternally("https://gitlab.com/kelteseth/ScreenPlay/-/releases") onButtonPressed: Qt.openUrlExternally("https://gitlab.com/kelteseth/ScreenPlay/-/releases")
} }

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import ScreenPlay 1.0 import ScreenPlay 1.0
Control { Control {

View File

@ -1,8 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Dialogs 1.2 import QtQuick.Layouts
import QtQuick.Layouts 1.12 import QtQuick.Controls.Material
import QtQuick.Controls.Material 2.2
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,6 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import ScreenPlay 1.0 import ScreenPlay 1.0
Item { Item {

View File

@ -1,5 +1,5 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
Item { Item {
property real customWidth: parent.width property real customWidth: parent.width

View File

@ -1,10 +1,9 @@
import QtQuick 2.14 import QtQuick
import QtQuick.Controls 2.14 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Dialogs 1.2 import QtQuick.Layouts
import QtQuick.Layouts 1.3 import Qt5Compat.GraphicalEffects
import QtGraphicalEffects 1.0 import QtQuick.Controls.Material.impl
import QtQuick.Controls.Material.impl 2.12
Page { Page {
width: parent.width width: parent.width

View File

@ -1,6 +1,5 @@
import QtQuick 2.13 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import Workshop 1.0
Rectangle { Rectangle {
id: root id: root
@ -45,7 +44,7 @@ Rectangle {
id: bgImage id: bgImage
height: bgImage.sourceSize.height height: bgImage.sourceSize.height
fillMode: Image.PreserveAspectCrop //fillMode: Image.PreserveAspectCrop
opacity: 0 opacity: 0
source: root.backgroundImage source: root.backgroundImage
@ -81,15 +80,13 @@ Rectangle {
} }
} }
MaskedBlur { FastBlur {
id: blur id: blur
anchors.fill: bgImage anchors.fill: bgImage
source: bgImage source: bgImage
maskSource: maskSource
radius: 16 radius: 16
cached: true cached: true
samples: 24
opacity: 0 opacity: 0
} }

View File

@ -1,9 +1,9 @@
import QtQuick 2.15 import QtQuick
import QtQuick.Controls 2.15 import QtQuick.Controls
import QtQuick.Controls.Material 2.12 import QtQuick.Controls.Material
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtWebEngine 1.8 import QtWebEngine
import ScreenPlay 1.0 import ScreenPlay 1.0

View File

@ -1,8 +1,8 @@
import QtQuick 2.13 import QtQuick
import QtQuick.Controls 2.13 import QtQuick.Controls
import QtQuick.Controls.Material 2.13 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl 2.12 import QtQuick.Controls.Material.impl
import Workshop 1.0 import Workshop 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0

View File

@ -1,7 +1,7 @@
import QtQuick 2.0 import QtQuick
import QtQuick.Controls 2.13 import QtQuick.Controls
import QtQuick.Controls.Material 2.13 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import Workshop 1.0 import Workshop 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0

View File

@ -1,7 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Styles 1.4
Item { Item {
id: screenPlayItem id: screenPlayItem

View File

@ -1,4 +1,4 @@
import QtQuick 2.12 import QtQuick
Item { Item {
id: screenPlayItemImage id: screenPlayItemImage

View File

@ -1,9 +1,9 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Layouts 1.11 import QtQuick.Layouts
import QtWebEngine 1.8 import QtWebEngine
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import Workshop 1.0 import Workshop 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0
@ -24,24 +24,24 @@ Drawer {
function setWorkshopItem(publishedFileID, imgUrl, videoPreview, subscriptionCount) { function setWorkshopItem(publishedFileID, imgUrl, videoPreview, subscriptionCount) {
if (root.publishedFileID === publishedFileID) { if (root.publishedFileID === publishedFileID) {
if (!root.visible) if (!root.visible)
root.open(); root.open()
else else
root.close(); root.close()
return ; return
} }
webView.opacity = 0; webView.opacity = 0
root.publishedFileID = publishedFileID; root.publishedFileID = publishedFileID
root.imgUrl = imgUrl; root.imgUrl = imgUrl
root.subscriptionCount = subscriptionCount; root.subscriptionCount = subscriptionCount
root.videoPreview = videoPreview; root.videoPreview = videoPreview
root.subscribed = false; root.subscribed = false
txtVotesUp.highlighted = false; txtVotesUp.highlighted = false
txtVotesDown.highlighted = false; txtVotesDown.highlighted = false
if (!root.visible) if (!root.visible)
root.open(); root.open()
steamWorkshop.requestWorkshopItemDetails(publishedFileID); steamWorkshop.requestWorkshopItemDetails(publishedFileID)
webView.setVideo(); webView.setVideo()
} }
edge: Qt.RightEdge edge: Qt.RightEdge
@ -51,43 +51,43 @@ Drawer {
width: 400 width: 400
interactive: false interactive: false
Component.onCompleted: { Component.onCompleted: {
WebEngine.settings.localContentCanAccessFileUrls = true; WebEngine.settings.localContentCanAccessFileUrls = true
WebEngine.settings.localContentCanAccessRemoteUrls = true; WebEngine.settings.localContentCanAccessRemoteUrls = true
WebEngine.settings.allowRunningInsecureContent = true; WebEngine.settings.allowRunningInsecureContent = true
WebEngine.settings.accelerated2dCanvasEnabled = true; WebEngine.settings.accelerated2dCanvasEnabled = true
WebEngine.settings.javascriptCanOpenWindows = false; WebEngine.settings.javascriptCanOpenWindows = false
WebEngine.settings.showScrollBars = false; WebEngine.settings.showScrollBars = false
WebEngine.settings.playbackRequiresUserGesture = false; WebEngine.settings.playbackRequiresUserGesture = false
WebEngine.settings.focusOnNavigationEnabled = true; WebEngine.settings.focusOnNavigationEnabled = true
} }
Connections { Connections {
function onRequestItemDetailReturned(title, tags, steamIDOwner, description, votesUp, votesDown, url, fileSize, publishedFileId) { function onRequestItemDetailReturned(title, tags, steamIDOwner, description, votesUp, votesDown, url, fileSize, publishedFileId) {
tagListModel.clear(); tagListModel.clear()
// Even if the tags array is empty it still contains // Even if the tags array is empty it still contains
// one empty string, resulting in an empty button // one empty string, resulting in an empty button
if (tags.length > 1) { if (tags.length > 1) {
for (var i in tags) { for (var i in tags) {
tagListModel.append({ tagListModel.append({
"name": tags[i] "name": tags[i]
}); })
} }
rpTagList.model = tagListModel; rpTagList.model = tagListModel
} else { } else {
rpTagList.model = null; rpTagList.model = null
} }
txtTitle.text = title; txtTitle.text = title
const size = Math.floor((1000 * ((fileSize / 1024) / 1000)) / 1000); const size = Math.floor((1000 * ((fileSize / 1024) / 1000)) / 1000)
txtFileSize.text = qsTr("Size: ") + size + qsTr(" MB"); txtFileSize.text = qsTr("Size: ") + size + " MB"
pbVotes.to = votesDown + votesUp; pbVotes.to = votesDown + votesUp
pbVotes.value = votesUp; pbVotes.value = votesUp
txtVotesDown.text = votesDown; txtVotesDown.text = votesDown
txtVotesUp.text = votesUp; txtVotesUp.text = votesUp
if (description === "") if (description === "")
description = qsTr("No description..."); description = qsTr("No description...")
txtDescription.text = description; txtDescription.text = description
pbVotes.hoverText = votesUp + " / " + votesDown; pbVotes.hoverText = votesUp + " / " + votesDown
} }
target: steamWorkshop target: steamWorkshop
@ -112,22 +112,23 @@ Drawer {
property bool ready: false property bool ready: false
function getUpdateVideoCommand() { function getUpdateVideoCommand() {
let src = ""; let src = ""
src += "var video = document.getElementById('video');\n"; src += "var video = document.getElementById('video');\n"
src += "video.src = '" + root.videoPreview + "';\n"; src += "video.src = '" + root.videoPreview + "';\n"
// Incase a workshop item has no gif preview // Incase a workshop item has no gif preview
src += "video.poster = '" + root.videoPreview + "';\n"; src += "video.poster = '" + root.videoPreview + "';\n"
src += "video.play();\n"; src += "video.play();\n"
return src; return src
} }
function setVideo() { function setVideo() {
if (!root.videoPreview.toString().startsWith("https")) if (!root.videoPreview.toString().startsWith("https"))
return ; return
webView.runJavaScript(getUpdateVideoCommand(), function(result) { webView.runJavaScript(getUpdateVideoCommand(),
webView.opacity = 1; function (result) {
}); webView.opacity = 1
})
} }
anchors.fill: parent anchors.fill: parent
@ -139,9 +140,7 @@ Drawer {
NumberAnimation { NumberAnimation {
duration: 200 duration: 200
} }
} }
} }
LinearGradient { LinearGradient {
@ -166,9 +165,7 @@ Drawer {
position: 1 position: 1
color: "#00000000" color: "#00000000"
} }
} }
} }
Text { Text {
@ -189,7 +186,6 @@ Drawer {
margins: 20 margins: 20
left: parent.left left: parent.left
} }
} }
MouseArea { MouseArea {
@ -210,9 +206,7 @@ Drawer {
fillMode: Image.PreserveAspectFit fillMode: Image.PreserveAspectFit
anchors.centerIn: parent anchors.centerIn: parent
} }
} }
} }
ColumnLayout { ColumnLayout {
@ -248,9 +242,9 @@ Drawer {
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: qsTr("Click here if you like the content") ToolTip.text: qsTr("Click here if you like the content")
onClicked: { onClicked: {
steamWorkshop.vote(root.publishedFileID, true); steamWorkshop.vote(root.publishedFileID, true)
txtVotesUp.highlighted = true; txtVotesUp.highlighted = true
txtVotesDown.highlighted = false; txtVotesDown.highlighted = false
} }
} }
@ -263,12 +257,11 @@ Drawer {
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: qsTr("Click here if you do not like the content") ToolTip.text: qsTr("Click here if you do not like the content")
onClicked: { onClicked: {
steamWorkshop.vote(root.publishedFileID, false); steamWorkshop.vote(root.publishedFileID, false)
txtVotesUp.highlighted = false; txtVotesUp.highlighted = false
txtVotesDown.highlighted = true; txtVotesDown.highlighted = true
} }
} }
} }
ProgressBar { ProgressBar {
@ -281,7 +274,6 @@ Drawer {
ToolTip.visible: hovered ToolTip.visible: hovered
ToolTip.text: hoverText ToolTip.text: hoverText
} }
} }
Flickable { Flickable {
@ -314,11 +306,8 @@ Drawer {
font.family: ScreenPlay.settings.font font.family: ScreenPlay.settings.font
onClicked: root.tagClicked(txtTags.text) onClicked: root.tagClicked(txtTags.text)
} }
} }
} }
} }
RowLayout { RowLayout {
@ -347,7 +336,6 @@ Drawer {
font.pointSize: 11 font.pointSize: 11
wrapMode: Text.WrapAtWordBoundaryOrAnywhere wrapMode: Text.WrapAtWordBoundaryOrAnywhere
} }
} }
Rectangle { Rectangle {
@ -373,13 +361,9 @@ Drawer {
font.pointSize: 12 font.pointSize: 12
wrapMode: Text.WrapAtWordBoundaryOrAnywhere wrapMode: Text.WrapAtWordBoundaryOrAnywhere
} }
} }
} }
} }
} }
RowLayout { RowLayout {
@ -400,7 +384,8 @@ Drawer {
icon.source: "qrc:/assets/icons/icon_open_in_new.svg" icon.source: "qrc:/assets/icons/icon_open_in_new.svg"
height: 25 height: 25
text: qsTr("Open In Steam") text: qsTr("Open In Steam")
onClicked: Qt.openUrlExternally("steam://url/CommunityFilePage/" + root.publishedFileID) onClicked: Qt.openUrlExternally(
"steam://url/CommunityFilePage/" + root.publishedFileID)
} }
Button { Button {
@ -411,15 +396,15 @@ Drawer {
icon.source: "qrc:/assets/icons/icon_download.svg" icon.source: "qrc:/assets/icons/icon_download.svg"
text: root.subscribed ? qsTr("Subscribed!") : qsTr("Subscribe") text: root.subscribed ? qsTr("Subscribed!") : qsTr("Subscribe")
onClicked: { onClicked: {
root.subscribed = true; root.subscribed = true
root.steamWorkshop.subscribeItem(root.publishedFileID); root.steamWorkshop.subscribeItem(root.publishedFileID)
} }
} }
} }
background: Rectangle { background: Rectangle {
color: Material.theme === Material.Light ? "white" : Qt.darker(Material.background) color: Material.theme === Material.Light ? "white" : Qt.darker(
Material.background)
opacity: 0.95 opacity: 0.95
} }
@ -428,7 +413,6 @@ Drawer {
velocity: 10 velocity: 10
easing.type: Easing.InOutQuart easing.type: Easing.InOutQuart
} }
} }
exit: Transition { exit: Transition {
@ -436,7 +420,5 @@ Drawer {
velocity: 10 velocity: 10
easing.type: Easing.InOutQuart easing.type: Easing.InOutQuart
} }
} }
} }

View File

@ -1,8 +1,8 @@
import QtQuick 2.13 import QtQuick
import QtQuick.Controls 2.13 import QtQuick.Controls
import QtQuick.Controls.Material 2.13 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import Workshop 1.0 import Workshop 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0
import "upload/" import "upload/"

View File

@ -1,9 +1,10 @@
import QtQuick 2.13 import QtQuick
import QtQuick.Controls 2.13 import QtQuick.Controls
import QtQuick.Controls.Material 2.13 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import Workshop 1.0 import Workshop 1.0
import WorkshopEnums 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0
import "upload/" import "upload/"
@ -14,7 +15,7 @@ Item {
id: screenPlayWorkshop id: screenPlayWorkshop
Component.onCompleted: { Component.onCompleted: {
if (screenPlayWorkshop.init()) { if (screenPlayWorkshop.init()) {
stackView.push("qrc:/qml/Workshop/SteamWorkshopStartPage.qml", { stackView.push("qrc:/ScreenPlay/qml/Workshop/SteamWorkshopStartPage.qml", {
"stackView": stackView, "stackView": stackView,
"screenPlayWorkshop": screenPlayWorkshop, "screenPlayWorkshop": screenPlayWorkshop,
"steamWorkshop": screenPlayWorkshop.steamWorkshop, "steamWorkshop": screenPlayWorkshop.steamWorkshop,

View File

@ -1,9 +1,10 @@
import QtQuick 2.13 import QtQuick
import QtQuick.Controls 2.13 import QtQuick.Controls
import QtQuick.Controls.Material 2.13 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import Workshop 1.0 import Workshop 1.0
import WorkshopEnums 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0
import "upload/" import "upload/"
import "../Common" as Common import "../Common" as Common
@ -273,7 +274,7 @@ Item {
text: qsTr("Profile") text: qsTr("Profile")
onClicked: { onClicked: {
stackView.push( stackView.push(
"qrc:/qml/Workshop/SteamProfile.qml", { "qrc:/ScreenPlay/qml/Workshop/SteamProfile.qml", {
"screenPlayWorkshop": root.screenPlayWorkshop, "screenPlayWorkshop": root.screenPlayWorkshop,
"steamWorkshop": root.steamWorkshop "steamWorkshop": root.steamWorkshop
}) })
@ -292,7 +293,7 @@ Item {
text: qsTr("Upload") text: qsTr("Upload")
onClicked: { onClicked: {
stackView.push( stackView.push(
"qrc:/qml/Workshop/upload/UploadProject.qml", { "qrc:/ScreenPlay/qml/Workshop/upload/UploadProject.qml", {
"screenPlayWorkshop": root.screenPlayWorkshop, "screenPlayWorkshop": root.screenPlayWorkshop,
"steamWorkshop": root.steamWorkshop "steamWorkshop": root.steamWorkshop
}) })

View File

@ -1,19 +1,19 @@
import QtQuick 2.13 import QtQuick
import QtQuick.Controls 2.13 import QtQuick.Controls
import QtQuick.Controls.Material 2.13 import QtQuick.Controls.Material
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Layouts 1.12 import QtQuick.Layouts
import Settings 1.0 import Settings
import ScreenPlay 1.0 import ScreenPlay
Item { Item {
id: root id: root
Component.onCompleted: { Component.onCompleted: {
if (ScreenPlay.settings.steamVersion) { if (ScreenPlay.settings.steamVersion) {
workshopLoader.setSource("qrc:/qml/Workshop/SteamWorkshop.qml") workshopLoader.setSource("qrc:/ScreenPlay/qml/Workshop/SteamWorkshop.qml")
} else { } else {
workshopLoader.setSource("qrc:/qml/Workshop/Forum.qml") workshopLoader.setSource("qrc:/ScreenPlay/qml/Workshop/Forum.qml")
} }
} }

View File

@ -1,7 +1,6 @@
import QtQuick 2.12 import QtQuick
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Styles 1.4 import Qt5Compat.GraphicalEffects
import QtGraphicalEffects 1.0
import Workshop 1.0 as SP import Workshop 1.0 as SP
Item { Item {
@ -36,7 +35,7 @@ Item {
active: false active: false
z: 99 z: 99
anchors.fill: parent anchors.fill: parent
source: "qrc:/qml/Installed/InstalledUserHelper.qml" source: "qrc:/ScreenPlay/qml/Installed/InstalledUserHelper.qml"
} }
transitions: [ transitions: [

View File

@ -1,7 +1,7 @@
import QtQuick 2.12 import QtQuick
import QtGraphicalEffects 1.0 import Qt5Compat.GraphicalEffects
import QtQuick.Controls 2.3 import QtQuick.Controls
import QtQuick.Controls.Material 2.2 import QtQuick.Controls.Material
import Workshop 1.0 import Workshop 1.0
import ScreenPlay 1.0 import ScreenPlay 1.0

Some files were not shown because too many files have changed in this diff Show More