1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-10-06 09:17:07 +02:00

Merge and adapt change to make it runnable on linux

Move all qml components into a dedicated qml subfolder.  This was needed to fix linker
errors where we would have a folder that has the same name as our executable.
This commit is contained in:
Elias Steurer 2022-04-30 12:07:54 +02:00
commit 12b6911635
508 changed files with 23999 additions and 24937 deletions

View File

@ -1,4 +1,6 @@
# -----------------------------
# Options effecting formatting.
# -----------------------------
with section("format"):
# How wide to allow formatted cmake files
@ -6,3 +8,12 @@ with section("format"):
# How many spaces to tab for indent
tab_size = 4
# If true, the argument lists which are known to be sortable will be sorted
# lexicographicall
enable_sort = True
autosort = True
# If a positional argument group contains more than this many arguments, then
# force it to a vertical layout.
max_pargs_hwrap = 3

1
.gitignore vendored
View File

@ -250,3 +250,4 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
/aqtinstall.log
/ThirdParty/**

View File

@ -6,7 +6,7 @@ stages:
variables:
GIT_STRATEGY: clone
QT_VERSION: 6.2.3
QT_VERSION: 6.3.0
PYTHON_VERSION: 3.10.1
check:
@ -146,7 +146,7 @@ build:linux_release:
- apt update -y
# Otherwise libglib2 needs interaction
- export DEBIAN_FRONTEND=noninteractive
- 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 libxkbcommon-* libfontconfig curl zip unzip tar git pkg-config apt-transport-https ca-certificates gnupg software-properties-common wget software-properties-common wget python3-pip build-essential libgl1-mesa-dev lld ninja-build cmake -y
- pip3 install -U pip
- pip3 install aqtinstall
- aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
@ -260,7 +260,7 @@ release:linux_steam:
- apt update -y
# Otherwise libglib2 needs interaction
- export DEBIAN_FRONTEND=noninteractive
- 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 libxkbcommon-* libfontconfig curl zip unzip tar git pkg-config apt-transport-https ca-certificates gnupg software-properties-common wget software-properties-common wget python3-pip build-essential libgl1-mesa-dev lld ninja-build cmake -y
- pip3 install -U pip
- pip3 install aqtinstall
- aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all
@ -295,7 +295,7 @@ release:linux_standalone:
- apt update -y
# Otherwise libglib2 needs interaction
- export DEBIAN_FRONTEND=noninteractive
- 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 libxkbcommon-* libfontconfig curl zip unzip tar git pkg-config apt-transport-https ca-certificates gnupg software-properties-common wget software-properties-common wget python3-pip build-essential libgl1-mesa-dev lld ninja-build cmake -y
- pip3 install -U pip
- pip3 install aqtinstall
- aqt install-qt -O ../aqt linux desktop $QT_VERSION gcc_64 -m all

View File

@ -1,9 +1,10 @@
project(CMake)
set(FILES # cmake-format: sortable
CopyRecursive.cmake
CreateIFWInstaller.cmake
QtUpdateTranslations.cmake)
set(FILES
CopyRecursive.cmake
CreateIFWInstaller.cmake
FetchContentThirdParty.cmake
QtUpdateTranslations.cmake)
add_custom_target(
${PROJECT_NAME}

View File

@ -0,0 +1,15 @@
cmake_minimum_required(VERSION 3.16.0)
include(FetchContent)
set(THIRD_PARTY_PATH "${CMAKE_SOURCE_DIR}/ThirdParty/")
FetchContent_Populate(
qml-plausible
GIT_REPOSITORY https://gitlab.com/kelteseth/qml-plausible.git
GIT_TAG 00398446c7a2882a11d34c007a1ed8205c72e123
# Workaround because:
# 1. QtCreator cannot handle QML_ELEMENT stuff when it is in bin folder
# https://bugreports.qt.io/browse/QTCREATORBUG-27083
SOURCE_DIR ${THIRD_PARTY_PATH}/qml-plausible
)

View File

@ -8,26 +8,32 @@ project(
LANGUAGES CXX)
# This sets cmake to compile all dlls into the main directory
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMake" ${CMAKE_MODULE_PATH})
set(SCREENPLAY_IFW_ROOT "")
set(SCREENPLAY_QML_MODULES_PATH "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/qml")
set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlay-vcpkg")
set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}")
if(UNIX AND NOT APPLE)
# Fixes QWebEngine linker errors on Ubuntu 20.04
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
endif()
option(SCREENPLAY_STEAM "For FOSS distribution so we do not bundle proprietary code." ON)
option(SCREENPLAY_TESTS "Enables UI tests." OFF)
option(SCREENPLAY_CREATE_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF)
option(SCREENPLAY_TESTS "Enables UI tests." ON)
option(SCREENPLAY_INSTALLER "Indicates whether an installer via the Qt Installer Framework is created." OFF)
# Gitlab CI has many ENV variables. We use this one to check if the current build happens inside the CI
if(DEFINED ENV{CI_COMMIT_MESSAGE})
set(GITLAB_CI true)
endif()
# 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})
file(MAKE_DIRECTORY ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
set(CMAKE_CXX_STANDARD 20)
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
if(WIN32)
set(VCPKG_ARCH "x64-windows")
@ -37,12 +43,8 @@ elseif(APPLE)
set(VCPKG_ARCH "x64-osx")
endif()
if(${SCREENPLAY_TESTS})
enable_testing()
endif()
set(VCPKG_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../ScreenPlay-vcpkg")
set(VCPKG_INSTALLED_PATH "${VCPKG_PATH}/installed/${VCPKG_ARCH}")
add_compile_definitions(COMPILE_INFO="Build Date: ${BUILD_DATE}. Git Hash: ${GIT_COMMIT_HASH}. ")
add_compile_definitions(SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
find_package(Git REQUIRED)
if(WIN32)
@ -68,50 +70,47 @@ execute_process(
OUTPUT_VARIABLE GIT_COMMIT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE)
add_compile_definitions(COMPILE_INFO="Build Date: ${BUILD_DATE}. Git Hash: ${GIT_COMMIT_HASH}. ")
add_compile_definitions(SOURCE_DIR="${CMAKE_CURRENT_SOURCE_DIR}")
add_compile_definitions(SCREENPLAY_STEAM="${SCREENPLAY_STEAM}")
if(UNIX AND NOT APPLE)
# Fixes QWebEngine linker errors on Ubuntu 20.04
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fuse-ld=gold")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
endif()
add_subdirectory(ScreenPlay)
add_subdirectory(ScreenPlaySDK)
add_subdirectory(ScreenPlayShader)
add_subdirectory(ScreenPlayWallpaper)
add_subdirectory(ScreenPlayWidget)
add_subdirectory(ScreenPlayUtil)
add_subdirectory(ScreenPlayWeather)
add_subdirectory(CMake)
add_subdirectory(Tools)
if(${SCREENPLAY_TESTS})
enable_testing()
endif()
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/FetchContentThirdParty.cmake)
# Only add target SteamSDKQtEnums
add_subdirectory(ScreenPlayWorkshop/SteamSDK)
if(${SCREENPLAY_STEAM})
add_subdirectory(ScreenPlayWorkshop)
else()
# Only add target SteamSDKQtEnums
add_subdirectory(ScreenPlayWorkshop/SteamSDK)
endif()
if(WIN32)
add_subdirectory(ScreenPlaySysInfo)
endif()
message(STATUS "[DEFINE] SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message(STATUS "[DEFINE] BUILD_DATE = ${BUILD_DATE}")
message(STATUS "[DEFINE] BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
message(STATUS "[DEFINE] GIT_COMMIT_HASH = ${GIT_COMMIT_HASH}")
message(STATUS "[OPTION] SCREENPLAY_CREATE_INSTALLER = ${SCREENPLAY_CREATE_INSTALLER}")
message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}")
message(STATUS "[OPTION] SCREENPLAY_TESTS = ${SCREENPLAY_TESTS}")
message(STATUS "[PROJECT] CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}")
message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}")
message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}")
message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
message(STATUS "[PROJECT] CMAKE_VERSION = ${CMAKE_VERSION}")
if(${SCREENPLAY_CREATE_INSTALLER})
if(${SCREENPLAY_INSTALLER})
include(${CMAKE_CURRENT_SOURCE_DIR}/CMake/CreateIFWInstaller.cmake)
endif()
message(STATUS "[DEFINE] SOURCE_DIR = ${CMAKE_CURRENT_SOURCE_DIR}")
message(STATUS "[DEFINE] BUILD_DATE = ${BUILD_DATE}")
message(STATUS "[DEFINE] BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
message(STATUS "[DEFINE] GIT_COMMIT_HASH = ${GIT_COMMIT_HASH}")
message(STATUS "[OPTION] SCREENPLAY_INSTALLER = ${SCREENPLAY_INSTALLER}")
message(STATUS "[OPTION] SCREENPLAY_STEAM = ${SCREENPLAY_STEAM}")
message(STATUS "[OPTION] SCREENPLAY_TESTS = ${SCREENPLAY_TESTS}")
message(STATUS "[PROJECT] SCREENPLAY_QML_MODULES_PATH = ${SCREENPLAY_QML_MODULES_PATH}")
message(STATUS "[PROJECT] CMAKE_TOOLCHAIN_FILE = ${CMAKE_TOOLCHAIN_FILE}")
message(STATUS "[PROJECT] VCPKG_PATH = ${VCPKG_PATH}")
message(STATUS "[PROJECT] VCPKG_TARGET_TRIPLET = ${VCPKG_TARGET_TRIPLET}")
message(STATUS "[PROJECT] CMAKE_PREFIX_PATH = ${CMAKE_PREFIX_PATH}")
message(STATUS "[PROJECT] CMAKE_VERSION = ${CMAKE_VERSION}")

10
Common/CMakeLists.txt Normal file
View File

@ -0,0 +1,10 @@
cmake_minimum_required(VERSION 3.16.0)
include(FetchContent)
FetchContent_Declare(
qml-plausible
GIT_REPOSITORY https://gitlab.com/kelteseth/qml-plausible.git
GIT_TAG 00398446c7a2882a11d34c007a1ed8205c72e123)
FetchContent_MakeAvailable(qml-plausible)

View File

@ -5,58 +5,87 @@ set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOMOC ON)
set(SOURCES
# cmake-format: sortable
app.cpp
src/globalvariables.cpp
src/app.cpp
src/create.cpp
src/createimportvideo.cpp
src/globalvariables.cpp
src/installedlistfilter.cpp
src/installedlistmodel.cpp
src/monitorlistmodel.cpp
src/screenplaywallpaper.cpp
src/screenplaywidget.cpp
src/settings.cpp
src/profilelistmodel.cpp
src/installedlistfilter.cpp
src/projectsettingslistmodel.cpp
src/screenplaymanager.cpp
src/screenplaywallpaper.cpp
src/screenplaywidget.cpp
src/sdkconnection.cpp
src/settings.cpp
src/util.cpp
src/create.cpp
src/wizards.cpp)
set(HEADER
# cmake-format: sortable
app.h
src/globalvariables.h
src/createimportvideo.h
src/createimportstates.h
src/installedlistmodel.h
src/monitorlistmodel.h
src/screenplaywallpaper.h
src/screenplaywidget.h
src/settings.h
src/profilelistmodel.h
src/profile.h
src/installedlistfilter.h
src/projectsettingslistmodel.h
src/screenplaymanager.h
src/sdkconnection.h
src/util.h
src/create.h
src/wizards.h)
inc/public/ScreenPlay/app.h
inc/public/ScreenPlay/create.h
inc/public/ScreenPlay/createimportstates.h
inc/public/ScreenPlay/createimportvideo.h
inc/public/ScreenPlay/globalvariables.h
inc/public/ScreenPlay/installedlistfilter.h
inc/public/ScreenPlay/installedlistmodel.h
inc/public/ScreenPlay/monitorlistmodel.h
inc/public/ScreenPlay/profile.h
inc/public/ScreenPlay/profilelistmodel.h
inc/public/ScreenPlay/projectsettingslistmodel.h
inc/public/ScreenPlay/screenplaymanager.h
inc/public/ScreenPlay/screenplaywallpaper.h
inc/public/ScreenPlay/screenplaywidget.h
inc/public/ScreenPlay/sdkconnection.h
inc/public/ScreenPlay/settings.h
inc/public/ScreenPlay/util.h
inc/public/ScreenPlay/wizards.h)
set(QML
# cmake-format: sortable
main.qml
qml/Create/Create.qml
qml/Community/Community.qml
qml/Community/CommunityNavItem.qml
qml/Community/XMLNewsfeed.qml
qml/Create/Wizard.qml
qml/Create/Create.qml
qml/Create/CreateSidebar.qml
qml/Create/StartInfo.qml
qml/Create/StartInfoLinkImage.qml
qml/Create/Wizards/GifWallpaper.qml
qml/Create/Wizards/HTMLWallpaper.qml
qml/Create/Wizards/HTMLWidget.qml
qml/Create/Wizards/Importh264/Importh264.qml
qml/Create/Wizards/Importh264/Importh264Convert.qml
qml/Create/Wizards/Importh264/Importh264Init.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/Wizards/ImportWebm/ImportWebm.qml
qml/Create/Wizards/ImportWebm/ImportWebmConvert.qml
qml/Create/Wizards/ImportWebm/ImportWebmInit.qml
qml/Create/Wizards/QMLWallpaper.qml
qml/Create/Wizards/QMLWidget.qml
qml/Create/Wizards/WebsiteWallpaper.qml
qml/Create/Wizards/WizardPage.qml
qml/Create/WizardsFiles/QMLWallpaperMain.qml
qml/Create/WizardsFiles/QMLWidgetMain.qml
qml/Installed/Installed.qml
qml/Installed/InstalledWelcomeScreen.qml
qml/Installed/InstalledNavigation.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/Monitors/DefaultVideoControls.qml
qml/Monitors/Monitors.qml
qml/Monitors/MonitorSelection.qml
qml/Monitors/MonitorSelectionItem.qml
qml/Monitors/MonitorsProjectSettingItem.qml
qml/Monitors/SaveNotification.qml
qml/Navigation/Navigation.qml
qml/Navigation/WindowNavButton.qml
qml/Navigation/WindowNavigation.qml
qml/Settings/SettingBool.qml
qml/Settings/Settings.qml
qml/Settings/SettingsButton.qml
@ -64,107 +93,34 @@ set(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/WindowNavButton.qml
qml/Navigation/WindowNavigation.qml
qml/Monitors/DefaultVideoControls.qml
qml/Common/TagSelector.qml
qml/Common/Tag.qml
qml/Common/Popup.qml
qml/Common/Dialog.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/ModalBackgroundBlur.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)
qml/Workshop/Workshop.qml)
set(TS_FILES
# cmake-format: sortable
translations/ScreenPlay_.ts
translations/ScreenPlay_tr_TR.ts
translations/ScreenPlay_it_IT.ts
translations/ScreenPlay_nl_NL.ts
translations/ScreenPlay_de_DE.ts
translations/ScreenPlay_pl_PL.ts
translations/ScreenPlay_zh_CN.ts
translations/ScreenPlay_pt_BR.ts
translations/ScreenPlay_es_ES.ts
translations/ScreenPlay_fr_FR.ts
translations/ScreenPlay_it_IT.ts
translations/ScreenPlay_ko_KR.ts
translations/ScreenPlay_nl_NL.ts
translations/ScreenPlay_pl_PL.ts
translations/ScreenPlay_pt_BR.ts
translations/ScreenPlay_ru_RU.ts
translations/ScreenPlay_vi_VN.ts)
translations/ScreenPlay_tr_TR.ts
translations/ScreenPlay_vi_VN.ts
translations/ScreenPlay_zh_CN.ts)
# Needed on macos
find_package(Threads REQUIRED)
find_package(OpenSSL 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)
# Make sentry win only for now because it is constantly buggy on osx
if(WIN32)
# 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)
endif()
find_package(
Qt6
@ -180,15 +136,27 @@ find_package(
qt_add_resources(RESOURCES Resources.qrc)
qt_add_big_resources(FONTS fonts.qrc)
add_library(ScreenPlayApp STATIC)
target_include_directories(ScreenPlayApp PUBLIC src/ inc/public/ScreenPlay)
add_library(ScreenPlayLib ${SOURCES} ${HEADER} ${RESOURCES} ${FONTS})
qt_add_qml_module(
ScreenPlayApp
URI
ScreenPlayApp
OUTPUT_DIRECTORY
${SCREENPLAY_QML_MODULES_PATH}/ScreenPlayApp
RESOURCE_PREFIX /qml
VERSION
1.0
QML_FILES
${QML}
SOURCES
${SOURCES}
${HEADER}
)
target_link_libraries(
ScreenPlayLib
ScreenPlayApp
PUBLIC ScreenPlaySDK
ScreenPlayUtil
doctest::doctest
sentry::sentry
Threads::Threads
Qt6::Quick
Qt6::Gui
@ -196,46 +164,53 @@ target_link_libraries(
Qt6::Core
Qt6::WebSockets
Qt6::Svg
ScreenPlayQmlplugin
SteamSDKQtEnums)
ScreenPlayUtil
ScreenPlayUtilplugin
SteamSDKQtEnums
${RESOURCES}
${FONTS})
if(${TESTS_ENABLED})
add_executable(tst_ScreenPlay tests/tst_main.cpp)
target_link_libraries(tst_ScreenPlay PRIVATE ScreenPlayLib Qt6::Test)
if(${SCREENPLAY_STEAM})
target_compile_definitions(ScreenPlayApp PRIVATE SCREENPLAY_STEAM=1)
target_link_libraries(ScreenPlayApp PUBLIC ScreenPlayWorkshopplugin ScreenPlayWorkshop)
endif()
qt_add_executable(${PROJECT_NAME} main.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlayLib)
target_link_libraries(${PROJECT_NAME} PRIVATE ScreenPlayApp ScreenPlayAppplugin)
set_source_files_properties(${TS_FILES}
PROPERTIES OUTPUT_LOCATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/translations")
if(${SCREENPLAY_TESTS})
add_executable(tst_ScreenPlay tests/tst_main.cpp)
target_link_libraries(tst_ScreenPlay PRIVATE ScreenPlayApp ScreenPlayAppplugin Qt6::Test)
if(${SCREENPLAY_STEAM})
target_compile_definitions(tst_ScreenPlay PRIVATE SCREENPLAY_STEAM=1)
target_link_libraries(tst_ScreenPlay PUBLIC ScreenPlayWorkshopplugin ScreenPlayWorkshop)
endif()
endif()
set_source_files_properties(${TS_FILES} PROPERTIES OUTPUT_LOCATION "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/translations")
# qt_add_lupdate does not work for some reason. Lets do it manually:
find_program(LUPDATE_EXECUTABLE lupdate)
foreach(_ts_file ${TS_FILES})
message(STATUS "Update Translation: ${_ts_file}")
execute_process(COMMAND ${LUPDATE_EXECUTABLE} -noobsolete -locations none -recursive ${CMAKE_CURRENT_SOURCE_DIR}/qml -ts ${CMAKE_CURRENT_SOURCE_DIR}/${_ts_file} OUTPUT_QUIET)
execute_process(COMMAND ${LUPDATE_EXECUTABLE} -noobsolete -locations none -recursive ${CMAKE_CURRENT_SOURCE_DIR}/qml -ts
${CMAKE_CURRENT_SOURCE_DIR}/${_ts_file} OUTPUT_QUIET)
endforeach()
qt_add_lrelease(
${PROJECT_NAME}
TS_FILES
${TS_FILES}
)
qt_add_lrelease(${PROJECT_NAME} TS_FILES ${TS_FILES})
target_compile_definitions(${PROJECT_NAME} PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
qt_add_library(ScreenPlayQml STATIC)
qt_add_qml_module(
ScreenPlayQml
URI
ScreenPlayQml
VERSION
1.0
QML_FILES
${QML})
target_include_directories(
ScreenPlayApp
PUBLIC inc/public/
PRIVATE src/)
if(WIN32)
target_link_libraries(ScreenPlayApp PUBLIC sentry::sentry)
# Icon
target_sources(${PROJECT_NAME} PRIVATE ScreenPlay.rc)
@ -252,7 +227,8 @@ if(WIN32)
configure_file(${filename} ${CMAKE_BINARY_DIR}/bin/ COPYONLY)
endforeach()
configure_file(${VCPKG_INSTALLED_PATH}/tools/sentry-native/crashpad_handler.exe ${CMAKE_BINARY_DIR}/bin/ COPYONLY)
configure_file(${VCPKG_INSTALLED_PATH}/tools/sentry-native/crashpad_handler.exe ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY)
configure_file(${VCPKG_INSTALLED_PATH}/tools/sentry-native/zlib1.dll ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/ COPYONLY)
endif()
@ -286,7 +262,7 @@ if(APPLE)
${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/)
# tst_ScreenPlay needs ffmpeg in the base path
if(${TESTS_ENABLED})
if(${SCREENPLAY_TESTS})
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
@ -298,10 +274,4 @@ if(APPLE)
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${CMAKE_CURRENT_SOURCE_DIR}/../Common/ffmpeg/ffprobe ${CMAKE_BINARY_DIR}/bin/)
endif()
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different ${VCPKG_INSTALLED_PATH}/tools/sentry-native/crashpad_handler
${CMAKE_BINARY_DIR}/bin/ScreenPlay.app/Contents/MacOS/)
endif()

View File

@ -130,5 +130,6 @@
<file>qml/Create/WizardsFiles/QMLWidgetMain.qml</file>
<file>assets/icons/font-awsome/patreon-brands.svg</file>
<file>assets/images/steam_offline.png</file>
<file>assets/images/scale_window_indicator.png</file>
</qresource>
</RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -49,25 +49,29 @@
#include <QtQml>
#include <QtSvg>
#include "src/create.h"
#include "src/globalvariables.h"
#include "src/installedlistfilter.h"
#include "src/installedlistmodel.h"
#include "src/monitorlistmodel.h"
#include "src/profilelistmodel.h"
#include "src/screenplaymanager.h"
#include "src/settings.h"
#include "src/util.h"
#include "src/wizards.h"
#include "ScreenPlay/create.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/installedlistfilter.h"
#include "ScreenPlay/installedlistmodel.h"
#include "ScreenPlay/monitorlistmodel.h"
#include "ScreenPlay/profilelistmodel.h"
#include "ScreenPlay/screenplaymanager.h"
#include "ScreenPlay/settings.h"
#include "ScreenPlay/util.h"
#include "ScreenPlay/wizards.h"
#include <memory>
#if defined(Q_OS_WIN)
#include <sentry.h>
#endif
namespace ScreenPlay {
class App : public QObject {
Q_OBJECT
Q_PROPERTY(QQmlApplicationEngine* mainWindowEngine READ mainWindowEngine WRITE setMainWindowEngine NOTIFY mainWindowEngineChanged)
Q_PROPERTY(GlobalVariables* globalVariables READ globalVariables WRITE setGlobalVariables NOTIFY globalVariablesChanged)
Q_PROPERTY(ScreenPlayManager* screenPlayManager READ screenPlayManager WRITE setScreenPlayManager NOTIFY screenPlayManagerChanged)

View File

@ -56,15 +56,16 @@
#include <memory>
#include "ScreenPlay/createimportvideo.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/util.h"
#include "ScreenPlayUtil/util.h"
#include "createimportvideo.h"
#include "globalvariables.h"
#include "util.h"
namespace ScreenPlay {
class Create : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString workingDir READ workingDir WRITE setWorkingDir NOTIFY workingDirChanged)
Q_PROPERTY(float progress READ progress WRITE setProgress NOTIFY progressChanged)

View File

@ -49,13 +49,15 @@
#include <QString>
#include <QtMath>
#include "createimportstates.h"
#include "util.h"
#include "ScreenPlay/createimportstates.h"
#include "ScreenPlay/util.h"
namespace ScreenPlay {
class CreateImportVideo : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(float progress READ progress WRITE setProgress NOTIFY progressChanged)
public:

View File

@ -47,6 +47,7 @@ namespace ScreenPlay {
class GlobalVariables : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QVersionNumber version READ version CONSTANT)
Q_PROPERTY(QUrl localStoragePath READ localStoragePath WRITE setLocalStoragePath NOTIFY localStoragePathChanged)

View File

@ -38,13 +38,14 @@
#include <QSortFilterProxyModel>
#include <memory>
#include "globalvariables.h"
#include "installedlistmodel.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/installedlistmodel.h"
namespace ScreenPlay {
class InstalledListFilter : public QSortFilterProxyModel {
Q_OBJECT
QML_ELEMENT
public:
InstalledListFilter(const std::shared_ptr<InstalledListModel>& ilm);

View File

@ -54,10 +54,10 @@
#include <QVector>
#include <QtConcurrent/QtConcurrent>
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/profilelistmodel.h"
#include "ScreenPlay/util.h"
#include "ScreenPlayUtil/projectfile.h"
#include "globalvariables.h"
#include "profilelistmodel.h"
#include "util.h"
#include <memory>
@ -65,6 +65,7 @@ namespace ScreenPlay {
class InstalledListModel : public QAbstractListModel {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(int count READ count WRITE setCount NOTIFY countChanged)

View File

@ -43,9 +43,9 @@
#include <QString>
#include <QVector>
#include "projectsettingslistmodel.h"
#include "screenplaywallpaper.h"
#include "screenplaywidget.h"
#include "ScreenPlay/projectsettingslistmodel.h"
#include "ScreenPlay/screenplaywallpaper.h"
#include "ScreenPlay/screenplaywidget.h"
#ifdef Q_OS_WIN
#include <qt_windows.h>
@ -72,6 +72,7 @@ struct Monitor {
class MonitorListModel : public QAbstractListModel {
Q_OBJECT
QML_ELEMENT
public:
explicit MonitorListModel(QObject* parent = nullptr);

View File

@ -43,8 +43,8 @@
#include <QUrl>
#include <QVector>
#include "globalvariables.h"
#include "profile.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/profile.h"
#include <memory>
@ -54,6 +54,7 @@ struct Profile;
class ProfileListModel : public QAbstractListModel {
Q_OBJECT
QML_ELEMENT
public:
explicit ProfileListModel(

View File

@ -43,7 +43,7 @@
#include <QJsonObject>
#include <QVector>
#include "util.h"
#include "ScreenPlay/util.h"
namespace ScreenPlay {

View File

@ -58,6 +58,7 @@ namespace ScreenPlay {
class ScreenPlayManager : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(int activeWallpaperCounter READ activeWallpaperCounter WRITE setActiveWallpaperCounter NOTIFY activeWallpaperCounterChanged)
Q_PROPERTY(int activeWidgetsCounter READ activeWidgetsCounter WRITE setActiveWidgetsCounter NOTIFY activeWidgetsCounterChanged)

View File

@ -41,16 +41,17 @@
#include <memory>
#include "globalvariables.h"
#include "projectsettingslistmodel.h"
#include "sdkconnection.h"
#include "settings.h"
#include "util.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/projectsettingslistmodel.h"
#include "ScreenPlay/sdkconnection.h"
#include "ScreenPlay/settings.h"
#include "ScreenPlay/util.h"
namespace ScreenPlay {
class ScreenPlayWallpaper : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(bool isConnected READ isConnected WRITE setIsConnected NOTIFY isConnectedChanged)
@ -89,7 +90,7 @@ public:
bool start();
void replace(
bool replace(
const QString& absolutePath,
const QString& previewImage,
const QString& file,

View File

@ -42,10 +42,10 @@
#include <QPoint>
#include <QProcess>
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/projectsettingslistmodel.h"
#include "ScreenPlay/sdkconnection.h"
#include "ScreenPlayUtil/util.h"
#include "globalvariables.h"
#include "projectsettingslistmodel.h"
#include "sdkconnection.h"
#include <memory>
#include <utility>
@ -54,6 +54,7 @@ namespace ScreenPlay {
class ScreenPlayWidget : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString absolutePath READ absolutePath WRITE setAbsolutePath NOTIFY absolutePathChanged)
Q_PROPERTY(QString previewImage READ previewImage WRITE setPreviewImage NOTIFY previewImageChanged)

View File

@ -46,9 +46,9 @@
#include <QVector>
#include <QWebSocketServer>
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/util.h"
#include "ScreenPlayUtil/util.h"
#include "globalvariables.h"
#include "util.h"
#include <memory>

View File

@ -61,8 +61,8 @@
#include <QtConcurrent/QtConcurrent>
#include <QtGlobal>
#include "globalvariables.h"
#include "util.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/util.h"
#include <memory>
#include <optional>
@ -76,6 +76,7 @@ class ActiveProfile;
class Settings : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(bool anonymousTelemetry READ anonymousTelemetry WRITE setAnonymousTelemetry NOTIFY anonymousTelemetryChanged)
Q_PROPERTY(bool silentStart READ silentStart WRITE setSilentStart NOTIFY silentStartChanged)

View File

@ -53,8 +53,8 @@
#include <QtConcurrent/QtConcurrent>
#include <qqml.h>
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlayUtil/util.h"
#include "globalvariables.h"
#include <fstream>
#include <iostream>
@ -81,6 +81,7 @@ T QStringToEnum(const QString& key, const T defaultValue)
class Util : public QObject {
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(QString debugMessages READ debugMessages NOTIFY debugMessagesChanged)
@ -146,6 +147,7 @@ private:
QNetworkAccessManager* m_networkAccessManager { nullptr };
QString m_debugMessages {};
QFuture<void> m_requestAllLicensesFuture;
};
// Used for redirect content from static logToGui to setDebugMessages

View File

@ -54,9 +54,9 @@
#include <QUrl>
#include <QtMath>
#include "createimportvideo.h"
#include "globalvariables.h"
#include "util.h"
#include "ScreenPlay/createimportvideo.h"
#include "ScreenPlay/globalvariables.h"
#include "ScreenPlay/util.h"
#include <memory>
#include <optional>
@ -65,6 +65,7 @@ namespace ScreenPlay {
class Wizards : public QObject {
Q_OBJECT
QML_ELEMENT
public:
explicit Wizards(const std::shared_ptr<GlobalVariables>& globalVariables, QObject* parent = nullptr);
Wizards() { }
@ -134,5 +135,8 @@ signals:
private:
const std::shared_ptr<GlobalVariables> m_globalVariables;
const std::optional<QString> createTemporaryFolder() const;
private:
QFuture<void> m_wizardFuture;
};
}

View File

@ -32,16 +32,20 @@
**
****************************************************************************/
#include "app.h"
#include "ScreenPlay/app.h"
#include <QApplication>
#include <QCommandLineParser>
#include <QDebug>
Q_IMPORT_QML_PLUGIN(ScreenPlayQmlPlugin)
#if defined(Q_OS_WIN)
#include <sentry.h>
#define DOCTEST_CONFIG_IMPLEMENT
#define DOCTEST_CONFIG_SUPER_FAST_ASSERTS
#include <doctest/doctest.h>
#endif
Q_IMPORT_QML_PLUGIN(ScreenPlayAppPlugin)
Q_IMPORT_QML_PLUGIN(ScreenPlayUtilPlugin)
#ifdef SCREENPLAY_STEAM
Q_IMPORT_QML_PLUGIN(ScreenPlayWorkshopPlugin)
#endif
int main(int argc, char* argv[])
{
@ -49,17 +53,6 @@ int main(int argc, char* argv[])
QApplication qtGuiApp(argc, argv);
// Unit tests
doctest::Context context;
context.setOption("abort-after", 5); // stop test execution after 5 failed assertions
context.setOption("order-by", "name"); // sort the test cases by their name
context.setOption("no-breaks", true); // don't break in the debugger when assertions fail
context.setOption("no-run", true); // No tests are executed by default
context.applyCommandLine(argc, argv); // Every setOption call after applyCommandLine overrides the command line arguments
const int testResult = context.run();
if (context.shouldExit())
return testResult;
ScreenPlay::App app;
if (app.m_isAnotherScreenPlayInstanceRunning) {
@ -67,7 +60,9 @@ int main(int argc, char* argv[])
} else {
app.init();
const int status = qtGuiApp.exec();
#if defined(Q_OS_WIN)
sentry_shutdown();
#endif
return status;
}
}

View File

@ -3,15 +3,14 @@ import QtQuick.Window
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import Settings 1.0
import ScreenPlayUtil 1.0 as Common
import Qt5Compat.GraphicalEffects
import "qml/Monitors" as Monitors
import "qml/Common" as Common
import "qml/Common/Dialogs" as Dialogs
import "qml/Installed" as Installed
import "qml/Navigation" as Navigation
import "qml/Workshop" as Workshop
import "qml/Community" as Community
ApplicationWindow {
@ -34,18 +33,20 @@ ApplicationWindow {
function switchPage(name) {
if (nav.currentNavigationName === name) {
if (name === "Installed")
ScreenPlay.installedListModel.reset()
App.installedListModel.reset()
}
if (name === "Installed") {
stackView.replace("qrc:/ScreenPlayQml/qml/Installed/Installed.qml", {
stackView.replace("qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml",
{
"sidebar": sidebar
})
return
}
stackView.replace("qrc:/ScreenPlayQml/qml/" + name + "/" + name + ".qml", {
"modalSource": content
})
stackView.replace(
"qrc:/qml/ScreenPlayApp/qml/" + name + "/" + name + ".qml", {
"modalSource": content
})
sidebar.state = "inactive"
}
@ -55,48 +56,49 @@ ApplicationWindow {
visible: false
width: 1400
height: 788
title: "ScreenPlay Alpha - " + ScreenPlay.version()
title: "ScreenPlay Alpha - V" + App.version()
minimumHeight: 450
minimumWidth: 1050
property bool enableCustomWindowNavigation: Qt.platform.os === "windows" || Qt.platform.os === "osx"
property bool enableCustomWindowNavigation: Qt.platform.os === "windows"
|| Qt.platform.os === "osx"
// Partial workaround for
// https://bugreports.qt.io/browse/QTBUG-86047
Material.accent: Material.color(Material.Orange)
onVisibilityChanged: {
if (root.visibility === 2)
ScreenPlay.installedListModel.reset()
App.installedListModel.reset()
}
onClosing: {
if (ScreenPlay.screenPlayManager.activeWallpaperCounter === 0
&& ScreenPlay.screenPlayManager.activeWidgetsCounter === 0) {
if (App.screenPlayManager.activeWallpaperCounter === 0
&& App.screenPlayManager.activeWidgetsCounter === 0) {
Qt.quit()
}
}
Component.onCompleted: {
if(root.enableCustomWindowNavigation){
if (root.enableCustomWindowNavigation) {
root.flags = Qt.FramelessWindowHint | Qt.Window
}
setTheme(ScreenPlay.settings.theme)
stackView.push("qrc:/ScreenPlayQml/qml/Installed/Installed.qml", {
setTheme(App.settings.theme)
stackView.push("qrc:/qml/ScreenPlayApp/qml/Installed/Installed.qml", {
"sidebar": sidebar
})
if (!ScreenPlay.settings.silentStart)
if (!App.settings.silentStart)
root.show()
}
Item {
id: noneContentItems
Dialogs.SteamNotAvailable {
Common.SteamNotAvailable {
id: dialogSteam
modalSource: content
}
Dialogs.MonitorConfiguration {
Common.MonitorConfiguration {
modalSource: content
}
Dialogs.CriticalError {
Common.CriticalError {
window: root
modalSource: content
}
@ -117,7 +119,7 @@ ApplicationWindow {
id: windowNav
enabled: root.enableCustomWindowNavigation
visible: enabled
z:5
z: 5
modalSource: content
width: parent.width
window: root
@ -126,19 +128,18 @@ ApplicationWindow {
Item {
id: content
anchors {
top: root.enableCustomWindowNavigation ? windowNav.bottom : parent.top
top: root.enableCustomWindowNavigation ? windowNav.bottom : parent.top
right: parent.right
bottom: parent.bottom
left: parent.left
}
Connections {
function onThemeChanged(theme) {
setTheme(theme)
}
target: ScreenPlay.settings
target: App.settings
}
Connections {
@ -146,7 +147,7 @@ ApplicationWindow {
switchPage(nav)
}
target: ScreenPlay.util
target: App.util
}
Connections {
@ -154,7 +155,7 @@ ApplicationWindow {
root.show()
}
target: ScreenPlay.screenPlayManager
target: App.screenPlayManager
}
StackView {
@ -287,15 +288,17 @@ ApplicationWindow {
}
}
Rectangle {
Item {
width: 15
height: width
color: "#555"
anchors {
right: parent.right
bottom: parent.bottom
margins: 1
}
Image {
source: "qrc:/assets/images/scale_window_indicator.png"
}
MouseArea {
id: maResize
anchors.fill: parent

View File

@ -6,7 +6,7 @@ import ScreenPlay 1.0
SystemTrayIcon {
id: root
property var window
property Window window
visible: true
icon.source: "qrc:/assets/icons/app.ico"
tooltip: qsTr("ScreenPlay - Double click to change you settings.")

View File

@ -3,6 +3,7 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import Qt5Compat.GraphicalEffects
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {

View File

@ -1,6 +1,7 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
TabButton {
@ -33,7 +34,7 @@ TabButton {
id: txt
text: control.text
font.family: ScreenPlay.settings.font
font.family: App.settings.font
opacity: enabled ? 1 : 0.3
color: control.checked ? Material.accentColor : Material.primaryTextColor
horizontalAlignment: Text.AlignHCenter

View File

@ -4,6 +4,7 @@ import QtQuick.Controls.Material
import Qt5Compat.GraphicalEffects
import QtQuick.Layouts
import QtQml.XmlListModel
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {
@ -73,7 +74,7 @@ Item {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pointSize: 32
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Light
anchors {
@ -141,7 +142,7 @@ Item {
text: title
color: Material.primaryTextColor
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Normal
font.pointSize: 14
wrapMode: Text.WordWrap
@ -160,7 +161,7 @@ Item {
text: pubDate
color: Material.primaryTextColor
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.pointSize: 8
wrapMode: Text.WordWrap

View File

@ -5,6 +5,7 @@ import QtQuick.Controls.Material
import QtQuick.Particles
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0
@ -16,10 +17,10 @@ Item {
Component.onCompleted: {
wizardContentWrapper.state = "in";
stackView.push("qrc:/ScreenPlayQml/qml/Create/StartInfo.qml");
stackView.push("qrc:/qml/ScreenPlayApp/qml/Create/StartInfo.qml");
}
Sidebar {
CreateSidebar {
id: sidebar
stackView: stackView

View File

@ -5,6 +5,7 @@ import QtQuick.Controls.Material
import QtQuick.Particles
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0
@ -43,9 +44,9 @@ Rectangle {
function onWizardExited() {
root.expanded = true
stackView.clear(StackView.PushTransition)
stackView.push("qrc:/ScreenPlayQml/qml/Create/StartInfo.qml")
stackView.push("qrc:/qml/ScreenPlayApp/qml/Create/StartInfo.qml")
listView.currentIndex = 0
ScreenPlay.util.setNavigationActive(true)
App.util.setNavigationActive(true)
}
ignoreUnknownSignals: true
@ -54,70 +55,70 @@ Rectangle {
model: ListModel {
ListElement {
headline: qsTr("Tools Overview")
source: "qrc:/ScreenPlayQml/qml/Create/StartInfo.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/StartInfo.qml"
category: "Home"
objectName: ""
}
ListElement {
headline: qsTr("Video Import h264 (.mp4)")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/Importh264/Importh264.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/Importh264/Importh264.qml"
category: "Video Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("Video Import VP8 & VP9 (.webm)")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/ImportWebm/ImportWebm.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/ImportWebm/ImportWebm.qml"
category: "Video Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("Video import (all types)")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaper.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/ImportVideoAndConvert/CreateWallpaper.qml"
category: "Video Wallpaper"
objectName: "videoImportConvert"
}
ListElement {
headline: qsTr("GIF Wallpaper")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/GifWallpaper.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/GifWallpaper.qml"
category: "Video Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("QML Wallpaper")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/QMLWallpaper.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/QMLWallpaper.qml"
category: "Code Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("HTML5 Wallpaper")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/HTMLWallpaper.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/HTMLWallpaper.qml"
category: "Code Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("Website Wallpaper")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/WebsiteWallpaper.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/WebsiteWallpaper.qml"
category: "Code Wallpaper"
objectName: ""
}
ListElement {
headline: qsTr("QML Widget")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/QMLWidget.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/QMLWidget.qml"
category: "Code Widgets"
objectName: ""
}
ListElement {
headline: qsTr("HTML Widget")
source: "qrc:/ScreenPlayQml/qml/Create/Wizards/HTMLWidget.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Create/Wizards/HTMLWidget.qml"
category: "Code Widgets"
objectName: ""
}

View File

@ -5,10 +5,11 @@ import QtQuick.Controls.Material
import QtQuick.Particles
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0
import "../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -32,7 +33,7 @@ Item {
color: Material.primaryTextColor
font.pointSize: 12
font.family: ScreenPlay.settings.font
font.family: App.settings.font
text: qsTr("Below you can find tools to create wallaper, beyond the tools that ScreenPlay provides for you!")
anchors {
@ -51,7 +52,7 @@ Item {
maximumFlickVelocity: 2500
flickDeceleration: 500
clip: true
cellWidth: 186
cellWidth: 180
cellHeight: 280
anchors {

View File

@ -5,10 +5,11 @@ import QtQuick.Controls.Material
import QtQuick.Particles
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.QMLUtilities 1.0
import "../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: delegate
@ -58,7 +59,7 @@ Item {
id: txtCategory
font.pointSize: 10
font.family: ScreenPlay.settings.font
font.family: App.settings.font
color: "white"
anchors {
@ -75,7 +76,7 @@ Item {
id: txtText
font.pointSize: 16
font.family: ScreenPlay.settings.font
font.family: App.settings.font
color: "white"
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
@ -102,7 +103,7 @@ Item {
id: description
font.pointSize: 14
font.family: ScreenPlay.settings.font
font.family: App.settings.font
color: Material.primaryTextColor
anchors {

View File

@ -3,9 +3,10 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../Common"
import ScreenPlayUtil 1.0
Item {
id: root
@ -81,8 +82,8 @@ Item {
interval: 400
onTriggered: {
ScreenPlay.util.setNavigationActive(true);
ScreenPlay.util.setNavigation("Create");
App.util.setNavigationActive(true);
App.util.setNavigation("Create");
}
}

View File

@ -2,8 +2,9 @@ import QtQuick
import QtQuick.Controls.Material
import QtQuick.Controls
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import "../../Common" as Common
import ScreenPlayUtil 1.0 as Common
WizardPage {
id: root
@ -14,7 +15,7 @@ WizardPage {
property bool ready: tfTitle.text.length >= 1 && root.file.length !== ""
function create() {
ScreenPlay.wizards.createGifWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, root.file, tagSelector.getTags());
App.wizards.createGifWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, root.file, tagSelector.getTags());
}
onReadyChanged: root.ready = ready
@ -76,7 +77,7 @@ WizardPage {
Text {
color: Material.primaryTextColor
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.pointSize: 13
text: qsTr("Drop a *.gif file here or use 'Select file' below.")
verticalAlignment: Text.AlignVCenter

View File

@ -3,9 +3,10 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../Common" as Common
import ScreenPlayUtil 1.0 as Common
WizardPage {
id: root
@ -14,7 +15,7 @@ WizardPage {
id: rightWrapper
function create() {
ScreenPlay.wizards.createHTMLWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
App.wizards.createHTMLWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
}
spacing: 10

View File

@ -3,15 +3,16 @@ import QtQuick.Controls.Material
import QtQuick.Controls
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import "../../Common" as Common
import ScreenPlayUtil 1.0 as Common
WizardPage {
id: root
sourceComponent: ColumnLayout {
function create() {
ScreenPlay.wizards.createHTMLWidget(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
App.wizards.createHTMLWidget(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
}
Common.Headline {

View File

@ -3,6 +3,7 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
@ -30,7 +31,7 @@ Item {
swipeView.currentIndex = 1
createWallpaperVideoImportConvert.codec = codec
createWallpaperVideoImportConvert.filePath = filePath
ScreenPlay.create.createWallpaperStart(filePath, codec, quality)
App.create.createWallpaperStart(filePath, codec, quality)
}
}

View File

@ -4,9 +4,10 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Dialogs
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -41,7 +42,7 @@ Item {
Layout.fillWidth: true
font.pointSize: 13
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
ColumnLayout {
@ -54,7 +55,7 @@ Item {
color: Material.primaryTextColor
width: parent.width
font.pointSize: 14
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
ComboBox {
@ -69,7 +70,7 @@ Item {
textRole: "text"
valueRole: "value"
currentIndex: 1
font.family: ScreenPlay.settings.font
font.family: App.settings.font
model: ListModel {
id: model
@ -117,7 +118,7 @@ Item {
icon.color: "white"
icon.width: 16
icon.height: 16
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: Qt.openUrlExternally("https://kelteseth.gitlab.io/ScreenPlayDocs/wallpaper/wallpaper/#performance")
anchors {
@ -131,7 +132,7 @@ Item {
objectName: "createWallpaperInitFileSelectButton"
text: qsTr("Select file")
highlighted: true
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
fileDialogImportVideo.open();
}

View File

@ -4,6 +4,7 @@ import QtQuick.Controls.Material
import QtQuick.Layouts
import Qt5Compat.GraphicalEffects
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
@ -17,7 +18,7 @@ Item {
text: qsTr("An error occurred!")
height: 40
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Light
color: Material.color(Material.DeepOrange)
font.pointSize: 32
@ -53,10 +54,10 @@ Item {
Text {
id: txtFFMPEGDebug
font.family: ScreenPlay.settings.font
font.family: App.settings.font
wrapMode: Text.WordWrap
color: "#626262"
text: ScreenPlay.create.ffmpegOutput
text: App.create.ffmpegOutput
height: txtFFMPEGDebug.paintedHeight
anchors {
@ -90,7 +91,7 @@ Item {
MenuItem {
text: qsTr("Copy text to clipboard")
onClicked: {
ScreenPlay.util.copyToClipboard(txtFFMPEGDebug.text);
App.util.copyToClipboard(txtFFMPEGDebug.text);
}
}
@ -102,10 +103,10 @@ Item {
text: qsTr("Back to create and send an error report!")
Material.background: Material.accent
Material.foreground: "white"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
ScreenPlay.util.setNavigationActive(true);
ScreenPlay.util.setNavigation("Create");
App.util.setNavigationActive(true);
App.util.setNavigation("Create");
}
anchors {

View File

@ -3,10 +3,11 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.Enums.ImportVideoState 1.0
import "../../../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -20,7 +21,7 @@ Item {
signal save
function cleanup() {
ScreenPlay.create.cancel()
App.create.cancel()
}
function basename(str) {
@ -51,7 +52,7 @@ Item {
txtConvert.text = qsTr("Generating preview thumbnail image...")
break
case ImportVideoState.ConvertingPreviewImageFinished:
imgPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.jpg"
imgPreview.source = "file:///" + App.create.workingDir + "/preview.jpg"
imgPreview.visible = true
break
case ImportVideoState.ConvertingPreviewVideo:
@ -61,7 +62,7 @@ Item {
txtConvert.text = qsTr("Generating preview gif...")
break
case ImportVideoState.ConvertingPreviewGifFinished:
gifPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.gif"
gifPreview.source = "file:///" + App.create.workingDir + "/preview.gif"
imgPreview.visible = false
gifPreview.visible = true
gifPreview.playing = true
@ -100,7 +101,7 @@ Item {
txtConvertNumber.text = percentage + "%"
}
target: ScreenPlay.create
target: App.create
}
Text {
@ -108,7 +109,7 @@ Item {
text: qsTr("Convert a video to a wallpaper")
height: 40
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Light
color: Material.primaryTextColor
font.pointSize: 23
@ -203,7 +204,7 @@ Item {
color: "white"
font.pointSize: 21
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
@ -218,7 +219,7 @@ Item {
color: Material.secondaryTextColor
text: qsTr("Generating preview video...")
font.pointSize: 14
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
@ -327,10 +328,10 @@ Item {
text: qsTr("Abort")
Material.accent: Material.color(Material.Red)
highlighted: true
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
root.abort()
ScreenPlay.create.cancel()
App.create.cancel()
}
}
@ -341,11 +342,11 @@ Item {
enabled: false
Material.background: Material.accent
Material.foreground: "white"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
if (conversionFinishedSuccessful) {
btnSave.enabled = false
ScreenPlay.create.saveWallpaper(
App.create.saveWallpaper(
textFieldName.text,
textFieldDescription.text, root.filePath,
previewSelector.imageSource,
@ -379,7 +380,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 30
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
Timer {
@ -388,8 +389,8 @@ Item {
interval: 1000 + Math.random() * 1000
onTriggered: {
savePopup.close()
ScreenPlay.util.setNavigationActive(true)
ScreenPlay.util.setNavigation("Installed")
App.util.setNavigationActive(true)
App.util.setNavigation("Installed")
}
}
}

View File

@ -3,6 +3,7 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
@ -25,8 +26,8 @@ Item {
root.wizardStarted()
swipeView.currentIndex = 1
createWallpaperVideoImportConvert.filePath = filePath
ScreenPlay.util.setNavigationActive(false)
ScreenPlay.create.createWallpaperStart(filePath)
App.util.setNavigationActive(false)
App.create.createWallpaperStart(filePath)
}
}

View File

@ -3,10 +3,11 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.Enums.ImportVideoState 1.0
import "../../../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -49,7 +50,7 @@ Item {
txtConvert.text = qsTr("Generating preview thumbnail image...");
break;
case ImportVideoState.ConvertingPreviewImageFinished:
imgPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.jpg";
imgPreview.source = "file:///" + App.create.workingDir + "/preview.jpg";
imgPreview.visible = true;
break;
case ImportVideoState.ConvertingPreviewVideo:
@ -59,7 +60,7 @@ Item {
txtConvert.text = qsTr("Generating preview gif...");
break;
case ImportVideoState.ConvertingPreviewGifFinished:
gifPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.gif";
gifPreview.source = "file:///" + App.create.workingDir + "/preview.gif";
imgPreview.visible = false;
gifPreview.visible = true;
gifPreview.playing = true;
@ -97,7 +98,7 @@ Item {
txtConvertNumber.text = percentage + "%";
}
target: ScreenPlay.create
target: App.create
}
Common.Headline {
@ -198,7 +199,7 @@ Item {
color: "white"
font.pointSize: 21
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
@ -214,7 +215,7 @@ Item {
color: Material.secondaryTextColor
text: qsTr("Generating preview video...")
font.pointSize: 14
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
@ -328,10 +329,10 @@ Item {
text: qsTr("Abort")
Material.accent: Material.color(Material.Red)
highlighted: true
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
root.exit();
ScreenPlay.create.cancel();
App.create.cancel();
}
}
@ -342,11 +343,11 @@ Item {
enabled: false
Material.background: Material.accent
Material.foreground: "white"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
if (conversionFinishedSuccessful) {
btnSave.enabled = false;
ScreenPlay.create.saveWallpaper(textFieldName.text, textFieldDescription.text, root.filePath, previewSelector.imageSource, textFieldYoutubeURL.text, Create.VP9, textFieldTags.getTags());
App.create.saveWallpaper(textFieldName.text, textFieldDescription.text, root.filePath, previewSelector.imageSource, textFieldYoutubeURL.text, Create.VP9, textFieldTags.getTags());
savePopup.open();
}
}
@ -377,7 +378,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 30
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
Timer {
@ -386,7 +387,7 @@ Item {
interval: 1000 + Math.random() * 1000
onTriggered: {
savePopup.close();
ScreenPlay.util.setNavigationActive(true);
App.util.setNavigationActive(true);
root.exit();
}
}

View File

@ -4,9 +4,10 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Dialogs
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../../Common" as Common
import ScreenPlayUtil 1.0 as Common
import "../../"
Item {
@ -50,7 +51,7 @@ Item {
Layout.fillWidth: true
font.pointSize: 13
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
DropArea {
@ -66,7 +67,7 @@ Item {
drag.accept(Qt.LinkAction);
}
onDropped: {
let file = ScreenPlay.util.toLocal(drop.urls[0]);
let file = App.util.toLocal(drop.urls[0]);
bg.color = Qt.darker(Qt.darker(Material.backgroundColor));
if (file.endsWith(".webm"))
root.next(drop.urls[0]);
@ -100,7 +101,7 @@ Item {
font.pointSize: 13
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
fill: parent
@ -144,7 +145,7 @@ Item {
icon.color: "white"
icon.width: 16
icon.height: 16
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: Qt.openUrlExternally("https://kelteseth.gitlab.io/ScreenPlayDocs/wallpaper/wallpaper/#performance")
anchors {
@ -158,7 +159,7 @@ Item {
Button {
text: qsTr("Select file")
highlighted: true
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
fileDialogImportVideo.open();
}

View File

@ -3,6 +3,7 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
@ -25,8 +26,8 @@ Item {
root.wizardStarted()
swipeView.currentIndex = 1
createWallpaperVideoImportConvert.filePath = filePath
ScreenPlay.util.setNavigationActive(false)
ScreenPlay.create.importH264(filePath)
App.util.setNavigationActive(false)
App.create.importH264(filePath)
}
}

View File

@ -3,10 +3,11 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import ScreenPlay.Enums.ImportVideoState 1.0
import "../../../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -49,7 +50,7 @@ Item {
txtConvert.text = qsTr("Generating preview thumbnail image...");
break;
case ImportVideoState.ConvertingPreviewImageFinished:
imgPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.jpg";
imgPreview.source = "file:///" + App.create.workingDir + "/preview.jpg";
imgPreview.visible = true;
break;
case ImportVideoState.ConvertingPreviewVideo:
@ -59,7 +60,7 @@ Item {
txtConvert.text = qsTr("Generating preview gif...");
break;
case ImportVideoState.ConvertingPreviewGifFinished:
gifPreview.source = "file:///" + ScreenPlay.create.workingDir + "/preview.gif";
gifPreview.source = "file:///" + App.create.workingDir + "/preview.gif";
imgPreview.visible = false;
gifPreview.visible = true;
gifPreview.playing = true;
@ -97,7 +98,7 @@ Item {
txtConvertNumber.text = percentage + "%";
}
target: ScreenPlay.create
target: App.create
}
Common.Headline {
@ -198,7 +199,7 @@ Item {
color: "white"
font.pointSize: 21
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
@ -214,7 +215,7 @@ Item {
color: Material.secondaryTextColor
text: qsTr("Generating preview video...")
font.pointSize: 14
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter
@ -328,10 +329,10 @@ Item {
text: qsTr("Abort")
Material.background: Material.Red
Material.foreground: "white"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
root.exit();
ScreenPlay.create.cancel();
App.create.cancel();
}
}
@ -342,11 +343,11 @@ Item {
enabled: false
Material.background: Material.accent
Material.foreground: "white"
font.family: ScreenPlay.settings.font
font.family: App.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());
App.create.saveWallpaper(textFieldName.text, textFieldDescription.text, root.filePath, previewSelector.imageSource, textFieldYoutubeURL.text, Create.H264, textFieldTags.getTags());
savePopup.open();
}
}
@ -377,7 +378,7 @@ Item {
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 30
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
Timer {
@ -386,7 +387,7 @@ Item {
interval: 1000 + Math.random() * 1000
onTriggered: {
savePopup.close();
ScreenPlay.util.setNavigationActive(true);
App.util.setNavigationActive(true);
root.exit();
}
}

View File

@ -4,9 +4,10 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Dialogs
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../../Common" as Common
import ScreenPlayUtil 1.0 as Common
import "../../"
Item {
@ -50,7 +51,7 @@ Item {
Layout.fillWidth: true
font.pointSize: 13
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
font.family: ScreenPlay.settings.font
font.family: App.settings.font
}
DropArea {
@ -67,7 +68,7 @@ Item {
drag.accept(Qt.LinkAction)
}
onDropped: {
let file = ScreenPlay.util.toLocal(drop.urls[0])
let file = App.util.toLocal(drop.urls[0])
bg.color = Qt.darker(Qt.darker(
Material.backgroundColor))
if (file.endsWith(".mp4"))
@ -103,7 +104,7 @@ Item {
font.pointSize: 13
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
fill: parent
@ -125,7 +126,7 @@ Item {
icon.color: "white"
icon.width: 16
icon.height: 16
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: Qt.openUrlExternally(
"https://kelteseth.gitlab.io/ScreenPlayDocs/wallpaper/wallpaper/#performance")
@ -139,7 +140,7 @@ Item {
Button {
text: qsTr("Select file")
highlighted: true
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
fileDialogImportVideo.open()
}

View File

@ -3,9 +3,10 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../Common" as Common
import ScreenPlayUtil 1.0 as Common
WizardPage {
id: root
@ -14,7 +15,7 @@ WizardPage {
id: rightWrapper
function create() {
ScreenPlay.wizards.createQMLWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
App.wizards.createQMLWallpaper(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
}
spacing: 10

View File

@ -3,15 +3,16 @@ import QtQuick.Controls.Material
import QtQuick.Controls
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import "../../Common" as Common
import ScreenPlayUtil 1.0 as Common
WizardPage {
id: root
sourceComponent: ColumnLayout {
function create() {
ScreenPlay.wizards.createQMLWidget(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
App.wizards.createQMLWidget(tfTitle.text, cbLicense.name, cbLicense.licenseFile, tfCreatedBy.text, previewSelector.imageSource, tagSelector.getTags());
}
Common.Headline {

View File

@ -3,9 +3,10 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
import "../../Common" as Common
import ScreenPlayUtil 1.0 as Common
WizardPage {
id: root
@ -14,7 +15,7 @@ WizardPage {
property bool ready: tfTitle.text.length >= 1 && tfUrl.text.length > 1
function create() {
ScreenPlay.wizards.createWebsiteWallpaper(tfTitle.text, previewSelector.imageSource, tfUrl.text, tagSelector.getTags());
App.wizards.createWebsiteWallpaper(tfTitle.text, previewSelector.imageSource, tfUrl.text, tagSelector.getTags());
}
spacing: 10

View File

@ -4,6 +4,7 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Window
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Create 1.0
@ -71,7 +72,7 @@ FocusScope {
Material.background: Material.accent
Material.foreground: "white"
Layout.alignment: Qt.AlignRight
font.family: ScreenPlay.settings.font
font.family: App.settings.font
onClicked: {
btnSave.enabled = false;
root.saveClicked();
@ -100,7 +101,7 @@ FocusScope {
Text {
text: qsTr("Saving...")
color: Material.primaryHighlightedTextColor
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
horizontalCenter: parent.horizontalCenter

View File

@ -3,10 +3,11 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0
import ScreenPlay.Enums.SearchType 1.0
import "../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -20,7 +21,7 @@ Item {
signal setSidebarActive(var active)
function checkIsContentInstalled() {
if (ScreenPlay.installedListModel.count === 0) {
if (App.installedListModel.count === 0) {
loaderHelp.active = true
gridView.footerItem.isVisible = true
gridView.visible = false
@ -37,13 +38,13 @@ Item {
Component.onCompleted: {
navWrapper.state = "in"
ScreenPlay.installedListFilter.sortBySearchType(SearchType.All)
App.installedListFilter.sortBySearchType(SearchType.All)
checkIsContentInstalled()
}
Action {
shortcut: "F5"
onTriggered: ScreenPlay.installedListModel.reset()
onTriggered: App.installedListModel.reset()
}
Connections {
@ -64,7 +65,7 @@ Item {
checkIsContentInstalled()
}
target: ScreenPlay.installedListModel
target: App.installedListModel
}
Loader {
@ -73,7 +74,7 @@ Item {
active: false
z: 99
anchors.fill: parent
source: "qrc:/ScreenPlayQml/qml/Installed/InstalledWelcomeScreen.qml"
source: "qrc:/qml/ScreenPlayApp/qml/Installed/InstalledWelcomeScreen.qml"
}
Connections {
@ -81,7 +82,7 @@ Item {
gridView.positionViewAtBeginning()
}
target: ScreenPlay.installedListFilter
target: App.installedListFilter
}
GridView {
@ -102,7 +103,7 @@ Item {
snapMode: GridView.SnapToRow
onDragStarted: isDragging = true
onDragEnded: isDragging = false
model: ScreenPlay.installedListFilter
model: App.installedListFilter
removeDisplaced: Transition {
SequentialAnimation {
PauseAnimation {
@ -140,7 +141,7 @@ Item {
gridView.headerItem.isVisible = false
//Pull to refresh
if (contentY <= -180 && !refresh && !isDragging)
ScreenPlay.installedListModel.reset()
App.installedListModel.reset()
}
anchors {
@ -177,7 +178,7 @@ Item {
id: txtHeader
text: qsTr("Pull to refresh!")
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors.centerIn: parent
color: "gray"
font.pointSize: 18
@ -204,7 +205,7 @@ Item {
Text {
id: txtFooter
font.family: ScreenPlay.settings.font
font.family: App.settings.font
text: qsTr("Get more Wallpaper & Widgets via the Steam workshop!")
anchors.centerIn: parent
color: "gray"
@ -271,7 +272,7 @@ Item {
objectName: "openFolder"
icon.source: "qrc:/assets/icons/icon_folder_open.svg"
onClicked: {
ScreenPlay.util.openFolderInExplorer(
App.util.openFolderInExplorer(
contextMenu.absoluteStoragePath)
}
}
@ -306,12 +307,12 @@ Item {
anchors.centerIn: Overlay.overlay
onAccepted: {
root.sidebar.clear()
ScreenPlay.installedListModel.deinstallItemAt(
App.installedListModel.deinstallItemAt(
contextMenu.absoluteStoragePath)
}
}
Navigation {
InstalledNavigation {
id: navWrapper
anchors {

View File

@ -3,10 +3,11 @@ import QtQuick.Controls
import QtQuick.Controls.Material
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0
import ScreenPlay.Enums.SearchType 1.0
import "../Common" as Common
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -30,11 +31,9 @@ Item {
layer.effect: ElevationEffect {
elevation: 2
}
}
Common.MouseHoverBlocker {
}
Common.MouseHoverBlocker {}
Item {
height: nav.height
@ -58,83 +57,69 @@ Item {
TabButton {
text: qsTr("All")
font.family: ScreenPlay.settings.font
icon.height: 16
icon.width: 16
height: parent.height
width: implicitWidth
font.weight: Font.Thin
icon.source: "qrc:/assets/icons/icon_installed.svg"
onClicked: {
setSidebarActive(false);
ScreenPlay.installedListFilter.sortBySearchType(SearchType.All);
}
background: Item {
setSidebarActive(false)
App.installedListFilter.sortBySearchType(
SearchType.All)
}
background: Item {}
}
TabButton {
text: qsTr("Scenes")
icon.height: 16
icon.width: 16
font.family: ScreenPlay.settings.font
width: implicitWidth
height: parent.height
font.weight: Font.Thin
icon.source: "qrc:/assets/icons/icon_code.svg"
onClicked: {
setSidebarActive(false);
ScreenPlay.installedListFilter.sortBySearchType(SearchType.Scene);
}
background: Item {
setSidebarActive(false)
App.installedListFilter.sortBySearchType(
SearchType.Scene)
}
background: Item {}
}
TabButton {
text: qsTr("Videos")
icon.height: 16
icon.width: 16
font.family: ScreenPlay.settings.font
height: parent.height
width: implicitWidth
font.weight: Font.Thin
icon.source: "qrc:/assets/icons/icon_movie.svg"
onClicked: {
setSidebarActive(false);
ScreenPlay.installedListFilter.sortBySearchType(SearchType.Wallpaper);
}
background: Item {
setSidebarActive(false)
App.installedListFilter.sortBySearchType(
SearchType.Wallpaper)
}
background: Item {}
}
TabButton {
text: qsTr("Widgets")
icon.height: 16
icon.width: 16
font.family: ScreenPlay.settings.font
height: parent.height
width: implicitWidth
font.weight: Font.Thin
icon.source: "qrc:/assets/icons/icon_widgets.svg"
onClicked: {
setSidebarActive(false);
ScreenPlay.installedListFilter.sortBySearchType(SearchType.Widget);
}
background: Item {
setSidebarActive(false)
App.installedListFilter.sortBySearchType(
SearchType.Widget)
}
background: Item {}
}
background: Item {
}
background: Item {}
}
Common.Search {
@ -145,7 +130,6 @@ Item {
rightMargin: 10
top: parent.top
}
}
ToolButton {
@ -153,17 +137,21 @@ Item {
property int sortOrder: Qt.DescendingOrder
icon.source: (sortOrder === Qt.AscendingOrder) ? "qrc:/assets/icons/icon_sort-down-solid.svg" : "qrc:/assets/icons/icon_sort-up-solid.svg"
icon.source: (btnSortOrder.sortOrder === Qt.AscendingOrder) ? "qrc:/assets/icons/icon_sort-down-solid.svg" : "qrc:/assets/icons/icon_sort-up-solid.svg"
icon.width: 12
icon.height: 12
hoverEnabled: true
ToolTip.delay: 100
ToolTip.timeout: 5000
ToolTip.visible: hovered
ToolTip.text: (sortOrder === Qt.AscendingOrder) ? qsTr("Install Date Ascending") : qsTr("Install Date Descending")
ToolTip.text: (btnSortOrder.sortOrder
=== Qt.AscendingOrder) ? "Install Date Ascending": "Install Date Descending"
onClicked: {
sortOrder = (sortOrder === Qt.DescendingOrder) ? Qt.AscendingOrder : Qt.DescendingOrder;
ScreenPlay.installedListFilter.setSortOrder(sortOrder);
btnSortOrder.sortOrder
= (btnSortOrder.sortOrder
=== Qt.DescendingOrder) ? Qt.AscendingOrder : Qt.DescendingOrder
App.installedListFilter.setSortOrder(
btnSortOrder.sortOrder)
}
anchors {
@ -172,9 +160,7 @@ Item {
top: parent.top
verticalCenter: parent.verticalCenter
}
}
}
states: [
@ -185,7 +171,6 @@ Item {
target: root
anchors.topMargin: -115
}
},
State {
name: "in"
@ -194,7 +179,6 @@ Item {
target: root
anchors.topMargin: 0
}
}
]
transitions: [
@ -208,7 +192,6 @@ Item {
duration: 400
easing.type: Easing.InOutQuart
}
}
]
}

View File

@ -1,8 +1,9 @@
import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import "../Common"
import ScreenPlayUtil 1.0
Item {
id: installedUserHelper
@ -75,8 +76,8 @@ Item {
id: txtHeadline
y: 80
text: qsTr("Get free Widgets and Wallpaper via the Steam Workshop")
font.family: ScreenPlay.settings.font
text: App.settings.steamVersion ? qsTr("Get free Widgets and Wallpaper via the Steam Workshop") : qsTr("Get content via our forum")
font.family: App.settings.font
font.capitalization: Font.Capitalize
wrapMode: Text.WordWrap
color: "white"

View File

@ -2,9 +2,10 @@ import QtQuick
import Qt5Compat.GraphicalEffects
import QtQuick.Controls
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0
import "../Common/Util.js" as JSUtil
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -23,15 +24,15 @@ Item {
width: 320
height: 180
onTypeChanged: {
if (JSUtil.isWidget(type)) {
if (Common.JSUtil.isWidget(type)) {
icnType.source = "qrc:/assets/icons/icon_widgets.svg"
return
}
if (JSUtil.isScene(type)) {
if (Common.JSUtil.isScene(type)) {
icnType.source = "qrc:/assets/icons/icon_code.svg"
return
}
if (JSUtil.isVideo(type)) {
if (Common.JSUtil.isVideo(type)) {
icnType.source = "qrc:/assets/icons/icon_movie.svg"
return
}
@ -137,7 +138,7 @@ Item {
Text {
text: root.customTitle
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.pointSize: 16
visible: !screenPlayItemImage.visible
color: Material.primaryTextColor
@ -190,7 +191,7 @@ Item {
visible: root.isNew
Text {
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.pointSize: 9
renderType: Text.QtRendering
color: "white"
@ -225,7 +226,7 @@ Item {
}
onClicked: function (mouse) {
if (mouse.button === Qt.LeftButton)
ScreenPlay.util.setSidebarItem(root.screenId, root.type)
App.util.setSidebarItem(root.screenId, root.type)
else if (mouse.button === Qt.RightButton)
root.openContextMenu(Qt.point(mouseX, mouseY))
}

View File

@ -4,12 +4,12 @@ import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.FillMode 1.0
import ScreenPlay.Enums.InstalledType 1.0
import "../Monitors"
import "../Common" as Common
import "../Common/Util.js" as JSUtil
import ScreenPlayUtil 1.0 as Common
Item {
id: root
@ -39,16 +39,16 @@ Item {
width: 400
state: "inactive"
onContentFolderNameChanged: {
txtHeadline.text = ScreenPlay.installedListModel.get(root.contentFolderName).m_title;
const hasPreviewGif = ScreenPlay.installedListModel.get(root.contentFolderName).m_previewGIF !== undefined;
txtHeadline.text = App.installedListModel.get(root.contentFolderName).m_title;
const hasPreviewGif = App.installedListModel.get(root.contentFolderName).m_previewGIF !== undefined;
if (!hasPreviewGif) {
image.source = Qt.resolvedUrl(ScreenPlay.globalVariables.localStoragePath + "/" + root.contentFolderName + "/" + ScreenPlay.installedListModel.get(root.contentFolderName).m_preview);
image.source = Qt.resolvedUrl(App.GlobalVariables.localStoragePath + "/" + root.contentFolderName + "/" + App.installedListModel.get(root.contentFolderName).m_preview);
image.playing = false;
} else {
image.source = Qt.resolvedUrl(ScreenPlay.globalVariables.localStoragePath + "/" + root.contentFolderName + "/" + ScreenPlay.installedListModel.get(root.contentFolderName).m_previewGIF);
image.source = Qt.resolvedUrl(App.GlobalVariables.localStoragePath + "/" + root.contentFolderName + "/" + App.installedListModel.get(root.contentFolderName).m_previewGIF);
image.playing = true;
}
if (JSUtil.isWidget(root.type) || (monitorSelection.activeMonitors.length > 0)) {
if (Common.JSUtil.isWidget(root.type) || (monitorSelection.activeMonitors.length > 0)) {
btnSetWallpaper.enabled = true;
return ;
}
@ -66,7 +66,7 @@ Item {
}
root.contentFolderName = folderName;
root.type = type;
if (JSUtil.isWallpaper(root.type)) {
if (Common.JSUtil.isWallpaper(root.type)) {
if (type === InstalledType.VideoWallpaper)
root.state = "activeWallpaper";
else
@ -78,7 +78,7 @@ Item {
}
}
target: ScreenPlay.util
target: App.util
}
Common.MouseHoverBlocker {
@ -208,7 +208,7 @@ Item {
id: txtHeadline
text: qsTr("Headline")
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Thin
verticalAlignment: Text.AlignBottom
font.pointSize: 16
@ -266,7 +266,7 @@ Item {
height: 20
text: qsTr("Select a Monitor to display the content")
font.family: ScreenPlay.settings.font
font.family: App.settings.font
verticalAlignment: Text.AlignVCenter
font.pointSize: 10
color: "#626262"
@ -282,7 +282,7 @@ Item {
availableHeight: height
fontSize: 11
onActiveMonitorsChanged: {
if (JSUtil.isWidget(root.type)) {
if (Common.JSUtil.isWidget(root.type)) {
btnSetWallpaper.enabled = true;
return ;
}
@ -316,7 +316,7 @@ Item {
visible: false
text: qsTr("Fill Mode")
font.family: ScreenPlay.settings.font
font.family: App.settings.font
verticalAlignment: Text.AlignVCenter
font.pointSize: 10
color: "#626262"
@ -331,7 +331,7 @@ Item {
Layout.fillWidth: true
textRole: "text"
valueRole: "value"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
model: [{
"value": FillMode.Stretch,
"text": qsTr("Stretch")
@ -349,7 +349,7 @@ Item {
"text": qsTr("Scale-Down")
}]
Component.onCompleted: {
cbVideoFillMode.currentIndex = root.indexOfValue(cbVideoFillMode.model, ScreenPlay.settings.videoFillMode);
cbVideoFillMode.currentIndex = root.indexOfValue(cbVideoFillMode.model, App.settings.videoFillMode);
}
}
@ -363,15 +363,15 @@ Item {
Material.background: Material.accent
Material.foreground: "white"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
icon.source: "qrc:/assets/icons/icon_plus.svg"
icon.color: "white"
icon.width: 16
icon.height: 16
onClicked: {
const absoluteStoragePath = ScreenPlay.globalVariables.localStoragePath + "/" + root.contentFolderName;
const previewImage = ScreenPlay.installedListModel.get(root.contentFolderName).m_preview;
if (JSUtil.isWallpaper(root.type)) {
const absoluteStoragePath = App.GlobalVariables.localStoragePath + "/" + root.contentFolderName;
const previewImage = App.installedListModel.get(root.contentFolderName).m_preview;
if (Common.JSUtil.isWallpaper(root.type)) {
let activeMonitors = monitorSelection.getActiveMonitors();
// TODO Alert user to choose a monitor
if (activeMonitors.length === 0)
@ -382,11 +382,12 @@ Item {
if (type === InstalledType.VideoWallpaper)
volume = Math.round(sliderVolume.slider.value * 100) / 100;
const screenFile = ScreenPlay.installedListModel.get(root.contentFolderName).m_file;
ScreenPlay.screenPlayManager.createWallpaper(root.type, cbVideoFillMode.currentValue, absoluteStoragePath, previewImage, screenFile, activeMonitors, volume, 1, {}, true);
const screenFile = App.installedListModel.get(root.contentFolderName).m_file;
let success =App.screenPlayManager.createWallpaper(root.type, cbVideoFillMode.currentValue, absoluteStoragePath, previewImage, screenFile, activeMonitors, volume, 1, {}, true);
print(success)
}
if (JSUtil.isWidget(root.type))
ScreenPlay.screenPlayManager.createWidget(type, Qt.point(0, 0), absoluteStoragePath, previewImage, {}, true);
if (Common.JSUtil.isWidget(root.type))
App.screenPlayManager.createWidget(type, Qt.point(0, 0), absoluteStoragePath, previewImage, {}, true);
root.state = "inactive";
monitorSelection.reset();

View File

@ -3,9 +3,10 @@ import QtQuick.Controls
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.FillMode 1.0
import "../Common/" as SP
import ScreenPlayUtil 1.0 as Common
ColumnLayout {
id: root
@ -27,15 +28,10 @@ ColumnLayout {
state: "hidden"
clip: true
onWallpaperChanged: {
if (!wallpaper) {
slPlaybackRate.slider.value = 1;
return ;
}
slVolume.slider.value = wallpaper.volume;
slPlaybackRate.slider.value = wallpaper.playbackRate;
}
SP.Slider {
Common.Slider {
id: slVolume
headline: qsTr("Volume")
@ -44,16 +40,16 @@ ColumnLayout {
Layout.leftMargin: 10
Layout.rightMargin: 10
slider.onValueChanged: {
ScreenPlay.screenPlayManager.setWallpaperValueAtMonitorIndex(activeMonitorIndex, "volume", (Math.round(slVolume.slider.value * 100) / 100));
App.screenPlayManager.setWallpaperValueAtMonitorIndex(activeMonitorIndex, "volume", (Math.round(slVolume.slider.value * 100) / 100));
}
}
SP.Slider {
Common.Slider {
id: slCurrentVideoTime
headline: qsTr("Current Video Time")
slider.onValueChanged: ScreenPlay.screenPlayManager.setWallpaperValueAtMonitorIndex(activeMonitorIndex, "currentTime", (Math.round(slCurrentVideoTime.slider.value * 100) / 100))
slider.onValueChanged: App.screenPlayManager.setWallpaperValueAtMonitorIndex(activeMonitorIndex, "currentTime", (Math.round(slCurrentVideoTime.slider.value * 100) / 100))
Layout.fillWidth: true
slider.stepSize: 0.1
Layout.leftMargin: 10
@ -70,7 +66,7 @@ ColumnLayout {
id: txtComboBoxFillMode
text: qsTr("Fill Mode")
font.family: ScreenPlay.settings.font
font.family: App.settings.font
verticalAlignment: Text.AlignVCenter
font.pointSize: 10
color: "#626262"
@ -85,7 +81,7 @@ ColumnLayout {
Layout.leftMargin: 10
textRole: "text"
valueRole: "value"
currentIndex: root.indexOfValue(settingsComboBox.model, ScreenPlay.settings.videoFillMode)
currentIndex: root.indexOfValue(settingsComboBox.model, App.settings.videoFillMode)
model: [{
"value": FillMode.Stretch,
"text": qsTr("Stretch")
@ -103,7 +99,7 @@ ColumnLayout {
"text": qsTr("Scale_Down")
}]
onActivated: {
ScreenPlay.screenPlayManager.setWallpaperFillModeAtMonitorIndex(activeMonitorIndex,settingsComboBox.currentValue);
App.screenPlayManager.setWallpaperFillModeAtMonitorIndex(activeMonitorIndex,settingsComboBox.currentValue);
}
}

View File

@ -2,6 +2,7 @@ import QtQuick
import QtQuick.Controls
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Rectangle {
@ -61,7 +62,7 @@ Rectangle {
}
function resize() {
var absoluteDesktopSize = ScreenPlay.monitorListModel.absoluteDesktopSize()
var absoluteDesktopSize = App.monitorListModel.absoluteDesktopSize()
var isWidthGreaterThanHeight = false
var windowsDelta = 0
if (absoluteDesktopSize.width < absoluteDesktopSize.height) {
@ -114,7 +115,7 @@ Rectangle {
resize()
}
target: ScreenPlay.monitorListModel
target: App.monitorListModel
}
Flickable {
@ -130,7 +131,7 @@ Rectangle {
property int contentWidth
property int contentHeight
model: ScreenPlay.monitorListModel
model: App.monitorListModel
delegate: MonitorSelectionItem {
id: delegate

View File

@ -1,6 +1,7 @@
import QtQuick
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0
@ -42,7 +43,7 @@ Item {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
font.pointSize: root.fontSize
font.family: ScreenPlay.settings.font
font.family: App.settings.font
wrapMode: Text.WrapAnywhere
anchors {

View File

@ -4,9 +4,10 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material
import QtQuick.Layouts
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.InstalledType 1.0
import "../Common/" as Common
import ScreenPlayUtil 1.0 as Common
Common.Popup {
id: root
@ -25,7 +26,7 @@ Common.Popup {
root.open()
}
target: ScreenPlay.util
target: App.util
}
Item {
@ -56,7 +57,7 @@ Common.Popup {
text: qsTr("Wallpaper Configuration")
font.pointSize: 21
color: Material.primaryTextColor
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Light
width: 400
@ -82,13 +83,13 @@ Common.Popup {
if (installedType === InstalledType.VideoWallpaper) {
videoControlWrapper.state = "visible"
customPropertiesGridView.visible = false
const wallpaper = ScreenPlay.screenPlayManager.getWallpaperByAppID(
const wallpaper = App.screenPlayManager.getWallpaperByAppID(
appID)
videoControlWrapper.wallpaper = wallpaper
} else {
videoControlWrapper.state = "hidden"
customPropertiesGridView.visible = true
if (!ScreenPlay.screenPlayManager.requestProjectSettingsAtMonitorIndex(
if (!App.screenPlayManager.requestProjectSettingsAtMonitorIndex(
index)) {
console.warn("Unable to get requested settings from index: ",
index)
@ -109,7 +110,7 @@ Common.Popup {
customPropertiesGridView.projectSettingsListmodelRef = listModel
}
target: ScreenPlay.screenPlayManager
target: App.screenPlayManager
}
}
@ -128,11 +129,11 @@ Common.Popup {
Material.background: Material.accent
highlighted: true
text: qsTr("Remove selected")
font.family: ScreenPlay.settings.font
font.family: App.settings.font
enabled: monitorSelection.activeMonitors.length == 1
&& ScreenPlay.screenPlayManager.activeWallpaperCounter > 0
&& App.screenPlayManager.activeWallpaperCounter > 0
onClicked: {
if (!ScreenPlay.screenPlayManager.removeWallpaperAt(
if (!App.screenPlayManager.removeWallpaperAt(
monitorSelection.activeMonitors[0]))
print("Unable to close singel wallpaper")
}
@ -142,14 +143,14 @@ Common.Popup {
id: btnRemoveAllWallpape
text: qsTr("Remove all ")
+ ScreenPlay.screenPlayManager.activeWallpaperCounter + " " + qsTr(
+ App.screenPlayManager.activeWallpaperCounter + " " + qsTr(
"Wallpapers")
Material.background: Material.accent
highlighted: true
font.family: ScreenPlay.settings.font
enabled: ScreenPlay.screenPlayManager.activeWallpaperCounter > 0
font.family: App.settings.font
enabled: App.screenPlayManager.activeWallpaperCounter > 0
onClicked: {
if (!ScreenPlay.screenPlayManager.removeAllWallpapers())
if (!App.screenPlayManager.removeAllWallpapers())
print("Unable to close all wallpaper!")
root.close()
@ -160,15 +161,15 @@ Common.Popup {
id: btnRemoveAllWidgets
text: qsTr("Remove all ")
+ ScreenPlay.screenPlayManager.activeWidgetsCounter + " " + qsTr(
+ App.screenPlayManager.activeWidgetsCounter + " " + qsTr(
"Widgets")
Material.background: Material.accent
Material.foreground: Material.primaryTextColor
highlighted: true
font.family: ScreenPlay.settings.font
enabled: ScreenPlay.screenPlayManager.activeWidgetsCounter > 0
font.family: App.settings.font
enabled: App.screenPlayManager.activeWidgetsCounter > 0
onClicked: {
if (!ScreenPlay.screenPlayManager.removeAllWidgets())
if (!App.screenPlayManager.removeAllWidgets())
print("Unable to close all widgets!")
root.close()
@ -264,7 +265,7 @@ Common.Popup {
saveNotification.open()
}
target: ScreenPlay.screenPlayManager
target: App.screenPlayManager
}
}
}

View File

@ -4,6 +4,7 @@ import Qt5Compat.GraphicalEffects
import Qt.labs.platform 1.1
import QtQuick.Controls.Material
import QtQuick.Layouts
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {
@ -26,7 +27,7 @@ Item {
width: 100
font.pointSize: root.isHeadline ? 18 : 12
anchors.verticalCenter: parent.verticalCenter
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.weight: Font.Normal
color: root.isHeadline ? Qt.darker(Material.foreground) : Material.foreground
@ -111,7 +112,7 @@ Item {
"type": "checkBox"
};
root.save(obj);
ScreenPlay.screenPlayManager.setWallpaperValueAtMonitorIndex(selectedMonitor, name, checkbox.checked);
App.screenPlayManager.setWallpaperValueAtMonitorIndex(selectedMonitor, name, checkbox.checked);
}
anchors {
@ -180,7 +181,7 @@ Item {
"type": "color"
};
root.save(obj);
ScreenPlay.screenPlayManager.setWallpaperValueAtMonitorIndex(selectedMonitor, name, tmpColor);
App.screenPlayManager.setWallpaperValueAtMonitorIndex(selectedMonitor, name, tmpColor);
}
}
@ -222,7 +223,7 @@ Item {
"stepSize": root.stepSize
};
root.save(obj);
ScreenPlay.screenPlayManager.setWallpaperValueAtMonitorIndex(selectedMonitor, name, value);
App.screenPlayManager.setWallpaperValueAtMonitorIndex(selectedMonitor, name, value);
}
anchors {
@ -240,7 +241,7 @@ Item {
color: Material.foreground
horizontalAlignment: Text.AlignRight
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
right: parent.right

View File

@ -2,6 +2,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Controls.Material
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Rectangle {
@ -38,7 +39,7 @@ Rectangle {
Text {
text: qsTr("Profile saved successfully!")
color: "white"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.pointSize: 14
verticalAlignment: Qt.AlignVCenter

View File

@ -5,9 +5,9 @@ import QtQuick.Window
import QtQuick.Controls.Material
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import "../Workshop"
import "../Common"
import ScreenPlayUtil 1.0
Rectangle {
id: root
@ -67,86 +67,101 @@ Rectangle {
onPageChanged(nav)
}
target: ScreenPlay.util
target: App.util
}
Row {
TabBar {
id: row
height: 60
height: 50
currentIndex: 2
anchors {
top: parent.top
right: parent.right
bottom: parent.bottom
left: parent.left
leftMargin: 20
}
spacing: 0
NavigationItem {
TabButton {
id: navCreate
state: "inactive"
name: "Create"
text: qsTr("Create")
iconSource: "qrc:/assets/icons/icon_plus.svg"
onPageClicked: function (name) {
root.onPageChanged(name)
icon.height: 16
icon.width: 16
font.pointSize: 12
height: parent.height
width: implicitWidth
icon.source: "qrc:/assets/icons/icon_plus.svg"
onClicked: {
root.onPageChanged("Create")
}
objectName: "createTab"
background: Item {}
}
NavigationItem {
TabButton {
id: navWorkshop
state: "inactive"
name: "Workshop"
enabled: App.settings.steamVersion
text: qsTr("Workshop")
iconSource: "qrc:/assets/icons/icon_steam.svg"
onPageClicked: function (name) {
root.onPageChanged(name)
icon.height: 16
icon.width: 16
font.pointSize: 12
height: parent.height
width: implicitWidth
icon.source: "qrc:/assets/icons/icon_steam.svg"
onClicked: {
root.onPageChanged("Workshop")
}
objectName: "workshopTab"
background: Item {}
}
NavigationItem {
TabButton {
id: navInstalled
state: "active"
name: "Installed"
text: qsTr("Installed")
amount: ScreenPlay.installedListModel.count
iconSource: "qrc:/assets/icons/icon_installed.svg"
onPageClicked: function (name) {
root.onPageChanged(name)
text: qsTr("Installed") + " " + App.installedListModel.count
icon.height: 16
icon.width: 16
font.pointSize: 12
height: parent.height
width: implicitWidth
icon.source: "qrc:/assets/icons/icon_installed.svg"
onClicked: {
root.onPageChanged("Installed")
}
objectName: "installedTab"
background: Item {}
}
NavigationItem {
TabButton {
id: navCommunity
state: "inactive"
name: "Community"
text: qsTr("Community")
iconSource: "qrc:/assets/icons/icon_community.svg"
onPageClicked: function (name) {
root.onPageChanged(name)
icon.height: 16
icon.width: 16
font.pointSize: 12
height: parent.height
width: implicitWidth
icon.source: "qrc:/assets/icons/icon_community.svg"
onClicked: {
root.onPageChanged("Community")
}
objectName: "communityTab"
background: Item {}
}
NavigationItem {
TabButton {
id: navSettings
state: "inactive"
name: "Settings"
text: qsTr("Settings")
iconSource: "qrc:/assets/icons/icon_settings.svg"
onPageClicked: function (name) {
root.onPageChanged(name)
icon.height: 16
icon.width: 16
font.pointSize: 12
height: parent.height
width: implicitWidth
icon.source: "qrc:/assets/icons/icon_settings.svg"
onClicked: {
root.onPageChanged("Settings")
}
objectName: "settingsTab"
background: Item {}
}
}
@ -187,8 +202,8 @@ Rectangle {
bottom: parent.bottom
}
property bool contentActive: ScreenPlay.screenPlayManager.activeWallpaperCounter > 0
|| ScreenPlay.screenPlayManager.activeWidgetsCounter > 0
property bool contentActive: App.screenPlayManager.activeWallpaperCounter > 0
|| App.screenPlayManager.activeWidgetsCounter > 0
onContentActiveChanged: {
if (!contentActive) {
@ -210,11 +225,11 @@ Rectangle {
onSoundEnabledChanged: {
if (miMuteAll.soundEnabled) {
miMuteAll.icon.source = "qrc:/assets/icons/icon_volume.svg"
ScreenPlay.screenPlayManager.setAllWallpaperValue("muted",
App.screenPlayManager.setAllWallpaperValue("muted",
"false")
} else {
miMuteAll.icon.source = "qrc:/assets/icons/icon_volume_mute.svg"
ScreenPlay.screenPlayManager.setAllWallpaperValue("muted",
App.screenPlayManager.setAllWallpaperValue("muted",
"true")
}
}
@ -235,11 +250,11 @@ Rectangle {
onIsPlayingChanged: {
if (miStopAll.isPlaying) {
miStopAll.icon.source = "qrc:/assets/icons/icon_pause.svg"
ScreenPlay.screenPlayManager.setAllWallpaperValue(
App.screenPlayManager.setAllWallpaperValue(
"isPlaying", "true")
} else {
miStopAll.icon.source = "qrc:/assets/icons/icon_play.svg"
ScreenPlay.screenPlayManager.setAllWallpaperValue(
App.screenPlayManager.setAllWallpaperValue(
"isPlaying", "false")
}
}
@ -255,10 +270,9 @@ Rectangle {
icon.source: "qrc:/assets/icons/icon_close.svg"
icon.width: root.iconWidth
icon.height: root.iconHeight
icon.color: Material.iconColor
onClicked: {
ScreenPlay.screenPlayManager.removeAllWallpapers()
ScreenPlay.screenPlayManager.removeAllWidgets()
App.screenPlayManager.removeAllWallpapers()
App.screenPlayManager.removeAllWidgets()
miStopAll.isPlaying = true
miMuteAll.soundEnabled = true
}
@ -274,7 +288,7 @@ Rectangle {
icon.source: "qrc:/assets/icons/icon_video_settings_black_24dp.svg"
icon.width: root.iconWidth
icon.height: root.iconHeight
onClicked: ScreenPlay.util.setToggleWallpaperConfiguration()
onClicked: App.util.setToggleWallpaperConfiguration()
hoverEnabled: true
ToolTip.text: qsTr("Configure Wallpaper")
ToolTip.visible: hovered

View File

@ -1,191 +0,0 @@
import QtQuick
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material
import ScreenPlay 1.0
Item {
id: navigationItem
property string iconSource: "qrc:/assets/icons/icon_installed.svg"
property string name
property alias text: txt.text
property alias amount: txtAmount.text
property bool enabled: true
signal pageClicked(string name)
function setActive(isActive) {
if (isActive)
navigationItem.state = "active";
else
navigationItem.state = "inactive";
}
width: txtAmount.paintedWidth + txt.paintedWidth + icon.paintedWidth + 40
height: 60
state: "inactive"
onEnabledChanged: {
if (!enabled) {
navigationItem.width = 0;
navigationItem.opacity = 0;
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
navigationItem.pageClicked(navigationItem.name);
}
Image {
id: icon
source: iconSource
width: 16
height: 16
sourceSize.height: 16
sourceSize.width: 16
fillMode: Image.PreserveAspectFit
anchors.left: parent.left
anchors.leftMargin: 10
anchors.verticalCenter: parent.verticalCenter
}
Text {
id: txtAmount
anchors.left: icon.right
anchors.leftMargin: 10
font.pointSize: 14
color: Material.primaryTextColor
anchors.verticalCenter: parent.verticalCenter
font.family: ScreenPlay.settings.font
font.weight: Font.Normal
text: ""
}
Text {
id: txt
anchors.left: txtAmount.right
anchors.leftMargin: navigationItem.amount == "" ? 0 : 5
text: "name"
font.pointSize: 12
color: Material.primaryTextColor
anchors.verticalCenter: parent.verticalCenter
font.family: ScreenPlay.settings.font
font.weight: Font.Normal
}
ColorOverlay {
id: iconColorOverlay
anchors.fill: icon
source: icon
color: Material.accentColor
}
Rectangle {
id: navIndicator
y: 83
height: 3
color: Material.accent
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
anchors.bottomMargin: 0
}
}
Behavior on width {
PropertyAnimation {
duration: 50
}
}
states: [
State {
name: "active"
PropertyChanges {
target: navIndicator
anchors.bottomMargin: 0
}
PropertyChanges {
target: iconColorOverlay
color: Material.accent
}
},
State {
name: "disabled"
PropertyChanges {
target: navIndicator
anchors.bottomMargin: -3
}
PropertyChanges {
target: iconColorOverlay
color: "#00000000"
}
},
State {
name: "inactive"
PropertyChanges {
target: navIndicator
anchors.bottomMargin: -3
}
PropertyChanges {
target: iconColorOverlay
color: "#00000000"
}
}
]
transitions: [
Transition {
from: "*"
to: "active"
NumberAnimation {
properties: "anchors.bottomMargin"
duration: 200
easing.type: Easing.OutQuart
}
},
Transition {
from: "*"
to: "disabled"
NumberAnimation {
properties: "anchors.bottomMargin"
duration: 200
easing.type: Easing.OutQuart
}
},
Transition {
from: "*"
to: "inactive"
NumberAnimation {
properties: "anchors.bottomMargin"
duration: 100
easing.type: Easing.OutQuart
}
}
]
}

View File

@ -5,9 +5,9 @@ import QtQuick.Window
import QtQuick.Controls.Material
import Qt5Compat.GraphicalEffects
import QtQuick.Controls.Material.impl
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import "../Workshop"
import "../Common" as Common
import ScreenPlayUtil 1.0 as Common
Rectangle {
id: root
@ -19,8 +19,8 @@ Rectangle {
Text {
id: title
text: qsTr("ScreenPlay Alpha %1 - Open Source Wallpaper And Widgets").arg(
ScreenPlay.version())
text: qsTr("ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets").arg(
App.version())
color: Material.primaryTextColor
verticalAlignment: Text.AlignVCenter
@ -72,8 +72,8 @@ Rectangle {
Layout.alignment: Qt.AlignVCenter
icon.source: "qrc:/assets/icons/icon_close.svg"
onClicked: {
if (ScreenPlay.screenPlayManager.activeWallpaperCounter === 0
&& ScreenPlay.screenPlayManager.activeWidgetsCounter === 0) {
if (App.screenPlayManager.activeWallpaperCounter === 0
&& App.screenPlayManager.activeWidgetsCounter === 0) {
Qt.quit()
return
}
@ -85,7 +85,7 @@ Rectangle {
Common.Dialog {
id: dialog
modalSource: root.modalSource
title: qsTr("Are you sure you want to exit ScreenPlay? \nThis will shut down all Wallpaper and Widgets.")
title: qsTr("Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.")
standardButtons: Dialog.Ok | Dialog.Cancel
onAccepted: Qt.quit()
}

View File

@ -2,6 +2,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {
@ -31,7 +32,7 @@ Item {
color: Material.foreground
text: settingsBool.headline
font.family: ScreenPlay.settings.font
font.family: App.settings.font
font.pointSize: 12
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
@ -60,7 +61,7 @@ Item {
color: Material.theme === Material.Light ? Qt.lighter(
Material.foreground) : Qt.darker(
Material.foreground)
font.family: ScreenPlay.settings.font
font.family: App.settings.font
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pointSize: 10

View File

@ -4,10 +4,11 @@ import Qt.labs.platform
import QtQuick.Controls.Material
import QtQuick.Layouts
import Qt5Compat.GraphicalEffects
import ScreenPlayApp 1.0
import ScreenPlay 1.0
import ScreenPlay.Enums.FillMode 1.0
import Settings 1.0
import "../Common"
import ScreenPlayUtil 1.0
Item {
id: root
@ -72,9 +73,9 @@ Item {
SettingBool {
headline: qsTr("Autostart")
description: qsTr("ScreenPlay will start with Windows and will setup your Desktop every time for you.")
isChecked: ScreenPlay.settings.autostart
isChecked: App.settings.autostart
onCheckboxChanged: function (checked) {
ScreenPlay.settings.setAutostart(checked)
App.settings.setAutostart(checked)
}
}
@ -84,9 +85,9 @@ Item {
headline: qsTr("High priority Autostart")
available: false
description: qsTr("This options grants ScreenPlay a higher autostart priority than other apps.")
isChecked: ScreenPlay.settings.highPriorityStart
isChecked: App.settings.highPriorityStart
onCheckboxChanged: {
ScreenPlay.settings.setHighPriorityStart(checked)
App.settings.setHighPriorityStart(checked)
}
}
@ -96,9 +97,9 @@ Item {
height: 70
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!")
isChecked: ScreenPlay.settings.anonymousTelemetry
isChecked: App.settings.anonymousTelemetry
onCheckboxChanged: function (checked) {
ScreenPlay.settings.setAnonymousTelemetry(checked)
App.settings.setAnonymousTelemetry(checked)
}
}
@ -109,7 +110,7 @@ Item {
buttonText: qsTr("Set location")
description: {
// Remove file:/// so the used does not get confused
let path = ScreenPlay.globalVariables.localStoragePath + ""
let path = App.globalVariables.localStoragePath + ""
if (path.length === 0)
return qsTr("Your storage path is empty!")
else
@ -121,9 +122,9 @@ Item {
FolderDialog {
id: folderDialogSaveLocation
folder: ScreenPlay.globalVariables.localStoragePath
folder: App.globalVariables.localStoragePath
onAccepted: {
ScreenPlay.settings.setLocalStoragePath(
App.settings.setLocalStoragePath(
folderDialogSaveLocation.currentFolder)
}
}
@ -136,7 +137,7 @@ Item {
color: Qt.darker(Material.foreground)
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
font.pointSize: 10
font.family: ScreenPlay.settings.font
font.family: App.settings.font
height: 30
anchors {
@ -157,7 +158,7 @@ Item {
Component.onCompleted: {
settingsLanguage.comboBox.currentIndex = root.indexOfValue(
settingsLanguage.comboBox.model,
ScreenPlay.settings.language)
App.settings.language)
}
comboBox {
@ -202,9 +203,9 @@ Item {
"text": "Dutch"
}]
onActivated: {
ScreenPlay.settings.setLanguage(
App.settings.setLanguage(
settingsLanguage.comboBox.currentValue)
ScreenPlay.settings.retranslateUI()
App.settings.retranslateUI()
}
}
}
@ -219,7 +220,7 @@ Item {
Component.onCompleted: {
settingsTheme.comboBox.currentIndex = root.indexOfValue(
settingsTheme.comboBox.model,
ScreenPlay.settings.theme)
App.settings.theme)
}
comboBox {
@ -234,7 +235,7 @@ Item {
"text": qsTr("Light")
}]
onActivated: {
ScreenPlay.settings.setTheme(
App.settings.setTheme(
settingsTheme.comboBox.currentValue)
}
}
@ -268,9 +269,9 @@ Item {
SettingBool {
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!")
isChecked: ScreenPlay.settings.checkWallpaperVisible
isChecked: App.settings.checkWallpaperVisible
onCheckboxChanged: function (checked) {
ScreenPlay.settings.setCheckWallpaperVisible(
App.settings.setCheckWallpaperVisible(
checked)
}
}
@ -285,11 +286,11 @@ Item {
Component.onCompleted: {
cbVideoFillMode.comboBox.currentIndex = root.indexOfValue(
cbVideoFillMode.comboBox.model,
ScreenPlay.settings.videoFillMode)
App.settings.videoFillMode)
}
comboBox {
onActivated: ScreenPlay.settings.setVideoFillMode(
onActivated: App.settings.setVideoFillMode(
cbVideoFillMode.comboBox.currentValue)
model: [{
"value": FillMode.Stretch,
@ -354,7 +355,7 @@ Item {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pointSize: 16
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: parent.top
@ -373,7 +374,7 @@ Item {
verticalAlignment: Text.AlignTop
horizontalAlignment: Text.AlignLeft
font.pointSize: 11
font.family: ScreenPlay.settings.font
font.family: App.settings.font
width: parent.width * 0.6
anchors {
@ -473,7 +474,7 @@ Item {
icon.source: "qrc:/assets/icons/icon_launch.svg"
headline: qsTr("Version")
description: qsTr("ScreenPlay Build Version \n")
+ ScreenPlay.settings.gitBuildHash
+ App.settings.gitBuildHash
buttonText: qsTr("Open Changelog")
onButtonPressed: Qt.openUrlExternally(
"https://gitlab.com/kelteseth/ScreenPlay/-/releases")
@ -486,7 +487,7 @@ Item {
description: qsTr("ScreenPlay would not be possible without the work of others. A big thank you to: ")
buttonText: qsTr("Licenses")
onButtonPressed: {
ScreenPlay.util.requestAllLicenses()
App.util.requestAllLicenses()
expanderCopyright.toggle()
}
}
@ -499,7 +500,7 @@ Item {
expanderCopyright.text = licensesText
}
target: ScreenPlay.util
target: App.util
}
}
@ -517,7 +518,7 @@ Item {
SettingsExpander {
id: expanderDebug
text: ScreenPlay.util.debugMessages
text: App.util.debugMessages
}
SettingsHorizontalSeperator {}
@ -527,7 +528,7 @@ Item {
description: qsTr("We use you data very carefully to improve ScreenPlay. We do not sell or share this (anonymous) information with others!")
buttonText: qsTr("Privacy")
onButtonPressed: {
ScreenPlay.util.requestDataProtection()
App.util.requestDataProtection()
expanderDataProtection.toggle()
}
}
@ -540,7 +541,7 @@ Item {
expanderDataProtection.text = dataProtectionText
}
target: ScreenPlay.util
target: App.util
}
}
}

View File

@ -2,6 +2,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {
@ -37,7 +38,7 @@ Item {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pointSize: 12
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: parent.top
@ -57,7 +58,7 @@ Item {
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignLeft
font.pointSize: 10
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: txtHeadline.bottom
@ -76,7 +77,7 @@ Item {
text: settingsButton.buttonText
icon.width: 20
icon.height: 20
font.family: ScreenPlay.settings.font
font.family: App.settings.font
Material.background: Material.accent
Material.foreground: "white"
onPressed: buttonPressed()

View File

@ -2,6 +2,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Control {
@ -23,7 +24,7 @@ Control {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pointSize: 12
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: parent.top
@ -43,7 +44,7 @@ Control {
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
font.pointSize: 10
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: txtHeadline.bottom
@ -62,7 +63,7 @@ Control {
implicitWidth: 200
textRole: "text"
valueRole: "value"
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
right: parent.right

View File

@ -2,6 +2,7 @@ import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Controls.Material
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {
@ -32,7 +33,7 @@ Item {
lineHeight: 1.2
height: txtExpander.paintedHeight
wrapMode: Text.WordWrap
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: parent.top
@ -63,7 +64,7 @@ Item {
MenuItem {
text: qsTr("Copy text to clipboard")
onClicked: {
ScreenPlay.util.copyToClipboard(txtExpander.text);
App.util.copyToClipboard(txtExpander.text);
}
}

View File

@ -1,6 +1,7 @@
import QtQuick
import QtQuick.Layouts
import Qt5Compat.GraphicalEffects
import ScreenPlayApp 1.0
import ScreenPlay 1.0
Item {
@ -80,7 +81,7 @@ Item {
font.pointSize: 12
color: "white"
verticalAlignment: Text.AlignTop
font.family: ScreenPlay.settings.font
font.family: App.settings.font
anchors {
top: parent.top

View File

@ -5,6 +5,7 @@ import Qt5Compat.GraphicalEffects
import QtQuick.Layouts
import Settings
import ScreenPlay
import ScreenPlayWorkshop 1.0
Item {
id: root
@ -12,13 +13,13 @@ Item {
property Item modalSource
Component.onCompleted: {
if (ScreenPlay.settings.steamVersion) {
if (App.settings.steamVersion) {
workshopLoader.setSource(
"qrc:/ScreenPlayQml/qml/Workshop/SteamWorkshop.qml", {
"qrc:/ScreenPlayWorkshop/qml/SteamWorkshop.qml", {
"modalSource": modalSource
})
} else {
workshopLoader.setSource("qrc:/ScreenPlayQml/qml/Workshop/Forum.qml")
workshopLoader.setSource("qrc:/ScreenPlayWorkshop/qml/Forum.qml")
}
}

View File

@ -1,4 +1,4 @@
#include "app.h"
#include "ScreenPlay/app.h"
#include "steam/steam_qt_enums_generated.h"
#include <QProcessEnvironment>
@ -82,24 +82,6 @@ App::App()
QQuickWindow::setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
qRegisterMetaType<QQmlApplicationEngine*>();
qRegisterMetaType<GlobalVariables*>();
qRegisterMetaType<ScreenPlayManager*>();
qRegisterMetaType<Util*>();
qRegisterMetaType<Create*>();
qRegisterMetaType<Settings*>();
qmlRegisterType<ScreenPlayWallpaper>("ScreenPlay", 1, 0, "ScreenPlayWallpaper");
qmlRegisterType<ScreenPlayWidget>("ScreenPlay", 1, 0, "ScreenPlayWidget");
qRegisterMetaType<ScreenPlayWallpaper*>("ScreenPlayWallpaper*");
qRegisterMetaType<ScreenPlayWidget*>("ScreenPlayWidget*");
qRegisterMetaType<InstalledListModel*>();
qRegisterMetaType<InstalledListFilter*>();
qRegisterMetaType<MonitorListModel*>();
qRegisterMetaType<ProfileListModel*>();
// TODO: This is a workaround because I don't know how to
// init this in the ScreenPlayWorkshop plugin.
// Move to workshop plugin.
@ -133,13 +115,6 @@ App::App()
"SearchType",
"Error: only enums");
qmlRegisterAnonymousType<GlobalVariables>("ScreenPlay", 1);
qmlRegisterAnonymousType<ScreenPlayManager>("ScreenPlay", 1);
qmlRegisterAnonymousType<Util>("ScreenPlay", 1);
qmlRegisterAnonymousType<Create>("ScreenPlay", 1);
qmlRegisterAnonymousType<Wizards>("ScreenPlay", 1);
qmlRegisterAnonymousType<Settings>("ScreenPlay", 1);
// ScreenPlayManager first to check if another ScreenPlay Instace is running
m_screenPlayManager = std::make_unique<ScreenPlayManager>();
m_isAnotherScreenPlayInstanceRunning = m_screenPlayManager->isAnotherScreenPlayInstanceRunning();
@ -168,6 +143,7 @@ void App::init()
// Only create anonymousTelemetry if user did not disallow!
if (m_settings->anonymousTelemetry()) {
#if defined(Q_OS_WIN)
sentry_options_t* options = sentry_options_new();
sentry_options_set_dsn(options, "https://425ea0b77def4f91a5a9decc01b36ff4@o428218.ingest.sentry.io/5373419");
@ -183,6 +159,7 @@ void App::init()
if (sentryInitStatus != 0) {
qWarning() << "Unable to inti sentry crashhandler with statuscode: " << sentryInitStatus;
}
#endif
}
m_create = make_unique<Create>(m_globalVariables);
@ -203,21 +180,24 @@ void App::init()
// Init after we have the paths from settings
m_installedListModel->init();
auto* guiApplication = QGuiApplication::instance();
// Set visible if the -silent parameter was not set
if (QApplication::instance()->arguments().contains("-silent")) {
if (guiApplication->arguments().contains("-silent")) {
qInfo() << "Starting in silent mode.";
settings()->setSilentStart(true);
}
qmlRegisterSingletonInstance("ScreenPlay", 1, 0, "ScreenPlay", this);
QGuiApplication::instance()->addLibraryPath(QGuiApplication::instance()->applicationDirPath());
qmlRegisterSingletonInstance("ScreenPlay", 1, 0, "App", this);
m_mainWindowEngine->addImportPath(guiApplication->applicationDirPath() + "/qml");
guiApplication->addLibraryPath(guiApplication->applicationDirPath());
qInfo() << m_mainWindowEngine->importPathList();
if (m_settings->desktopEnvironment() == Settings::DesktopEnvironment::KDE) {
setupKDE();
}
m_mainWindowEngine->load(QUrl(QStringLiteral("qrc:/ScreenPlayQml/main.qml")));
m_mainWindowEngine->load(QUrl(QStringLiteral("qrc:/qml/ScreenPlayApp/main.qml")));
// Must be called last to display a error message on startup by the qml engine
m_screenPlayManager->init(m_globalVariables, m_monitorListModel, m_settings);
@ -309,7 +289,7 @@ std::optional<bool> App::isNewestKDEWallpaperInstalled()
qInfo() << "Reinstall ScreenPlay Wallpaper";
return std::nullopt;
} else {
return {installedVersionNumber >= currentVersionNumber};
return { installedVersionNumber >= currentVersionNumber };
}
}

View File

@ -1,4 +1,4 @@
#include "create.h"
#include "ScreenPlay/create.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "createimportvideo.h"
#include "ScreenPlay/createimportvideo.h"
#include "ScreenPlayUtil/util.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "globalvariables.h"
#include "ScreenPlay/globalvariables.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "installedlistfilter.h"
#include "ScreenPlay/installedlistfilter.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "installedlistmodel.h"
#include "ScreenPlay/installedlistmodel.h"
#include <QDebug>
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "monitorlistmodel.h"
#include "ScreenPlay/monitorlistmodel.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "profilelistmodel.h"
#include "ScreenPlay/profilelistmodel.h"
#include <QDirIterator>
#include <QFileInfoList>

View File

@ -1,4 +1,4 @@
#include "projectsettingslistmodel.h"
#include "ScreenPlay/projectsettingslistmodel.h"
namespace ScreenPlay {

View File

@ -1,6 +1,5 @@
#include "screenplaymanager.h"
#include "ScreenPlay/screenplaymanager.h"
#include <QScopeGuard>
#include <doctest/doctest.h>
namespace ScreenPlay {
@ -173,7 +172,7 @@ bool ScreenPlayManager::createWallpaper(
for (auto& wallpaper : m_screenPlayWallpapers) {
if (wallpaper->screenNumber().length() == 1) {
if (monitors.at(0) == wallpaper->screenNumber().at(0)) {
wallpaper->replace(
return wallpaper->replace(
path,
previewImage,
file,
@ -182,8 +181,6 @@ bool ScreenPlayManager::createWallpaper(
type,
m_settings->checkWallpaperVisible());
m_monitorListModel->setWallpaperMonitor(wallpaper, monitorIndex);
return true;
}
}
i++;
@ -724,12 +721,6 @@ bool ScreenPlayManager::loadProfiles()
return true;
}
TEST_CASE("Loads profiles.json")
{
GlobalVariables globalVariables;
ScreenPlayManager manager;
}
bool ScreenPlayManager::isKDEConnected() const
{
return m_isKDEConnected;

View File

@ -1,4 +1,4 @@
#include "screenplaywallpaper.h"
#include "ScreenPlay/screenplaywallpaper.h"
namespace ScreenPlay {
@ -239,7 +239,7 @@ void ScreenPlayWallpaper::setSDKConnection(std::unique_ptr<SDKConnection> connec
/*!
\brief Replaces the current wallpaper with the given one.
*/
void ScreenPlayWallpaper::replace(
bool ScreenPlayWallpaper::replace(
const QString& absolutePath,
const QString& previewImage,
const QString& file,
@ -250,11 +250,11 @@ void ScreenPlayWallpaper::replace(
{
if (m_isExiting)
return;
return false;
if (!m_connection) {
qWarning() << "Cannot replace for unconnected wallpaper!";
return;
return false;
}
m_previewImage = previewImage;
@ -272,8 +272,9 @@ void ScreenPlayWallpaper::replace(
obj.insert("file", file);
obj.insert("checkWallpaperVisible", checkWallpaperVisible);
m_connection->sendMessage(QJsonDocument(obj).toJson(QJsonDocument::Compact));
const bool success = m_connection->sendMessage(QJsonDocument(obj).toJson(QJsonDocument::Compact));
emit requestSave();
return success;
}
}

View File

@ -1,4 +1,4 @@
#include "screenplaywidget.h"
#include "ScreenPlay/screenplaywidget.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "sdkconnection.h"
#include "ScreenPlay/sdkconnection.h"
namespace ScreenPlay {

View File

@ -1,4 +1,4 @@
#include "settings.h"
#include "ScreenPlay/settings.h"
#include "ScreenPlayUtil/util.h"
#include <QFileInfo>
@ -40,6 +40,11 @@ Settings::Settings(const std::shared_ptr<GlobalVariables>& globalVariables,
: QObject(parent)
, m_globalVariables { globalVariables }
{
const QString qtVersion = QString("Qt Version: %1.%2.%3").arg(QT_VERSION_MAJOR).arg(QT_VERSION_MINOR).arg(QT_VERSION_PATCH);
setGitBuildHash(COMPILE_INFO + qtVersion);
#ifdef SCREENPLAY_STEAM
setSteamVersion(true);
#endif
#ifdef Q_OS_WIN
setDesktopEnvironment(DesktopEnvironment::Windows);
#endif
@ -99,11 +104,7 @@ Settings::Settings(const std::shared_ptr<GlobalVariables>& globalVariables,
}
initInstalledPath();
setupWidgetAndWindowPaths();
const QString qtVersion = QString("Qt Version: %1.%2.%3").arg(QT_VERSION_MAJOR).arg(QT_VERSION_MINOR).arg(QT_VERSION_PATCH);
setGitBuildHash(COMPILE_INFO + qtVersion);
setSteamVersion(!(QString(SCREENPLAY_STEAM).compare("OFF", Qt::CaseInsensitive) ? false : true));
}
/*!
@ -195,8 +196,19 @@ void Settings::restoreDefault(const QString& appConfigLocation, const QString& s
void Settings::initInstalledPath()
{
// If empty use steam workshop location
if (QString(m_qSettings.value("ScreenPlayContentPath").toString()).isEmpty()) {
const QString contentPath = m_qSettings.value("ScreenPlayContentPath").toString();
// Steamless
if (!steamVersion() && contentPath.isEmpty()) {
const QString path = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation);
m_qSettings.setValue("ScreenPlayContentPath", QUrl::fromUserInput(path));
m_qSettings.sync();
m_globalVariables->setLocalStoragePath(path);
return;
}
// Steam
if (contentPath.isEmpty()) {
/*
* ! We must use this (ugly) method, because to stay FOSS we cannot call the steamAPI here !
@ -233,10 +245,10 @@ void Settings::initInstalledPath()
} else {
qWarning() << "The following path could not be resolved to search for workshop content: " << path;
}
} else {
m_globalVariables->setLocalStoragePath(QUrl::fromUserInput(m_qSettings.value("ScreenPlayContentPath").toString()));
return;
}
m_globalVariables->setLocalStoragePath(QUrl::fromUserInput(contentPath));
}
/*!

View File

@ -1,6 +1,8 @@
#include "util.h"
#include "ScreenPlay/util.h"
#if defined(Q_OS_WIN)
#include <sentry.h>
#endif
namespace ScreenPlay {
@ -106,8 +108,10 @@ QString Util::toLocal(const QString& url)
*/
void Util::Util::requestAllLicenses()
{
if (m_requestAllLicensesFuture.isStarted())
return;
QtConcurrent::run([this]() {
m_requestAllLicensesFuture = QtConcurrent::run([this]() {
QString tmp;
QFile file;
QTextStream out(&file);
@ -152,18 +156,16 @@ void Util::Util::requestAllLicenses()
*/
void Util::Util::requestDataProtection()
{
QtConcurrent::run([this]() {
QString tmp;
QFile file;
QTextStream out(&file);
QString tmp;
QFile file;
QTextStream out(&file);
file.setFileName(":/legal/DataProtection.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
tmp += out.readAll();
file.close();
file.setFileName(":/legal/DataProtection.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);
tmp += out.readAll();
file.close();
emit this->allDataProtectionLoaded(tmp);
});
emit this->allDataProtectionLoaded(tmp);
}
static const char*
@ -221,6 +223,7 @@ void Util::logToGui(QtMsgType type, const QMessageLogContext& context, const QSt
if (utilPointer != nullptr)
utilPointer->appendDebugMessages(log);
#if defined(Q_OS_WIN)
sentry_value_t crumb
= sentry_value_new_breadcrumb("default", qUtf8Printable(msg));
@ -238,6 +241,7 @@ void Util::logToGui(QtMsgType type, const QMessageLogContext& context, const QSt
sentry_value_set_by_key(crumb, "data", location);
sentry_add_breadcrumb(crumb);
#endif
}
/*!

View File

@ -1,4 +1,4 @@
#include "wizards.h"
#include "ScreenPlay/wizards.h"
#include "ScreenPlayUtil/util.h"
@ -31,7 +31,12 @@ void Wizards::createQMLWidget(const QString& title,
const QString& previewThumbnail,
const QVector<QString>& tags)
{
QtConcurrent::run([=]() {
if (m_wizardFuture.isRunning()) {
qWarning() << "Another wizard is already running! Abort.";
return;
}
m_wizardFuture = QtConcurrent::run([=]() {
std::optional<QString> folderName = createTemporaryFolder();
if (!folderName.has_value()) {
@ -92,7 +97,12 @@ void Wizards::createHTMLWidget(const QString& title,
const QString& previewThumbnail,
const QVector<QString>& tags)
{
QtConcurrent::run([=]() {
if (m_wizardFuture.isRunning()) {
qWarning() << "Another wizard is already running! Abort.";
return;
}
m_wizardFuture = QtConcurrent::run([=]() {
std::optional<QString> folderName = createTemporaryFolder();
if (!folderName.has_value()) {
@ -155,7 +165,12 @@ void Wizards::createHTMLWallpaper(
const QString& previewThumbnail,
const QVector<QString>& tags)
{
QtConcurrent::run([=]() {
if (m_wizardFuture.isRunning()) {
qWarning() << "Another wizard is already running! Abort.";
return;
}
m_wizardFuture = QtConcurrent::run([=]() {
std::optional<QString> folderName = createTemporaryFolder();
if (!folderName.has_value()) {
@ -217,7 +232,12 @@ void Wizards::createQMLWallpaper(
const QString& previewThumbnail,
const QVector<QString>& tags)
{
QtConcurrent::run([=]() {
if (m_wizardFuture.isRunning()) {
qWarning() << "Another wizard is already running! Abort.";
return;
}
m_wizardFuture = QtConcurrent::run([=]() {
std::optional<QString> folderName = createTemporaryFolder();
if (!folderName.has_value()) {
@ -270,7 +290,12 @@ void Wizards::createGifWallpaper(
const QString& file,
const QVector<QString>& tags)
{
auto con = QtConcurrent::run([=]() {
if (m_wizardFuture.isRunning()) {
qWarning() << "Another wizard is already running! Abort.";
return;
}
m_wizardFuture = QtConcurrent::run([=]() {
std::optional<QString> folderName = createTemporaryFolder();
if (!folderName.has_value()) {
@ -320,7 +345,12 @@ void Wizards::createWebsiteWallpaper(
const QUrl& url,
const QVector<QString>& tags)
{
QtConcurrent::run([=]() {
if (m_wizardFuture.isRunning()) {
qWarning() << "Another wizard is already running! Abort.";
return;
}
m_wizardFuture = QtConcurrent::run([=]() {
std::optional<QString> folderName = createTemporaryFolder();
if (!folderName.has_value()) {

View File

@ -32,8 +32,8 @@
**
****************************************************************************/
#include "app.h"
#include "create.h"
#include "ScreenPlay/app.h"
#include "ScreenPlay/create.h"
#include <QApplication>
#include <QCommandLineParser>
#include <QCoreApplication>
@ -42,18 +42,19 @@
#include <QGuiApplication>
#include <QQuickItem>
#include <QtTest>
#define DOCTEST_CONFIG_IMPLEMENT
#define DOCTEST_CONFIG_SUPER_FAST_ASSERTS
#include <doctest/doctest.h>
Q_IMPORT_QML_PLUGIN(ScreenPlayAppPlugin)
Q_IMPORT_QML_PLUGIN(ScreenPlayUtilPlugin)
#ifdef SCREENPLAY_STEAM
Q_IMPORT_QML_PLUGIN(ScreenPlayWorkshopPlugin)
#endif
class ScreenPlayTest : public QObject {
Q_OBJECT
private slots:
void initTestCase()
{
Q_INIT_RESOURCE(ScreenPlayQML);
Q_INIT_RESOURCE(ScreenPlayAssets);
Q_INIT_RESOURCE(Resources);
app.init();
m_window = qobject_cast<QQuickWindow*>(app.mainWindowEngine()->rootObjects().first());

View File

@ -94,6 +94,49 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CreateSidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>CreateWallpaperInit</name>
<message>
@ -215,10 +258,6 @@
<source>Volume</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Playback rate</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Current Video Time</source>
<translation type="unfinished"></translation>
@ -263,21 +302,6 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Forum</name>
<message>
<source>Download Wallpaper and Widgets from our forums manually. If you want to download Steam Workshop content you have to install ScreenPlay via Steam.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Install Steam Version</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open In Browser</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>GifWallpaper</name>
<message>
@ -624,6 +648,25 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledNavigation</name>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
<message>
@ -634,6 +677,10 @@
<source>Browse the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Get content via our forum</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>LicenseSelector</name>
@ -710,38 +757,6 @@
</context>
<context>
<name>Navigation</name>
<message>
<source>All</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Install Date Ascending</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Install Date Descending</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Subscribed items: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Upload to the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Create</source>
<translation type="unfinished"></translation>
@ -783,41 +798,6 @@
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PopupOffline</name>
<message>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>You need to run Steam to access the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Steam Error Restart: %1
Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PopupSteamWorkshopAgreement</name>
<message>
<source>You Need to Agree To The Steam Subscriber Agreement First</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>View The Steam Subscriber Agreement</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Accept Steam Workshop Agreement</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>QMLWallpaper</name>
<message>
@ -1078,46 +1058,6 @@ Steam Error API Init: %2</source>
</context>
<context>
<name>Sidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Set Wallpaper</source>
<translation type="unfinished"></translation>
@ -1162,38 +1102,6 @@ Steam Error API Init: %2</source>
<source>Scale-Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Size: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No description...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click here if you like the content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Click here if you do not like the content</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Subscribtions: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open In Steam</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Subscribed!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Subscribe</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>StartInfo</name>
@ -1213,104 +1121,6 @@ Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SteamProfile</name>
<message>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Forward</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>SteamWorkshopStartPage</name>
<message>
<source>Loading</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Download now!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Downloading...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Details</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open In Steam</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Profile</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Upload</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Search for Wallpaper and Widgets...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Workshop in Steam</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ranked By Vote</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Publication Date</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ranked By Trend</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Favorited By Friends</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Created By Friends</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Created By Followed Users</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Not Yet Rated</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Total VotesAsc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Votes Up</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Total Unique Subscriptions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Back</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Forward</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TagSelector</name>
<message>
@ -1372,507 +1182,6 @@ Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UploadProject</name>
<message>
<source>Upload Wallpaper/Widgets to Steam</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Abort</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Upload Selected Projects</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Finish</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UploadProjectBigItem</name>
<message>
<source>Type: </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Open Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Project!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>UploadProjectItem</name>
<message>
<source>Fail</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No Connection</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Logged In Elsewhere</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Protocol Version</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Param</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>File Not Found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Busy</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid State</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Email</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate Name</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Access Denied</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Timeout</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Banned</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Not Found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid SteamID</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Service Unavailable</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Not Logged On</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Pending</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Encryption Failure</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insufficient Privilege</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Limit Exceeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Revoked</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Expired</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Already Redeemed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Duplicate Request</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Already Owned</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>IP Not Found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Persist Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Locking Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Logon Session Replaced</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Connect Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Handshake Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>IO Failure</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remote Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Shopping Cart Not Found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Blocked</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ignored</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No Match</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Service ReadOnly</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Not Featured</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Administrator OK</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Content Version</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Try Another CM</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Password Required To Kick Session</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Already Logged In Elsewhere</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Suspended</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cancelled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Data Corruption</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disk Full</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remote Call Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Password Unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>External Account Unlinked</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PSN Ticket Invalid</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>External Account Already Linked</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Remote File Conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Illegal Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Same As Previous Value</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Logon Denied</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cannot Use Old Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Login AuthCode</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Logon Denied No Mail</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Hardware Not Capable Of IPT</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>IPT Init Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Parental Control Restricted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Facebook Query Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Expired Login Auth Code</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>IP Login Restriction Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Locked Down</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Logon Denied Verified Email Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No MatchingURL</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bad Response</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Require Password ReEntry</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Value Out Of Range</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Unexpecte Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid CEG Submission</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Restricted Device</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Region Locked</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Rate Limit Exceeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Login Denied Need Two Factor</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Item Deleted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Login Denied Throttle</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Two Factor Code Mismatch</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Two Factor Activation Code Mismatch</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Associated To Multiple Partners</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Not Modified</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No Mobile Device</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Time Not Synced</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Sms Code Failed</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Limit Exceeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Activity Limit Exceeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Phone Activity Limit Exceeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Refund To Wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Email Send Failure</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Not Settled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Need Captcha</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>GSLT Denied</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>GS Owner Denied</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Invalid Item Type</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>IP Banned</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>GSLT Expired</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insufficient Funds</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Too Many Pending</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No Site Licenses Found</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>WG Network Send Exceeded</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Not Friends</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Limited User Account</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Cant Remove Item</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Account Deleted</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Existing User Cancelled License</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Community Cooldown</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Status:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Upload Progress: </source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>
@ -1907,12 +1216,11 @@ Steam Error API Init: %2</source>
<context>
<name>WindowNavigation</name>
<message>
<source>ScreenPlay Alpha %1 - Open Source Wallpaper And Widgets</source>
<source>Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</source>
<source>ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished"></translation>
</message>
</context>
@ -1927,17 +1235,6 @@ This will shut down all Wallpaper and Widgets.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WorkshopItem</name>
<message>
<source>Successfully subscribed to Workshop Item!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Download complete!</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>XMLNewsfeed</name>
<message>

View File

@ -94,6 +94,49 @@
<translation>Öffne in</translation>
</message>
</context>
<context>
<name>CreateSidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished">Werkzeugeübersicht</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished">GIF Wallpaper</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished">QML Wallpaper</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished">HTML5 Wallpaper</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished">Website Wallpaper</translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished">QML Widget</translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished">HTML Widget</translation>
</message>
</context>
<context>
<name>CreateWallpaperInit</name>
<message>
@ -216,10 +259,6 @@
<source>Volume</source>
<translation>Lautstärke</translation>
</message>
<message>
<source>Playback rate</source>
<translation>Wiedergabegeschwindigkeit</translation>
</message>
<message>
<source>Current Video Time</source>
<translation>Aktuelle Videozeit</translation>
@ -264,21 +303,6 @@
<translation>Bitte Wählen Sie eine Datei aus</translation>
</message>
</context>
<context>
<name>Forum</name>
<message>
<source>Download Wallpaper and Widgets from our forums manually. If you want to download Steam Workshop content you have to install ScreenPlay via Steam.</source>
<translation>Du kannst Wallpaper und Widgets aus unserem Forum manuell herunterladen. Wenn du den Steam Workshop-Inhalt herunterladen möchtest, musst du ScreenPlay via Steam installieren.</translation>
</message>
<message>
<source>Install Steam Version</source>
<translation>Steam Version installieren</translation>
</message>
<message>
<source>Open In Browser</source>
<translation>Im Browser öffnen</translation>
</message>
</context>
<context>
<name>GifWallpaper</name>
<message>
@ -625,6 +649,25 @@
<translation>Bist du dir sicher dass du dieses Item löschen möchtest?</translation>
</message>
</context>
<context>
<name>InstalledNavigation</name>
<message>
<source>All</source>
<translation type="unfinished">Alles</translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished">Szenen</translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished">Videos</translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
<message>
@ -635,6 +678,10 @@
<source>Browse the Steam Workshop</source>
<translation>Stöbere durch den Steam Workshop</translation>
</message>
<message>
<source>Get content via our forum</source>
<translation type="unfinished">Get content via our forum</translation>
</message>
</context>
<context>
<name>LicenseSelector</name>
@ -712,38 +759,6 @@ Bitte Konfiguriere deine Wallpaper noch erneut</translation>
</context>
<context>
<name>Navigation</name>
<message>
<source>All</source>
<translation>Alles</translation>
</message>
<message>
<source>Scenes</source>
<translation>Szenen</translation>
</message>
<message>
<source>Videos</source>
<translation>Videos</translation>
</message>
<message>
<source>Widgets</source>
<translation>Widgets</translation>
</message>
<message>
<source>Install Date Ascending</source>
<translation>Installationsdatum aufsteigend</translation>
</message>
<message>
<source>Install Date Descending</source>
<translation>Installationsdatum absteigend</translation>
</message>
<message>
<source> Subscribed items: </source>
<translation>Abonnierte Inhalte: </translation>
</message>
<message>
<source>Upload to the Steam Workshop</source>
<translation>Zum Steam Workshop Hochladen</translation>
</message>
<message>
<source>Create</source>
<translation>Erstellen</translation>
@ -785,41 +800,6 @@ Bitte Konfiguriere deine Wallpaper noch erneut</translation>
<translation type="unfinished">Close All Content</translation>
</message>
</context>
<context>
<name>PopupOffline</name>
<message>
<source>Back</source>
<translation>Zurück</translation>
</message>
<message>
<source>You need to run Steam to access the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Steam Error Restart: %1
Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PopupSteamWorkshopAgreement</name>
<message>
<source>You Need to Agree To The Steam Subscriber Agreement First</source>
<translation>Du musst zuerst zu den Steam-Abonnentenvertrag zustimmen</translation>
</message>
<message>
<source>REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</source>
<translation type="unfinished">REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</translation>
</message>
<message>
<source>View The Steam Subscriber Agreement</source>
<translation>Siehe dir den Steam-Abonnentenvertrag</translation>
</message>
<message>
<source>Accept Steam Workshop Agreement</source>
<translation>Aktzeptiere den Steam-Abonnentenvertrag</translation>
</message>
</context>
<context>
<name>QMLWallpaper</name>
<message>
@ -1081,46 +1061,6 @@ Steam Error API Init: %2</source>
</context>
<context>
<name>Sidebar</name>
<message>
<source>Tools Overview</source>
<translation>Werkzeugeübersicht</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation>GIF Wallpaper</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation>QML Wallpaper</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation>HTML5 Wallpaper</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation>Website Wallpaper</translation>
</message>
<message>
<source>QML Widget</source>
<translation>QML Widget</translation>
</message>
<message>
<source>HTML Widget</source>
<translation>HTML Widget</translation>
</message>
<message>
<source>Set Wallpaper</source>
<translation>Wallpaper Festlegen</translation>
@ -1165,38 +1105,6 @@ Steam Error API Init: %2</source>
<source>Scale-Down</source>
<translation>Runter-Skallieren</translation>
</message>
<message>
<source>Size: </source>
<translation>Größe: </translation>
</message>
<message>
<source>No description...</source>
<translation>Leine Beschreibung...</translation>
</message>
<message>
<source>Click here if you like the content</source>
<translation>Klicke hier wenn du den Inhalt magst</translation>
</message>
<message>
<source>Click here if you do not like the content</source>
<translation>Klicke hier wenn du den Inhalt nicht magst</translation>
</message>
<message>
<source>Subscribtions: </source>
<translation>Abonnements</translation>
</message>
<message>
<source>Open In Steam</source>
<translation>Öffne in Steam</translation>
</message>
<message>
<source>Subscribed!</source>
<translation>Abonniert</translation>
</message>
<message>
<source>Subscribe</source>
<translation>Abonniere</translation>
</message>
</context>
<context>
<name>StartInfo</name>
@ -1216,104 +1124,6 @@ Steam Error API Init: %2</source>
<translation>Konnte Steam integration nicht Laden!</translation>
</message>
</context>
<context>
<name>SteamProfile</name>
<message>
<source>Back</source>
<translation>Zurück</translation>
</message>
<message>
<source>Forward</source>
<translation>Vor</translation>
</message>
</context>
<context>
<name>SteamWorkshopStartPage</name>
<message>
<source>Loading</source>
<translation type="unfinished">Loading</translation>
</message>
<message>
<source>Download now!</source>
<translation>Jetzt herunterladen!</translation>
</message>
<message>
<source>Downloading...</source>
<translation>Herunterladen...</translation>
</message>
<message>
<source>Details</source>
<translation>Details</translation>
</message>
<message>
<source>Open In Steam</source>
<translation>In Steam öffnen</translation>
</message>
<message>
<source>Profile</source>
<translation>Profil</translation>
</message>
<message>
<source>Upload</source>
<translation>Hochladen</translation>
</message>
<message>
<source>Search for Wallpaper and Widgets...</source>
<translation>Suche nach Wallpaper &amp; Widgets...</translation>
</message>
<message>
<source>Open Workshop in Steam</source>
<translation>Im Steam Workshop öffnen</translation>
</message>
<message>
<source>Ranked By Vote</source>
<translation>Nach Bewertungen sortieren</translation>
</message>
<message>
<source>Publication Date</source>
<translation>Nach Veröffentlichungs Datum sortieren</translation>
</message>
<message>
<source>Ranked By Trend</source>
<translation>Nach Trends sortieren</translation>
</message>
<message>
<source>Favorited By Friends</source>
<translation>Von Freunden Favorisiert</translation>
</message>
<message>
<source>Created By Friends</source>
<translation>Von Freunden erstellt</translation>
</message>
<message>
<source>Created By Followed Users</source>
<translation>Von gefolgten Benutzern erstellt</translation>
</message>
<message>
<source>Not Yet Rated</source>
<translation>Noch nicht Bewertet</translation>
</message>
<message>
<source>Total VotesAsc</source>
<translation>Abstimmungs Anzahl Absteigend</translation>
</message>
<message>
<source>Votes Up</source>
<translation>Abstimmungs Anzahl Steigend</translation>
</message>
<message>
<source>Total Unique Subscriptions</source>
<translation>Anzahl einzigartiger Abonnenten</translation>
</message>
<message>
<source>Back</source>
<translation>Zurück</translation>
</message>
<message>
<source>Forward</source>
<translation>Vor</translation>
</message>
</context>
<context>
<name>TagSelector</name>
<message>
@ -1375,507 +1185,6 @@ Steam Error API Init: %2</source>
<translation>Beenden</translation>
</message>
</context>
<context>
<name>UploadProject</name>
<message>
<source>Upload Wallpaper/Widgets to Steam</source>
<translation>Lade Wallpaper/Widget auf Steam hoch</translation>
</message>
<message>
<source>Abort</source>
<translation>Abbrechen</translation>
</message>
<message>
<source>Upload Selected Projects</source>
<translation>Lade ausgewähltes Projekt hoch</translation>
</message>
<message>
<source>Finish</source>
<translation>Beenden</translation>
</message>
</context>
<context>
<name>UploadProjectBigItem</name>
<message>
<source>Type: </source>
<translation>Typ: </translation>
</message>
<message>
<source>Open Folder</source>
<translation>Öffne Ordner</translation>
</message>
<message>
<source>Invalid Project!</source>
<translation>Ungültiges Projekt</translation>
</message>
</context>
<context>
<name>UploadProjectItem</name>
<message>
<source>Fail</source>
<translation>Fehler</translation>
</message>
<message>
<source>No Connection</source>
<translation>Keine Verbindung</translation>
</message>
<message>
<source>Invalid Password</source>
<translation>Falsches Passwort</translation>
</message>
<message>
<source>Logged In Elsewhere</source>
<translation>Woanders Eingelogged</translation>
</message>
<message>
<source>Invalid Protocol Version</source>
<translation>Falsche Protokoll Version</translation>
</message>
<message>
<source>Invalid Param</source>
<translation>Falsche Parameter</translation>
</message>
<message>
<source>File Not Found</source>
<translation>Datei nicht gefunden</translation>
</message>
<message>
<source>Busy</source>
<translation>Beschäftigt</translation>
</message>
<message>
<source>Invalid State</source>
<translation>ungültiger Status</translation>
</message>
<message>
<source>Invalid Name</source>
<translation>ungültiger Name</translation>
</message>
<message>
<source>Invalid Email</source>
<translation>ungültige Email</translation>
</message>
<message>
<source>Duplicate Name</source>
<translation>Doppelter Name</translation>
</message>
<message>
<source>Access Denied</source>
<translation>Zugriff verweigert</translation>
</message>
<message>
<source>Timeout</source>
<translation>Auszeit</translation>
</message>
<message>
<source>Banned</source>
<translation>Gebannt</translation>
</message>
<message>
<source>Account Not Found</source>
<translation>Account nicht gefunden</translation>
</message>
<message>
<source>Invalid SteamID</source>
<translation>ungültige Steam ID</translation>
</message>
<message>
<source>Service Unavailable</source>
<translation>Service nicht Verfügbar</translation>
</message>
<message>
<source>Not Logged On</source>
<translation>Nicht angemeldet</translation>
</message>
<message>
<source>Pending</source>
<translation>Ausstehend</translation>
</message>
<message>
<source>Encryption Failure</source>
<translation>Verschlüsselungsfehler</translation>
</message>
<message>
<source>Insufficient Privilege</source>
<translation>Unzureichende Berechtigung</translation>
</message>
<message>
<source>Limit Exceeded</source>
<translation>Limit überschritten</translation>
</message>
<message>
<source>Revoked</source>
<translation>Wiederrufen</translation>
</message>
<message>
<source>Expired</source>
<translation>Abgelaufen</translation>
</message>
<message>
<source>Already Redeemed</source>
<translation>Bereits eingelöst</translation>
</message>
<message>
<source>Duplicate Request</source>
<translation>Doppelte anfrage</translation>
</message>
<message>
<source>Already Owned</source>
<translation>Bereits vergeben</translation>
</message>
<message>
<source>IP Not Found</source>
<translation>IP nicht gefunden</translation>
</message>
<message>
<source>Persist Failed</source>
<translation>Anhalten fehlgeschlagen</translation>
</message>
<message>
<source>Locking Failed</source>
<translation>Sperren fehlgeschlagen</translation>
</message>
<message>
<source>Logon Session Replaced</source>
<translation>Anmeldesitzung ersetzt</translation>
</message>
<message>
<source>Connect Failed</source>
<translation>Verbindung gescheitert</translation>
</message>
<message>
<source>Handshake Failed</source>
<translation>Handshake fehlgeschlagen</translation>
</message>
<message>
<source>IO Failure</source>
<translation>IO Fehler</translation>
</message>
<message>
<source>Remote Disconnect</source>
<translation type="unfinished">Remote Disconnect</translation>
</message>
<message>
<source>Shopping Cart Not Found</source>
<translation>Warenkorb nicht gefunden</translation>
</message>
<message>
<source>Blocked</source>
<translation>Blockiert</translation>
</message>
<message>
<source>Ignored</source>
<translation>Ignoriert</translation>
</message>
<message>
<source>No Match</source>
<translation>Keine Übereinstimmung</translation>
</message>
<message>
<source>Account Disabled</source>
<translation>Account deaktiviert</translation>
</message>
<message>
<source>Service ReadOnly</source>
<translation>Schreibgeschützter Dienst</translation>
</message>
<message>
<source>Account Not Featured</source>
<translation type="unfinished">Account Not Featured</translation>
</message>
<message>
<source>Administrator OK</source>
<translation type="unfinished">Administrator OK</translation>
</message>
<message>
<source>Content Version</source>
<translation>Inhaltsversion</translation>
</message>
<message>
<source>Try Another CM</source>
<translation>Versuch ein anderen CM</translation>
</message>
<message>
<source>Password Required To Kick Session</source>
<translation type="unfinished">Password Required To Kick Session</translation>
</message>
<message>
<source>Already Logged In Elsewhere</source>
<translation>Bereits woanders eingeloggt</translation>
</message>
<message>
<source>Suspended</source>
<translation>Gesperrt</translation>
</message>
<message>
<source>Cancelled</source>
<translation>Abgebrochen</translation>
</message>
<message>
<source>Data Corruption</source>
<translation>Datenkorruption</translation>
</message>
<message>
<source>Disk Full</source>
<translation>Festplatte voll</translation>
</message>
<message>
<source>Remote Call Failed</source>
<translation type="unfinished">Remote Call Failed</translation>
</message>
<message>
<source>Password Unset</source>
<translation>Passwort aufheben</translation>
</message>
<message>
<source>External Account Unlinked</source>
<translation>Externe Accountverknüpfung aufheben</translation>
</message>
<message>
<source>PSN Ticket Invalid</source>
<translation>ungültiges PSN Ticket</translation>
</message>
<message>
<source>External Account Already Linked</source>
<translation>Externer Account ist bereits verbunden</translation>
</message>
<message>
<source>Remote File Conflict</source>
<translation>Entfernter Dateikonflikt</translation>
</message>
<message>
<source>Illegal Password</source>
<translation>Nicht unterstütztes Passwort</translation>
</message>
<message>
<source>Same As Previous Value</source>
<translation>Gleicher wert wie vorheriger</translation>
</message>
<message>
<source>Account Logon Denied</source>
<translation>Anmeldung verweigert</translation>
</message>
<message>
<source>Cannot Use Old Password</source>
<translation>Du kannst dein altes Passwort nicht benutzen</translation>
</message>
<message>
<source>Invalid Login AuthCode</source>
<translation>Falscher Login AuthCode</translation>
</message>
<message>
<source>Account Logon Denied No Mail</source>
<translation>Account anmeldung abgelehnt, keine Mail</translation>
</message>
<message>
<source>Hardware Not Capable Of IPT</source>
<translation>Hardware ist nicht IPT fähig</translation>
</message>
<message>
<source>IPT Init Error</source>
<translation>IPT Init Fehler</translation>
</message>
<message>
<source>Parental Control Restricted</source>
<translation>Kindersicherung eingeschränkt</translation>
</message>
<message>
<source>Facebook Query Error</source>
<translation>Facebook-Abfragefehler</translation>
</message>
<message>
<source>Expired Login Auth Code</source>
<translation>Abgelaufener Login Auth Code</translation>
</message>
<message>
<source>IP Login Restriction Failed</source>
<translation>IP-Anmeldebeschränkung fehlgeschlagen</translation>
</message>
<message>
<source>Account Locked Down</source>
<translation>Account gesperrt</translation>
</message>
<message>
<source>Account Logon Denied Verified Email Required</source>
<translation>Account anmeldung abgelehnt, Verifizierte E-Mail erforderlich</translation>
</message>
<message>
<source>No MatchingURL</source>
<translation>Keine passende URL</translation>
</message>
<message>
<source>Bad Response</source>
<translation>Ungültige Antwort</translation>
</message>
<message>
<source>Require Password ReEntry</source>
<translation>Passwort erneurt eintragen</translation>
</message>
<message>
<source>Value Out Of Range</source>
<translation>Wert außerhalb des Bereichs</translation>
</message>
<message>
<source>Unexpecte Error</source>
<translation>Unerwarteter Fehler</translation>
</message>
<message>
<source>Disabled</source>
<translation>Deaktiviert</translation>
</message>
<message>
<source>Invalid CEG Submission</source>
<translation>Ungültige CEG-Einreichung</translation>
</message>
<message>
<source>Restricted Device</source>
<translation>Eingeschränktes Gerät</translation>
</message>
<message>
<source>Region Locked</source>
<translation>Region gesperrt</translation>
</message>
<message>
<source>Rate Limit Exceeded</source>
<translation>Frequenzgrenze überschritten</translation>
</message>
<message>
<source>Account Login Denied Need Two Factor</source>
<translation>Accountanmeldung verweigert zwei Faktor Auth benötigt</translation>
</message>
<message>
<source>Item Deleted</source>
<translation>item gelöscht</translation>
</message>
<message>
<source>Account Login Denied Throttle</source>
<translation>Account Anmeldung abgelehnt</translation>
</message>
<message>
<source>Two Factor Code Mismatch</source>
<translation>Zwei Faktor Code stimmt nicht überein</translation>
</message>
<message>
<source>Two Factor Activation Code Mismatch</source>
<translation>Zwei Faktor Code stimmt nicht überein</translation>
</message>
<message>
<source>Account Associated To Multiple Partners</source>
<translation>Account ist mehreren Partnern zugeordnet</translation>
</message>
<message>
<source>Not Modified</source>
<translation>Nicht modifiziert</translation>
</message>
<message>
<source>No Mobile Device</source>
<translation>Kein Mobilgerät</translation>
</message>
<message>
<source>Time Not Synced</source>
<translation>Zeit nicht synchronisiert</translation>
</message>
<message>
<source>Sms Code Failed</source>
<translation>SMS-Code fehlgeschlagen</translation>
</message>
<message>
<source>Account Limit Exceeded</source>
<translation>Kontolimit überschritten</translation>
</message>
<message>
<source>Account Activity Limit Exceeded</source>
<translation>Kontoaktivitätslimit überschritten</translation>
</message>
<message>
<source>Phone Activity Limit Exceeded</source>
<translation>Telefonaktivitätslimit überschritten</translation>
</message>
<message>
<source>Refund To Wallet</source>
<translation>Rückerstattung an Wallet</translation>
</message>
<message>
<source>Email Send Failure</source>
<translation>E-Mail-Sendefehler</translation>
</message>
<message>
<source>Not Settled</source>
<translation>Nicht geklärt</translation>
</message>
<message>
<source>Need Captcha</source>
<translation>Captcha benötigt</translation>
</message>
<message>
<source>GSLT Denied</source>
<translation>GSLT abgelehnt</translation>
</message>
<message>
<source>GS Owner Denied</source>
<translation>GS besitzer abgelehnt</translation>
</message>
<message>
<source>Invalid Item Type</source>
<translation>Ungültiger Item Typ</translation>
</message>
<message>
<source>IP Banned</source>
<translation>IP Gebannt</translation>
</message>
<message>
<source>GSLT Expired</source>
<translation>GSLT Abgelaufen</translation>
</message>
<message>
<source>Insufficient Funds</source>
<translation>Unzureichende Mittel</translation>
</message>
<message>
<source>Too Many Pending</source>
<translation>Zu viele ausstehend</translation>
</message>
<message>
<source>No Site Licenses Found</source>
<translation>Keine Site-Lizenzen gefunden</translation>
</message>
<message>
<source>WG Network Send Exceeded</source>
<translation>WG-Netzwerk senden überschritten</translation>
</message>
<message>
<source>Account Not Friends</source>
<translation>Account nicht befreundet</translation>
</message>
<message>
<source>Limited User Account</source>
<translation>Eingeschränktes Benutzerkonto</translation>
</message>
<message>
<source>Cant Remove Item</source>
<translation>Item kann nicht Entfernt werden</translation>
</message>
<message>
<source>Account Deleted</source>
<translation>Account gelöscht</translation>
</message>
<message>
<source>Existing User Cancelled License</source>
<translation>Benutzer hat Lizenz Annulliert</translation>
</message>
<message>
<source>Community Cooldown</source>
<translation>Community-Abklingzeit</translation>
</message>
<message>
<source>Status:</source>
<translation>Status:</translation>
</message>
<message>
<source>Upload Progress: </source>
<translation>Upload-Fortschritt: </translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>
@ -1910,14 +1219,12 @@ Steam Error API Init: %2</source>
<context>
<name>WindowNavigation</name>
<message>
<source>ScreenPlay Alpha %1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished"></translation>
<source>Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</translation>
</message>
<message>
<source>Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</translation>
<source>ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished">ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</translation>
</message>
</context>
<context>
@ -1931,17 +1238,6 @@ This will shut down all Wallpaper and Widgets.</translation>
<translation>Speichern...</translation>
</message>
</context>
<context>
<name>WorkshopItem</name>
<message>
<source>Successfully subscribed to Workshop Item!</source>
<translation>Erfolgreich Steam Workshop Item Abonniert!</translation>
</message>
<message>
<source>Download complete!</source>
<translation>Download abgeschlossen!</translation>
</message>
</context>
<context>
<name>XMLNewsfeed</name>
<message>

View File

@ -94,6 +94,49 @@
<translation>Abrir en el navegador</translation>
</message>
</context>
<context>
<name>CreateSidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished">Tools Overview</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished">GIF Wallpaper</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished">QML Wallpaper</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished">HTML5 Wallpaper</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished">Website Wallpaper</translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished">QML Widget</translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished">HTML Widget</translation>
</message>
</context>
<context>
<name>CreateWallpaperInit</name>
<message>
@ -217,10 +260,6 @@
<source>Volume</source>
<translation>Volumen</translation>
</message>
<message>
<source>Playback rate</source>
<translation>Velocidad de reproducción</translation>
</message>
<message>
<source>Current Video Time</source>
<translation type="unfinished">Current Video Time</translation>
@ -265,21 +304,6 @@
<translation>Por favor seleccione un archivo</translation>
</message>
</context>
<context>
<name>Forum</name>
<message>
<source>Download Wallpaper and Widgets from our forums manually. If you want to download Steam Workshop content you have to install ScreenPlay via Steam.</source>
<translation>Descargue Fondos y Widgets de nuestros foros manualmente. Si quieres descargar contenido de Steam Workshop tienes que instalar ScreenPlay a través de Steam.</translation>
</message>
<message>
<source>Install Steam Version</source>
<translation type="unfinished">Install Steam Version</translation>
</message>
<message>
<source>Open In Browser</source>
<translation>Abre en el Navegador</translation>
</message>
</context>
<context>
<name>GifWallpaper</name>
<message>
@ -626,6 +650,25 @@
<translation type="unfinished">Are you sure you want to delete this item?</translation>
</message>
</context>
<context>
<name>InstalledNavigation</name>
<message>
<source>All</source>
<translation type="unfinished">All</translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished">Scenes</translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished">Videos</translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
<message>
@ -636,6 +679,10 @@
<source>Browse the Steam Workshop</source>
<translation type="unfinished">Browse the Steam Workshop</translation>
</message>
<message>
<source>Get content via our forum</source>
<translation type="unfinished">Get content via our forum</translation>
</message>
</context>
<context>
<name>LicenseSelector</name>
@ -713,38 +760,6 @@
</context>
<context>
<name>Navigation</name>
<message>
<source>All</source>
<translation type="unfinished">All</translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished">Scenes</translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished">Videos</translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
<message>
<source>Install Date Ascending</source>
<translation type="unfinished">Install Date Ascending</translation>
</message>
<message>
<source>Install Date Descending</source>
<translation type="unfinished">Install Date Descending</translation>
</message>
<message>
<source> Subscribed items: </source>
<translation type="unfinished"> Subscribed items: </translation>
</message>
<message>
<source>Upload to the Steam Workshop</source>
<translation type="unfinished">Upload to the Steam Workshop</translation>
</message>
<message>
<source>Create</source>
<translation type="unfinished">Create</translation>
@ -786,41 +801,6 @@
<translation type="unfinished">Close All Content</translation>
</message>
</context>
<context>
<name>PopupOffline</name>
<message>
<source>Back</source>
<translation type="unfinished">Back</translation>
</message>
<message>
<source>You need to run Steam to access the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Steam Error Restart: %1
Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PopupSteamWorkshopAgreement</name>
<message>
<source>You Need to Agree To The Steam Subscriber Agreement First</source>
<translation type="unfinished">You Need to Agree To The Steam Subscriber Agreement First</translation>
</message>
<message>
<source>REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</source>
<translation type="unfinished">REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</translation>
</message>
<message>
<source>View The Steam Subscriber Agreement</source>
<translation type="unfinished">View The Steam Subscriber Agreement</translation>
</message>
<message>
<source>Accept Steam Workshop Agreement</source>
<translation type="unfinished">Accept Steam Workshop Agreement</translation>
</message>
</context>
<context>
<name>QMLWallpaper</name>
<message>
@ -1082,46 +1062,6 @@ Steam Error API Init: %2</source>
</context>
<context>
<name>Sidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished">Tools Overview</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished">GIF Wallpaper</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished">QML Wallpaper</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished">HTML5 Wallpaper</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished">Website Wallpaper</translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished">QML Widget</translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished">HTML Widget</translation>
</message>
<message>
<source>Set Wallpaper</source>
<translation type="unfinished">Set Wallpaper</translation>
@ -1166,38 +1106,6 @@ Steam Error API Init: %2</source>
<source>Scale-Down</source>
<translation type="unfinished">Scale-Down</translation>
</message>
<message>
<source>Size: </source>
<translation type="unfinished">Size: </translation>
</message>
<message>
<source>No description...</source>
<translation type="unfinished">No description...</translation>
</message>
<message>
<source>Click here if you like the content</source>
<translation type="unfinished">Click here if you like the content</translation>
</message>
<message>
<source>Click here if you do not like the content</source>
<translation type="unfinished">Click here if you do not like the content</translation>
</message>
<message>
<source>Subscribtions: </source>
<translation type="unfinished">Subscribtions: </translation>
</message>
<message>
<source>Open In Steam</source>
<translation type="unfinished">Open In Steam</translation>
</message>
<message>
<source>Subscribed!</source>
<translation type="unfinished">Subscribed!</translation>
</message>
<message>
<source>Subscribe</source>
<translation type="unfinished">Subscribe</translation>
</message>
</context>
<context>
<name>StartInfo</name>
@ -1217,104 +1125,6 @@ Steam Error API Init: %2</source>
<translation type="unfinished">Could not load steam integration!</translation>
</message>
</context>
<context>
<name>SteamProfile</name>
<message>
<source>Back</source>
<translation type="unfinished">Back</translation>
</message>
<message>
<source>Forward</source>
<translation type="unfinished">Forward</translation>
</message>
</context>
<context>
<name>SteamWorkshopStartPage</name>
<message>
<source>Loading</source>
<translation type="unfinished">Loading</translation>
</message>
<message>
<source>Download now!</source>
<translation type="unfinished">Download now!</translation>
</message>
<message>
<source>Downloading...</source>
<translation type="unfinished">Downloading...</translation>
</message>
<message>
<source>Details</source>
<translation type="unfinished">Details</translation>
</message>
<message>
<source>Open In Steam</source>
<translation type="unfinished">Open In Steam</translation>
</message>
<message>
<source>Profile</source>
<translation type="unfinished">Profile</translation>
</message>
<message>
<source>Upload</source>
<translation type="unfinished">Upload</translation>
</message>
<message>
<source>Search for Wallpaper and Widgets...</source>
<translation type="unfinished">Search for Wallpaper and Widgets...</translation>
</message>
<message>
<source>Open Workshop in Steam</source>
<translation type="unfinished">Open Workshop in Steam</translation>
</message>
<message>
<source>Ranked By Vote</source>
<translation type="unfinished">Ranked By Vote</translation>
</message>
<message>
<source>Publication Date</source>
<translation type="unfinished">Publication Date</translation>
</message>
<message>
<source>Ranked By Trend</source>
<translation type="unfinished">Ranked By Trend</translation>
</message>
<message>
<source>Favorited By Friends</source>
<translation type="unfinished">Favorited By Friends</translation>
</message>
<message>
<source>Created By Friends</source>
<translation type="unfinished">Created By Friends</translation>
</message>
<message>
<source>Created By Followed Users</source>
<translation type="unfinished">Created By Followed Users</translation>
</message>
<message>
<source>Not Yet Rated</source>
<translation type="unfinished">Not Yet Rated</translation>
</message>
<message>
<source>Total VotesAsc</source>
<translation type="unfinished">Total VotesAsc</translation>
</message>
<message>
<source>Votes Up</source>
<translation type="unfinished">Votes Up</translation>
</message>
<message>
<source>Total Unique Subscriptions</source>
<translation type="unfinished">Total Unique Subscriptions</translation>
</message>
<message>
<source>Back</source>
<translation type="unfinished">Back</translation>
</message>
<message>
<source>Forward</source>
<translation type="unfinished">Forward</translation>
</message>
</context>
<context>
<name>TagSelector</name>
<message>
@ -1376,507 +1186,6 @@ Steam Error API Init: %2</source>
<translation type="unfinished">Quit</translation>
</message>
</context>
<context>
<name>UploadProject</name>
<message>
<source>Upload Wallpaper/Widgets to Steam</source>
<translation type="unfinished">Upload Wallpaper/Widgets to Steam</translation>
</message>
<message>
<source>Abort</source>
<translation type="unfinished">Abort</translation>
</message>
<message>
<source>Upload Selected Projects</source>
<translation type="unfinished">Upload Selected Projects</translation>
</message>
<message>
<source>Finish</source>
<translation type="unfinished">Finish</translation>
</message>
</context>
<context>
<name>UploadProjectBigItem</name>
<message>
<source>Type: </source>
<translation type="unfinished">Type: </translation>
</message>
<message>
<source>Open Folder</source>
<translation type="unfinished">Open Folder</translation>
</message>
<message>
<source>Invalid Project!</source>
<translation type="unfinished">Invalid Project!</translation>
</message>
</context>
<context>
<name>UploadProjectItem</name>
<message>
<source>Fail</source>
<translation type="unfinished">Fail</translation>
</message>
<message>
<source>No Connection</source>
<translation type="unfinished">No Connection</translation>
</message>
<message>
<source>Invalid Password</source>
<translation type="unfinished">Invalid Password</translation>
</message>
<message>
<source>Logged In Elsewhere</source>
<translation type="unfinished">Logged In Elsewhere</translation>
</message>
<message>
<source>Invalid Protocol Version</source>
<translation type="unfinished">Invalid Protocol Version</translation>
</message>
<message>
<source>Invalid Param</source>
<translation type="unfinished">Invalid Param</translation>
</message>
<message>
<source>File Not Found</source>
<translation type="unfinished">File Not Found</translation>
</message>
<message>
<source>Busy</source>
<translation type="unfinished">Busy</translation>
</message>
<message>
<source>Invalid State</source>
<translation type="unfinished">Invalid State</translation>
</message>
<message>
<source>Invalid Name</source>
<translation type="unfinished">Invalid Name</translation>
</message>
<message>
<source>Invalid Email</source>
<translation type="unfinished">Invalid Email</translation>
</message>
<message>
<source>Duplicate Name</source>
<translation type="unfinished">Duplicate Name</translation>
</message>
<message>
<source>Access Denied</source>
<translation type="unfinished">Access Denied</translation>
</message>
<message>
<source>Timeout</source>
<translation type="unfinished">Timeout</translation>
</message>
<message>
<source>Banned</source>
<translation type="unfinished">Banned</translation>
</message>
<message>
<source>Account Not Found</source>
<translation type="unfinished">Account Not Found</translation>
</message>
<message>
<source>Invalid SteamID</source>
<translation type="unfinished">Invalid SteamID</translation>
</message>
<message>
<source>Service Unavailable</source>
<translation type="unfinished">Service Unavailable</translation>
</message>
<message>
<source>Not Logged On</source>
<translation type="unfinished">Not Logged On</translation>
</message>
<message>
<source>Pending</source>
<translation type="unfinished">Pending</translation>
</message>
<message>
<source>Encryption Failure</source>
<translation type="unfinished">Encryption Failure</translation>
</message>
<message>
<source>Insufficient Privilege</source>
<translation type="unfinished">Insufficient Privilege</translation>
</message>
<message>
<source>Limit Exceeded</source>
<translation type="unfinished">Limit Exceeded</translation>
</message>
<message>
<source>Revoked</source>
<translation type="unfinished">Revoked</translation>
</message>
<message>
<source>Expired</source>
<translation type="unfinished">Expired</translation>
</message>
<message>
<source>Already Redeemed</source>
<translation type="unfinished">Already Redeemed</translation>
</message>
<message>
<source>Duplicate Request</source>
<translation type="unfinished">Duplicate Request</translation>
</message>
<message>
<source>Already Owned</source>
<translation type="unfinished">Already Owned</translation>
</message>
<message>
<source>IP Not Found</source>
<translation type="unfinished">IP Not Found</translation>
</message>
<message>
<source>Persist Failed</source>
<translation type="unfinished">Persist Failed</translation>
</message>
<message>
<source>Locking Failed</source>
<translation type="unfinished">Locking Failed</translation>
</message>
<message>
<source>Logon Session Replaced</source>
<translation type="unfinished">Logon Session Replaced</translation>
</message>
<message>
<source>Connect Failed</source>
<translation type="unfinished">Connect Failed</translation>
</message>
<message>
<source>Handshake Failed</source>
<translation type="unfinished">Handshake Failed</translation>
</message>
<message>
<source>IO Failure</source>
<translation type="unfinished">IO Failure</translation>
</message>
<message>
<source>Remote Disconnect</source>
<translation type="unfinished">Remote Disconnect</translation>
</message>
<message>
<source>Shopping Cart Not Found</source>
<translation type="unfinished">Shopping Cart Not Found</translation>
</message>
<message>
<source>Blocked</source>
<translation type="unfinished">Blocked</translation>
</message>
<message>
<source>Ignored</source>
<translation type="unfinished">Ignored</translation>
</message>
<message>
<source>No Match</source>
<translation type="unfinished">No Match</translation>
</message>
<message>
<source>Account Disabled</source>
<translation type="unfinished">Account Disabled</translation>
</message>
<message>
<source>Service ReadOnly</source>
<translation type="unfinished">Service ReadOnly</translation>
</message>
<message>
<source>Account Not Featured</source>
<translation type="unfinished">Account Not Featured</translation>
</message>
<message>
<source>Administrator OK</source>
<translation type="unfinished">Administrator OK</translation>
</message>
<message>
<source>Content Version</source>
<translation type="unfinished">Content Version</translation>
</message>
<message>
<source>Try Another CM</source>
<translation type="unfinished">Try Another CM</translation>
</message>
<message>
<source>Password Required To Kick Session</source>
<translation type="unfinished">Password Required To Kick Session</translation>
</message>
<message>
<source>Already Logged In Elsewhere</source>
<translation type="unfinished">Already Logged In Elsewhere</translation>
</message>
<message>
<source>Suspended</source>
<translation type="unfinished">Suspended</translation>
</message>
<message>
<source>Cancelled</source>
<translation type="unfinished">Cancelled</translation>
</message>
<message>
<source>Data Corruption</source>
<translation type="unfinished">Data Corruption</translation>
</message>
<message>
<source>Disk Full</source>
<translation type="unfinished">Disk Full</translation>
</message>
<message>
<source>Remote Call Failed</source>
<translation type="unfinished">Remote Call Failed</translation>
</message>
<message>
<source>Password Unset</source>
<translation type="unfinished">Password Unset</translation>
</message>
<message>
<source>External Account Unlinked</source>
<translation type="unfinished">External Account Unlinked</translation>
</message>
<message>
<source>PSN Ticket Invalid</source>
<translation type="unfinished">PSN Ticket Invalid</translation>
</message>
<message>
<source>External Account Already Linked</source>
<translation type="unfinished">External Account Already Linked</translation>
</message>
<message>
<source>Remote File Conflict</source>
<translation type="unfinished">Remote File Conflict</translation>
</message>
<message>
<source>Illegal Password</source>
<translation type="unfinished">Illegal Password</translation>
</message>
<message>
<source>Same As Previous Value</source>
<translation type="unfinished">Same As Previous Value</translation>
</message>
<message>
<source>Account Logon Denied</source>
<translation type="unfinished">Account Logon Denied</translation>
</message>
<message>
<source>Cannot Use Old Password</source>
<translation type="unfinished">Cannot Use Old Password</translation>
</message>
<message>
<source>Invalid Login AuthCode</source>
<translation type="unfinished">Invalid Login AuthCode</translation>
</message>
<message>
<source>Account Logon Denied No Mail</source>
<translation type="unfinished">Account Logon Denied No Mail</translation>
</message>
<message>
<source>Hardware Not Capable Of IPT</source>
<translation type="unfinished">Hardware Not Capable Of IPT</translation>
</message>
<message>
<source>IPT Init Error</source>
<translation type="unfinished">IPT Init Error</translation>
</message>
<message>
<source>Parental Control Restricted</source>
<translation type="unfinished">Parental Control Restricted</translation>
</message>
<message>
<source>Facebook Query Error</source>
<translation type="unfinished">Facebook Query Error</translation>
</message>
<message>
<source>Expired Login Auth Code</source>
<translation type="unfinished">Expired Login Auth Code</translation>
</message>
<message>
<source>IP Login Restriction Failed</source>
<translation type="unfinished">IP Login Restriction Failed</translation>
</message>
<message>
<source>Account Locked Down</source>
<translation type="unfinished">Account Locked Down</translation>
</message>
<message>
<source>Account Logon Denied Verified Email Required</source>
<translation type="unfinished">Account Logon Denied Verified Email Required</translation>
</message>
<message>
<source>No MatchingURL</source>
<translation type="unfinished">No MatchingURL</translation>
</message>
<message>
<source>Bad Response</source>
<translation type="unfinished">Bad Response</translation>
</message>
<message>
<source>Require Password ReEntry</source>
<translation type="unfinished">Require Password ReEntry</translation>
</message>
<message>
<source>Value Out Of Range</source>
<translation type="unfinished">Value Out Of Range</translation>
</message>
<message>
<source>Unexpecte Error</source>
<translation type="unfinished">Unexpecte Error</translation>
</message>
<message>
<source>Disabled</source>
<translation type="unfinished">Disabled</translation>
</message>
<message>
<source>Invalid CEG Submission</source>
<translation type="unfinished">Invalid CEG Submission</translation>
</message>
<message>
<source>Restricted Device</source>
<translation type="unfinished">Restricted Device</translation>
</message>
<message>
<source>Region Locked</source>
<translation type="unfinished">Region Locked</translation>
</message>
<message>
<source>Rate Limit Exceeded</source>
<translation type="unfinished">Rate Limit Exceeded</translation>
</message>
<message>
<source>Account Login Denied Need Two Factor</source>
<translation type="unfinished">Account Login Denied Need Two Factor</translation>
</message>
<message>
<source>Item Deleted</source>
<translation type="unfinished">Item Deleted</translation>
</message>
<message>
<source>Account Login Denied Throttle</source>
<translation type="unfinished">Account Login Denied Throttle</translation>
</message>
<message>
<source>Two Factor Code Mismatch</source>
<translation type="unfinished">Two Factor Code Mismatch</translation>
</message>
<message>
<source>Two Factor Activation Code Mismatch</source>
<translation type="unfinished">Two Factor Activation Code Mismatch</translation>
</message>
<message>
<source>Account Associated To Multiple Partners</source>
<translation type="unfinished">Account Associated To Multiple Partners</translation>
</message>
<message>
<source>Not Modified</source>
<translation type="unfinished">Not Modified</translation>
</message>
<message>
<source>No Mobile Device</source>
<translation type="unfinished">No Mobile Device</translation>
</message>
<message>
<source>Time Not Synced</source>
<translation type="unfinished">Time Not Synced</translation>
</message>
<message>
<source>Sms Code Failed</source>
<translation type="unfinished">Sms Code Failed</translation>
</message>
<message>
<source>Account Limit Exceeded</source>
<translation type="unfinished">Account Limit Exceeded</translation>
</message>
<message>
<source>Account Activity Limit Exceeded</source>
<translation type="unfinished">Account Activity Limit Exceeded</translation>
</message>
<message>
<source>Phone Activity Limit Exceeded</source>
<translation type="unfinished">Phone Activity Limit Exceeded</translation>
</message>
<message>
<source>Refund To Wallet</source>
<translation type="unfinished">Refund To Wallet</translation>
</message>
<message>
<source>Email Send Failure</source>
<translation type="unfinished">Email Send Failure</translation>
</message>
<message>
<source>Not Settled</source>
<translation type="unfinished">Not Settled</translation>
</message>
<message>
<source>Need Captcha</source>
<translation type="unfinished">Need Captcha</translation>
</message>
<message>
<source>GSLT Denied</source>
<translation type="unfinished">GSLT Denied</translation>
</message>
<message>
<source>GS Owner Denied</source>
<translation type="unfinished">GS Owner Denied</translation>
</message>
<message>
<source>Invalid Item Type</source>
<translation type="unfinished">Invalid Item Type</translation>
</message>
<message>
<source>IP Banned</source>
<translation type="unfinished">IP Banned</translation>
</message>
<message>
<source>GSLT Expired</source>
<translation type="unfinished">GSLT Expired</translation>
</message>
<message>
<source>Insufficient Funds</source>
<translation type="unfinished">Insufficient Funds</translation>
</message>
<message>
<source>Too Many Pending</source>
<translation type="unfinished">Too Many Pending</translation>
</message>
<message>
<source>No Site Licenses Found</source>
<translation type="unfinished">No Site Licenses Found</translation>
</message>
<message>
<source>WG Network Send Exceeded</source>
<translation type="unfinished">WG Network Send Exceeded</translation>
</message>
<message>
<source>Account Not Friends</source>
<translation type="unfinished">Account Not Friends</translation>
</message>
<message>
<source>Limited User Account</source>
<translation type="unfinished">Limited User Account</translation>
</message>
<message>
<source>Cant Remove Item</source>
<translation type="unfinished">Cant Remove Item</translation>
</message>
<message>
<source>Account Deleted</source>
<translation type="unfinished">Account Deleted</translation>
</message>
<message>
<source>Existing User Cancelled License</source>
<translation type="unfinished">Existing User Cancelled License</translation>
</message>
<message>
<source>Community Cooldown</source>
<translation type="unfinished">Community Cooldown</translation>
</message>
<message>
<source>Status:</source>
<translation type="unfinished">Status:</translation>
</message>
<message>
<source>Upload Progress: </source>
<translation type="unfinished">Upload Progress: </translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>
@ -1911,14 +1220,12 @@ Steam Error API Init: %2</source>
<context>
<name>WindowNavigation</name>
<message>
<source>ScreenPlay Alpha %1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished"></translation>
<source>Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</translation>
</message>
<message>
<source>Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</translation>
<source>ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished">ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</translation>
</message>
</context>
<context>
@ -1932,17 +1239,6 @@ This will shut down all Wallpaper and Widgets.</translation>
<translation type="unfinished">Saving...</translation>
</message>
</context>
<context>
<name>WorkshopItem</name>
<message>
<source>Successfully subscribed to Workshop Item!</source>
<translation type="unfinished">Successfully subscribed to Workshop Item!</translation>
</message>
<message>
<source>Download complete!</source>
<translation type="unfinished">Download complete!</translation>
</message>
</context>
<context>
<name>XMLNewsfeed</name>
<message>

View File

@ -94,6 +94,49 @@
<translation>Ouvrir dans le navigateur</translation>
</message>
</context>
<context>
<name>CreateSidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished">Tools Overview</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished">Fond d&apos;écran GIF</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished">Fond d&apos;écran QML</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished">Fond d&apos;écran HTML5</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished">Fond d&apos;écran Site web</translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished">Widget QML</translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished">Widget HTML</translation>
</message>
</context>
<context>
<name>CreateWallpaperInit</name>
<message>
@ -217,10 +260,6 @@
<source>Volume</source>
<translation>Volume</translation>
</message>
<message>
<source>Playback rate</source>
<translation>Vitesse de lecture</translation>
</message>
<message>
<source>Current Video Time</source>
<translation>Progression de la vidéo en cours</translation>
@ -265,21 +304,6 @@
<translation>Veuillez choisir un fichier</translation>
</message>
</context>
<context>
<name>Forum</name>
<message>
<source>Download Wallpaper and Widgets from our forums manually. If you want to download Steam Workshop content you have to install ScreenPlay via Steam.</source>
<translation>Téléchargez manuellement des fond d&apos;écran et des widgets depuis notre forum. Si vous voulez télécharger du contenu Steam Workshop, vous devez installer ScreenPlay via Steam.</translation>
</message>
<message>
<source>Install Steam Version</source>
<translation>Installer la version Steam</translation>
</message>
<message>
<source>Open In Browser</source>
<translation>Ouvrir dans le navigateur</translation>
</message>
</context>
<context>
<name>GifWallpaper</name>
<message>
@ -626,6 +650,25 @@
<translation>Êtes-vous sûr de vouloir supprimer cet élément?</translation>
</message>
</context>
<context>
<name>InstalledNavigation</name>
<message>
<source>All</source>
<translation type="unfinished">Tout</translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished">Scènes</translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished">Vidéos</translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
<message>
@ -636,6 +679,10 @@
<source>Browse the Steam Workshop</source>
<translation>Parcourir le Steam Workshop</translation>
</message>
<message>
<source>Get content via our forum</source>
<translation type="unfinished">Get content via our forum</translation>
</message>
</context>
<context>
<name>LicenseSelector</name>
@ -713,38 +760,6 @@
</context>
<context>
<name>Navigation</name>
<message>
<source>All</source>
<translation>Tout</translation>
</message>
<message>
<source>Scenes</source>
<translation>Scènes</translation>
</message>
<message>
<source>Videos</source>
<translation>Vidéos</translation>
</message>
<message>
<source>Widgets</source>
<translation>Widgets</translation>
</message>
<message>
<source>Install Date Ascending</source>
<translation>Date d&apos;installation croissante</translation>
</message>
<message>
<source>Install Date Descending</source>
<translation>Date d&apos;installation décroissante</translation>
</message>
<message>
<source> Subscribed items: </source>
<translation> Éléments souscrits : </translation>
</message>
<message>
<source>Upload to the Steam Workshop</source>
<translation>Uploader sur le Steam Workshop</translation>
</message>
<message>
<source>Create</source>
<translation>Créer</translation>
@ -786,41 +801,6 @@
<translation type="unfinished">Close All Content</translation>
</message>
</context>
<context>
<name>PopupOffline</name>
<message>
<source>Back</source>
<translation>Précédent</translation>
</message>
<message>
<source>You need to run Steam to access the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Steam Error Restart: %1
Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PopupSteamWorkshopAgreement</name>
<message>
<source>You Need to Agree To The Steam Subscriber Agreement First</source>
<translation>Vous devez d&apos;abord accepter l&apos;Accord de Souscription Steam</translation>
</message>
<message>
<source>REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</source>
<translation>REQUIÈRE UNE CONNEXION INTERNET ET UN COMPTE STEAM GRATUIT POUR L&apos;ACTIVATION. Avertissement: Produit offert sous réserve de votre acceptation de l&apos;Accord de Souscription Steam (ASS). Vous devez activer ce produit via Internet en vous enregistrant sur un compte Steam et en acceptant l&apos;ASS. Veuillez consulter https://store.steampowered.com/subscriber_agreement/ pour consulter l&apos;ASS avant l&apos;achat. Si vous n&apos;êtes pas d&apos;accord avec les dispositions de l&apos;ASS, vous devriez retourner ce jeu non ouvert à votre détaillant conformément à leur politique de retour.</translation>
</message>
<message>
<source>View The Steam Subscriber Agreement</source>
<translation>Voir l&apos;Accord de Souscription Steam</translation>
</message>
<message>
<source>Accept Steam Workshop Agreement</source>
<translation>Accepter l&apos;Accord de Souscription Steam</translation>
</message>
</context>
<context>
<name>QMLWallpaper</name>
<message>
@ -1082,46 +1062,6 @@ Steam Error API Init: %2</source>
</context>
<context>
<name>Sidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished">Tools Overview</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation>Fond d&apos;écran GIF</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation>Fond d&apos;écran QML</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation>Fond d&apos;écran HTML5</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation>Fond d&apos;écran Site web</translation>
</message>
<message>
<source>QML Widget</source>
<translation>Widget QML</translation>
</message>
<message>
<source>HTML Widget</source>
<translation>Widget HTML</translation>
</message>
<message>
<source>Set Wallpaper</source>
<translation>Définir le fond d&apos;écran</translation>
@ -1166,38 +1106,6 @@ Steam Error API Init: %2</source>
<source>Scale-Down</source>
<translation>Réduire</translation>
</message>
<message>
<source>Size: </source>
<translation>Taille : </translation>
</message>
<message>
<source>No description...</source>
<translation>Pas de description ...</translation>
</message>
<message>
<source>Click here if you like the content</source>
<translation>Cliquez ici si vous aimez le contenu</translation>
</message>
<message>
<source>Click here if you do not like the content</source>
<translation>Cliquez ici si vous n&apos;aimez pas le contenu</translation>
</message>
<message>
<source>Subscribtions: </source>
<translation>Abonnements : </translation>
</message>
<message>
<source>Open In Steam</source>
<translation>Ouvrir dans Steam</translation>
</message>
<message>
<source>Subscribed!</source>
<translation>Abonné!</translation>
</message>
<message>
<source>Subscribe</source>
<translation>S&apos;abonner</translation>
</message>
</context>
<context>
<name>StartInfo</name>
@ -1217,104 +1125,6 @@ Steam Error API Init: %2</source>
<translation>Impossible de charger l&apos;intégration Steam!</translation>
</message>
</context>
<context>
<name>SteamProfile</name>
<message>
<source>Back</source>
<translation>Précédent</translation>
</message>
<message>
<source>Forward</source>
<translation>Suivant</translation>
</message>
</context>
<context>
<name>SteamWorkshopStartPage</name>
<message>
<source>Loading</source>
<translation>Chargement</translation>
</message>
<message>
<source>Download now!</source>
<translation>Télécharger maintenant!</translation>
</message>
<message>
<source>Downloading...</source>
<translation>Téléchargement...</translation>
</message>
<message>
<source>Details</source>
<translation>Détails</translation>
</message>
<message>
<source>Open In Steam</source>
<translation>Ouvrir dans Steam</translation>
</message>
<message>
<source>Profile</source>
<translation>Profil</translation>
</message>
<message>
<source>Upload</source>
<translation>Uploader</translation>
</message>
<message>
<source>Search for Wallpaper and Widgets...</source>
<translation>Recherche de fond d&apos;écran et de widgets...</translation>
</message>
<message>
<source>Open Workshop in Steam</source>
<translation>Ouvrir le Workshop dans Steam</translation>
</message>
<message>
<source>Ranked By Vote</source>
<translation>Classé par vote</translation>
</message>
<message>
<source>Publication Date</source>
<translation type="unfinished">Publication Date</translation>
</message>
<message>
<source>Ranked By Trend</source>
<translation type="unfinished">Ranked By Trend</translation>
</message>
<message>
<source>Favorited By Friends</source>
<translation type="unfinished">Favorited By Friends</translation>
</message>
<message>
<source>Created By Friends</source>
<translation type="unfinished">Created By Friends</translation>
</message>
<message>
<source>Created By Followed Users</source>
<translation type="unfinished">Created By Followed Users</translation>
</message>
<message>
<source>Not Yet Rated</source>
<translation type="unfinished">Not Yet Rated</translation>
</message>
<message>
<source>Total VotesAsc</source>
<translation type="unfinished">Total VotesAsc</translation>
</message>
<message>
<source>Votes Up</source>
<translation type="unfinished">Votes Up</translation>
</message>
<message>
<source>Total Unique Subscriptions</source>
<translation type="unfinished">Total Unique Subscriptions</translation>
</message>
<message>
<source>Back</source>
<translation type="unfinished">Back</translation>
</message>
<message>
<source>Forward</source>
<translation type="unfinished">Forward</translation>
</message>
</context>
<context>
<name>TagSelector</name>
<message>
@ -1376,507 +1186,6 @@ Steam Error API Init: %2</source>
<translation type="unfinished">Quit</translation>
</message>
</context>
<context>
<name>UploadProject</name>
<message>
<source>Upload Wallpaper/Widgets to Steam</source>
<translation type="unfinished">Upload Wallpaper/Widgets to Steam</translation>
</message>
<message>
<source>Abort</source>
<translation type="unfinished">Abort</translation>
</message>
<message>
<source>Upload Selected Projects</source>
<translation type="unfinished">Upload Selected Projects</translation>
</message>
<message>
<source>Finish</source>
<translation type="unfinished">Finish</translation>
</message>
</context>
<context>
<name>UploadProjectBigItem</name>
<message>
<source>Type: </source>
<translation type="unfinished">Type: </translation>
</message>
<message>
<source>Open Folder</source>
<translation type="unfinished">Open Folder</translation>
</message>
<message>
<source>Invalid Project!</source>
<translation type="unfinished">Invalid Project!</translation>
</message>
</context>
<context>
<name>UploadProjectItem</name>
<message>
<source>Fail</source>
<translation type="unfinished">Fail</translation>
</message>
<message>
<source>No Connection</source>
<translation type="unfinished">No Connection</translation>
</message>
<message>
<source>Invalid Password</source>
<translation type="unfinished">Invalid Password</translation>
</message>
<message>
<source>Logged In Elsewhere</source>
<translation type="unfinished">Logged In Elsewhere</translation>
</message>
<message>
<source>Invalid Protocol Version</source>
<translation type="unfinished">Invalid Protocol Version</translation>
</message>
<message>
<source>Invalid Param</source>
<translation type="unfinished">Invalid Param</translation>
</message>
<message>
<source>File Not Found</source>
<translation type="unfinished">File Not Found</translation>
</message>
<message>
<source>Busy</source>
<translation type="unfinished">Busy</translation>
</message>
<message>
<source>Invalid State</source>
<translation type="unfinished">Invalid State</translation>
</message>
<message>
<source>Invalid Name</source>
<translation type="unfinished">Invalid Name</translation>
</message>
<message>
<source>Invalid Email</source>
<translation type="unfinished">Invalid Email</translation>
</message>
<message>
<source>Duplicate Name</source>
<translation type="unfinished">Duplicate Name</translation>
</message>
<message>
<source>Access Denied</source>
<translation type="unfinished">Access Denied</translation>
</message>
<message>
<source>Timeout</source>
<translation type="unfinished">Timeout</translation>
</message>
<message>
<source>Banned</source>
<translation type="unfinished">Banned</translation>
</message>
<message>
<source>Account Not Found</source>
<translation type="unfinished">Account Not Found</translation>
</message>
<message>
<source>Invalid SteamID</source>
<translation type="unfinished">Invalid SteamID</translation>
</message>
<message>
<source>Service Unavailable</source>
<translation type="unfinished">Service Unavailable</translation>
</message>
<message>
<source>Not Logged On</source>
<translation type="unfinished">Not Logged On</translation>
</message>
<message>
<source>Pending</source>
<translation type="unfinished">Pending</translation>
</message>
<message>
<source>Encryption Failure</source>
<translation type="unfinished">Encryption Failure</translation>
</message>
<message>
<source>Insufficient Privilege</source>
<translation type="unfinished">Insufficient Privilege</translation>
</message>
<message>
<source>Limit Exceeded</source>
<translation type="unfinished">Limit Exceeded</translation>
</message>
<message>
<source>Revoked</source>
<translation type="unfinished">Revoked</translation>
</message>
<message>
<source>Expired</source>
<translation type="unfinished">Expired</translation>
</message>
<message>
<source>Already Redeemed</source>
<translation type="unfinished">Already Redeemed</translation>
</message>
<message>
<source>Duplicate Request</source>
<translation type="unfinished">Duplicate Request</translation>
</message>
<message>
<source>Already Owned</source>
<translation type="unfinished">Already Owned</translation>
</message>
<message>
<source>IP Not Found</source>
<translation type="unfinished">IP Not Found</translation>
</message>
<message>
<source>Persist Failed</source>
<translation type="unfinished">Persist Failed</translation>
</message>
<message>
<source>Locking Failed</source>
<translation type="unfinished">Locking Failed</translation>
</message>
<message>
<source>Logon Session Replaced</source>
<translation type="unfinished">Logon Session Replaced</translation>
</message>
<message>
<source>Connect Failed</source>
<translation type="unfinished">Connect Failed</translation>
</message>
<message>
<source>Handshake Failed</source>
<translation type="unfinished">Handshake Failed</translation>
</message>
<message>
<source>IO Failure</source>
<translation type="unfinished">IO Failure</translation>
</message>
<message>
<source>Remote Disconnect</source>
<translation type="unfinished">Remote Disconnect</translation>
</message>
<message>
<source>Shopping Cart Not Found</source>
<translation type="unfinished">Shopping Cart Not Found</translation>
</message>
<message>
<source>Blocked</source>
<translation type="unfinished">Blocked</translation>
</message>
<message>
<source>Ignored</source>
<translation type="unfinished">Ignored</translation>
</message>
<message>
<source>No Match</source>
<translation type="unfinished">No Match</translation>
</message>
<message>
<source>Account Disabled</source>
<translation type="unfinished">Account Disabled</translation>
</message>
<message>
<source>Service ReadOnly</source>
<translation type="unfinished">Service ReadOnly</translation>
</message>
<message>
<source>Account Not Featured</source>
<translation type="unfinished">Account Not Featured</translation>
</message>
<message>
<source>Administrator OK</source>
<translation type="unfinished">Administrator OK</translation>
</message>
<message>
<source>Content Version</source>
<translation type="unfinished">Content Version</translation>
</message>
<message>
<source>Try Another CM</source>
<translation type="unfinished">Try Another CM</translation>
</message>
<message>
<source>Password Required To Kick Session</source>
<translation type="unfinished">Password Required To Kick Session</translation>
</message>
<message>
<source>Already Logged In Elsewhere</source>
<translation type="unfinished">Already Logged In Elsewhere</translation>
</message>
<message>
<source>Suspended</source>
<translation type="unfinished">Suspended</translation>
</message>
<message>
<source>Cancelled</source>
<translation type="unfinished">Cancelled</translation>
</message>
<message>
<source>Data Corruption</source>
<translation type="unfinished">Data Corruption</translation>
</message>
<message>
<source>Disk Full</source>
<translation type="unfinished">Disk Full</translation>
</message>
<message>
<source>Remote Call Failed</source>
<translation type="unfinished">Remote Call Failed</translation>
</message>
<message>
<source>Password Unset</source>
<translation type="unfinished">Password Unset</translation>
</message>
<message>
<source>External Account Unlinked</source>
<translation type="unfinished">External Account Unlinked</translation>
</message>
<message>
<source>PSN Ticket Invalid</source>
<translation type="unfinished">PSN Ticket Invalid</translation>
</message>
<message>
<source>External Account Already Linked</source>
<translation type="unfinished">External Account Already Linked</translation>
</message>
<message>
<source>Remote File Conflict</source>
<translation type="unfinished">Remote File Conflict</translation>
</message>
<message>
<source>Illegal Password</source>
<translation type="unfinished">Illegal Password</translation>
</message>
<message>
<source>Same As Previous Value</source>
<translation type="unfinished">Same As Previous Value</translation>
</message>
<message>
<source>Account Logon Denied</source>
<translation type="unfinished">Account Logon Denied</translation>
</message>
<message>
<source>Cannot Use Old Password</source>
<translation type="unfinished">Cannot Use Old Password</translation>
</message>
<message>
<source>Invalid Login AuthCode</source>
<translation type="unfinished">Invalid Login AuthCode</translation>
</message>
<message>
<source>Account Logon Denied No Mail</source>
<translation type="unfinished">Account Logon Denied No Mail</translation>
</message>
<message>
<source>Hardware Not Capable Of IPT</source>
<translation type="unfinished">Hardware Not Capable Of IPT</translation>
</message>
<message>
<source>IPT Init Error</source>
<translation type="unfinished">IPT Init Error</translation>
</message>
<message>
<source>Parental Control Restricted</source>
<translation type="unfinished">Parental Control Restricted</translation>
</message>
<message>
<source>Facebook Query Error</source>
<translation type="unfinished">Facebook Query Error</translation>
</message>
<message>
<source>Expired Login Auth Code</source>
<translation type="unfinished">Expired Login Auth Code</translation>
</message>
<message>
<source>IP Login Restriction Failed</source>
<translation type="unfinished">IP Login Restriction Failed</translation>
</message>
<message>
<source>Account Locked Down</source>
<translation type="unfinished">Account Locked Down</translation>
</message>
<message>
<source>Account Logon Denied Verified Email Required</source>
<translation type="unfinished">Account Logon Denied Verified Email Required</translation>
</message>
<message>
<source>No MatchingURL</source>
<translation type="unfinished">No MatchingURL</translation>
</message>
<message>
<source>Bad Response</source>
<translation type="unfinished">Bad Response</translation>
</message>
<message>
<source>Require Password ReEntry</source>
<translation type="unfinished">Require Password ReEntry</translation>
</message>
<message>
<source>Value Out Of Range</source>
<translation type="unfinished">Value Out Of Range</translation>
</message>
<message>
<source>Unexpecte Error</source>
<translation type="unfinished">Unexpecte Error</translation>
</message>
<message>
<source>Disabled</source>
<translation type="unfinished">Disabled</translation>
</message>
<message>
<source>Invalid CEG Submission</source>
<translation type="unfinished">Invalid CEG Submission</translation>
</message>
<message>
<source>Restricted Device</source>
<translation type="unfinished">Restricted Device</translation>
</message>
<message>
<source>Region Locked</source>
<translation type="unfinished">Region Locked</translation>
</message>
<message>
<source>Rate Limit Exceeded</source>
<translation type="unfinished">Rate Limit Exceeded</translation>
</message>
<message>
<source>Account Login Denied Need Two Factor</source>
<translation type="unfinished">Account Login Denied Need Two Factor</translation>
</message>
<message>
<source>Item Deleted</source>
<translation type="unfinished">Item Deleted</translation>
</message>
<message>
<source>Account Login Denied Throttle</source>
<translation type="unfinished">Account Login Denied Throttle</translation>
</message>
<message>
<source>Two Factor Code Mismatch</source>
<translation type="unfinished">Two Factor Code Mismatch</translation>
</message>
<message>
<source>Two Factor Activation Code Mismatch</source>
<translation type="unfinished">Two Factor Activation Code Mismatch</translation>
</message>
<message>
<source>Account Associated To Multiple Partners</source>
<translation type="unfinished">Account Associated To Multiple Partners</translation>
</message>
<message>
<source>Not Modified</source>
<translation type="unfinished">Not Modified</translation>
</message>
<message>
<source>No Mobile Device</source>
<translation type="unfinished">No Mobile Device</translation>
</message>
<message>
<source>Time Not Synced</source>
<translation type="unfinished">Time Not Synced</translation>
</message>
<message>
<source>Sms Code Failed</source>
<translation type="unfinished">Sms Code Failed</translation>
</message>
<message>
<source>Account Limit Exceeded</source>
<translation type="unfinished">Account Limit Exceeded</translation>
</message>
<message>
<source>Account Activity Limit Exceeded</source>
<translation type="unfinished">Account Activity Limit Exceeded</translation>
</message>
<message>
<source>Phone Activity Limit Exceeded</source>
<translation type="unfinished">Phone Activity Limit Exceeded</translation>
</message>
<message>
<source>Refund To Wallet</source>
<translation type="unfinished">Refund To Wallet</translation>
</message>
<message>
<source>Email Send Failure</source>
<translation type="unfinished">Email Send Failure</translation>
</message>
<message>
<source>Not Settled</source>
<translation type="unfinished">Not Settled</translation>
</message>
<message>
<source>Need Captcha</source>
<translation type="unfinished">Need Captcha</translation>
</message>
<message>
<source>GSLT Denied</source>
<translation type="unfinished">GSLT Denied</translation>
</message>
<message>
<source>GS Owner Denied</source>
<translation type="unfinished">GS Owner Denied</translation>
</message>
<message>
<source>Invalid Item Type</source>
<translation type="unfinished">Invalid Item Type</translation>
</message>
<message>
<source>IP Banned</source>
<translation type="unfinished">IP Banned</translation>
</message>
<message>
<source>GSLT Expired</source>
<translation type="unfinished">GSLT Expired</translation>
</message>
<message>
<source>Insufficient Funds</source>
<translation type="unfinished">Insufficient Funds</translation>
</message>
<message>
<source>Too Many Pending</source>
<translation type="unfinished">Too Many Pending</translation>
</message>
<message>
<source>No Site Licenses Found</source>
<translation type="unfinished">No Site Licenses Found</translation>
</message>
<message>
<source>WG Network Send Exceeded</source>
<translation type="unfinished">WG Network Send Exceeded</translation>
</message>
<message>
<source>Account Not Friends</source>
<translation type="unfinished">Account Not Friends</translation>
</message>
<message>
<source>Limited User Account</source>
<translation type="unfinished">Limited User Account</translation>
</message>
<message>
<source>Cant Remove Item</source>
<translation type="unfinished">Cant Remove Item</translation>
</message>
<message>
<source>Account Deleted</source>
<translation type="unfinished">Account Deleted</translation>
</message>
<message>
<source>Existing User Cancelled License</source>
<translation type="unfinished">Existing User Cancelled License</translation>
</message>
<message>
<source>Community Cooldown</source>
<translation type="unfinished">Community Cooldown</translation>
</message>
<message>
<source>Status:</source>
<translation type="unfinished">Status:</translation>
</message>
<message>
<source>Upload Progress: </source>
<translation type="unfinished">Upload Progress: </translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>
@ -1911,14 +1220,12 @@ Steam Error API Init: %2</source>
<context>
<name>WindowNavigation</name>
<message>
<source>ScreenPlay Alpha %1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished"></translation>
<source>Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</translation>
</message>
<message>
<source>Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</translation>
<source>ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished">ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</translation>
</message>
</context>
<context>
@ -1932,17 +1239,6 @@ This will shut down all Wallpaper and Widgets.</translation>
<translation type="unfinished">Saving...</translation>
</message>
</context>
<context>
<name>WorkshopItem</name>
<message>
<source>Successfully subscribed to Workshop Item!</source>
<translation type="unfinished">Successfully subscribed to Workshop Item!</translation>
</message>
<message>
<source>Download complete!</source>
<translation type="unfinished">Download complete!</translation>
</message>
</context>
<context>
<name>XMLNewsfeed</name>
<message>

View File

@ -94,6 +94,49 @@
<translation>Apri nel browser</translation>
</message>
</context>
<context>
<name>CreateSidebar</name>
<message>
<source>Tools Overview</source>
<translation type="unfinished">Panoramica Strumenti</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation type="unfinished">Sfondo GIF</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation type="unfinished">Sfondo QML</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation type="unfinished">Sfondo HTML5</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation type="unfinished">Sfondo Web</translation>
</message>
<message>
<source>QML Widget</source>
<translation type="unfinished">Widget QML</translation>
</message>
<message>
<source>HTML Widget</source>
<translation type="unfinished">Widget HTML</translation>
</message>
</context>
<context>
<name>CreateWallpaperInit</name>
<message>
@ -217,10 +260,6 @@
<source>Volume</source>
<translation>Volume</translation>
</message>
<message>
<source>Playback rate</source>
<translation>Velocità riproduzione</translation>
</message>
<message>
<source>Current Video Time</source>
<translation>Minutaggio</translation>
@ -265,21 +304,6 @@
<translation>Scegli un file</translation>
</message>
</context>
<context>
<name>Forum</name>
<message>
<source>Download Wallpaper and Widgets from our forums manually. If you want to download Steam Workshop content you have to install ScreenPlay via Steam.</source>
<translation>Scarica Wallpaper e Widget dai nostri forum manualmente. Se vuoi scaricare i contenuti da Steam Workshop devi installare ScreenPlay tramite Steam.</translation>
</message>
<message>
<source>Install Steam Version</source>
<translation>Installa Versione di Steam</translation>
</message>
<message>
<source>Open In Browser</source>
<translation>Apri nel browser</translation>
</message>
</context>
<context>
<name>GifWallpaper</name>
<message>
@ -626,6 +650,25 @@
<translation>Sei sicuro di voler rimuovere questo elemento?</translation>
</message>
</context>
<context>
<name>InstalledNavigation</name>
<message>
<source>All</source>
<translation type="unfinished">Tutto</translation>
</message>
<message>
<source>Scenes</source>
<translation type="unfinished">Scene</translation>
</message>
<message>
<source>Videos</source>
<translation type="unfinished">Video</translation>
</message>
<message>
<source>Widgets</source>
<translation type="unfinished">Widgets</translation>
</message>
</context>
<context>
<name>InstalledWelcomeScreen</name>
<message>
@ -636,6 +679,10 @@
<source>Browse the Steam Workshop</source>
<translation>Sfoglia lo Steam Workshop</translation>
</message>
<message>
<source>Get content via our forum</source>
<translation type="unfinished">Get content via our forum</translation>
</message>
</context>
<context>
<name>LicenseSelector</name>
@ -713,38 +760,6 @@
</context>
<context>
<name>Navigation</name>
<message>
<source>All</source>
<translation>Tutto</translation>
</message>
<message>
<source>Scenes</source>
<translation>Scene</translation>
</message>
<message>
<source>Videos</source>
<translation>Video</translation>
</message>
<message>
<source>Widgets</source>
<translation>Widgets</translation>
</message>
<message>
<source>Install Date Ascending</source>
<translation>Data di Installazione Crescente</translation>
</message>
<message>
<source>Install Date Descending</source>
<translation>Data di Installazione Decrescente</translation>
</message>
<message>
<source> Subscribed items: </source>
<translation> Elementi sottoscritti: </translation>
</message>
<message>
<source>Upload to the Steam Workshop</source>
<translation>Carica nel Workshop di Steam</translation>
</message>
<message>
<source>Create</source>
<translation>Crea</translation>
@ -786,41 +801,6 @@
<translation type="unfinished">Close All Content</translation>
</message>
</context>
<context>
<name>PopupOffline</name>
<message>
<source>Back</source>
<translation>Indietro</translation>
</message>
<message>
<source>You need to run Steam to access the Steam Workshop</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Steam Error Restart: %1
Steam Error API Init: %2</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>PopupSteamWorkshopAgreement</name>
<message>
<source>You Need to Agree To The Steam Subscriber Agreement First</source>
<translation>Devi prima accettare l&apos;accordo di iscrizione di Steam</translation>
</message>
<message>
<source>REQUIRES INTERNET CONNECTION AND FREE STEAM ACCOUNT TO ACTIVATE. Notice: Product offered subject to your acceptance of the Steam Subscriber Agreement (SSA). You must activate this product via the Internet by registering for a Steam account and accepting the SSA. Please see https://store.steampowered.com/subscriber_agreement/ to view the SSA prior to purchase. If you do not agree with the provisions of the SSA, you should return this game unopened to your retailer in accordance with their return policy.</source>
<translation>RICHIESTA CONNESSIONE INTERNET E ACCOUNT STEAM GRATUITO PER L&apos;ATTIVAZIONE. Avviso: Prodotto offerto previa accettazione dell&apos;Accordo Iscrizione di Steam. È necessario attivare questo prodotto via Internet registrandosi per un account Steam e accettando il SSA. Per favore consulta https://store.steampowered.com/subscriber_agreement/ per visualizzare l&apos;SSA prima dell&apos;acquisto. Se non siete d&apos;accordo con le disposizioni della SSA, dovresti restituire questo gioco non aperto al tuo rivenditore in conformità con la sua politica di ritorno.</translation>
</message>
<message>
<source>View The Steam Subscriber Agreement</source>
<translation>Visualizza L&apos;Accordo Sull&apos;Iscrizione di Steam</translation>
</message>
<message>
<source>Accept Steam Workshop Agreement</source>
<translation>Accetta Accordo Workshop Steam</translation>
</message>
</context>
<context>
<name>QMLWallpaper</name>
<message>
@ -1082,46 +1062,6 @@ Steam Error API Init: %2</source>
</context>
<context>
<name>Sidebar</name>
<message>
<source>Tools Overview</source>
<translation>Panoramica Strumenti</translation>
</message>
<message>
<source>Video Import h264 (.mp4)</source>
<translation type="unfinished">Video Import h264 (.mp4)</translation>
</message>
<message>
<source>Video Import VP8 &amp; VP9 (.webm)</source>
<translation type="unfinished">Video Import VP8 &amp; VP9 (.webm)</translation>
</message>
<message>
<source>Video import (all types)</source>
<translation type="unfinished">Video import (all types)</translation>
</message>
<message>
<source>GIF Wallpaper</source>
<translation>Sfondo GIF</translation>
</message>
<message>
<source>QML Wallpaper</source>
<translation>Sfondo QML</translation>
</message>
<message>
<source>HTML5 Wallpaper</source>
<translation>Sfondo HTML5</translation>
</message>
<message>
<source>Website Wallpaper</source>
<translation>Sfondo Web</translation>
</message>
<message>
<source>QML Widget</source>
<translation>Widget QML</translation>
</message>
<message>
<source>HTML Widget</source>
<translation>Widget HTML</translation>
</message>
<message>
<source>Set Wallpaper</source>
<translation>Imposta sfondo</translation>
@ -1166,38 +1106,6 @@ Steam Error API Init: %2</source>
<source>Scale-Down</source>
<translation>Rimpicciolisci</translation>
</message>
<message>
<source>Size: </source>
<translation>Dimensione: </translation>
</message>
<message>
<source>No description...</source>
<translation>Nessuna descrizione...</translation>
</message>
<message>
<source>Click here if you like the content</source>
<translation>Clicca qui se ti piace il contenuto</translation>
</message>
<message>
<source>Click here if you do not like the content</source>
<translation>Clicca qui se non ti piace il contenuto</translation>
</message>
<message>
<source>Subscribtions: </source>
<translation>Iscrizioni: </translation>
</message>
<message>
<source>Open In Steam</source>
<translation>Apri In Steam</translation>
</message>
<message>
<source>Subscribed!</source>
<translation>Iscritto!</translation>
</message>
<message>
<source>Subscribe</source>
<translation>Iscriviti</translation>
</message>
</context>
<context>
<name>StartInfo</name>
@ -1217,104 +1125,6 @@ Steam Error API Init: %2</source>
<translation>Impossibile caricare l&apos;integrazione di Steam!</translation>
</message>
</context>
<context>
<name>SteamProfile</name>
<message>
<source>Back</source>
<translation>Indietro</translation>
</message>
<message>
<source>Forward</source>
<translation>Avanti</translation>
</message>
</context>
<context>
<name>SteamWorkshopStartPage</name>
<message>
<source>Loading</source>
<translation>Caricamento</translation>
</message>
<message>
<source>Download now!</source>
<translation>Scarica ora!</translation>
</message>
<message>
<source>Downloading...</source>
<translation>Download in corso...</translation>
</message>
<message>
<source>Details</source>
<translation>Informazioni</translation>
</message>
<message>
<source>Open In Steam</source>
<translation>Apri In Steam</translation>
</message>
<message>
<source>Profile</source>
<translation>Profilo</translation>
</message>
<message>
<source>Upload</source>
<translation>Carica</translation>
</message>
<message>
<source>Search for Wallpaper and Widgets...</source>
<translation>Cerca sfondi &amp; widget...</translation>
</message>
<message>
<source>Open Workshop in Steam</source>
<translation>Apri Workshop in Steam</translation>
</message>
<message>
<source>Ranked By Vote</source>
<translation>Ordinati per voto</translation>
</message>
<message>
<source>Publication Date</source>
<translation>Data di pubblicazione</translation>
</message>
<message>
<source>Ranked By Trend</source>
<translation>Classificato Per Tendenza</translation>
</message>
<message>
<source>Favorited By Friends</source>
<translation>Preferiti da Amici</translation>
</message>
<message>
<source>Created By Friends</source>
<translation>Creati da Amici</translation>
</message>
<message>
<source>Created By Followed Users</source>
<translation>Creati da Utenti Seguiti</translation>
</message>
<message>
<source>Not Yet Rated</source>
<translation>Non Ancora Votati</translation>
</message>
<message>
<source>Total VotesAsc</source>
<translation>Totale Voti Asc</translation>
</message>
<message>
<source>Votes Up</source>
<translation type="unfinished">Votes Up</translation>
</message>
<message>
<source>Total Unique Subscriptions</source>
<translation type="unfinished">Total Unique Subscriptions</translation>
</message>
<message>
<source>Back</source>
<translation>Indietro</translation>
</message>
<message>
<source>Forward</source>
<translation>Avanti</translation>
</message>
</context>
<context>
<name>TagSelector</name>
<message>
@ -1376,507 +1186,6 @@ Steam Error API Init: %2</source>
<translation>Esci</translation>
</message>
</context>
<context>
<name>UploadProject</name>
<message>
<source>Upload Wallpaper/Widgets to Steam</source>
<translation>Carica Sfondo/Widget su Steam</translation>
</message>
<message>
<source>Abort</source>
<translation>Interrompi</translation>
</message>
<message>
<source>Upload Selected Projects</source>
<translation>Carica Progetti Selezionati</translation>
</message>
<message>
<source>Finish</source>
<translation>Termina</translation>
</message>
</context>
<context>
<name>UploadProjectBigItem</name>
<message>
<source>Type: </source>
<translation>Tipo: </translation>
</message>
<message>
<source>Open Folder</source>
<translation>Apri cartella</translation>
</message>
<message>
<source>Invalid Project!</source>
<translation>Progetto non valido!</translation>
</message>
</context>
<context>
<name>UploadProjectItem</name>
<message>
<source>Fail</source>
<translation>Errore</translation>
</message>
<message>
<source>No Connection</source>
<translation>Nessuna connessione</translation>
</message>
<message>
<source>Invalid Password</source>
<translation>Password non valida</translation>
</message>
<message>
<source>Logged In Elsewhere</source>
<translation>Già collegato altrove</translation>
</message>
<message>
<source>Invalid Protocol Version</source>
<translation>Versione Protocollo Non Valida</translation>
</message>
<message>
<source>Invalid Param</source>
<translation>Parametro non valido</translation>
</message>
<message>
<source>File Not Found</source>
<translation>File non trovato</translation>
</message>
<message>
<source>Busy</source>
<translation>Occupato</translation>
</message>
<message>
<source>Invalid State</source>
<translation>Stato non valido</translation>
</message>
<message>
<source>Invalid Name</source>
<translation>Nome non valido</translation>
</message>
<message>
<source>Invalid Email</source>
<translation>Indirizzo e-mail non valido</translation>
</message>
<message>
<source>Duplicate Name</source>
<translation>Nome Duplicato</translation>
</message>
<message>
<source>Access Denied</source>
<translation>Accesso negato</translation>
</message>
<message>
<source>Timeout</source>
<translation>Tempo Scaduto</translation>
</message>
<message>
<source>Banned</source>
<translation>Bannato</translation>
</message>
<message>
<source>Account Not Found</source>
<translation>Account non trovato</translation>
</message>
<message>
<source>Invalid SteamID</source>
<translation>SteamID Non Valido</translation>
</message>
<message>
<source>Service Unavailable</source>
<translation>Servizio non Disponibile</translation>
</message>
<message>
<source>Not Logged On</source>
<translation>Accesso non effettuato</translation>
</message>
<message>
<source>Pending</source>
<translation>In attesa</translation>
</message>
<message>
<source>Encryption Failure</source>
<translation>Errore Di Cifratura</translation>
</message>
<message>
<source>Insufficient Privilege</source>
<translation>Permessi insufficienti</translation>
</message>
<message>
<source>Limit Exceeded</source>
<translation>Limite superato</translation>
</message>
<message>
<source>Revoked</source>
<translation>Revocato</translation>
</message>
<message>
<source>Expired</source>
<translation>Scaduto</translation>
</message>
<message>
<source>Already Redeemed</source>
<translation>Già Riscattato</translation>
</message>
<message>
<source>Duplicate Request</source>
<translation>Richiesta Duplicata</translation>
</message>
<message>
<source>Already Owned</source>
<translation>Già Posseduto</translation>
</message>
<message>
<source>IP Not Found</source>
<translation>IP Non Trovato</translation>
</message>
<message>
<source>Persist Failed</source>
<translation type="unfinished">Persist Failed</translation>
</message>
<message>
<source>Locking Failed</source>
<translation>Blocco non riuscito</translation>
</message>
<message>
<source>Logon Session Replaced</source>
<translation>Sessione Di Accesso Sostituita</translation>
</message>
<message>
<source>Connect Failed</source>
<translation>Connessione fallita</translation>
</message>
<message>
<source>Handshake Failed</source>
<translation>Handshake Fallito</translation>
</message>
<message>
<source>IO Failure</source>
<translation>Errore IO</translation>
</message>
<message>
<source>Remote Disconnect</source>
<translation>Disconnessione Remota</translation>
</message>
<message>
<source>Shopping Cart Not Found</source>
<translation>Carrello Non Trovato</translation>
</message>
<message>
<source>Blocked</source>
<translation>Bloccato</translation>
</message>
<message>
<source>Ignored</source>
<translation>Ignorato</translation>
</message>
<message>
<source>No Match</source>
<translation>Nessun Risultato</translation>
</message>
<message>
<source>Account Disabled</source>
<translation>Account disabilitato</translation>
</message>
<message>
<source>Service ReadOnly</source>
<translation>Servizio Sola Lettura</translation>
</message>
<message>
<source>Account Not Featured</source>
<translation>Account Non In Evidenza</translation>
</message>
<message>
<source>Administrator OK</source>
<translation>Amministratore OK</translation>
</message>
<message>
<source>Content Version</source>
<translation>Versione Contenuto</translation>
</message>
<message>
<source>Try Another CM</source>
<translation>Prova un altro CM</translation>
</message>
<message>
<source>Password Required To Kick Session</source>
<translation type="unfinished">Password Required To Kick Session</translation>
</message>
<message>
<source>Already Logged In Elsewhere</source>
<translation>Già collegato altrove</translation>
</message>
<message>
<source>Suspended</source>
<translation>Sospeso</translation>
</message>
<message>
<source>Cancelled</source>
<translation>Annullato</translation>
</message>
<message>
<source>Data Corruption</source>
<translation>Dati corrotti</translation>
</message>
<message>
<source>Disk Full</source>
<translation>Disco pieno</translation>
</message>
<message>
<source>Remote Call Failed</source>
<translation>Chiamata Remota Non Riuscita</translation>
</message>
<message>
<source>Password Unset</source>
<translation>Password non impostata</translation>
</message>
<message>
<source>External Account Unlinked</source>
<translation>Account Esterno Non Collegato</translation>
</message>
<message>
<source>PSN Ticket Invalid</source>
<translation type="unfinished">PSN Ticket Invalid</translation>
</message>
<message>
<source>External Account Already Linked</source>
<translation>Account Esterno Già Collegato</translation>
</message>
<message>
<source>Remote File Conflict</source>
<translation>Conflitto File Remoto</translation>
</message>
<message>
<source>Illegal Password</source>
<translation>Password non valida</translation>
</message>
<message>
<source>Same As Previous Value</source>
<translation>Valore uguale al precedente</translation>
</message>
<message>
<source>Account Logon Denied</source>
<translation>Accesso Account Negato</translation>
</message>
<message>
<source>Cannot Use Old Password</source>
<translation>Impossibile Usare Vecchia Password</translation>
</message>
<message>
<source>Invalid Login AuthCode</source>
<translation type="unfinished">Invalid Login AuthCode</translation>
</message>
<message>
<source>Account Logon Denied No Mail</source>
<translation>Accesso Account Negato Nessuna Mail</translation>
</message>
<message>
<source>Hardware Not Capable Of IPT</source>
<translation>Hardware non compatibile con IPT</translation>
</message>
<message>
<source>IPT Init Error</source>
<translation>Errore Init IPT</translation>
</message>
<message>
<source>Parental Control Restricted</source>
<translation>Limitato da Parental Control</translation>
</message>
<message>
<source>Facebook Query Error</source>
<translation type="unfinished">Facebook Query Error</translation>
</message>
<message>
<source>Expired Login Auth Code</source>
<translation type="unfinished">Expired Login Auth Code</translation>
</message>
<message>
<source>IP Login Restriction Failed</source>
<translation type="unfinished">IP Login Restriction Failed</translation>
</message>
<message>
<source>Account Locked Down</source>
<translation>Account bloccato</translation>
</message>
<message>
<source>Account Logon Denied Verified Email Required</source>
<translation>Accesso Account Negato Verifica Email Richiesta</translation>
</message>
<message>
<source>No MatchingURL</source>
<translation>Nessun URL Corrispondente</translation>
</message>
<message>
<source>Bad Response</source>
<translation type="unfinished">Bad Response</translation>
</message>
<message>
<source>Require Password ReEntry</source>
<translation>Richiesta Reinserimento Password</translation>
</message>
<message>
<source>Value Out Of Range</source>
<translation>Valore fuori dall&apos;intervallo</translation>
</message>
<message>
<source>Unexpecte Error</source>
<translation>Errore inatteso</translation>
</message>
<message>
<source>Disabled</source>
<translation>Disabilitato</translation>
</message>
<message>
<source>Invalid CEG Submission</source>
<translation type="unfinished">Invalid CEG Submission</translation>
</message>
<message>
<source>Restricted Device</source>
<translation>Dispositivo Limitato</translation>
</message>
<message>
<source>Region Locked</source>
<translation>Blocco regionale</translation>
</message>
<message>
<source>Rate Limit Exceeded</source>
<translation>Limite di richieste superato</translation>
</message>
<message>
<source>Account Login Denied Need Two Factor</source>
<translation>Login Account Negato Necessaria Autenticazione Due Fattori</translation>
</message>
<message>
<source>Item Deleted</source>
<translation>Elemento eliminato</translation>
</message>
<message>
<source>Account Login Denied Throttle</source>
<translation type="unfinished">Account Login Denied Throttle</translation>
</message>
<message>
<source>Two Factor Code Mismatch</source>
<translation>Codice A Due Fattori Non Corrispondente</translation>
</message>
<message>
<source>Two Factor Activation Code Mismatch</source>
<translation>Codice Di Attivazione A Due Fattori Non Corrispondente</translation>
</message>
<message>
<source>Account Associated To Multiple Partners</source>
<translation>Account Associato A Partner Multipli</translation>
</message>
<message>
<source>Not Modified</source>
<translation>Non modificato</translation>
</message>
<message>
<source>No Mobile Device</source>
<translation>Nessun Dispositivo Mobile</translation>
</message>
<message>
<source>Time Not Synced</source>
<translation>Tempo Non Sincronizzato</translation>
</message>
<message>
<source>Sms Code Failed</source>
<translation>Codice Sms Fallito</translation>
</message>
<message>
<source>Account Limit Exceeded</source>
<translation>Limite Account Superato</translation>
</message>
<message>
<source>Account Activity Limit Exceeded</source>
<translation>Limite Attività Dell&apos;Account Superato</translation>
</message>
<message>
<source>Phone Activity Limit Exceeded</source>
<translation>Limita Attività Telefono Superato</translation>
</message>
<message>
<source>Refund To Wallet</source>
<translation>Rimborso Al Portafoglio</translation>
</message>
<message>
<source>Email Send Failure</source>
<translation>Errore nell&apos;invio della mail</translation>
</message>
<message>
<source>Not Settled</source>
<translation>Non Risolto</translation>
</message>
<message>
<source>Need Captcha</source>
<translation>Captcha Richiesto</translation>
</message>
<message>
<source>GSLT Denied</source>
<translation>GSLT Negato</translation>
</message>
<message>
<source>GS Owner Denied</source>
<translation>Proprietario GS Negato</translation>
</message>
<message>
<source>Invalid Item Type</source>
<translation>Tipo oggetto non valido</translation>
</message>
<message>
<source>IP Banned</source>
<translation>IP Bannato</translation>
</message>
<message>
<source>GSLT Expired</source>
<translation>GSLT Scaduto</translation>
</message>
<message>
<source>Insufficient Funds</source>
<translation>Fondi insufficienti</translation>
</message>
<message>
<source>Too Many Pending</source>
<translation>Troppi In Attesa</translation>
</message>
<message>
<source>No Site Licenses Found</source>
<translation>Nessuna Licenza Sito Trovata</translation>
</message>
<message>
<source>WG Network Send Exceeded</source>
<translation>Invii di rete WG Superati</translation>
</message>
<message>
<source>Account Not Friends</source>
<translation>Account non in Amici</translation>
</message>
<message>
<source>Limited User Account</source>
<translation>Account Limitato</translation>
</message>
<message>
<source>Cant Remove Item</source>
<translation>Impossibile rimuovere elemento</translation>
</message>
<message>
<source>Account Deleted</source>
<translation>Account eliminato</translation>
</message>
<message>
<source>Existing User Cancelled License</source>
<translation>Licenza annullata da utente esistente</translation>
</message>
<message>
<source>Community Cooldown</source>
<translation>Cooldown comunità</translation>
</message>
<message>
<source>Status:</source>
<translation>Stato:</translation>
</message>
<message>
<source>Upload Progress: </source>
<translation>Avanzamento del caricamento: </translation>
</message>
</context>
<context>
<name>WebsiteWallpaper</name>
<message>
@ -1911,14 +1220,12 @@ Steam Error API Init: %2</source>
<context>
<name>WindowNavigation</name>
<message>
<source>ScreenPlay Alpha %1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished"></translation>
<source>Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay? This will shut down all Wallpaper and Widgets. If you want your Wallpaper to continue playing, press the minimize button.</translation>
</message>
<message>
<source>Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</source>
<translation type="unfinished">Are you sure you want to exit ScreenPlay?
This will shut down all Wallpaper and Widgets.</translation>
<source>ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</source>
<translation type="unfinished">ScreenPlay Alpha V%1 - Open Source Wallpaper And Widgets</translation>
</message>
</context>
<context>
@ -1932,17 +1239,6 @@ This will shut down all Wallpaper and Widgets.</translation>
<translation>Salvataggio in corso...</translation>
</message>
</context>
<context>
<name>WorkshopItem</name>
<message>
<source>Successfully subscribed to Workshop Item!</source>
<translation>Iscritto con successo all&apos;oggetto Workshop!</translation>
</message>
<message>
<source>Download complete!</source>
<translation>Download completato!</translation>
</message>
</context>
<context>
<name>XMLNewsfeed</name>
<message>

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