1
0
mirror of https://gitlab.com/kelteseth/ScreenPlay.git synced 2024-10-06 09:17:07 +02:00
This commit is contained in:
DANI 2019-04-18 20:58:45 +02:00
commit 8ca6418923
92 changed files with 3865 additions and 2039 deletions

View File

@ -0,0 +1,45 @@
<!---
Please read this!
Before opening a new issue, make sure to search for keywords in the issues
filtered by the "Regression" or "Bug" label:
https://gitlab.com/aimber/ScreenPlay/issues?label_name%5B%5D=Bug
https://gitlab.com/aimber/ScreenPlay/issues?label_name%5B%5D=Regression
Verify the issue you're about to submit isn't a duplicate.
--->
### Summary
(Summarize the bug encountered concisely)
### Steps to reproduce
(How one can reproduce the issue - this is very important)
### Example Project
(If possible, please create an example project here on GitLab.com that exhibits the problematic behaviour, and link to it here in the bug report)
(If you are using an older version of ScreenPlay, this will also determine whether the bug has been fixed in a more recent version)
### What is the current *bug* behavior?
(What actually happens)
### What is the expected *correct* behavior?
(What you should see instead)
### Relevant logs and/or screenshots
(Paste any relevant logs - please use code blocks (```) to format console output,
logs, and code as it's very hard to read otherwise.)
### Possible fixes
(If you can, link to the line of code that might be responsible for the problem)
/label ~Bug

View File

@ -1,8 +1,7 @@
TEMPLATE = subdirs
SUBDIRS = \
SUBDIRS += \
ScreenPlay/ScreenPlay.pro \
ScreenPlaySDK/ScreenPlaySDK.pro \
ScreenPlaySysInfo/ScreenPlaySysInfo.pro \
ScreenPlayWindow/ScreenPlayWindow.pro \
ScreenPlayWidget/ScreenPlayWidget.pro \
ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt-qt-sdk.pro \
@ -10,3 +9,8 @@ SUBDIRS = \
ScreenPlayWindow.depends = ScreenPlaySDK
ScreenPlayWidget.depends = ScreenPlaySDK
win32 {
SUBDIRS += \
ScreenPlaySysInfo/ScreenPlaySysInfo.pro \
}

View File

@ -79,8 +79,6 @@
<file>qml/Community/Feedback.qml</file>
<file>qml/Controls/Slider.qml</file>
<file>qml/Create/Create.qml</file>
<file>qml/Create/CreateImport.qml</file>
<file>qml/Create/CreateImportStatus.qml</file>
<file>qml/Create/CreateNew.qml</file>
<file>qml/Create/CreateUpload.qml</file>
<file>qml/Create/CreateWallpaper.qml</file>
@ -115,16 +113,17 @@
<file>settings.json</file>
<file>translations/ScreenPlay_de.qm</file>
<file>translations/ScreenPlay_en.qm</file>
<file>qml/Create/Wizards/CreateWallpaper/NextButton.qml</file>
<file>qml/Screen/Screen.qml</file>
<file>assets/icons/icon_screen.svg</file>
<file>qml/Background.qml</file>
<file>qml/Community/XMLNewsfeed.qml</file>
<file>qml/Workshop/WorkshopAvailableTest.qml</file>
<file>qml/Workshop/WorkshopLoader.qml</file>
<file>qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml</file>
<file>qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml</file>
<file>qml/Create/Wizards/CreateWallpaper/CreateWallpaperSuccess.qml</file>
<file>qml/Create/Wizards/CreateWallpaper/CreateWallpaperError.qml</file>
<file>qml/Create/Wizards/CreateWallpaper/CreateWallpaperResult.qml</file>
<file>qml/Common/TagSelector.qml</file>
<file>qml/Common/Tag.qml</file>
<file>assets/icons/icon_close.svg</file>
<file>qml/Common/ImageSelector.qml</file>
</qresource>
</RCC>

View File

@ -10,6 +10,7 @@ TARGETPATH = ScreenPlay
ICON = favicon.ico
SOURCES += main.cpp \
src/createimportvideo.cpp \
src/installedlistmodel.cpp \
src/monitorlistmodel.cpp \
src/settings.cpp \
@ -30,6 +31,7 @@ TRANSLATIONS = translations/ScreenPlay_en.ts \
translations/ScreenPlay_de.ts
HEADERS += \
src/createimportvideo.h \
src/installedlistmodel.h \
src/monitorlistmodel.h \
src/settings.h \

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;"><rect x="0" y="0" width="24" height="24" style="fill:none;"/><path id="close" d="M22,4.014l-2.014,-2.014l-7.986,7.986l-7.986,-7.986l-2.014,2.014l7.986,7.986l-7.986,7.986l2.014,2.014l7.986,-7.986l7.986,7.986l2.014,-2.014l-7.986,-7.986l7.986,-7.986Z" style="fill:#bebebe;fill-rule:nonzero;"/></svg>

After

Width:  |  Height:  |  Size: 742 B

View File

@ -0,0 +1,26 @@
# where your source files are (here it's just the root directory)
sourcedirs = ../
# where your header files are (probably in the same place as source)
headerdirs = ../
# where you store images that are used in your qdoc comments
imagedirs = ./images
# what kind of sources should be processed
sources.fileextensions = "*.cpp *.qml"
# what kind of headers should be processed
headers.fileextensions = "*.h"
# where to put the result
outputdir = ./html
# what format to use for generating documentation
outputformats = HTML
# the string that actually includes the CSS into documentation file
HTML.headerstyles += "<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/style.css\"/>"
HTML.headerstyles += "<link rel=\"stylesheet\" type=\"text/css\" href=\"../css/bootstrap.min.css\"/>\n"
# what to append to every page after header
HTML.postheader += "<div class=\"container-fullwidth nav\"><div class=\"container navWrapper\"><span class=\"logo\">ScreenPlay Code Docs </span><span class=\"navHome\"><a href=\"../index.html\">Home</a></span></div></div>"
HTML.postheader += "<div class=\"wrapper container\">\n"
# what to append to every page after the content
HTML.footer = "<hr/><p class=\"footer center\">Copyright Aimber GBR</p>\n</div>"

7
ScreenPlay/docs/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,51 @@
body {
background-color: #f3f3f4 !important;;
}
h1, h2, h3 {
color: #404244;
}
a {
color:#41cd52 !important;
}
.nav {
height: 50px;
background:#41cd52;
color: white;
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.14);
}
.navHome a{
color: white !important;
font-size: 1.2rem;
line-height: 2rem;
}
.navWrapper {
display: flex;
justify-content: space-between;
font-size: 1.5rem;
line-height: 2.8rem;
}
.wrapper {
margin: 1rem;
padding: 3rem !important;
border-radius: 3px;
background-color:white;
box-shadow: 0 3px 3px 0 rgba(0,0,0,0.14);
}
.toc {
display: none;
}
.logo {
font-size: 1.5rem;
padding-bottom: 4px;
}

876
ScreenPlay/docs/html/.index Normal file
View File

@ -0,0 +1,876 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE QDOCINDEX>
<INDEX url="" title="" version="" project="">
<namespace name="" status="active" access="public" documented="false">
<qmlclass name="main" qml-module-name="main" href="qml-main.html" status="internal" access="private" location="main.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/example/main.qml" lineno="5" title="main" fulltitle="main" subtitle=""/>
<qmlclass name="SendSuccessful" qml-module-name="SendSuccessful" href="qml-sendsuccessful.html" status="internal" access="private" location="SendSuccessful.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/SendSuccessful.qml" lineno="6" title="SendSuccessful" fulltitle="SendSuccessful" subtitle="">
<qmlproperty name="stomtShortLink" fullname="SendSuccessful::stomtShortLink" href="qml-sendsuccessful.html#stomtShortLink-prop" status="internal" access="private" location="SendSuccessful.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/SendSuccessful.qml" lineno="20" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="StomtWidget" qml-module-name="StomtWidget" href="qml-stomtwidget.html" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="4" title="StomtWidget" fulltitle="StomtWidget" subtitle="">
<function name="resetStomt" fullname="StomtWidget::resetStomt" href="qml-stomtwidget.html#resetStomt-method" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="30" meta="qmlmethod"/>
<qmlproperty name="targetID" fullname="StomtWidget::targetID" href="qml-stomtwidget.html#targetID-prop" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="9" type="string" attached="false" writable="true"/>
<qmlproperty name="targetImageUrl" fullname="StomtWidget::targetImageUrl" href="qml-stomtwidget.html#targetImageUrl-prop" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="10" type="url" attached="false" writable="true"/>
<qmlproperty name="appKey" fullname="StomtWidget::appKey" href="qml-stomtwidget.html#appKey-prop" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="8" type="string" attached="false" writable="true"/>
<qmlproperty name="targetDisplayName" fullname="StomtWidget::targetDisplayName" href="qml-stomtwidget.html#targetDisplayName-prop" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="11" type="string" attached="false" writable="true"/>
<qmlproperty name="useTestServer" fullname="StomtWidget::useTestServer" href="qml-stomtwidget.html#useTestServer-prop" status="internal" access="private" location="StomtWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/StomtWidget.qml" lineno="12" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="SubmitBtn" qml-module-name="SubmitBtn" href="qml-submitbtn.html" status="internal" access="private" location="SubmitBtn.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/SubmitBtn.qml" lineno="5" title="SubmitBtn" fulltitle="SubmitBtn" subtitle="">
<function name="sendStomt" fullname="SubmitBtn::sendStomt" href="qml-submitbtn.html#sendStomt-signal" status="internal" access="private" location="SubmitBtn.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/SubmitBtn.qml" lineno="14" meta="qmlsignal"/>
<qmlproperty name="isLoading" fullname="SubmitBtn::isLoading" href="qml-submitbtn.html#isLoading-prop" status="internal" access="private" location="SubmitBtn.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/SubmitBtn.qml" lineno="15" type="bool" attached="false" writable="true"/>
</qmlclass>
<class name="CreateImportVideo" href="createimportvideo.html" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="18">
<function name="CreateImportVideo" fullname="CreateImportVideo::CreateImportVideo" href="createimportvideo.html#CreateImportVideo" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="22" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="CreateImportVideo(int videoPath, int exportPath, int *parent)">
<parameter type="int" name="videoPath" default=""/>
<parameter type="int" name="exportPath" default=""/>
<parameter type="int *" name="parent" default="nullptr"/>
</function>
<function name="canceled" fullname="CreateImportVideo::canceled" href="createimportvideo.html#canceled" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="68" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void canceled()"/>
<function name="createWallpaperGifPreview" fullname="CreateImportVideo::createWallpaperGifPreview" href="createimportvideo.html#createWallpaperGifPreview" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="76" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool createWallpaperGifPreview()"/>
<function name="createWallpaperImagePreview" fullname="CreateImportVideo::createWallpaperImagePreview" href="createimportvideo.html#createWallpaperImagePreview" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="77" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool createWallpaperImagePreview()"/>
<function name="createWallpaperInfo" fullname="CreateImportVideo::createWallpaperInfo" href="createimportvideo.html#createWallpaperInfo" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="74" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool createWallpaperInfo()"/>
<function name="createWallpaperVideoPreview" fullname="CreateImportVideo::createWallpaperVideoPreview" href="createimportvideo.html#createWallpaperVideoPreview" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="75" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool createWallpaperVideoPreview()"/>
<function name="extractWallpaperAudio" fullname="CreateImportVideo::extractWallpaperAudio" href="createimportvideo.html#extractWallpaperAudio" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="78" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool extractWallpaperAudio()"/>
<function name="finished" fullname="CreateImportVideo::finished" href="createimportvideo.html#finished" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="67" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void finished()"/>
<function name="processOutput" fullname="CreateImportVideo::processOutput" href="createimportvideo.html#processOutput" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="66" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void processOutput(int text)">
<parameter type="int" name="text" default=""/>
</function>
<function name="requestInterruption" fullname="CreateImportVideo::requestInterruption" href="createimportvideo.html#requestInterruption" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="72" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void requestInterruption()"/>
<variable name="m_exportPath" fullname="CreateImportVideo::m_exportPath" href="createimportvideo.html#m_exportPath-var" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="60" type="int" static="false"/>
<enum name="State" fullname="CreateImportVideo::State" href="createimportvideo.html#State-enum" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="24">
<value name="Idle" value="0"/>
<value name="Started" value="1"/>
<value name="AnalyseVideo" value="2"/>
<value name="AnalyseVideoFinished" value="3"/>
<value name="AnalyseVideoError" value="4"/>
<value name="ConvertingPreviewVideo" value="5"/>
<value name="ConvertingPreviewVideoFinished" value="6"/>
<value name="ConvertingPreviewVideoError" value="7"/>
<value name="ConvertingPreviewGif" value="8"/>
<value name="ConvertingPreviewGifFinished" value="9"/>
<value name="ConvertingPreviewGifError" value="10"/>
<value name="ConvertingPreviewImage" value="11"/>
<value name="ConvertingPreviewImageFinished" value="12"/>
<value name="ConvertingPreviewImageError" value="13"/>
<value name="ConvertingAudio" value="14"/>
<value name="ConvertingAudioFinished" value="15"/>
<value name="ConvertingAudioError" value="16"/>
<value name="CopyFiles" value="17"/>
<value name="CopyFilesFinished" value="18"/>
<value name="CopyFilesError" value="19"/>
<value name="CreateProjectFile" value="20"/>
<value name="CreateProjectFileFinished" value="21"/>
<value name="CreateProjectFileError" value="22"/>
<value name="AbortCleanupError" value="23"/>
<value name="CreateTmpFolderError" value="24"/>
<value name="Finished" value="25"/>
</enum>
<variable name="m_framerate" fullname="CreateImportVideo::m_framerate" href="createimportvideo.html#m_framerate-var" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="62" type="int" static="false"/>
<variable name="m_length" fullname="CreateImportVideo::m_length" href="createimportvideo.html#m_length-var" status="internal" access="private" location="createimportvideo.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/createimportvideo.h" lineno="61" type="int" static="false"/>
</class>
<qmlclass name="WishLikeSwitcher" qml-module-name="WishLikeSwitcher" href="qml-wishlikeswitcher.html" status="internal" access="private" location="WishLikeSwitcher.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/WishLikeSwitcher.qml" lineno="3" title="WishLikeSwitcher" fulltitle="WishLikeSwitcher" subtitle="">
<qmlproperty name="isPositive" fullname="WishLikeSwitcher::isPositive" href="qml-wishlikeswitcher.html#isPositive-prop" status="internal" access="private" location="WishLikeSwitcher.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/WishLikeSwitcher.qml" lineno="8" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Community" qml-module-name="Community" href="qml-community.html" status="internal" access="private" location="Community.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Community/Community.qml" lineno="9" title="Community" fulltitle="Community" subtitle=""/>
<class name="StomtPlugin" href="stomtplugin.html" status="internal" access="private" location="stomt_plugin.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt_plugin.h" lineno="6">
<function name="Q_PLUGIN_METADATA" fullname="StomtPlugin::Q_PLUGIN_METADATA" href="stomtplugin.html#Q_PLUGIN_METADATA" status="internal" access="private" location="stomt_plugin.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt_plugin.h" lineno="9" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PLUGIN_METADATA(int )">
<parameter type="int" name="" default=""/>
</function>
</class>
<qmlclass name="Feedback" qml-module-name="Feedback" href="qml-feedback.html" status="internal" access="private" location="Feedback.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Community/Feedback.qml" lineno="4" title="Feedback" fulltitle="Feedback" subtitle=""/>
<qmlclass name="Slider" qml-module-name="Slider" href="qml-slider.html" status="internal" access="private" location="Slider.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Controls/Slider.qml" lineno="4" title="Slider" fulltitle="Slider" subtitle="">
<qmlproperty name="headline" fullname="Slider::headline" href="qml-slider.html#headline-prop" status="internal" access="private" location="Slider.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Controls/Slider.qml" lineno="13" type="string" attached="false" writable="true"/>
<qmlproperty name="iconSource" fullname="Slider::iconSource" href="qml-slider.html#iconSource-prop" status="internal" access="private" location="Slider.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Controls/Slider.qml" lineno="14" type="string" attached="false" writable="true"/>
<qmlproperty name="value" fullname="Slider::value" href="qml-slider.html#value-prop" status="internal" access="private" location="Slider.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Controls/Slider.qml" lineno="15" type="alias" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Tag" qml-module-name="Tag" href="qml-tag.html" status="internal" access="private" location="Tag.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Controls/Tag.qml" lineno="3" title="Tag" fulltitle="Tag" subtitle=""/>
<qmlclass name="TagField" qml-module-name="TagField" href="qml-tagfield.html" status="internal" access="private" location="TagField.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Controls/TagField.qml" lineno="3" title="TagField" fulltitle="TagField" subtitle=""/>
<qmlclass name="XMLNewsfeed" qml-module-name="XMLNewsfeed" href="qml-xmlnewsfeed.html" status="internal" access="private" location="XMLNewsfeed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Community/XMLNewsfeed.qml" lineno="8" title="XMLNewsfeed" fulltitle="XMLNewsfeed" subtitle=""/>
<class name="Stomt" href="stomt.html" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="19">
<function name="Q_DISABLE_COPY" fullname="Stomt::Q_DISABLE_COPY" href="stomt.html#Q_DISABLE_COPY" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="21" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_DISABLE_COPY(Stomt )">
<parameter type="Stomt" name="" default=""/>
</function>
<function name="Q_PROPERTY" fullname="Stomt::Q_PROPERTY" href="stomt.html#Q_PROPERTY" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="27" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="appIDChanged" fullname="Stomt::appIDChanged" href="stomt.html#appIDChanged" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="51" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void appIDChanged(int appID)">
<parameter type="int" name="appID" default=""/>
</function>
<function name="getTargetID" fullname="Stomt::getTargetID" href="stomt.html#getTargetID" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="59" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int getTargetID()"/>
<function name="sendStomt" fullname="Stomt::sendStomt" href="stomt.html#sendStomt" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="57" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void sendStomt(int text, bool isPositive)">
<parameter type="int" name="text" default=""/>
<parameter type="bool" name="isPositive" default=""/>
</function>
<function name="sendStomtResponse" fullname="Stomt::sendStomtResponse" href="stomt.html#sendStomtResponse" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="58" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void sendStomtResponse(int *reply)">
<parameter type="int *" name="reply" default=""/>
</function>
<function name="setAppID" fullname="Stomt::setAppID" href="stomt.html#setAppID" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="73" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setAppID(int appID)">
<parameter type="int" name="appID" default=""/>
</function>
<function name="setTargetID" fullname="Stomt::setTargetID" href="stomt.html#setTargetID" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="62" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setTargetID(int targetID)">
<parameter type="int" name="targetID" default=""/>
</function>
<function name="setUseTestServer" fullname="Stomt::setUseTestServer" href="stomt.html#setUseTestServer" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="89" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setUseTestServer(bool useTestServer)">
<parameter type="bool" name="useTestServer" default=""/>
</function>
<function name="setup" fullname="Stomt::setup" href="stomt.html#setup" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="83" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setup()"/>
<function name="targetIDChanged" fullname="Stomt::targetIDChanged" href="stomt.html#targetIDChanged" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="50" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void targetIDChanged(int targetID)">
<parameter type="int" name="targetID" default=""/>
</function>
<function name="useTestServerChanged" fullname="Stomt::useTestServerChanged" href="stomt.html#useTestServerChanged" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="52" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void useTestServerChanged(bool useTestServer)">
<parameter type="bool" name="useTestServer" default=""/>
</function>
<function name="~Stomt" fullname="Stomt::~Stomt" href="stomt.html#dtor.Stomt" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="25" meta="destructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="~Stomt()"/>
<variable name="m_targetID" fullname="Stomt::m_targetID" href="stomt.html#m_targetID-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="106" type="int" static="false"/>
<variable name="m_appIDSet" fullname="Stomt::m_appIDSet" href="stomt.html#m_appIDSet-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="107" type="bool" static="false"/>
<variable name="m_useTestServer" fullname="Stomt::m_useTestServer" href="stomt.html#m_useTestServer-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="109" type="bool" static="false"/>
<variable name="m_targetIDSet" fullname="Stomt::m_targetIDSet" href="stomt.html#m_targetIDSet-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="108" type="bool" static="false"/>
<variable name="m_appID" fullname="Stomt::m_appID" href="stomt.html#m_appID-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="106" type="int" static="false"/>
<variable name="m_netManager" fullname="Stomt::m_netManager" href="stomt.html#m_netManager-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="101" type="int *" static="false"/>
<variable name="m_accessToken" fullname="Stomt::m_accessToken" href="stomt.html#m_accessToken-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="106" type="int" static="false"/>
<variable name="m_netRequest" fullname="Stomt::m_netRequest" href="stomt.html#m_netRequest-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="102" type="int" static="false"/>
<variable name="m_profileImageUrl" fullname="Stomt::m_profileImageUrl" href="stomt.html#m_profileImageUrl-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="105" type="int" static="false"/>
<variable name="m_baseUrlStomt" fullname="Stomt::m_baseUrlStomt" href="stomt.html#m_baseUrlStomt-var" status="internal" access="private" location="stomt.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/stomt.h" lineno="104" type="int" static="false"/>
</class>
<qmlclass name="SettingsExpander" qml-module-name="SettingsExpander" href="qml-settingsexpander.html" status="internal" access="private" location="SettingsExpander.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsExpander.qml" lineno="6" title="SettingsExpander" fulltitle="SettingsExpander" subtitle="">
<function name="toggle" fullname="SettingsExpander::toggle" href="qml-settingsexpander.html#toggle-method" status="internal" access="private" location="SettingsExpander.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsExpander.qml" lineno="38" meta="qmlmethod"/>
<qmlproperty name="text" fullname="SettingsExpander::text" href="qml-settingsexpander.html#text-prop" status="internal" access="private" location="SettingsExpander.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsExpander.qml" lineno="11" type="alias" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Settings" qml-module-name="Settings" href="qml-settings.html" status="internal" access="private" location="Settings.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/Settings.qml" lineno="8" title="Settings" fulltitle="Settings" subtitle=""/>
<qmlclass name="SettingBool" qml-module-name="SettingBool" href="qml-settingbool.html" status="internal" access="private" location="SettingBool.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingBool.qml" lineno="5" title="SettingBool" fulltitle="SettingBool" subtitle="">
<function name="checkboxChanged" fullname="SettingBool::checkboxChanged" href="qml-settingbool.html#checkboxChanged-signal" status="internal" access="private" location="SettingBool.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingBool.qml" lineno="20" meta="qmlsignal"/>
<qmlproperty name="isChecked" fullname="SettingBool::isChecked" href="qml-settingbool.html#isChecked-prop" status="internal" access="private" location="SettingBool.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingBool.qml" lineno="9" type="bool" attached="false" writable="true"/>
<qmlproperty name="headline" fullname="SettingBool::headline" href="qml-settingbool.html#headline-prop" status="internal" access="private" location="SettingBool.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingBool.qml" lineno="7" type="string" attached="false" writable="true"/>
<qmlproperty name="description" fullname="SettingBool::description" href="qml-settingbool.html#description-prop" status="internal" access="private" location="SettingBool.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingBool.qml" lineno="8" type="string" attached="false" writable="true"/>
<qmlproperty name="available" fullname="SettingBool::available" href="qml-settingbool.html#available-prop" status="internal" access="private" location="SettingBool.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingBool.qml" lineno="10" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Screen" qml-module-name="Screen" href="qml-screen.html" status="internal" access="private" location="Screen.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Screen/Screen.qml" lineno="7" title="Screen" fulltitle="Screen" subtitle=""/>
<qmlclass name="NavigationWallpaperConfiguration" qml-module-name="NavigationWallpaperConfiguration" href="qml-navigationwallpaperconfiguration.html" status="internal" access="private" location="NavigationWallpaperConfiguration.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationWallpaperConfiguration.qml" lineno="5" title="NavigationWallpaperConfiguration" fulltitle="NavigationWallpaperConfiguration" subtitle=""/>
<qmlclass name="Window" qml-module-name="Window" href="qml-window.html" status="internal" access="private" location="Window.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Widgets/Window.qml" lineno="7" title="Window" fulltitle="Window" subtitle=""/>
<qmlclass name="SettingsHorizontalSeperator" qml-module-name="SettingsHorizontalSeperator" href="qml-settingshorizontalseperator.html" status="internal" access="private" location="SettingsHorizontalSeperator.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHorizontalSeperator.qml" lineno="3" title="SettingsHorizontalSeperator" fulltitle="SettingsHorizontalSeperator" subtitle="">
<qmlproperty name="customWidth" fullname="SettingsHorizontalSeperator::customWidth" href="qml-settingshorizontalseperator.html#customWidth-prop" status="internal" access="private" location="SettingsHorizontalSeperator.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHorizontalSeperator.qml" lineno="4" type="real" attached="false" writable="true"/>
<qmlproperty name="customColor" fullname="SettingsHorizontalSeperator::customColor" href="qml-settingshorizontalseperator.html#customColor-prop" status="internal" access="private" location="SettingsHorizontalSeperator.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHorizontalSeperator.qml" lineno="6" type="color" attached="false" writable="true"/>
<qmlproperty name="customHeight" fullname="SettingsHorizontalSeperator::customHeight" href="qml-settingshorizontalseperator.html#customHeight-prop" status="internal" access="private" location="SettingsHorizontalSeperator.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHorizontalSeperator.qml" lineno="5" type="real" attached="false" writable="true"/>
<qmlproperty name="customMargin" fullname="SettingsHorizontalSeperator::customMargin" href="qml-settingshorizontalseperator.html#customMargin-prop" status="internal" access="private" location="SettingsHorizontalSeperator.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHorizontalSeperator.qml" lineno="7" type="real" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="SettingsComboBox" qml-module-name="SettingsComboBox" href="qml-settingscombobox.html" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="5" title="SettingsComboBox" fulltitle="SettingsComboBox" subtitle="">
<function name="checkboxChanged" fullname="SettingsComboBox::checkboxChanged" href="qml-settingscombobox.html#checkboxChanged-signal" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="18" meta="qmlsignal"/>
<qmlproperty name="headline" fullname="SettingsComboBox::headline" href="qml-settingscombobox.html#headline-prop" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="7" type="string" attached="false" writable="true"/>
<qmlproperty name="comboBoxListModel" fullname="SettingsComboBox::comboBoxListModel" href="qml-settingscombobox.html#comboBoxListModel-prop" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="12" type="ListModel" attached="false" writable="true"/>
<qmlproperty name="isChecked" fullname="SettingsComboBox::isChecked" href="qml-settingscombobox.html#isChecked-prop" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="10" type="bool" attached="false" writable="true"/>
<qmlproperty name="description" fullname="SettingsComboBox::description" href="qml-settingscombobox.html#description-prop" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="8" type="string" attached="false" writable="true"/>
<qmlproperty name="currentIndex" fullname="SettingsComboBox::currentIndex" href="qml-settingscombobox.html#currentIndex-prop" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="9" type="int" attached="false" writable="true"/>
<qmlproperty name="enabled" fullname="SettingsComboBox::enabled" href="qml-settingscombobox.html#enabled-prop" status="internal" access="private" location="SettingsComboBox.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsComboBox.qml" lineno="11" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Workshop" qml-module-name="Workshop" href="qml-workshop.html" status="internal" access="private" location="Workshop.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Workshop/Workshop.qml" lineno="7" title="Workshop" fulltitle="Workshop" subtitle=""/>
<qmlclass name="WorkshopAvailableTest" qml-module-name="WorkshopAvailableTest" href="qml-workshopavailabletest.html" status="internal" access="private" location="WorkshopAvailableTest.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Workshop/WorkshopAvailableTest.qml" lineno="4" title="WorkshopAvailableTest" fulltitle="WorkshopAvailableTest" subtitle=""/>
<qmlclass name="WorkshopLoader" qml-module-name="WorkshopLoader" href="qml-workshoploader.html" status="internal" access="private" location="WorkshopLoader.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Workshop/WorkshopLoader.qml" lineno="3" title="WorkshopLoader" fulltitle="WorkshopLoader" subtitle="">
<qmlproperty name="available" fullname="WorkshopLoader::available" href="qml-workshoploader.html#available-prop" status="internal" access="private" location="WorkshopLoader.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Workshop/WorkshopLoader.qml" lineno="6" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="SettingsButton" qml-module-name="SettingsButton" href="qml-settingsbutton.html" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="6" title="SettingsButton" fulltitle="SettingsButton" subtitle="">
<function name="buttonPressed" fullname="SettingsButton::buttonPressed" href="qml-settingsbutton.html#buttonPressed-signal" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="25" meta="qmlsignal"/>
<qmlproperty name="buttonText" fullname="SettingsButton::buttonText" href="qml-settingsbutton.html#buttonText-prop" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="11" type="string" attached="false" writable="true"/>
<qmlproperty name="headline" fullname="SettingsButton::headline" href="qml-settingsbutton.html#headline-prop" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="9" type="string" attached="false" writable="true"/>
<qmlproperty name="available" fullname="SettingsButton::available" href="qml-settingsbutton.html#available-prop" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="14" type="bool" attached="false" writable="true"/>
<qmlproperty name="description" fullname="SettingsButton::description" href="qml-settingsbutton.html#description-prop" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="10" type="string" attached="false" writable="true"/>
<qmlproperty name="enabled" fullname="SettingsButton::enabled" href="qml-settingsbutton.html#enabled-prop" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="13" type="bool" attached="false" writable="true"/>
<qmlproperty name="isChecked" fullname="SettingsButton::isChecked" href="qml-settingsbutton.html#isChecked-prop" status="internal" access="private" location="SettingsButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsButton.qml" lineno="12" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="SettingsHeader" qml-module-name="SettingsHeader" href="qml-settingsheader.html" status="internal" access="private" location="SettingsHeader.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHeader.qml" lineno="4" title="SettingsHeader" fulltitle="SettingsHeader" subtitle="">
<qmlproperty name="background" fullname="SettingsHeader::background" href="qml-settingsheader.html#background-prop" status="internal" access="private" location="SettingsHeader.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHeader.qml" lineno="8" type="color" attached="false" writable="true"/>
<qmlproperty name="image" fullname="SettingsHeader::image" href="qml-settingsheader.html#image-prop" status="internal" access="private" location="SettingsHeader.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHeader.qml" lineno="10" type="url" attached="false" writable="true"/>
<qmlproperty name="text" fullname="SettingsHeader::text" href="qml-settingsheader.html#text-prop" status="internal" access="private" location="SettingsHeader.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Settings/SettingsHeader.qml" lineno="9" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="NavigationItem" qml-module-name="NavigationItem" href="qml-navigationitem.html" status="internal" access="private" location="NavigationItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationItem.qml" lineno="4" title="NavigationItem" fulltitle="NavigationItem" subtitle="">
<function name="pageClicked" fullname="NavigationItem::pageClicked" href="qml-navigationitem.html#pageClicked-signal" status="internal" access="private" location="NavigationItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationItem.qml" lineno="28" meta="qmlsignal"/>
<function name="setActive" fullname="NavigationItem::setActive" href="qml-navigationitem.html#setActive-method" status="internal" access="private" location="NavigationItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationItem.qml" lineno="30" meta="qmlmethod"/>
<qmlproperty name="enabled" fullname="NavigationItem::enabled" href="qml-navigationitem.html#enabled-prop" status="internal" access="private" location="NavigationItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationItem.qml" lineno="12" type="bool" attached="false" writable="true"/>
<qmlproperty name="iconSource" fullname="NavigationItem::iconSource" href="qml-navigationitem.html#iconSource-prop" status="internal" access="private" location="NavigationItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationItem.qml" lineno="26" type="string" attached="false" writable="true"/>
<qmlproperty name="name" fullname="NavigationItem::name" href="qml-navigationitem.html#name-prop" status="internal" access="private" location="NavigationItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/NavigationItem.qml" lineno="11" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Target" qml-module-name="Target" href="qml-target.html" status="internal" access="private" location="Target.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/Target.qml" lineno="4" title="Target" fulltitle="Target" subtitle="">
<qmlproperty name="useTestServer" fullname="Target::useTestServer" href="qml-target.html#useTestServer-prop" status="internal" access="private" location="Target.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/Target.qml" lineno="10" type="bool" attached="false" writable="true"/>
<qmlproperty name="targetDisplayName" fullname="Target::targetDisplayName" href="qml-target.html#targetDisplayName-prop" status="internal" access="private" location="Target.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/Target.qml" lineno="9" type="string" attached="false" writable="true"/>
<qmlproperty name="targetImageUrl" fullname="Target::targetImageUrl" href="qml-target.html#targetImageUrl-prop" status="internal" access="private" location="Target.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/ThirdParty/stomt-qt-sdk/sdk/qml/Target.qml" lineno="8" type="url" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateWallpaperResult" qml-module-name="CreateWallpaperResult" href="qml-createwallpaperresult.html" status="internal" access="private" location="CreateWallpaperResult.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperResult.qml" lineno="9" title="CreateWallpaperResult" fulltitle="CreateWallpaperResult" subtitle=""/>
<qmlclass name="FileDropperSingleFile" qml-module-name="FileDropperSingleFile" href="qml-filedroppersinglefile.html" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="4" title="FileDropperSingleFile" fulltitle="FileDropperSingleFile" subtitle="">
<function name="reset" fullname="FileDropperSingleFile::reset" href="qml-filedroppersinglefile.html#reset-method" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="21" meta="qmlmethod"/>
<qmlproperty name="background" fullname="FileDropperSingleFile::background" href="qml-filedroppersinglefile.html#background-prop" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="7" type="color" attached="false" writable="true"/>
<qmlproperty name="descriptionTitle" fullname="FileDropperSingleFile::descriptionTitle" href="qml-filedroppersinglefile.html#descriptionTitle-prop" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="8" type="string" attached="false" writable="true"/>
<qmlproperty name="imagePath" fullname="FileDropperSingleFile::imagePath" href="qml-filedroppersinglefile.html#imagePath-prop" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="9" type="url" attached="false" writable="true"/>
<qmlproperty name="isVideo" fullname="FileDropperSingleFile::isVideo" href="qml-filedroppersinglefile.html#isVideo-prop" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="11" type="bool" attached="false" writable="true"/>
<qmlproperty name="externalFilePath" fullname="FileDropperSingleFile::externalFilePath" href="qml-filedroppersinglefile.html#externalFilePath-prop" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="12" type="url" attached="false" writable="true"/>
<qmlproperty name="helpText" fullname="FileDropperSingleFile::helpText" href="qml-filedroppersinglefile.html#helpText-prop" status="internal" access="private" location="FileDropperSingleFile.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropperSingleFile.qml" lineno="13" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="ScreenPlayItem" qml-module-name="ScreenPlayItem" href="qml-screenplayitem.html" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="6" title="ScreenPlayItem" fulltitle="ScreenPlayItem" subtitle="">
<function name="itemClicked" fullname="ScreenPlayItem::itemClicked" href="qml-screenplayitem.html#itemClicked-signal" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="20" meta="qmlsignal"/>
<qmlproperty name="itemIndex" fullname="ScreenPlayItem::itemIndex" href="qml-screenplayitem.html#itemIndex-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="18" type="int" attached="false" writable="true"/>
<qmlproperty name="screenId" fullname="ScreenPlayItem::screenId" href="qml-screenplayitem.html#screenId-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="19" type="string" attached="false" writable="true"/>
<qmlproperty name="customTitle" fullname="ScreenPlayItem::customTitle" href="qml-screenplayitem.html#customTitle-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="13" type="string" attached="false" writable="true"/>
<qmlproperty name="absoluteStoragePath" fullname="ScreenPlayItem::absoluteStoragePath" href="qml-screenplayitem.html#absoluteStoragePath-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="14" type="url" attached="false" writable="true"/>
<qmlproperty name="workshopID" fullname="ScreenPlayItem::workshopID" href="qml-screenplayitem.html#workshopID-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="17" type="int" attached="false" writable="true"/>
<qmlproperty name="hasMenuOpen" fullname="ScreenPlayItem::hasMenuOpen" href="qml-screenplayitem.html#hasMenuOpen-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="16" type="bool" attached="false" writable="true"/>
<qmlproperty name="type" fullname="ScreenPlayItem::type" href="qml-screenplayitem.html#type-prop" status="internal" access="private" location="ScreenPlayItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItem.qml" lineno="15" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateWidgetButton" qml-module-name="CreateWidgetButton" href="qml-createwidgetbutton.html" status="internal" access="private" location="CreateWidgetButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidgetButton.qml" lineno="4" title="CreateWidgetButton" fulltitle="CreateWidgetButton" subtitle="">
<function name="clicked" fullname="CreateWidgetButton::clicked" href="qml-createwidgetbutton.html#clicked-signal" status="internal" access="private" location="CreateWidgetButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidgetButton.qml" lineno="17" meta="qmlsignal"/>
<qmlproperty name="imgSource" fullname="CreateWidgetButton::imgSource" href="qml-createwidgetbutton.html#imgSource-prop" status="internal" access="private" location="CreateWidgetButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidgetButton.qml" lineno="19" type="string" attached="false" writable="true"/>
<qmlproperty name="buttonActive" fullname="CreateWidgetButton::buttonActive" href="qml-createwidgetbutton.html#buttonActive-prop" status="internal" access="private" location="CreateWidgetButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidgetButton.qml" lineno="18" type="bool" attached="false" writable="true"/>
<qmlproperty name="animOffset" fullname="CreateWidgetButton::animOffset" href="qml-createwidgetbutton.html#animOffset-prop" status="internal" access="private" location="CreateWidgetButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidgetButton.qml" lineno="14" type="int" attached="false" writable="true"/>
<qmlproperty name="text" fullname="CreateWidgetButton::text" href="qml-createwidgetbutton.html#text-prop" status="internal" access="private" location="CreateWidgetButton.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidgetButton.qml" lineno="16" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateNew" qml-module-name="CreateNew" href="qml-createnew.html" status="internal" access="private" location="CreateNew.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateNew.qml" lineno="9" title="CreateNew" fulltitle="CreateNew" subtitle=""/>
<qmlclass name="InstalledUserHelper" qml-module-name="InstalledUserHelper" href="qml-installeduserhelper.html" status="internal" access="private" location="InstalledUserHelper.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledUserHelper.qml" lineno="6" title="InstalledUserHelper" fulltitle="InstalledUserHelper" subtitle="">
<function name="helperButtonPressed" fullname="InstalledUserHelper::helperButtonPressed" href="qml-installeduserhelper.html#helperButtonPressed-signal" status="internal" access="private" location="InstalledUserHelper.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledUserHelper.qml" lineno="8" meta="qmlsignal"/>
</qmlclass>
<qmlclass name="CreateWidget" qml-module-name="CreateWidget" href="qml-createwidget.html" status="internal" access="private" location="CreateWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidget.qml" lineno="5" title="CreateWidget" fulltitle="CreateWidget" subtitle="">
<function name="buttonPressed" fullname="CreateWidget::buttonPressed" href="qml-createwidget.html#buttonPressed-signal" status="internal" access="private" location="CreateWidget.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWidget.qml" lineno="11" meta="qmlsignal"/>
</qmlclass>
<qmlclass name="Sidebar" qml-module-name="Sidebar" href="qml-sidebar.html" status="internal" access="private" location="Sidebar.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Sidebar.qml" lineno="9" title="Sidebar" fulltitle="Sidebar" subtitle="">
<qmlproperty name="navHeight" fullname="Sidebar::navHeight" href="qml-sidebar.html#navHeight-prop" status="internal" access="private" location="Sidebar.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Sidebar.qml" lineno="14" type="real" attached="false" writable="true"/>
<qmlproperty name="type" fullname="Sidebar::type" href="qml-sidebar.html#type-prop" status="internal" access="private" location="Sidebar.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Sidebar.qml" lineno="15" type="string" attached="false" writable="true"/>
<qmlproperty name="activeScreen" fullname="Sidebar::activeScreen" href="qml-sidebar.html#activeScreen-prop" status="internal" access="private" location="Sidebar.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Sidebar.qml" lineno="16" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Monitors" qml-module-name="Monitors" href="qml-monitors.html" status="internal" access="private" location="Monitors.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Monitors.qml" lineno="9" title="Monitors" fulltitle="Monitors" subtitle="">
<qmlproperty name="activeMonitorName" fullname="Monitors::activeMonitorName" href="qml-monitors.html#activeMonitorName-prop" status="internal" access="private" location="Monitors.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Monitors.qml" lineno="14" type="string" attached="false" writable="true"/>
<qmlproperty name="activeMonitorIndex" fullname="Monitors::activeMonitorIndex" href="qml-monitors.html#activeMonitorIndex-prop" status="internal" access="private" location="Monitors.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Monitors.qml" lineno="15" type="int" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateWallpaperVideoImportConvert" qml-module-name="CreateWallpaperVideoImportConvert" href="qml-createwallpapervideoimportconvert.html" status="internal" access="private" location="CreateWallpaperVideoImportConvert.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" lineno="12" title="CreateWallpaperVideoImportConvert" fulltitle="CreateWallpaperVideoImportConvert" subtitle="">
<function name="checkCanSave" fullname="CreateWallpaperVideoImportConvert::checkCanSave" href="qml-createwallpapervideoimportconvert.html#checkCanSave-method" status="internal" access="private" location="CreateWallpaperVideoImportConvert.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" lineno="21" meta="qmlmethod"/>
<function name="save" fullname="CreateWallpaperVideoImportConvert::save" href="qml-createwallpapervideoimportconvert.html#save-signal" status="internal" access="private" location="CreateWallpaperVideoImportConvert.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" lineno="19" meta="qmlsignal"/>
<qmlproperty name="canSave" fullname="CreateWallpaperVideoImportConvert::canSave" href="qml-createwallpapervideoimportconvert.html#canSave-prop" status="internal" access="private" location="CreateWallpaperVideoImportConvert.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" lineno="16" type="bool" attached="false" writable="true"/>
<qmlproperty name="filePath" fullname="CreateWallpaperVideoImportConvert::filePath" href="qml-createwallpapervideoimportconvert.html#filePath-prop" status="internal" access="private" location="CreateWallpaperVideoImportConvert.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" lineno="17" type="string" attached="false" writable="true"/>
<qmlproperty name="conversionFinishedSuccessful" fullname="CreateWallpaperVideoImportConvert::conversionFinishedSuccessful" href="qml-createwallpapervideoimportconvert.html#conversionFinishedSuccessful-prop" status="internal" access="private" location="CreateWallpaperVideoImportConvert.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml" lineno="15" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="FileDropper" qml-module-name="FileDropper" href="qml-filedropper.html" status="internal" access="private" location="FileDropper.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/FileDropper.qml" lineno="5" title="FileDropper" fulltitle="FileDropper" subtitle=""/>
<qmlclass name="Installed" qml-module-name="Installed" href="qml-installed.html" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="6" title="Installed" fulltitle="Installed" subtitle="">
<function name="onPageChanged" fullname="Installed::onPageChanged" href="qml-installed.html#onPageChanged-method" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="183" meta="qmlmethod"/>
<function name="setNavigationItem" fullname="Installed::setNavigationItem" href="qml-installed.html#setNavigationItem-signal" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="11" meta="qmlsignal"/>
<function name="setSidebarActive" fullname="Installed::setSidebarActive" href="qml-installed.html#setSidebarActive-signal" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="12" meta="qmlsignal"/>
<function name="setSidebaractiveItem" fullname="Installed::setSidebaractiveItem" href="qml-installed.html#setSidebaractiveItem-signal" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="10" meta="qmlsignal"/>
<qmlproperty name="enabled" fullname="Installed::enabled" href="qml-installed.html#enabled-prop" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="15" type="bool" attached="false" writable="true"/>
<qmlproperty name="refresh" fullname="Installed::refresh" href="qml-installed.html#refresh-prop" status="internal" access="private" location="Installed.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/Installed.qml" lineno="14" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateWallpaperWizard" qml-module-name="CreateWallpaperWizard" href="qml-createwallpaperwizard.html" status="internal" access="private" location="CreateWallpaperWizard.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml" lineno="10" title="CreateWallpaperWizard" fulltitle="CreateWallpaperWizard" subtitle="">
<qmlproperty name="canNext" fullname="CreateWallpaperWizard::canNext" href="qml-createwallpaperwizard.html#canNext-prop" status="internal" access="private" location="CreateWallpaperWizard.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml" lineno="16" type="bool" attached="false" writable="true"/>
<qmlproperty name="filePath" fullname="CreateWallpaperWizard::filePath" href="qml-createwallpaperwizard.html#filePath-prop" status="internal" access="private" location="CreateWallpaperWizard.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Wizards/CreateWallpaper/CreateWallpaperWizard.qml" lineno="15" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateUpload" qml-module-name="CreateUpload" href="qml-createupload.html" status="internal" access="private" location="CreateUpload.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateUpload.qml" lineno="11" title="CreateUpload" fulltitle="CreateUpload" subtitle="">
<qmlproperty name="videoFile" fullname="CreateUpload::videoFile" href="qml-createupload.html#videoFile-prop" status="internal" access="private" location="CreateUpload.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateUpload.qml" lineno="18" type="url" attached="false" writable="true"/>
<qmlproperty name="projectFile" fullname="CreateUpload::projectFile" href="qml-createupload.html#projectFile-prop" status="internal" access="private" location="CreateUpload.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateUpload.qml" lineno="19" type="string" attached="false" writable="true"/>
<qmlproperty name="jsonProjectFile" fullname="CreateUpload::jsonProjectFile" href="qml-createupload.html#jsonProjectFile-prop" status="internal" access="private" location="CreateUpload.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateUpload.qml" lineno="20" type="var" attached="false" writable="true"/>
<qmlproperty name="isVideoPlaying" fullname="CreateUpload::isVideoPlaying" href="qml-createupload.html#isVideoPlaying-prop" status="internal" access="private" location="CreateUpload.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateUpload.qml" lineno="17" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="MonitorSelection" qml-module-name="MonitorSelection" href="qml-monitorselection.html" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="4" title="MonitorSelection" fulltitle="MonitorSelection" subtitle="">
<function name="requestProjectSettings" fullname="MonitorSelection::requestProjectSettings" href="qml-monitorselection.html#requestProjectSettings-signal" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="21" meta="qmlsignal"/>
<function name="resize" fullname="MonitorSelection::resize" href="qml-monitorselection.html#resize-method" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="60" meta="qmlmethod"/>
<function name="setActiveMonitorIndex" fullname="MonitorSelection::setActiveMonitorIndex" href="qml-monitorselection.html#setActiveMonitorIndex-method" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="24" meta="qmlmethod"/>
<qmlproperty name="fontSize" fullname="MonitorSelection::fontSize" href="qml-monitorselection.html#fontSize-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="18" type="int" attached="false" writable="true"/>
<qmlproperty name="cornerRadius" fullname="MonitorSelection::cornerRadius" href="qml-monitorselection.html#cornerRadius-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="13" type="real" attached="false" writable="true"/>
<qmlproperty name="availableWidth" fullname="MonitorSelection::availableWidth" href="qml-monitorselection.html#availableWidth-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="15" type="real" attached="false" writable="true"/>
<qmlproperty name="activeMonitorIndex" fullname="MonitorSelection::activeMonitorIndex" href="qml-monitorselection.html#activeMonitorIndex-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="17" type="int" attached="false" writable="true"/>
<qmlproperty name="background" fullname="MonitorSelection::background" href="qml-monitorselection.html#background-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="12" type="color" attached="false" writable="true"/>
<qmlproperty name="availableHeight" fullname="MonitorSelection::availableHeight" href="qml-monitorselection.html#availableHeight-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="16" type="real" attached="false" writable="true"/>
<qmlproperty name="activeMonitorID" fullname="MonitorSelection::activeMonitorID" href="qml-monitorselection.html#activeMonitorID-prop" status="internal" access="private" location="MonitorSelection.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelection.qml" lineno="19" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="MonitorsProjectSettingItem" qml-module-name="MonitorsProjectSettingItem" href="qml-monitorsprojectsettingitem.html" status="internal" access="private" location="MonitorsProjectSettingItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorsProjectSettingItem.qml" lineno="7" title="MonitorsProjectSettingItem" fulltitle="MonitorsProjectSettingItem" subtitle="">
<qmlproperty name="selectedMonitor" fullname="MonitorsProjectSettingItem::selectedMonitor" href="qml-monitorsprojectsettingitem.html#selectedMonitor-prop" status="internal" access="private" location="MonitorsProjectSettingItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorsProjectSettingItem.qml" lineno="13" type="int" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Navigation" qml-module-name="Navigation" href="qml-navigation.html" status="internal" access="private" location="Navigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Navigation.qml" lineno="8" title="Navigation" fulltitle="Navigation" subtitle="">
<function name="changePage" fullname="Navigation::changePage" href="qml-navigation.html#changePage-signal" status="internal" access="private" location="Navigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Navigation.qml" lineno="15" meta="qmlsignal"/>
<function name="onPageChanged" fullname="Navigation::onPageChanged" href="qml-navigation.html#onPageChanged-method" status="internal" access="private" location="Navigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Navigation.qml" lineno="36" meta="qmlmethod"/>
<function name="setActive" fullname="Navigation::setActive" href="qml-navigation.html#setActive-method" status="internal" access="private" location="Navigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Navigation.qml" lineno="27" meta="qmlmethod"/>
<qmlproperty name="navArray" fullname="Navigation::navArray" href="qml-navigation.html#navArray-prop" status="internal" access="private" location="Navigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Navigation.qml" lineno="17" type="var" attached="false" writable="true"/>
<qmlproperty name="navActive" fullname="Navigation::navActive" href="qml-navigation.html#navActive-prop" status="internal" access="private" location="Navigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Navigation.qml" lineno="18" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="InstalledNavigation" qml-module-name="InstalledNavigation" href="qml-installednavigation.html" status="internal" access="private" location="InstalledNavigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledNavigation.qml" lineno="4" title="InstalledNavigation" fulltitle="InstalledNavigation" subtitle="">
<function name="pageClicked" fullname="InstalledNavigation::pageClicked" href="qml-installednavigation.html#pageClicked-signal" status="internal" access="private" location="InstalledNavigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledNavigation.qml" lineno="20" meta="qmlsignal"/>
<function name="setActive" fullname="InstalledNavigation::setActive" href="qml-installednavigation.html#setActive-method" status="internal" access="private" location="InstalledNavigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledNavigation.qml" lineno="22" meta="qmlmethod"/>
<qmlproperty name="iconSource" fullname="InstalledNavigation::iconSource" href="qml-installednavigation.html#iconSource-prop" status="internal" access="private" location="InstalledNavigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledNavigation.qml" lineno="18" type="string" attached="false" writable="true"/>
<qmlproperty name="name" fullname="InstalledNavigation::name" href="qml-installednavigation.html#name-prop" status="internal" access="private" location="InstalledNavigation.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/InstalledNavigation.qml" lineno="11" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Create" qml-module-name="Create" href="qml-create.html" status="internal" access="private" location="Create.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Create.qml" lineno="11" title="Create" fulltitle="Create" subtitle="">
<qmlproperty name="activeFolder" fullname="Create::activeFolder" href="qml-create.html#activeFolder-prop" status="internal" access="private" location="Create.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Create.qml" lineno="19" type="url" attached="false" writable="true"/>
<qmlproperty name="activeVideoFile" fullname="Create::activeVideoFile" href="qml-create.html#activeVideoFile-prop" status="internal" access="private" location="Create.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/Create.qml" lineno="18" type="url" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="ScreenPlayItemImage" qml-module-name="ScreenPlayItemImage" href="qml-screenplayitemimage.html" status="internal" access="private" location="ScreenPlayItemImage.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItemImage.qml" lineno="3" title="ScreenPlayItemImage" fulltitle="ScreenPlayItemImage" subtitle="">
<function name="enter" fullname="ScreenPlayItemImage::enter" href="qml-screenplayitemimage.html#enter-method" status="internal" access="private" location="ScreenPlayItemImage.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItemImage.qml" lineno="12" meta="qmlmethod"/>
<function name="exit" fullname="ScreenPlayItemImage::exit" href="qml-screenplayitemimage.html#exit-method" status="internal" access="private" location="ScreenPlayItemImage.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItemImage.qml" lineno="18" meta="qmlmethod"/>
<qmlproperty name="sourceImageGIF" fullname="ScreenPlayItemImage::sourceImageGIF" href="qml-screenplayitemimage.html#sourceImageGIF-prop" status="internal" access="private" location="ScreenPlayItemImage.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItemImage.qml" lineno="10" type="string" attached="false" writable="true"/>
<qmlproperty name="sourceImage" fullname="ScreenPlayItemImage::sourceImage" href="qml-screenplayitemimage.html#sourceImage-prop" status="internal" access="private" location="ScreenPlayItemImage.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Installed/ScreenPlayItemImage.qml" lineno="9" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="MonitorSelectionItem" qml-module-name="MonitorSelectionItem" href="qml-monitorselectionitem.html" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="4" title="MonitorSelectionItem" fulltitle="MonitorSelectionItem" subtitle="">
<function name="monitorSelected" fullname="MonitorSelectionItem::monitorSelected" href="qml-monitorselectionitem.html#monitorSelected-signal" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="21" meta="qmlsignal"/>
<qmlproperty name="monitorID" fullname="MonitorSelectionItem::monitorID" href="qml-monitorselectionitem.html#monitorID-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="10" type="string" attached="false" writable="true"/>
<qmlproperty name="previewImage" fullname="MonitorSelectionItem::previewImage" href="qml-monitorselectionitem.html#previewImage-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="11" type="string" attached="false" writable="true"/>
<qmlproperty name="isSelected" fullname="MonitorSelectionItem::isSelected" href="qml-monitorselectionitem.html#isSelected-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="19" type="bool" attached="false" writable="true"/>
<qmlproperty name="monitorModel" fullname="MonitorSelectionItem::monitorModel" href="qml-monitorselectionitem.html#monitorModel-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="7" type="string" attached="false" writable="true"/>
<qmlproperty name="monitorManufacturer" fullname="MonitorSelectionItem::monitorManufacturer" href="qml-monitorselectionitem.html#monitorManufacturer-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="8" type="string" attached="false" writable="true"/>
<qmlproperty name="monitorSize" fullname="MonitorSelectionItem::monitorSize" href="qml-monitorselectionitem.html#monitorSize-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="6" type="rect" attached="false" writable="true"/>
<qmlproperty name="monitorName" fullname="MonitorSelectionItem::monitorName" href="qml-monitorselectionitem.html#monitorName-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="9" type="string" attached="false" writable="true"/>
<qmlproperty name="fontSize" fullname="MonitorSelectionItem::fontSize" href="qml-monitorselectionitem.html#fontSize-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="17" type="int" attached="false" writable="true"/>
<qmlproperty name="index" fullname="MonitorSelectionItem::index" href="qml-monitorselectionitem.html#index-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="18" type="int" attached="false" writable="true"/>
<qmlproperty name="isWallpaperActive" fullname="MonitorSelectionItem::isWallpaperActive" href="qml-monitorselectionitem.html#isWallpaperActive-prop" status="internal" access="private" location="MonitorSelectionItem.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/MonitorSelectionItem.qml" lineno="20" type="bool" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="CreateWallpaper" qml-module-name="CreateWallpaper" href="qml-createwallpaper.html" status="internal" access="private" location="CreateWallpaper.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWallpaper.qml" lineno="9" title="CreateWallpaper" fulltitle="CreateWallpaper" subtitle="">
<function name="projectFileSelected" fullname="CreateWallpaper::projectFileSelected" href="qml-createwallpaper.html#projectFileSelected-signal" status="internal" access="private" location="CreateWallpaper.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWallpaper.qml" lineno="16" meta="qmlsignal"/>
<function name="videoImportConvertFileSelected" fullname="CreateWallpaper::videoImportConvertFileSelected" href="qml-createwallpaper.html#videoImportConvertFileSelected-signal" status="internal" access="private" location="CreateWallpaper.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Create/CreateWallpaper.qml" lineno="15" meta="qmlsignal"/>
</qmlclass>
<class name="Create" href="create.html" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="29">
<function name="Q_PROPERTY" fullname="Create::Q_PROPERTY" href="create.html#Q_PROPERTY" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="34" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="abortAndCleanup" fullname="Create::abortAndCleanup" href="create.html#abortAndCleanup" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="60" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void abortAndCleanup()"/>
<function name="abortCreateWallpaper" fullname="Create::abortCreateWallpaper" href="create.html#abortCreateWallpaper" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="54" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void abortCreateWallpaper()"/>
<function name="processOutput" fullname="Create::processOutput" href="create.html#processOutput" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="52" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void processOutput(int text)">
<parameter type="int" name="text" default=""/>
</function>
<function name="progressChanged" fullname="Create::progressChanged" href="create.html#progressChanged" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="53" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void progressChanged(float progress)">
<parameter type="float" name="progress" default=""/>
</function>
<function name="saveWallpaper" fullname="Create::saveWallpaper" href="create.html#saveWallpaper" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="59" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void saveWallpaper(int title, int description, int filePath, int previewImagePath, int youtube, int tags)">
<parameter type="int" name="title" default=""/>
<parameter type="int" name="description" default=""/>
<parameter type="int" name="filePath" default=""/>
<parameter type="int" name="previewImagePath" default=""/>
<parameter type="int" name="youtube" default=""/>
<parameter type="int" name="tags" default=""/>
</function>
<function name="setProgress" fullname="Create::setProgress" href="create.html#setProgress" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="62" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setProgress(float progress)">
<parameter type="float" name="progress" default=""/>
</function>
<function name="setWorkingDir" fullname="Create::setWorkingDir" href="create.html#setWorkingDir" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="71" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setWorkingDir(int workingDir)">
<parameter type="int" name="workingDir" default=""/>
</function>
<function name="workingDirChanged" fullname="Create::workingDirChanged" href="create.html#workingDirChanged" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="55" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void workingDirChanged(int workingDir)">
<parameter type="int" name="workingDir" default=""/>
</function>
<variable name="m_createImportVideo" fullname="Create::m_createImportVideo" href="create.html#m_createImportVideo-var" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="81" type="CreateImportVideo *" static="false"/>
<variable name="m_settings" fullname="Create::m_settings" href="create.html#m_settings-var" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="82" type="Settings *" static="false"/>
<variable name="m_createImportVideoThread" fullname="Create::m_createImportVideoThread" href="create.html#m_createImportVideoThread-var" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="83" type="int *" static="false"/>
<variable name="m_utils" fullname="Create::m_utils" href="create.html#m_utils-var" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="84" type="QMLUtilities *" static="false"/>
<variable name="m_progress" fullname="Create::m_progress" href="create.html#m_progress-var" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="86" type="float" static="false"/>
<variable name="m_workingDir" fullname="Create::m_workingDir" href="create.html#m_workingDir-var" status="internal" access="private" location="create.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/create.h" lineno="87" type="int" static="false"/>
</class>
<qmlclass name="TagSelector" qml-module-name="TagSelector" href="qml-tagselector.html" status="internal" access="private" location="TagSelector.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Common/TagSelector.qml" lineno="6" title="TagSelector" fulltitle="TagSelector" subtitle="">
<function name="getTags" fullname="TagSelector::getTags" href="qml-tagselector.html#getTags-method" status="internal" access="private" location="TagSelector.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Common/TagSelector.qml" lineno="18" meta="qmlmethod"/>
</qmlclass>
<class name="Profile" href="profile.html" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="13">
<function name="Profile" fullname="Profile::Profile" href="profile.html#Profile" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="15" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="Profile()"/>
<function name="Profile" fullname="Profile::Profile" href="profile.html#Profile-1" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="16" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" overload="true" overload-number="1" type="" signature="Profile(int absolutePath, int id, int version, int wallpaperId, int rect, bool isLooping)">
<parameter type="int" name="absolutePath" default=""/>
<parameter type="int" name="id" default=""/>
<parameter type="int" name="version" default=""/>
<parameter type="int" name="wallpaperId" default=""/>
<parameter type="int" name="rect" default=""/>
<parameter type="bool" name="isLooping" default=""/>
</function>
<variable name="m_isLooping" fullname="Profile::m_isLooping" href="profile.html#m_isLooping-var" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="23" type="bool" static="false"/>
<variable name="m_rect" fullname="Profile::m_rect" href="profile.html#m_rect-var" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="22" type="int" static="false"/>
<variable name="m_id" fullname="Profile::m_id" href="profile.html#m_id-var" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="19" type="int" static="false"/>
<variable name="m_version" fullname="Profile::m_version" href="profile.html#m_version-var" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="20" type="int" static="false"/>
<variable name="m_absolutePath" fullname="Profile::m_absolutePath" href="profile.html#m_absolutePath-var" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="18" type="int" static="false"/>
<variable name="m_wallpaperId" fullname="Profile::m_wallpaperId" href="profile.html#m_wallpaperId-var" status="internal" access="private" location="profile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profile.h" lineno="21" type="int" static="false"/>
</class>
<class name="ProjectSettingsListItem" href="projectsettingslistitem.html" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="16">
<function name="ProjectSettingsListItem" fullname="ProjectSettingsListItem::ProjectSettingsListItem" href="projectsettingslistitem.html#ProjectSettingsListItem" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="20" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="ProjectSettingsListItem(int name, bool isHeadline, int value)">
<parameter type="int" name="name" default=""/>
<parameter type="bool" name="isHeadline" default=""/>
<parameter type="int" name="value" default=""/>
</function>
<function name="ProjectSettingsListItem" fullname="ProjectSettingsListItem::ProjectSettingsListItem" href="projectsettingslistitem.html#ProjectSettingsListItem-1" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="21" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" overload="true" overload-number="1" type="" signature="ProjectSettingsListItem()"/>
<function name="~ProjectSettingsListItem" fullname="ProjectSettingsListItem::~ProjectSettingsListItem" href="projectsettingslistitem.html#dtor.ProjectSettingsListItem" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="22" meta="destructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="~ProjectSettingsListItem()"/>
<variable name="m_value" fullname="ProjectSettingsListItem::m_value" href="projectsettingslistitem.html#m_value-var" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="25" type="int" static="false"/>
<variable name="m_name" fullname="ProjectSettingsListItem::m_name" href="projectsettingslistitem.html#m_name-var" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="23" type="int" static="false"/>
<variable name="m_isHeadline" fullname="ProjectSettingsListItem::m_isHeadline" href="projectsettingslistitem.html#m_isHeadline-var" status="internal" access="private" location="projectsettingslistitem.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistitem.h" lineno="24" type="bool" static="false"/>
</class>
<class name="SDKConnector" href="sdkconnector.html" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="18">
<function name="closeAllWallpapers" fullname="SDKConnector::closeAllWallpapers" href="sdkconnector.html#closeAllWallpapers" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="28" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void closeAllWallpapers()"/>
<function name="closeWallpapersAt" fullname="SDKConnector::closeWallpapersAt" href="sdkconnector.html#closeWallpapersAt" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="29" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void closeWallpapersAt(int at)">
<parameter type="int" name="at" default=""/>
</function>
<function name="newConnection" fullname="SDKConnector::newConnection" href="sdkconnector.html#newConnection" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="27" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void newConnection()"/>
<function name="setSceneValue" fullname="SDKConnector::setSceneValue" href="sdkconnector.html#setSceneValue" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="31" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setSceneValue(int appID, int key, int value)">
<parameter type="int" name="appID" default=""/>
<parameter type="int" name="key" default=""/>
<parameter type="int" name="value" default=""/>
</function>
<function name="setWallpaperValue" fullname="SDKConnector::setWallpaperValue" href="sdkconnector.html#setWallpaperValue" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="30" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setWallpaperValue(int appID, int key, int value)">
<parameter type="int" name="appID" default=""/>
<parameter type="int" name="key" default=""/>
<parameter type="int" name="value" default=""/>
</function>
<variable name="m_server" fullname="SDKConnector::m_server" href="sdkconnector.html#m_server-var" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="34" type="int" static="false"/>
</class>
<class name="SDKConnection" href="sdkconnection.html" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="38">
<function name="Q_PROPERTY" fullname="SDKConnection::Q_PROPERTY" href="sdkconnection.html#Q_PROPERTY" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="40" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="appIDChanged" fullname="SDKConnection::appIDChanged" href="sdkconnection.html#appIDChanged" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="74" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void appIDChanged(int appID)">
<parameter type="int" name="appID" default=""/>
</function>
<function name="monitor" fullname="SDKConnection::monitor" href="sdkconnection.html#monitor" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="67" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int monitor() const"/>
<function name="monitorChanged" fullname="SDKConnection::monitorChanged" href="sdkconnection.html#monitorChanged" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="75" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void monitorChanged(int monitor)">
<parameter type="int" name="monitor" default=""/>
</function>
<variable name="m_appID" fullname="SDKConnection::m_appID" href="sdkconnection.html#m_appID-var" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="127" type="int" static="false"/>
<variable name="m_monitor" fullname="SDKConnection::m_monitor" href="sdkconnection.html#m_monitor-var" status="internal" access="private" location="sdkconnector.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/sdkconnector.h" lineno="128" type="int" static="false"/>
</class>
<class name="Settings" href="settings.html" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="50">
<function name="Q_PROPERTY" fullname="Settings::Q_PROPERTY" href="settings.html#Q_PROPERTY" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="57" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="activeWallpaperCounterChanged" fullname="Settings::activeWallpaperCounterChanged" href="settings.html#activeWallpaperCounterChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="132" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void activeWallpaperCounterChanged(int activeWallpaperCounter)">
<parameter type="int" name="activeWallpaperCounter" default=""/>
</function>
<function name="allDataProtectionLoaded" fullname="Settings::allDataProtectionLoaded" href="settings.html#allDataProtectionLoaded" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="136" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void allDataProtectionLoaded(int dataProtectionText)">
<parameter type="int" name="dataProtectionText" default=""/>
</function>
<function name="allLicenseLoaded" fullname="Settings::allLicenseLoaded" href="settings.html#allLicenseLoaded" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="135" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void allLicenseLoaded(int licensesText)">
<parameter type="int" name="licensesText" default=""/>
</function>
<function name="autostart" fullname="Settings::autostart" href="settings.html#autostart" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="150" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="bool" signature="bool autostart() const"/>
<function name="checkForOtherFullscreenApplication" fullname="Settings::checkForOtherFullscreenApplication" href="settings.html#checkForOtherFullscreenApplication" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="141" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void checkForOtherFullscreenApplication()"/>
<function name="createDefaultConfig" fullname="Settings::createDefaultConfig" href="settings.html#createDefaultConfig" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="296" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void createDefaultConfig()"/>
<function name="decoder" fullname="Settings::decoder" href="settings.html#decoder" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="165" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int decoder() const"/>
<function name="decoderChanged" fullname="Settings::decoderChanged" href="settings.html#decoderChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="130" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void decoderChanged(int decoder)">
<parameter type="int" name="decoder" default=""/>
</function>
<function name="decreaseActiveWallpaperCounter" fullname="Settings::decreaseActiveWallpaperCounter" href="settings.html#decreaseActiveWallpaperCounter" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="268" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void decreaseActiveWallpaperCounter()"/>
<function name="getOfflineMode" fullname="Settings::getOfflineMode" href="settings.html#getOfflineMode" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="122" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="bool" signature="bool getOfflineMode() const"/>
<function name="getScreenPlayBasePath" fullname="Settings::getScreenPlayBasePath" href="settings.html#getScreenPlayBasePath" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="116" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int getScreenPlayBasePath() const"/>
<function name="getScreenPlayWidgetPath" fullname="Settings::getScreenPlayWidgetPath" href="settings.html#getScreenPlayWidgetPath" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="119" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int getScreenPlayWidgetPath() const"/>
<function name="hasWorkshopBannerSeenChanged" fullname="Settings::hasWorkshopBannerSeenChanged" href="settings.html#hasWorkshopBannerSeenChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="129" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void hasWorkshopBannerSeenChanged(bool hasWorkshopBannerSeen)">
<parameter type="bool" name="hasWorkshopBannerSeen" default=""/>
</function>
<function name="highPriorityStart" fullname="Settings::highPriorityStart" href="settings.html#highPriorityStart" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="155" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="bool" signature="bool highPriorityStart() const"/>
<function name="highPriorityStartChanged" fullname="Settings::highPriorityStartChanged" href="settings.html#highPriorityStartChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="126" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void highPriorityStartChanged(bool highPriorityStart)">
<parameter type="bool" name="highPriorityStart" default=""/>
</function>
<function name="increaseActiveWallpaperCounter" fullname="Settings::increaseActiveWallpaperCounter" href="settings.html#increaseActiveWallpaperCounter" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="262" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void increaseActiveWallpaperCounter()"/>
<function name="loadProject" fullname="Settings::loadProject" href="settings.html#loadProject" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="215" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int loadProject(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="localStoragePathChanged" fullname="Settings::localStoragePathChanged" href="settings.html#localStoragePathChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="128" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void localStoragePathChanged(int localStoragePath)">
<parameter type="int" name="localStoragePath" default=""/>
</function>
<function name="offlineMode" fullname="Settings::offlineMode" href="settings.html#offlineMode" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="111" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="bool" signature="bool offlineMode() const"/>
<function name="offlineModeChanged" fullname="Settings::offlineModeChanged" href="settings.html#offlineModeChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="134" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void offlineModeChanged(bool offlineMode)">
<parameter type="bool" name="offlineMode" default=""/>
</function>
<function name="pauseWallpaperWhenIngame" fullname="Settings::pauseWallpaperWhenIngame" href="settings.html#pauseWallpaperWhenIngame" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="106" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="bool" signature="bool pauseWallpaperWhenIngame() const"/>
<function name="pauseWallpaperWhenIngameChanged" fullname="Settings::pauseWallpaperWhenIngameChanged" href="settings.html#pauseWallpaperWhenIngameChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="133" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void pauseWallpaperWhenIngameChanged(bool pauseWallpaperWhenIngame)">
<parameter type="bool" name="pauseWallpaperWhenIngame" default=""/>
</function>
<function name="requestAllLDataProtection" fullname="Settings::requestAllLDataProtection" href="settings.html#requestAllLDataProtection" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="146" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void requestAllLDataProtection()"/>
<function name="requestAllLicenses" fullname="Settings::requestAllLicenses" href="settings.html#requestAllLicenses" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="145" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void requestAllLicenses()"/>
<function name="saveWallpaper" fullname="Settings::saveWallpaper" href="settings.html#saveWallpaper" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="147" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void saveWallpaper(int monitorIndex, int absoluteStoragePath, int properties, int type)">
<parameter type="int" name="monitorIndex" default=""/>
<parameter type="int" name="absoluteStoragePath" default=""/>
<parameter type="int" name="properties" default=""/>
<parameter type="int" name="type" default=""/>
</function>
<function name="sendStatistics" fullname="Settings::sendStatistics" href="settings.html#sendStatistics" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="160" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="bool" signature="bool sendStatistics() const"/>
<function name="sendStatisticsChanged" fullname="Settings::sendStatisticsChanged" href="settings.html#sendStatisticsChanged" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="127" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void sendStatisticsChanged(bool status)">
<parameter type="bool" name="status" default=""/>
</function>
<function name="setActiveWallpaperCounter" fullname="Settings::setActiveWallpaperCounter" href="settings.html#setActiveWallpaperCounter" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="253" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setActiveWallpaperCounter(int activeWallpaperCounter)">
<parameter type="int" name="activeWallpaperCounter" default=""/>
</function>
<function name="setAutostart" fullname="Settings::setAutostart" href="settings.html#setAutostart" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="170" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setAutostart(bool autostart)">
<parameter type="bool" name="autostart" default=""/>
</function>
<function name="setDecoder" fullname="Settings::setDecoder" href="settings.html#setDecoder" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="234" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setDecoder(int decoder)">
<parameter type="int" name="decoder" default=""/>
</function>
<function name="setGlobalFillMode" fullname="Settings::setGlobalFillMode" href="settings.html#setGlobalFillMode" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="143" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setGlobalFillMode(int fillMode)">
<parameter type="int" name="fillMode" default=""/>
</function>
<function name="setGlobalVolume" fullname="Settings::setGlobalVolume" href="settings.html#setGlobalVolume" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="142" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setGlobalVolume(float volume)">
<parameter type="float" name="volume" default=""/>
</function>
<function name="setHasWorkshopBannerSeen" fullname="Settings::setHasWorkshopBannerSeen" href="settings.html#setHasWorkshopBannerSeen" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="244" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setHasWorkshopBannerSeen(bool hasWorkshopBannerSeen)">
<parameter type="bool" name="hasWorkshopBannerSeen" default=""/>
</function>
<function name="setHighPriorityStart" fullname="Settings::setHighPriorityStart" href="settings.html#setHighPriorityStart" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="194" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setHighPriorityStart(bool highPriorityStart)">
<parameter type="bool" name="highPriorityStart" default=""/>
</function>
<function name="setLocalStoragePath" fullname="Settings::setLocalStoragePath" href="settings.html#setLocalStoragePath" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="217" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setLocalStoragePath(int localStoragePath)">
<parameter type="int" name="localStoragePath" default=""/>
</function>
<function name="setMainWindowVisible" fullname="Settings::setMainWindowVisible" href="settings.html#setMainWindowVisible" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="131" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setMainWindowVisible(bool visible)">
<parameter type="bool" name="visible" default=""/>
</function>
<function name="setOfflineMode" fullname="Settings::setOfflineMode" href="settings.html#setOfflineMode" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="286" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setOfflineMode(bool offlineMode)">
<parameter type="bool" name="offlineMode" default=""/>
</function>
<function name="setPauseWallpaperWhenIngame" fullname="Settings::setPauseWallpaperWhenIngame" href="settings.html#setPauseWallpaperWhenIngame" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="277" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setPauseWallpaperWhenIngame(bool pauseWallpaperWhenIngame)">
<parameter type="bool" name="pauseWallpaperWhenIngame" default=""/>
</function>
<function name="setPlayAll" fullname="Settings::setPlayAll" href="settings.html#setPlayAll" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="140" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setPlayAll(bool isPlaying)">
<parameter type="bool" name="isPlaying" default=""/>
</function>
<function name="setScreenPlayBasePath" fullname="Settings::setScreenPlayBasePath" href="settings.html#setScreenPlayBasePath" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="117" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setScreenPlayBasePath(int screenPlayBasePath)">
<parameter type="int" name="screenPlayBasePath" default=""/>
</function>
<function name="setScreenPlayWidgetPath" fullname="Settings::setScreenPlayWidgetPath" href="settings.html#setScreenPlayWidgetPath" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="120" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setScreenPlayWidgetPath(const int &amp;screenPlayWidgetPath)">
<parameter type="const int &amp;" name="screenPlayWidgetPath" default=""/>
</function>
<function name="setScreenPlayWindowPath" fullname="Settings::setScreenPlayWindowPath" href="settings.html#setScreenPlayWindowPath" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="104" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setScreenPlayWindowPath(const int &amp;screenPlayWindowPath)">
<parameter type="const int &amp;" name="screenPlayWindowPath" default=""/>
</function>
<function name="setSendStatistics" fullname="Settings::setSendStatistics" href="settings.html#setSendStatistics" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="204" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setSendStatistics(bool sendStatistics)">
<parameter type="bool" name="sendStatistics" default=""/>
</function>
<function name="setqSetting" fullname="Settings::setqSetting" href="settings.html#setqSetting" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="148" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setqSetting(const int &amp;key, const int &amp;value)">
<parameter type="const int &amp;" name="key" default=""/>
<parameter type="const int &amp;" name="value" default=""/>
</function>
<function name="setupWidgetAndWindowPaths" fullname="Settings::setupWidgetAndWindowPaths" href="settings.html#setupWidgetAndWindowPaths" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="297" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setupWidgetAndWindowPaths()"/>
<function name="writeSingleSettingConfig" fullname="Settings::writeSingleSettingConfig" href="settings.html#writeSingleSettingConfig" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="144" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void writeSingleSettingConfig(int name, int value)">
<parameter type="int" name="name" default=""/>
<parameter type="int" name="value" default=""/>
</function>
<function name="~Settings" fullname="Settings::~Settings" href="settings.html#dtor.Settings" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="55" meta="destructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="~Settings()"/>
<variable name="m_autostart" fullname="Settings::m_autostart" href="settings.html#m_autostart-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="317" type="bool" static="false"/>
<variable name="m_activeWallpaperCounter" fullname="Settings::m_activeWallpaperCounter" href="settings.html#m_activeWallpaperCounter-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="322" type="int" static="false"/>
<variable name="m_version" fullname="Settings::m_version" href="settings.html#m_version-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="299" type="int" static="false"/>
<variable name="m_translator" fullname="Settings::m_translator" href="settings.html#m_translator-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="301" type="int" static="false"/>
<variable name="m_offlineMode" fullname="Settings::m_offlineMode" href="settings.html#m_offlineMode-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="325" type="bool" static="false"/>
<variable name="m_decoder" fullname="Settings::m_decoder" href="settings.html#m_decoder-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="321" type="int" static="false"/>
<variable name="m_hasWorkshopBannerSeen" fullname="Settings::m_hasWorkshopBannerSeen" href="settings.html#m_hasWorkshopBannerSeen-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="315" type="bool" static="false"/>
<variable name="m_highPriorityStart" fullname="Settings::m_highPriorityStart" href="settings.html#m_highPriorityStart-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="318" type="bool" static="false"/>
<variable name="m_app" fullname="Settings::m_app" href="settings.html#m_app-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="323" type="int *" static="false"/>
<variable name="m_qSettings" fullname="Settings::m_qSettings" href="settings.html#m_qSettings-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="300" type="int" static="false"/>
<variable name="m_mlm" fullname="Settings::m_mlm" href="settings.html#m_mlm-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="304" type="MonitorListModel *" static="false"/>
<variable name="m_sdkc" fullname="Settings::m_sdkc" href="settings.html#m_sdkc-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="305" type="SDKConnector *" static="false"/>
<variable name="m_screenPlayWindowPath" fullname="Settings::m_screenPlayWindowPath" href="settings.html#m_screenPlayWindowPath-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="311" type="int" static="false"/>
<variable name="m_screenPlayWidgetPath" fullname="Settings::m_screenPlayWidgetPath" href="settings.html#m_screenPlayWidgetPath-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="312" type="int" static="false"/>
<enum name="LocalCopyResult" fullname="Settings::LocalCopyResult" href="settings.html#LocalCopyResult-enum" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="70">
<value name="NoError" value="0"/>
<value name="CopyError" value="1"/>
<value name="NotEnoughDiskSpace" value="2"/>
<value name="NameCollision" value="3"/>
</enum>
<variable name="m_sendStatistics" fullname="Settings::m_sendStatistics" href="settings.html#m_sendStatistics-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="319" type="bool" static="false"/>
<variable name="m_ilm" fullname="Settings::m_ilm" href="settings.html#m_ilm-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="303" type="InstalledListModel *" static="false"/>
<variable name="m_checkForOtherFullscreenApplicationTimer" fullname="Settings::m_checkForOtherFullscreenApplicationTimer" href="settings.html#m_checkForOtherFullscreenApplicationTimer-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="307" type="int *" static="false"/>
<variable name="m_plm" fullname="Settings::m_plm" href="settings.html#m_plm-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="302" type="ProfileListModel *" static="false"/>
<variable name="m_localStoragePath" fullname="Settings::m_localStoragePath" href="settings.html#m_localStoragePath-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="309" type="int" static="false"/>
<variable name="m_localSettingsPath" fullname="Settings::m_localSettingsPath" href="settings.html#m_localSettingsPath-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="310" type="int" static="false"/>
<variable name="m_screenPlayBasePath" fullname="Settings::m_screenPlayBasePath" href="settings.html#m_screenPlayBasePath-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="313" type="int" static="false"/>
<variable name="m_pauseWallpaperWhenIngame" fullname="Settings::m_pauseWallpaperWhenIngame" href="settings.html#m_pauseWallpaperWhenIngame-var" status="internal" access="private" location="settings.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/settings.h" lineno="316" type="bool" static="false"/>
</class>
<class name="MonitorListModel" href="monitorlistmodel.html" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="24">
<function name="data" fullname="MonitorListModel::data" href="monitorlistmodel.html#data" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="48" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int data(const int &amp;, int ) const override">
<parameter type="const int &amp;" name="" default=""/>
<parameter type="int" name="" default=""/>
</function>
<function name="getMonitorListItemAt" fullname="MonitorListModel::getMonitorListItemAt" href="monitorlistmodel.html#getMonitorListItemAt" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="50" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool getMonitorListItemAt(int position, Monitor *monitor)">
<parameter type="int" name="position" default=""/>
<parameter type="Monitor *" name="monitor" default=""/>
</function>
<function name="loadMonitors" fullname="MonitorListModel::loadMonitors" href="monitorlistmodel.html#loadMonitors" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="51" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void loadMonitors()"/>
<function name="reloadMonitors" fullname="MonitorListModel::reloadMonitors" href="monitorlistmodel.html#reloadMonitors" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="60" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void reloadMonitors()"/>
<function name="reset" fullname="MonitorListModel::reset" href="monitorlistmodel.html#reset" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="54" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void reset()"/>
<function name="roleNames" fullname="MonitorListModel::roleNames" href="monitorlistmodel.html#roleNames" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="30" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int roleNames() const override"/>
<function name="screenAdded" fullname="MonitorListModel::screenAdded" href="monitorlistmodel.html#screenAdded" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="52" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void screenAdded(int *screen)">
<parameter type="int *" name="screen" default=""/>
</function>
<function name="screenRemoved" fullname="MonitorListModel::screenRemoved" href="monitorlistmodel.html#screenRemoved" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="53" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void screenRemoved(int *screen)">
<parameter type="int *" name="screen" default=""/>
</function>
<function name="setNewActiveMonitor" fullname="MonitorListModel::setNewActiveMonitor" href="monitorlistmodel.html#setNewActiveMonitor" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="71" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setNewActiveMonitor(int index, int path)">
<parameter type="int" name="index" default=""/>
<parameter type="int" name="path" default=""/>
</function>
<function name="setWallpaperActiveMonitor" fullname="MonitorListModel::setWallpaperActiveMonitor" href="monitorlistmodel.html#setWallpaperActiveMonitor" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="56" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setWallpaperActiveMonitor(int *screen, int fullPreviewImagePath)">
<parameter type="int *" name="screen" default=""/>
<parameter type="int" name="fullPreviewImagePath" default=""/>
</function>
<function name="size" fullname="MonitorListModel::size" href="monitorlistmodel.html#size" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="61" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int size()"/>
<function name="wallpaperRemoved" fullname="MonitorListModel::wallpaperRemoved" href="monitorlistmodel.html#wallpaperRemoved" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="62" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void wallpaperRemoved()"/>
<variable name="m_monitorList" fullname="MonitorListModel::m_monitorList" href="monitorlistmodel.html#m_monitorList-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="65" type="int" static="false"/>
<variable name="m_qGuiApplication" fullname="MonitorListModel::m_qGuiApplication" href="monitorlistmodel.html#m_qGuiApplication-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="66" type="int *" static="false"/>
<enum name="MonitorRole" fullname="MonitorListModel::MonitorRole" href="monitorlistmodel.html#MonitorRole-enum" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="32">
<value name="IDRole" value="0"/>
<value name="NameRole" value="1"/>
<value name="SizeRole" value="2"/>
<value name="AvailableGeometryRole" value="3"/>
<value name="AvailableVirtualGeometryRole" value="4"/>
<value name="NumberRole" value="5"/>
<value name="GeometryRole" value="6"/>
<value name="ModelRole" value="7"/>
<value name="ManufacturerRole" value="8"/>
<value name="PreviewImageRole" value="9"/>
<value name="IsWallpaperActiveRole" value="10"/>
</enum>
</class>
<class name="InstalledListModel" href="installedlistmodel.html" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="29">
<function name="Q_PROPERTY" fullname="InstalledListModel::Q_PROPERTY" href="installedlistmodel.html#Q_PROPERTY" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="42" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="absoluteStoragePathChanged" fullname="InstalledListModel::absoluteStoragePathChanged" href="installedlistmodel.html#absoluteStoragePathChanged" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="94" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void absoluteStoragePathChanged(int absoluteStoragePath)">
<parameter type="int" name="absoluteStoragePath" default=""/>
</function>
<function name="addInstalledItem" fullname="InstalledListModel::addInstalledItem" href="installedlistmodel.html#addInstalledItem" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="95" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void addInstalledItem(const int QJsonObject, const int )">
<parameter type="const int" name="QJsonObject" default=""/>
<parameter type="const int" name="" default=""/>
</function>
<function name="append" fullname="InstalledListModel::append" href="installedlistmodel.html#append" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="70" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void append(const int QJsonObject, const int )">
<parameter type="const int" name="QJsonObject" default=""/>
<parameter type="const int" name="" default=""/>
</function>
<function name="data" fullname="InstalledListModel::data" href="installedlistmodel.html#data" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="37" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int data(const int &amp;, int ) const override">
<parameter type="const int &amp;" name="" default=""/>
<parameter type="int" name="" default=""/>
</function>
<function name="get" fullname="InstalledListModel::get" href="installedlistmodel.html#get" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="69" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int get(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="getAmountItemLoaded" fullname="InstalledListModel::getAmountItemLoaded" href="installedlistmodel.html#getAmountItemLoaded" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="79" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int getAmountItemLoaded()"/>
<function name="getProjectByAbsoluteStoragePath" fullname="InstalledListModel::getProjectByAbsoluteStoragePath" href="installedlistmodel.html#getProjectByAbsoluteStoragePath" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="40" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool getProjectByAbsoluteStoragePath(int *path, ProjectFile *spf)">
<parameter type="int *" name="path" default=""/>
<parameter type="ProjectFile *" name="spf" default=""/>
</function>
<function name="installedLoadingFinished" fullname="InstalledListModel::installedLoadingFinished" href="installedlistmodel.html#installedLoadingFinished" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="96" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void installedLoadingFinished()"/>
<function name="isLoadingContentChanged" fullname="InstalledListModel::isLoadingContentChanged" href="installedlistmodel.html#isLoadingContentChanged" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="98" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void isLoadingContentChanged(bool isLoadingContent)">
<parameter type="bool" name="isLoadingContent" default=""/>
</function>
<function name="reset" fullname="InstalledListModel::reset" href="installedlistmodel.html#reset" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="80" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void reset()"/>
<function name="roleNames" fullname="InstalledListModel::roleNames" href="installedlistmodel.html#roleNames" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="38" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int roleNames() const override"/>
<function name="rowCount" fullname="InstalledListModel::rowCount" href="installedlistmodel.html#rowCount" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="36" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int rowCount(const int &amp;parent) const override">
<parameter type="const int &amp;" name="parent" default="..."/>
</function>
<function name="setIsLoadingContent" fullname="InstalledListModel::setIsLoadingContent" href="installedlistmodel.html#setIsLoadingContent" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="82" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setIsLoadingContent(bool isLoadingContent)">
<parameter type="bool" name="isLoadingContent" default=""/>
</function>
<function name="setScreenToVideo" fullname="InstalledListModel::setScreenToVideo" href="installedlistmodel.html#setScreenToVideo" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="93" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setScreenToVideo(int absolutePath)">
<parameter type="int" name="absolutePath" default=""/>
</function>
<function name="setabsoluteStoragePath" fullname="InstalledListModel::setabsoluteStoragePath" href="installedlistmodel.html#setabsoluteStoragePath" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="71" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setabsoluteStoragePath(int absoluteStoragePath)">
<parameter type="int" name="absoluteStoragePath" default=""/>
</function>
<variable name="InstalledRole" fullname="InstalledListModel::InstalledRole" href="installedlistmodel.html#InstalledRole-var" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="55" type="int" static="false"/>
<variable name="m_screenPlayFiles" fullname="InstalledListModel::m_screenPlayFiles" href="installedlistmodel.html#m_screenPlayFiles-var" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="101" type="int" static="false"/>
<variable name="m_absoluteStoragePath" fullname="InstalledListModel::m_absoluteStoragePath" href="installedlistmodel.html#m_absoluteStoragePath-var" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="102" type="int" static="false"/>
<variable name="m_loadScreenFuture" fullname="InstalledListModel::m_loadScreenFuture" href="installedlistmodel.html#m_loadScreenFuture-var" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="103" type="int" static="false"/>
<variable name="m_isLoadingContent" fullname="InstalledListModel::m_isLoadingContent" href="installedlistmodel.html#m_isLoadingContent-var" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="107" type="bool" static="false"/>
<variable name="m_loadScreenWatcher" fullname="InstalledListModel::m_loadScreenWatcher" href="installedlistmodel.html#m_loadScreenWatcher-var" status="internal" access="private" location="installedlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistmodel.h" lineno="104" type="int" static="false"/>
</class>
<class name="ProjectFile" href="projectfile.html" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="16">
<function name="ProjectFile" fullname="ProjectFile::ProjectFile" href="projectfile.html#ProjectFile" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="19" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="ProjectFile(int obj, int folderName, int absolutePath)">
<parameter type="int" name="obj" default=""/>
<parameter type="int" name="folderName" default=""/>
<parameter type="int" name="absolutePath" default=""/>
</function>
<function name="ProjectFile" fullname="ProjectFile::ProjectFile" href="projectfile.html#ProjectFile-1" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="20" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" overload="true" overload-number="1" type="" signature="ProjectFile()"/>
<function name="~ProjectFile" fullname="ProjectFile::~ProjectFile" href="projectfile.html#dtor.ProjectFile" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="21" meta="destructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="~ProjectFile()"/>
<variable name="m_description" fullname="ProjectFile::m_description" href="projectfile.html#m_description-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="23" type="int" static="false"/>
<variable name="m_file" fullname="ProjectFile::m_file" href="projectfile.html#m_file-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="24" type="int" static="false"/>
<variable name="m_preview" fullname="ProjectFile::m_preview" href="projectfile.html#m_preview-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="25" type="int" static="false"/>
<variable name="m_type" fullname="ProjectFile::m_type" href="projectfile.html#m_type-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="30" type="int" static="false"/>
<variable name="m_workshopID" fullname="ProjectFile::m_workshopID" href="projectfile.html#m_workshopID-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="32" type="int" static="false"/>
<variable name="m_settings" fullname="ProjectFile::m_settings" href="projectfile.html#m_settings-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="31" type="int" static="false"/>
<variable name="m_tags" fullname="ProjectFile::m_tags" href="projectfile.html#m_tags-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="34" type="int" static="false"/>
<variable name="m_folderId" fullname="ProjectFile::m_folderId" href="projectfile.html#m_folderId-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="28" type="int" static="false"/>
<variable name="m_absoluteStoragePath" fullname="ProjectFile::m_absoluteStoragePath" href="projectfile.html#m_absoluteStoragePath-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="29" type="int" static="false"/>
<variable name="m_title" fullname="ProjectFile::m_title" href="projectfile.html#m_title-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="27" type="int" static="false"/>
<variable name="m_previewGIF" fullname="ProjectFile::m_previewGIF" href="projectfile.html#m_previewGIF-var" status="internal" access="private" location="projectfile.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectfile.h" lineno="26" type="int" static="false"/>
</class>
<class name="ScreenPlay" href="screenplay.html" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="27">
<function name="createWidget" fullname="ScreenPlay::createWidget" href="screenplay.html#createWidget" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="47" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void createWidget(int absoluteStoragePath, int previewImage)">
<parameter type="int" name="absoluteStoragePath" default=""/>
<parameter type="int" name="previewImage" default=""/>
</function>
<function name="generateID" fullname="ScreenPlay::generateID" href="screenplay.html#generateID" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="54" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int generateID()"/>
<function name="getMonitorByAppID" fullname="ScreenPlay::getMonitorByAppID" href="screenplay.html#getMonitorByAppID" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="53" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int getMonitorByAppID(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="projectSettingsListModelFound" fullname="ScreenPlay::projectSettingsListModelFound" href="screenplay.html#projectSettingsListModelFound" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="42" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void projectSettingsListModelFound(ProjectSettingsListModel *li, int type)">
<parameter type="ProjectSettingsListModel *" name="li" default=""/>
<parameter type="int" name="type" default=""/>
</function>
<function name="projectSettingsListModelNotFound" fullname="ScreenPlay::projectSettingsListModelNotFound" href="screenplay.html#projectSettingsListModelNotFound" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="43" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void projectSettingsListModelNotFound()"/>
<function name="removeAllWallpaper" fullname="ScreenPlay::removeAllWallpaper" href="screenplay.html#removeAllWallpaper" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="48" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void removeAllWallpaper()"/>
<function name="removeWallpaperAt" fullname="ScreenPlay::removeWallpaperAt" href="screenplay.html#removeWallpaperAt" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="52" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void removeWallpaperAt(int at)">
<parameter type="int" name="at" default=""/>
</function>
<function name="requestProjectSettingsListModelAt" fullname="ScreenPlay::requestProjectSettingsListModelAt" href="screenplay.html#requestProjectSettingsListModelAt" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="49" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void requestProjectSettingsListModelAt(int index)">
<parameter type="int" name="index" default=""/>
</function>
<function name="setAllWallpaperValue" fullname="ScreenPlay::setAllWallpaperValue" href="screenplay.html#setAllWallpaperValue" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="51" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setAllWallpaperValue(int key, int value)">
<parameter type="int" name="key" default=""/>
<parameter type="int" name="value" default=""/>
</function>
<function name="setWallpaperValue" fullname="ScreenPlay::setWallpaperValue" href="screenplay.html#setWallpaperValue" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="50" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setWallpaperValue(int at, int key, int value)">
<parameter type="int" name="at" default=""/>
<parameter type="int" name="key" default=""/>
<parameter type="int" name="value" default=""/>
</function>
<function name="settings" fullname="ScreenPlay::settings" href="screenplay.html#settings" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="32" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="Settings *" signature="Settings * settings() const"/>
<variable name="m_settings" fullname="ScreenPlay::m_settings" href="screenplay.html#m_settings-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="35" type="Settings *" static="false"/>
<variable name="m_qGuiApplication" fullname="ScreenPlay::m_qGuiApplication" href="screenplay.html#m_qGuiApplication-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="37" type="int *" static="false"/>
<variable name="m_mlm" fullname="ScreenPlay::m_mlm" href="screenplay.html#m_mlm-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="36" type="MonitorListModel *" static="false"/>
<variable name="m_sdkc" fullname="ScreenPlay::m_sdkc" href="screenplay.html#m_sdkc-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="38" type="SDKConnector *" static="false"/>
<variable name="m_ilm" fullname="ScreenPlay::m_ilm" href="screenplay.html#m_ilm-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="34" type="InstalledListModel *" static="false"/>
</class>
<class name="QMLUtilities" href="qmlutilities.html" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="19">
<function name="fixWindowsPath" fullname="QMLUtilities::fixWindowsPath" href="qmlutilities.html#fixWindowsPath" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="36" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int fixWindowsPath(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="openFolderInExplorer" fullname="QMLUtilities::openFolderInExplorer" href="qmlutilities.html#openFolderInExplorer" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="34" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void openFolderInExplorer(int url)">
<parameter type="int" name="url" default=""/>
</function>
<function name="requestNavigationActive" fullname="QMLUtilities::requestNavigationActive" href="qmlutilities.html#requestNavigationActive" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="26" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void requestNavigationActive(bool isActive)">
<parameter type="bool" name="isActive" default=""/>
</function>
<function name="requestToggleWallpaperConfiguration" fullname="QMLUtilities::requestToggleWallpaperConfiguration" href="qmlutilities.html#requestToggleWallpaperConfiguration" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="27" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void requestToggleWallpaperConfiguration()"/>
<function name="setNavigationActive" fullname="QMLUtilities::setNavigationActive" href="qmlutilities.html#setNavigationActive" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="31" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setNavigationActive(bool isActive)">
<parameter type="bool" name="isActive" default=""/>
</function>
<function name="setToggleWallpaperConfiguration" fullname="QMLUtilities::setToggleWallpaperConfiguration" href="qmlutilities.html#setToggleWallpaperConfiguration" status="internal" access="private" location="qmlutilities.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/qmlutilities.h" lineno="33" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void setToggleWallpaperConfiguration()"/>
</class>
<class name="ScreenPlayWidget" href="screenplaywidget.html" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="202">
<function name="Q_PROPERTY" fullname="ScreenPlayWidget::Q_PROPERTY" href="screenplaywidget.html#Q_PROPERTY" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="205" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="appIDChanged" fullname="ScreenPlayWidget::appIDChanged" href="screenplaywidget.html#appIDChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="272" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void appIDChanged(int appID)">
<parameter type="int" name="appID" default=""/>
</function>
<function name="fullPathChanged" fullname="ScreenPlayWidget::fullPathChanged" href="screenplaywidget.html#fullPathChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="270" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void fullPathChanged(int fullPath)">
<parameter type="int" name="fullPath" default=""/>
</function>
<function name="positionChanged" fullname="ScreenPlayWidget::positionChanged" href="screenplaywidget.html#positionChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="268" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void positionChanged(int position)">
<parameter type="int" name="position" default=""/>
</function>
<function name="previewImageChanged" fullname="ScreenPlayWidget::previewImageChanged" href="screenplaywidget.html#previewImageChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="266" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void previewImageChanged(int previewImage)">
<parameter type="int" name="previewImage" default=""/>
</function>
<variable name="m_previewImage" fullname="ScreenPlayWidget::m_previewImage" href="screenplaywidget.html#m_previewImage-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="323" type="int" static="false"/>
<variable name="m_position" fullname="ScreenPlayWidget::m_position" href="screenplaywidget.html#m_position-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="324" type="int" static="false"/>
<variable name="m_process" fullname="ScreenPlayWidget::m_process" href="screenplaywidget.html#m_process-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="325" type="int *" static="false"/>
<variable name="m_appID" fullname="ScreenPlayWidget::m_appID" href="screenplaywidget.html#m_appID-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="327" type="int" static="false"/>
<variable name="m_fullPath" fullname="ScreenPlayWidget::m_fullPath" href="screenplaywidget.html#m_fullPath-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="326" type="int" static="false"/>
</class>
<qmlclass name="main" qml-module-name="main" href="qml-main.html" status="internal" access="private" location="main.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/main.qml" lineno="12" title="main" fulltitle="main" subtitle="">
<function name="switchPage" fullname="main::switchPage" href="qml-main.html#switchPage-method" status="internal" access="private" location="main.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/main.qml" lineno="28" meta="qmlmethod"/>
</qmlclass>
<class name="Monitor" href="monitor.html" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="74">
<function name="Monitor" fullname="Monitor::Monitor" href="monitor.html#Monitor" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="77" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="Monitor()"/>
<function name="Monitor" fullname="Monitor::Monitor" href="monitor.html#Monitor-1" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="78" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" overload="true" overload-number="1" type="" signature="Monitor(int manufacturer, int model, int name, int size, int availableGeometry, int number, int availableVirtualGeometry, int geometry, int *screen)">
<parameter type="int" name="manufacturer" default=""/>
<parameter type="int" name="model" default=""/>
<parameter type="int" name="name" default=""/>
<parameter type="int" name="size" default=""/>
<parameter type="int" name="availableGeometry" default=""/>
<parameter type="int" name="number" default=""/>
<parameter type="int" name="availableVirtualGeometry" default=""/>
<parameter type="int" name="geometry" default=""/>
<parameter type="int *" name="screen" default=""/>
</function>
<variable name="m_id" fullname="Monitor::m_id" href="monitor.html#m_id-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="80" type="int" static="false"/>
<variable name="m_size" fullname="Monitor::m_size" href="monitor.html#m_size-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="84" type="int" static="false"/>
<variable name="m_availableGeometry" fullname="Monitor::m_availableGeometry" href="monitor.html#m_availableGeometry-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="85" type="int" static="false"/>
<variable name="m_number" fullname="Monitor::m_number" href="monitor.html#m_number-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="88" type="int" static="false"/>
<variable name="m_model" fullname="Monitor::m_model" href="monitor.html#m_model-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="83" type="int" static="false"/>
<variable name="m_isVirtualDesktop" fullname="Monitor::m_isVirtualDesktop" href="monitor.html#m_isVirtualDesktop-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="89" type="bool" static="false"/>
<variable name="m_name" fullname="Monitor::m_name" href="monitor.html#m_name-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="81" type="int" static="false"/>
<variable name="m_availableVirtualGeometry" fullname="Monitor::m_availableVirtualGeometry" href="monitor.html#m_availableVirtualGeometry-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="86" type="int" static="false"/>
<variable name="m_manufacturer" fullname="Monitor::m_manufacturer" href="monitor.html#m_manufacturer-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="82" type="int" static="false"/>
<variable name="m_geometry" fullname="Monitor::m_geometry" href="monitor.html#m_geometry-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="87" type="int" static="false"/>
<variable name="m_isWallpaperActive" fullname="Monitor::m_isWallpaperActive" href="monitor.html#m_isWallpaperActive-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="91" type="bool" static="false"/>
<variable name="m_wallpaperPreviewPath" fullname="Monitor::m_wallpaperPreviewPath" href="monitor.html#m_wallpaperPreviewPath-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="92" type="int" static="false"/>
<variable name="m_screen" fullname="Monitor::m_screen" href="monitor.html#m_screen-var" status="internal" access="private" location="monitorlistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/monitorlistmodel.h" lineno="94" type="int *" static="false"/>
</class>
<class name="InstalledListFilter" href="installedlistfilter.html" status="internal" access="private" location="installedlistfilter.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistfilter.h" lineno="13">
<function name="resetFilter" fullname="InstalledListFilter::resetFilter" href="installedlistfilter.html#resetFilter" status="internal" access="private" location="installedlistfilter.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistfilter.h" lineno="21" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void resetFilter()"/>
<function name="sortByName" fullname="InstalledListFilter::sortByName" href="installedlistfilter.html#sortByName" status="internal" access="private" location="installedlistfilter.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/installedlistfilter.h" lineno="20" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void sortByName(int name)">
<parameter type="int" name="name" default=""/>
</function>
</class>
<class name="ProjectSettingsListModel" href="projectsettingslistmodel.html" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="20">
<function name="ProjectSettingsListModel" fullname="ProjectSettingsListModel::ProjectSettingsListModel" href="projectsettingslistmodel.html#ProjectSettingsListModel" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="27" meta="constructor" virtual="non" const="false" static="false" final="false" override="false" type="" signature="ProjectSettingsListModel()"/>
<function name="data" fullname="ProjectSettingsListModel::data" href="projectsettingslistmodel.html#data" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="29" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int data(const int &amp;, int ) const override">
<parameter type="const int &amp;" name="" default=""/>
<parameter type="int" name="" default=""/>
</function>
<function name="roleNames" fullname="ProjectSettingsListModel::roleNames" href="projectsettingslistmodel.html#roleNames" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="30" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int roleNames() const override"/>
<function name="rowCount" fullname="ProjectSettingsListModel::rowCount" href="projectsettingslistmodel.html#rowCount" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="28" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int rowCount(const int &amp;parent) const override">
<parameter type="const int &amp;" name="parent" default="..."/>
</function>
<variable name="m_projectSettings" fullname="ProjectSettingsListModel::m_projectSettings" href="projectsettingslistmodel.html#m_projectSettings-var" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="46" type="int" static="false"/>
<enum name="ProjectSettingsRole" fullname="ProjectSettingsListModel::ProjectSettingsRole" href="projectsettingslistmodel.html#ProjectSettingsRole-enum" status="internal" access="private" location="projectsettingslistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/projectsettingslistmodel.h" lineno="32">
<value name="NameRole" value="0"/>
<value name="IsHeadlineRole" value="1"/>
<value name="ValueRole" value="2"/>
</enum>
</class>
<class name="ScreenPlayWallpaper" href="screenplaywallpaper.html" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="61">
<function name="Q_PROPERTY" fullname="ScreenPlayWallpaper::Q_PROPERTY" href="screenplaywallpaper.html#Q_PROPERTY" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="64" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="int" signature="int Q_PROPERTY(int )">
<parameter type="int" name="" default=""/>
</function>
<function name="appID" fullname="ScreenPlayWallpaper::appID" href="screenplaywallpaper.html#appID" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="125" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int appID() const"/>
<function name="appIDChanged" fullname="ScreenPlayWallpaper::appIDChanged" href="screenplaywallpaper.html#appIDChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="140" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void appIDChanged(int appID)">
<parameter type="int" name="appID" default=""/>
</function>
<function name="previewImage" fullname="ScreenPlayWallpaper::previewImage" href="screenplaywallpaper.html#previewImage" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="120" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int previewImage() const"/>
<function name="previewImageChanged" fullname="ScreenPlayWallpaper::previewImageChanged" href="screenplaywallpaper.html#previewImageChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="138" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void previewImageChanged(int previewImage)">
<parameter type="int" name="previewImage" default=""/>
</function>
<function name="projectPath" fullname="ScreenPlayWallpaper::projectPath" href="screenplaywallpaper.html#projectPath" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="115" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int projectPath() const"/>
<function name="projectPathChanged" fullname="ScreenPlayWallpaper::projectPathChanged" href="screenplaywallpaper.html#projectPathChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="137" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void projectPathChanged(int projectPath)">
<parameter type="int" name="projectPath" default=""/>
</function>
<function name="projectSettingsListModelAt" fullname="ScreenPlayWallpaper::projectSettingsListModelAt" href="screenplaywallpaper.html#projectSettingsListModelAt" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="139" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void projectSettingsListModelAt(ProjectSettingsListModel *li)">
<parameter type="ProjectSettingsListModel *" name="li" default=""/>
</function>
<function name="screenNumber" fullname="ScreenPlayWallpaper::screenNumber" href="screenplaywallpaper.html#screenNumber" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="110" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int screenNumber() const"/>
<function name="type" fullname="ScreenPlayWallpaper::type" href="screenplaywallpaper.html#type" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="130" meta="plain" virtual="non" const="true" static="false" final="false" override="false" type="int" signature="int type() const"/>
<function name="typeChanged" fullname="ScreenPlayWallpaper::typeChanged" href="screenplaywallpaper.html#typeChanged" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="141" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void typeChanged(int type)">
<parameter type="int" name="type" default=""/>
</function>
<variable name="m_previewImage" fullname="ScreenPlayWallpaper::m_previewImage" href="screenplaywallpaper.html#m_previewImage-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="193" type="int" static="false"/>
<variable name="m_appID" fullname="ScreenPlayWallpaper::m_appID" href="screenplaywallpaper.html#m_appID-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="198" type="int" static="false"/>
<variable name="m_type" fullname="ScreenPlayWallpaper::m_type" href="screenplaywallpaper.html#m_type-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="199" type="int" static="false"/>
<variable name="m_projectPath" fullname="ScreenPlayWallpaper::m_projectPath" href="screenplaywallpaper.html#m_projectPath-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="192" type="int" static="false"/>
<variable name="m_projectSettingsListModel" fullname="ScreenPlayWallpaper::m_projectSettingsListModel" href="screenplaywallpaper.html#m_projectSettingsListModel-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="196" type="int" static="false"/>
<variable name="m_process" fullname="ScreenPlayWallpaper::m_process" href="screenplaywallpaper.html#m_process-var" status="internal" access="private" location="screenplay.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/screenplay.h" lineno="194" type="int *" static="false"/>
</class>
<qmlclass name="Background" qml-module-name="Background" href="qml-background.html" status="internal" access="private" location="Background.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Background.qml" lineno="6" title="Background" fulltitle="Background" subtitle="">
<qmlproperty name="myDate" fullname="Background::myDate" href="qml-background.html#myDate-prop" status="internal" access="private" location="Background.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Background.qml" lineno="23" type="var" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="ImageSelector" qml-module-name="ImageSelector" href="qml-imageselector.html" status="active" access="public" since="ScreenPlay 0.2" title="ImageSelector" fulltitle="ImageSelector" subtitle="" brief="A image selector with popup preview">
<contents name="example-usage" title="Example Usage" level="1"/>
<qmlproperty name="imageSource" fullname="ImageSelector::imageSource" href="qml-imageselector.html#imageSource-prop" status="active" access="public" type="string" attached="false" writable="true"/>
</qmlclass>
<qmlclass name="Tag" qml-module-name="Tag" href="qml-tag.html" status="internal" access="private" location="Tag.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Common/Tag.qml" lineno="5" title="Tag" fulltitle="Tag" subtitle="">
<function name="removeThis" fullname="Tag::removeThis" href="qml-tag.html#removeThis-signal" status="internal" access="private" location="Tag.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Common/Tag.qml" lineno="12" meta="qmlsignal"/>
<qmlproperty name="itemIndex" fullname="Tag::itemIndex" href="qml-tag.html#itemIndex-prop" status="internal" access="private" location="Tag.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Common/Tag.qml" lineno="10" type="int" attached="false" writable="true"/>
<qmlproperty name="text" fullname="Tag::text" href="qml-tag.html#text-prop" status="internal" access="private" location="Tag.qml" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/qml/Common/Tag.qml" lineno="11" type="alias" attached="false" writable="true"/>
</qmlclass>
<class name="ProfileListModel" href="profilelistmodel.html" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="23">
<function name="data" fullname="ProfileListModel::data" href="profilelistmodel.html#data" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="36" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int data(const int &amp;, int ) const override">
<parameter type="const int &amp;" name="" default=""/>
<parameter type="int" name="" default=""/>
</function>
<function name="getProfileByName" fullname="ProfileListModel::getProfileByName" href="profilelistmodel.html#getProfileByName" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="39" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="bool" signature="bool getProfileByName(int id, Profile *profile)">
<parameter type="int" name="id" default=""/>
<parameter type="Profile *" name="profile" default=""/>
</function>
<function name="loadProfiles" fullname="ProfileListModel::loadProfiles" href="profilelistmodel.html#loadProfiles" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="38" meta="plain" virtual="non" const="false" static="false" final="false" override="false" type="void" signature="void loadProfiles()"/>
<function name="roleNames" fullname="ProfileListModel::roleNames" href="profilelistmodel.html#roleNames" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="37" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int roleNames() const override"/>
<function name="rowCount" fullname="ProfileListModel::rowCount" href="profilelistmodel.html#rowCount" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="35" meta="plain" virtual="non" const="true" static="false" final="false" override="true" type="int" signature="int rowCount(const int &amp;parent) const override">
<parameter type="const int &amp;" name="parent" default="..."/>
</function>
<enum name="RoleNames" fullname="ProfileListModel::RoleNames" href="profilelistmodel.html#RoleNames-enum" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="29">
<value name="NameRole" value="0"/>
<value name="NumberRole" value="1"/>
</enum>
<variable name="m_localStoragePath" fullname="ProfileListModel::m_localStoragePath" href="profilelistmodel.html#m_localStoragePath-var" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="40" type="int" static="false"/>
<variable name="m_roleNames" fullname="ProfileListModel::m_roleNames" href="profilelistmodel.html#m_roleNames-var" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="43" type="int" static="false"/>
<variable name="m_profileList" fullname="ProfileListModel::m_profileList" href="profilelistmodel.html#m_profileList-var" status="internal" access="private" location="profilelistmodel.h" filepath="C:/Users/Eli/Code/Qt/ScreenPlayInternal/ScreenPlay/ScreenPlay/src/profilelistmodel.h" lineno="44" type="int" static="false"/>
</class>
<qmlmodule name="&quot;Common&quot;" qml-module-name="&quot;Common&quot;" qml-module-version="." href="common-qmlmodule.html" status="internal" seen="false" title="" members="ImageSelector"/>
</namespace>
</INDEX>

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- ImageSelector.qml -->
<title>List of All Members for ImageSelector | Qt </title>
<link rel="stylesheet" type="text/css" href="../css/style.css"/>
<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"/>
</head>
<body>
<div class="container-fullwidth nav"><p class="logo">ScreenPlay Code Docs</p></div>
<div class="wrapper container">
<div class="sidebar"><div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">List of All Members for ImageSelector</h1>
<p>This is the complete list of members for <a href="qml-imageselector.html">ImageSelector</a>, including inherited members.</p>
<hr/><p class="footer center">Copyright Aimber GBR</p>
</div></body>
</html>

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- ImageSelector.qml -->
<title>ImageSelector QML Type | Qt </title>
<link rel="stylesheet" type="text/css" href="../css/style.css"/>
<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"/>
</head>
<body>
<div class="container-fullwidth nav"><p class="logo">ScreenPlay Code Docs</p></div>
<div class="wrapper container">
<div class="sidebar">
<div class="toc">
<h3><a name="toc">Contents</a></h3>
<ul>
<li class="level1"><a href="#details">Detailed Description</a></li>
<li class="level2"><a href="#setting-default-text-and-capitalization">Setting default text and capitalization</a></li>
</ul>
</div>
<div class="sidebar-content" id="sidebar-content"></div></div>
<h1 class="title">ImageSelector QML Type</h1>
<span class="subtitle"></span>
<!-- $$$ImageSelector-brief -->
<p>A image selector with popup preview. <a href="#details">More...</a></p>
<!-- @@@ImageSelector -->
<div class="table"><table class="alignedsummary">
<tr><td class="memItemLeft rightAlign topAlign"> Import Statement:</td><td class="memItemRight bottomAlign"> import </td></tr></table></div><ul>
<li><a href="qml-imageselector-members.html">List of all members, including inherited members</a></li>
</ul>
<!-- $$$ImageSelector-description -->
<a name="details"></a>
<h2 id="details">Detailed Description</h2>
<p>Test</p>
<p class="centerAlign"><img src="images/ImageSelectorPreview.png" alt="" /></p><a name="setting-default-text-and-capitalization"></a>
<h2 id="setting-default-text-and-capitalization">Setting default text and capitalization</h2>
<p>Test</p>
<pre class="qml"><span class="type"><a href="qml-imageselector.html">ImageSelector</a></span> {
}</pre>
<!-- @@@ImageSelector -->
<hr/><p class="footer center">Copyright Aimber GBR</p>
</div></body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- ImageSelector.qml -->
<title>ImageSelector QML Type | Qt </title>
<link rel="stylesheet" type="text/css" href="css/style.css"/>
<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"/>
</head>
<body>
<div class="container-fullwidth nav">
<div class="container navWrapper"><span class="logo">ScreenPlay Code Docs </span>
<span class="navHome"><a href= "index.html">Home</a></span>
</div>
</div>
<div class="wrapper container">
<h2>C++</h2>
<hr/>
<ul>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
</ul>
<h2>QML</h2>
<hr/>
<ul>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
<li><a href="html/qml-imageselector.html">Image Selector</a></li>
</ul>
<hr/>
<p class="footer center">Copyright Aimber GBR</p>
</div>
</body>
</html>

View File

@ -30,7 +30,6 @@ int main(int argc, char* argv[])
QGuiApplication::setApplicationVersion("0.2.0");
QGuiApplication app(argc, argv);
app.setQuitOnLastWindowClosed(false);
app.setWindowIcon(QIcon(":/assets/icons/favicon.ico"));
@ -54,6 +53,7 @@ int main(int argc, char* argv[])
ProfileListModel profileListModel;
SDKConnector sdkConnector;
// Create settings in the end because for now it depends on
// such things as the profile list model to complete
// It will also set the m_absoluteStoragePath in profileListModel and installedListModel

View File

@ -0,0 +1,191 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.12
import Qt.labs.platform 1.1
/*!
\qmltype Image Selector
\brief A image selector with popup preview.
Test
\image ImageSelectorPreview.png
\section1 Setting default text and capitalization
Test
\qml
ImageSelector {
}
\endqml
*/
Item {
id: imageSelector
height: 70
width: parent.width
state: "nothingSelected"
property string imageSource
onImageSourceChanged: {
if (imageSource === "") {
img.source = ""
txtName.text = ""
imageSelector.state = "nothingSelected"
} else {
img.source = imageSource
imageSelector.state = "imageSelected"
}
}
Rectangle {
id: rectangle
color: "#F0F0F0"
radius: 3
clip: true
anchors {
fill: parent
margins: 3
}
Rectangle {
id: imgWrapper
width: 70
radius: 3
clip: true
color: Material.color(Material.Grey, Material.Shade700)
anchors {
top: parent.top
left: parent.left
bottom: parent.bottom
margins: 10
}
Image {
id: img
anchors.fill: parent
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: {
if (imageSource !== "") {
popup.open()
}
}
}
}
Popup {
id: popup
width: 902
anchors.centerIn: Overlay.overlay
height: 507
Image {
source: imageSource
anchors.fill: parent
}
MouseArea {
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: popup.close()
}
}
Text {
id: txtName
clip: true
font.pointSize: 12
font.family: "Roboto"
wrapMode: Text.WordWrap
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
anchors {
top: parent.top
left: imgWrapper.right
right: btnClear.left
bottom: parent.bottom
margins: 10
}
}
Button {
id: btnClear
text: qsTr("Clear")
Material.background: Material.Grey
Material.foreground: "white"
anchors {
top: parent.top
right: btnOpen.left
bottom: parent.bottom
margins: 5
}
onClicked: imageSource = ""
}
Button {
id: btnOpen
text: qsTr("Open Image")
Material.background: Material.Orange
Material.foreground: "white"
anchors {
top: parent.top
right: parent.right
rightMargin: 10
bottom: parent.bottom
margins: 5
}
onClicked: fileDialog.open()
}
FileDialog {
id: fileDialog
title: "Please choose a file"
fileMode: FileDialog.OpenFile
nameFilters: []
onAccepted: {
imageSource = fileDialog.file
txtName.text = fileDialog.file.toString().replace(/^.*[\\\/]/,
'')
}
}
}
states: [
State {
name: "imageSelected"
PropertyChanges {
target: btnClear
opacity: 1
anchors.topMargin: 5
}
},
State {
name: "nothingSelected"
PropertyChanges {
target: btnClear
opacity: 0
anchors.topMargin: -40
}
}
]
transitions: [
Transition {
from: "imageSelected"
to: "nothingSelected"
reversible: true
PropertyAnimation {
target: btnClear
properties: "opacity, anchors.topMargin"
duration: 300
easing.type: Easing.OutQuart
}
}
]
}

View File

@ -0,0 +1,87 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Controls.Material 2.3
Item {
id: tag
width: textMetrics.width + 20
height: parent.height
property int itemIndex
property alias text: txt.text
signal removeThis(var index)
Rectangle {
id: rectangle
radius: 3
anchors.fill: parent
Text {
id: txt
text: _name
color: Material.color(Material.Grey)
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
anchors.fill: parent
}
TextField {
id: textField
enabled: false
opacity: 0
anchors.fill: parent
anchors.margins: 10
anchors.bottomMargin: 0
}
TextMetrics {
id: textMetrics
text: txt.text
font.pointSize: 14
font.family: "Roboto"
}
}
MouseArea {
id: ma
width: 10
height: width
cursorShape: Qt.PointingHandCursor
anchors {
top: parent.top
right: parent.right
margins: 5
}
onClicked: {
tag.removeThis(itemIndex)
}
Image {
id: name
anchors.fill: parent
source: "qrc:/assets/icons/icon_close.svg"
}
}
states: [
State {
name: "edit"
PropertyChanges {
target: txt
opacity: 0
}
PropertyChanges {
target: textField
opacity: 1
enabled: true
}
}
]
}
/*##^## Designer {
D{i:0;height:50;width:100}
}
##^##*/

View File

@ -0,0 +1,180 @@
import QtQuick 2.12
import QtQuick.Controls 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls.Material 2.12
Item {
id: tagSelector
height: 70
onStateChanged: {
if (tagSelector.state === "add") {
btnAdd.text = qsTr("Save")
textField.focus = true
} else {
btnAdd.text = qsTr("Add tag")
}
}
function getTags(){
var array = [];
for(var i = 0; i < listModel.count; i++) {
array.push(listModel.get(i)._name)
}
return array
}
Rectangle {
id: rectangle
color: "#F0F0F0"
radius: 3
clip: true
anchors {
fill: parent
margins: 3
}
ListView {
orientation: ListView.Horizontal
model: listModel
spacing: 10
anchors {
top: parent.top
right: btnAdd.left
bottom: parent.bottom
left: parent.left
margins: 10
}
delegate: Tag {
id: delegate
text: _name
itemIndex: index
Connections {
target: delegate
onRemoveThis: {
listModel.remove(itemIndex)
}
}
}
}
ListModel {
id: listModel
onCountChanged: getTags()
}
Rectangle {
id: textFieldWrapper
opacity: 0
enabled: false
radius: 3
height: parent.height - 20
width: 200
color: "#aaffffff"
anchors {
top: parent.top
topMargin: -80
right: btnCancel.left
margins: 10
}
Gradient {
GradientStop {
position: 0.0
color: "#00000000"
}
GradientStop {
position: 1.0
color: "#FF000000"
}
}
TextField {
id: textField
anchors.fill: parent
anchors.rightMargin: 15
anchors.leftMargin: 15
onTextChanged: {
if(textField.length >= 10){
textField.text = textField.text
}
}
}
}
Button {
id: btnCancel
text: qsTr("Cancel")
opacity: 0
enabled: false
Material.background: Material.Red
Material.foreground: "white"
anchors {
right: btnAdd.left
rightMargin: 10
verticalCenter: parent.verticalCenter
}
onClicked: {
tagSelector.state = ""
textField.clear()
}
}
Button {
id: btnAdd
text: qsTr("Add Tag")
Material.background: Material.LightGreen
Material.foreground: "white"
anchors {
right: parent.right
rightMargin: 10
verticalCenter: parent.verticalCenter
}
onClicked: {
if (tagSelector.state === "add") {
listModel.append({
"_name": textField.text
})
textField.clear()
tagSelector.state = ""
} else {
tagSelector.state = "add"
}
}
}
}
states: [
State {
name: "add"
PropertyChanges {
target: textFieldWrapper
color: "#ccffffff"
anchors.topMargin: 10
opacity: 1
enabled: true
}
PropertyChanges {
target: btnCancel
opacity: 1
enabled: true
}
}
]
transitions: [
Transition {
from: ""
to: "add"
reversible: true
NumberAnimation {
properties: "anchors.topMargin, opacity"
duration: 200
easing.type: Easing.OutQuart
}
}
]
}

View File

@ -61,7 +61,7 @@ GridView {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pixelSize: 32
font.pointSize: 32
font.family: "Roboto"
anchors {
@ -140,7 +140,7 @@ GridView {
color: "white"
font.family: "Roboto"
font.weight: Font.Normal
font.pixelSize: 18
font.pointSize: 18
wrapMode: Text.WordWrap
}
Text {
@ -160,7 +160,7 @@ GridView {
font.family: "Roboto"
font.weight: Font.Normal
font.pixelSize: 14
font.pointSize: 14
wrapMode: Text.WordWrap
}
MouseArea {

View File

@ -18,7 +18,7 @@ Item {
id: txtHeadline
text: headline
height: 20
font.pixelSize: 14
font.pointSize: 14
font.family: "Roboto"
color: "#5D5D5D"

View File

@ -196,7 +196,7 @@ Item {
text: qsTr("Create wallpapers and widgets for local usage or the steam workshop!")
font.family: "Roboto"
font.pixelSize: 14
font.pointSize: 10
color: "white"
anchors {
horizontalCenter: parent.horizontalCenter

View File

@ -1,272 +0,0 @@
import QtQuick 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.3
import Qt.labs.platform 1.0
import QtQuick.Controls.Material 2.2
Item {
id: createImport
anchors.fill: parent
state: "out"
Component.onCompleted: state = "in"
property bool isVideoPlaying: true
property url file
onFileChanged: {
}
RectangularGlow {
id: effect
anchors {
top: videoOutWrapper.top
left: videoOutWrapper.left
right: videoOutWrapper.right
topMargin: 3
}
height: videoOutWrapper.height
width: videoOutWrapper.width
cached: true
z: 9
glowRadius: 3
spread: 0.2
color: "black"
opacity: 0.4
cornerRadius: 15
}
Rectangle {
id: videoOutWrapper
width: 450
height: 263
z: 12
color: "black"
anchors {
top: parent.top
topMargin: 180
horizontalCenter: parent.horizontalCenter
}
}
RectangularGlow {
id: effect2
anchors {
top: contentWrapper.top
left: contentWrapper.left
right: contentWrapper.right
topMargin: 3
}
height: contentWrapper.height
width: contentWrapper.width
cached: true
z: 9
glowRadius: 3
spread: 0.2
color: "black"
opacity: 0.4
cornerRadius: 15
}
Rectangle {
id: contentWrapper
width: 800
height: 300
z: 10
radius: 4
anchors {
top: parent.top
topMargin: 300
horizontalCenter: parent.horizontalCenter
}
Item {
id: chooseImageWrapper
height: 60
anchors {
top: parent.top
topMargin: 50
right: parent.right
left: parent.left
}
FileDialog {
id: fileDialogOpenPreview
nameFilters: ["Image files (*.jpg *.png)"]
onAccepted: {
imgPreview.source = currentFile
imgPreview.opacity = 1
//currentFile
}
}
Button {
id: btnChooseImage
text: qsTr("Select Image Manually")
Material.background: Material.Orange
Material.foreground: "white"
icon.source: "qrc:/assets/icons/icon_folder_open.svg"
icon.color: "white"
icon.width: 16
icon.height: 16
anchors.centerIn: parent
onClicked: fileDialogOpenPreview.open()
}
}
Column {
spacing: 20
anchors {
top: chooseImageWrapper.top
topMargin: 50
right: parent.right
rightMargin: 78
bottom: parent.bottom
bottomMargin: 50
left: parent.left
leftMargin: 78
}
TextField {
id: txtTitle
height: 60
width: parent.width
selectByMouse: true
text: qsTr("Title")
placeholderText: "Title"
}
}
Button {
text: qsTr("Import Video")
Material.background: Material.Orange
Material.foreground: "white"
icon.source: "qrc:/assets/icons/icon_upload.svg"
icon.color: "white"
icon.width: 16
icon.height: 16
anchors {
bottom: parent.bottom
bottomMargin: 10
horizontalCenter: parent.horizontalCenter
}
onClicked: {
if (txtTitle.text === ""
|| txtTitle.placeholderText === "Text") {
txtTitle.select(0, 0)
txtTitle.focus = true
return
}
//Check if there are any other characters than space
if (!(/\S/.test(txtTitle.text))) {
txtTitle.select(0, 0)
txtTitle.focus = true
return
}
if (fileDialogOpenPreview.currentFile != "") {
screenPlayCreate.importVideo(
txtTitle.text.replace(/\s/g, ''), file,
fileDialogOpenPreview.currentFile,
player.duration)
} else {
screenPlayCreate.importVideo(
txtTitle.text.replace(/\s/g, ''), file,
player.position,
player.duration,
player.metaData.videoFrameRate)
}
player.stop()
createImport.state = "out"
}
}
}
states: [
State {
name: "out"
PropertyChanges {
target: createImport
opacity: 0
}
PropertyChanges {
target: videoOutWrapper
z: 0
opacity: 0
anchors.topMargin: 50
}
PropertyChanges {
target: effect
opacity: 0
color: "transparent"
}
PropertyChanges {
target: contentWrapper
anchors.topMargin: -500
opacity: 0
}
},
State {
name: "in"
PropertyChanges {
target: createImport
opacity: 1
}
PropertyChanges {
target: contentWrapper
opacity: 1
anchors.topMargin: 300
}
PropertyChanges {
target: videoOutWrapper
z: 12
opacity: 1
anchors.topMargin: 70
}
}
]
transitions: [
Transition {
from: "out"
to: "in"
reversible: true
SequentialAnimation {
PauseAnimation {
duration: 500
}
ParallelAnimation {
PropertyAnimation {
duration: 300
target: contentWrapper
property: "opacity"
}
PropertyAnimation {
duration: 300
target: contentWrapper
property: "anchors.topMargin"
easing.type: Easing.OutQuart
}
}
ParallelAnimation {
PropertyAnimation {
duration: 250
target: videoOutWrapper
property: "opacity"
}
PropertyAnimation {
duration: 250
target: effect
properties: "color, opacity"
}
}
}
}
]
}

View File

@ -1,186 +0,0 @@
import QtQuick 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.3
// Qt Creator does not support Namespaced enums yet
// https://bugreports.qt.io/browse/QTCREATORBUG-17850
import LocalWorkshopCreationStatus 1.0
Item {
id: createImportStatus
anchors.fill: parent
state: "out"
signal backToCreate
signal uploadToSteamWorkshop()
Timer {
repeat: false
running: true
interval: 300
onTriggered: {
createImportStatus.state = "in"
}
}
Connections {
target: screenPlayCreate
onLocalWorkshopCreationStatusChanged: {
switch (status) {
case LocalWorkshopCreationStatus.Started:
txtStatus.text = "Copy video started"
break
case LocalWorkshopCreationStatus.CopyVideoFinished:
txtStatus.text = "Copy Video Finished"
break
case LocalWorkshopCreationStatus.CopyImageFinished:
txtStatus.text = "Copy Image Finished"
break
case LocalWorkshopCreationStatus.CopyConfigFinished:
txtStatus.text = "Copy Config Finished"
break
case LocalWorkshopCreationStatus.ErrorCopyConfig:
txtStatus.text = "Error Copy Config!"
break
case LocalWorkshopCreationStatus.Finished:
txtStatus.text = "Success!"
busyIndicator.running = false
break
default:
break
}
}
}
RectangularGlow {
id: effect
anchors {
top: wrapper.top
left: wrapper.left
right: wrapper.right
topMargin: 3
}
height: wrapper.height
width: wrapper.width
cached: true
glowRadius: 3
spread: 0.2
color: "black"
opacity: 0.4
cornerRadius: 15
}
Rectangle {
id: wrapper
width: 800
height: 400
radius: 4
anchors {
top: parent.top
topMargin: 100
horizontalCenter: parent.horizontalCenter
}
Text {
id: txtStatus
height: 80
font.family: "Roboto"
font.pixelSize: 24
color: "gray"
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
anchors {
top: busyIndicator.bottom
topMargin: 10
horizontalCenter: parent.horizontalCenter
}
}
BusyIndicator {
id: busyIndicator
running: true
anchors {
top: parent.top
topMargin: 100
horizontalCenter: parent.horizontalCenter
}
}
Row {
id: item1
width: 450
height: 49
spacing: 10
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 20
Button {
id: button
text: qsTr("Create another Wallpaper")
onClicked: {
backToCreate()
createImportStatus.state = "out"
}
}
Button {
id: button2
text: qsTr("Upload Wallpaper to Steam")
onClicked: {
uploadToSteamWorkshop()
createImportStatus.state = "in"
}
}
}
}
states: [
State {
name: "out"
PropertyChanges {
target: wrapper
anchors.topMargin: 500
opacity: 0
}
PropertyChanges {
target: effect
color: "transparent"
opacity: 0
}
},
State {
name: "in"
PropertyChanges {
target: wrapper
anchors.topMargin: 100
opacity: 1
}
PropertyChanges {
target: effect
color: "black"
opacity: 0.4
}
}
]
transitions: [
Transition {
from: "out"
to: "in"
reversible: true
SequentialAnimation {
NumberAnimation {
target: wrapper
properties: "opacity, anchors.topMargin"
duration: 200
easing.type: Easing.OutQuart
}
NumberAnimation {
target: effect
properties: "opacity, color"
duration: 200
easing.type: Easing.OutQuart
}
}
}
]
}

View File

@ -5,7 +5,7 @@ import Qt.labs.platform 1.0
import QtQuick.Controls.Material 2.2
import QtQuick.Controls.Styles 1.4
import QtQuick.Layouts 1.3
import RemoteWorkshopCreationStatus 1.0
//import RemoteWorkshopCreationStatus 1.0
Item {
@ -305,7 +305,7 @@ Item {
Text {
id: txtUploadSize
color: "gray"
font.pixelSize: 16
font.pointSize: 14
height: 30
anchors {
horizontalCenter: parent.horizontalCenter
@ -319,7 +319,7 @@ Item {
id: txtUploadStatus
text: qsTr("Creating Workshop Item")
color: "gray"
font.pixelSize: 16
font.pointSize: 12
height: 30
anchors {
horizontalCenter: parent.horizontalCenter

View File

@ -28,7 +28,7 @@ Item {
}
color: "white"
font.pixelSize: 28
font.pointSize: 21
font.family: "Roboto"
font.weight: Font.Thin

View File

@ -19,7 +19,7 @@ Item {
}
color: "white"
font.pixelSize: 28
font.pointSize: 21
font.family: "Roboto"
font.weight: Font.Thin
@ -53,12 +53,14 @@ Item {
text: qsTr("Examples Widgets and Scenes")
font.family: "Roboto"
font.pixelSize: 18
font.pointSize: 16
color: "white"
anchors {
top: btnCreateEmptyWidget.bottom
topMargin: 30
left:parent.left
leftMargin: 30
}
}

View File

@ -68,8 +68,8 @@ Item {
id: name
text: btnEmpty.text
font.family: "Roboto"
font.pixelSize: 18
font.pointSize: 14
color: "gray"
anchors {
left: imgIcon.right
@ -81,8 +81,8 @@ Item {
text: ">"
font.family: "Roboto"
font.pixelSize: 24
font.pointSize: 18
color: "#b9b9b9"
anchors {
right: parent.right

View File

@ -9,7 +9,7 @@ import net.aimber.create 1.0
Item {
id: wrapperError
opacity: 0
Text {
id: txtErrorHeadline
text: qsTr("An error occurred!")
@ -22,10 +22,9 @@ Item {
font.family: "Segoe UI, Roboto"
font.weight: Font.Light
color: Material.color(Material.Red)
font.pixelSize: 32
font.pointSize: 32
}
Rectangle {
id: rectangle1
color: "#eeeeee"
@ -38,7 +37,7 @@ Item {
margins: 30
bottomMargin: 10
}
Flickable {
anchors.fill: parent
clip: true
@ -57,7 +56,7 @@ Item {
}
wrapMode: Text.WordWrap
color: "#626262"
height: txtFFMPEGDebug.paintedHeight
}
Connections {
@ -68,7 +67,7 @@ Item {
}
}
}
Button {
id: btnBack
text: qsTr("Back to create and send an error report!")
@ -84,4 +83,22 @@ Item {
utility.setNavigation("Create")
}
}
states: [
State {
name: "error"
PropertyChanges {
target: txtFFMPEGDebug
text: "Error!"
}
},
State {
name: "success"
PropertyChanges {
target: txtFFMPEGDebug
text: "Success!"
}
}
]
}

View File

@ -1,58 +0,0 @@
import QtQuick 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.3
import Qt.labs.platform 1.0
import QtQuick.Layouts 1.3
import net.aimber.create 1.0
Item {
id: wrapperSuccess
opacity: 0
Text {
id: txtSuccessHeadline
text: qsTr("Video creation success!")
anchors {
top: parent.top
topMargin: 30
horizontalCenter: parent.horizontalCenter
}
height: 40
font.family: "Segoe UI, Roboto"
font.weight: Font.Light
color: Material.color(Material.Green)
font.pixelSize: 32
}
AnimatedImage {
id: imgSuccess
asynchronous: true
playing: true
anchors.centerIn: parent
width: 600
height: 400
}
Button {
id: btnSuccessBack
text: qsTr("Back to create!")
Material.background: Material.Orange
Material.foreground: "white"
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
margins: 10
}
onClicked: {
utility.setNavigationActive(true)
utility.setNavigation("Create")
}
}
}
/*##^## Designer {
D{i:0;autoSize:true;height:768;width:1366}
}
##^##*/

View File

@ -1,245 +0,0 @@
import QtQuick 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.3
import Qt.labs.platform 1.0
import QtQuick.Layouts 1.3
import net.aimber.create 1.0
Item {
id: wrapperContent
Text {
id: txtHeadline
text: qsTr("Import a video to a wallpaper")
height: 40
font.family: "Roboto"
font.weight: Font.Light
color: "#757575"
font.pixelSize: 23
anchors {
top: parent.top
left: parent.left
margins: 40
bottomMargin: 0
}
}
Item {
id: wrapperLeft
width: parent.width * .5
anchors {
left: parent.left
top: txtHeadline.bottom
margins: 30
bottom: parent.bottom
}
Rectangle {
id: imgWrapper
width: 425
height: 247
anchors {
top: parent.top
left: parent.left
}
color: Material.color(Material.Grey)
AnimatedImage {
id: imgPreview
asynchronous: true
playing: true
visible: false
anchors.fill: parent
}
BusyIndicator {
id: busyIndicator
anchors.centerIn: parent
running: true
}
Text {
id: txtConvertNumber
color: "white"
text: qsTr("")
font.pixelSize: 21
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: 40
}
}
Text {
id: txtConvert
color: "white"
text: qsTr("Generating preview video...")
font.pixelSize: 14
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: 20
}
}
}
RowLayout {
id: row
height: 50
anchors {
top: imgWrapper.bottom
topMargin: 20
right: parent.right
rightMargin: 30
left: parent.left
}
Rectangle {
height: 50
color: "#eeeeee"
Layout.fillWidth: true
Text {
id: txtCustomPreviewPath
color: "#333333"
text: qsTr("Add custom preview image")
anchors {
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: 10
}
}
Button {
id: button
Material.background: Material.Orange
Material.foreground: "white"
text: qsTr("Choose Image")
anchors {
right: parent.right
rightMargin: 10
}
onClicked: fileDialogOpenFile.open()
}
FileDialog {
id: fileDialogOpenFile
nameFilters: ["*.png *.jpg"]
onAccepted: {
var file = fileDialogOpenFile.file.toString()
txtCustomPreviewPath.text = fileDialogOpenFile.file
}
}
}
}
}
Item {
id: wrapperRight
width: parent.width * .5
anchors {
top: txtHeadline.bottom
topMargin: 30
bottom: parent.bottom
right: parent.right
}
ColumnLayout {
id: column
spacing: 0
anchors {
right: parent.right
left: parent.left
margins: 30
top:parent.top
topMargin: 0
bottom: column1.top
bottomMargin: 50
}
TextField {
id: textField
placeholderText: qsTr("Name")
width:parent.width
Layout.fillWidth: true
onTextChanged: {
if (textField.text.length >= 3) {
canNext = true
} else {
canNext = false
}
}
}
TextField {
id: textField1
placeholderText: qsTr("Description")
width:parent.width
Layout.fillWidth: true
}
TextField {
id: textField2
placeholderText: qsTr("Youtube URL")
width:parent.width
Layout.fillWidth: true
}
TextField {
id: textField3
width:parent.width
placeholderText: qsTr("Tags")
Layout.fillWidth: true
}
}
Row {
id: column1
height: 80
width: childrenRect.width
spacing: 10
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
}
Button {
id: btnExit
text: qsTr("Abort")
Material.background: Material.Gray
Material.foreground: "white"
onClicked: {
screenPlayCreate.abort()
utility.setNavigationActive(true)
utility.setNavigation("Create")
}
}
NextButton {
id: btnFinish
onClicked: {
if (btnFinish.state === "enabled" && canNext) {
screenPlayCreate.createWallpaperProjectFile(
textField.text, textField1.text)
utility.setNavigationActive(true)
createNew.state = "success"
}
}
}
}
Connections {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === Create.State.ConvertingVideoFinished) {
btnFinish.state = "enabled"
}
}
}
}
}

View File

@ -3,11 +3,74 @@ import QtGraphicalEffects 1.0
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.3
import Qt.labs.platform 1.0
import QtQuick.Layouts 1.3
import QtQuick.Layouts 1.12
import net.aimber.create 1.0
import "../../../Common"
Item {
id: wrapperContent
property bool conversionFinishedSuccessful: false
property bool canSave: false
property string filePath
onCanSaveChanged: wrapperContent.checkCanSave()
signal save
function checkCanSave() {
if (canSave && conversionFinishedSuccessful) {
btnSave.enabled = true
} else {
btnSave.enabled = false
}
}
Connections {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === CreateImportVideo.State.ConvertingPreviewImageFinished) {
imgPreview.source = "file:///" + screenPlayCreate.workingDir + "/preview.png"
imgPreview.visible = true
txtConvert.text = qsTr("Converting Video preview mp4")
}
if (state === CreateImportVideo.State.ConvertingPreviewVideo) {
txtConvert.text = qsTr("Generating preview video...")
}
if (state === CreateImportVideo.State.ConvertingPreviewGif) {
txtConvert.text = qsTr("Generating preview gif...")
}
if (state === CreateImportVideo.State.ConvertingPreviewGifFinished) {
imgPreview.source = "file:///" + screenPlayCreate.workingDir + "/preview.gif"
imgPreview.visible = true
imgPreview.playing = true
}
if (state === CreateImportVideo.State.ConvertingAudio) {
txtConvert.text = qsTr("Converting Audio...")
}
if (state === CreateImportVideo.State.ConvertingVideo) {
txtConvert.text = qsTr("Converting Video...")
}
if (state === CreateImportVideo.State.Finished) {
txtConvert.text = ""
conversionFinishedSuccessful = true
busyIndicator.running = false
wrapperContent.checkCanSave()
}
}
onProgressChanged: {
var percentage = Math.floor(progress * 100)
if (percentage > 100)
percentage = 100
txtConvertNumber.text = percentage + "%"
}
}
Text {
id: txtHeadline
text: qsTr("Convert a video to a wallpaper")
@ -16,7 +79,7 @@ Item {
font.weight: Font.Light
color: "#757575"
font.pixelSize: 23
font.pointSize: 23
anchors {
top: parent.top
left: parent.left
@ -24,7 +87,7 @@ Item {
bottomMargin: 0
}
}
Item {
id: wrapperLeft
width: parent.width * .5
@ -34,18 +97,17 @@ Item {
margins: 30
bottom: parent.bottom
}
Rectangle {
id: imgWrapper
width: 425
height: 247
color: Material.color(Material.Grey)
anchors {
top: parent.top
left: parent.left
}
color: Material.color(Material.Grey)
AnimatedImage {
id: imgPreview
asynchronous: true
@ -53,136 +115,47 @@ Item {
visible: false
anchors.fill: parent
}
BusyIndicator {
id: busyIndicator
anchors.centerIn: parent
running: true
}
Text {
id: txtConvertNumber
color: "white"
text: qsTr("")
font.pixelSize: 21
font.pointSize: 21
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: 40
}
}
Text {
id: txtConvert
color: "white"
text: qsTr("Generating preview video...")
font.pixelSize: 14
font.pointSize: 14
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
bottomMargin: 20
}
}
Connections {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === Create.State.ConvertingPreviewImageFinished) {
imgPreview.source = "file:///"
+ screenPlayCreate.workingDir + "/preview.png"
imgPreview.visible = true
txtConvert.text = qsTr(
"Converting Video preview mp4")
}
if (state === Create.State.ConvertingPreviewVideo) {
txtConvert.text = qsTr(
"Generating preview video...")
}
if (state === Create.State.ConvertingPreviewGif) {
txtConvert.text = qsTr(
"Generating preview gif...")
}
if (state === Create.State.ConvertingPreviewGifFinished) {
imgPreview.source = "file:///"
+ screenPlayCreate.workingDir + "/preview.gif"
imgPreview.visible = true
imgPreview.playing = true
}
if (state === Create.State.ConvertingAudio) {
txtConvert.text = qsTr("Converting Audio...")
}
if (state === Create.State.ConvertingVideo) {
txtConvert.text = qsTr("Converting Video...")
}
if (state === Create.State.Finished) {
imgSuccess.source = "file:///"
+ screenPlayCreate.workingDir + "/preview.gif"
}
}
onProgressChanged: {
var percentage = Math.floor(progress * 100)
if (percentage > 100)
percentage = 100
txtConvertNumber.text = percentage + "%"
}
}
}
RowLayout {
id: row
height: 50
ImageSelector {
id: previewSelector
anchors {
top: imgWrapper.bottom
topMargin: 20
right: parent.right
rightMargin: 30
left: parent.left
}
Rectangle {
height: 50
color: "#eeeeee"
Layout.fillWidth: true
Text {
id: txtCustomPreviewPath
color: "#333333"
text: qsTr("Add custom preview image")
anchors {
verticalCenter: parent.verticalCenter
left: parent.left
leftMargin: 10
}
}
Button {
id: button
Material.background: Material.Orange
Material.foreground: "white"
text: qsTr("Choose Image")
anchors {
right: parent.right
rightMargin: 10
}
onClicked: fileDialogOpenFile.open()
}
FileDialog {
id: fileDialogOpenFile
nameFilters: ["*.png *.jpg"]
onAccepted: {
var file = fileDialogOpenFile.file.toString()
txtCustomPreviewPath.text = fileDialogOpenFile.file
}
}
}
}
}
Item {
@ -194,57 +167,56 @@ Item {
bottom: parent.bottom
right: parent.right
}
ColumnLayout {
id: column
spacing: 0
anchors {
right: parent.right
left: parent.left
margins: 30
top:parent.top
top: parent.top
topMargin: 0
bottom: column1.top
bottomMargin: 50
}
TextField {
id: textField
placeholderText: qsTr("Name")
width:parent.width
id: textFieldName
placeholderText: qsTr("Name (required!)")
width: parent.width
Layout.fillWidth: true
onTextChanged: {
if (textField.text.length >= 3) {
canNext = true
if (textFieldName.text.length >= 3) {
canSave = true
} else {
canNext = false
canSave = false
}
}
}
TextField {
id: textField1
id: textFieldDescription
placeholderText: qsTr("Description")
width:parent.width
width: parent.width
Layout.fillWidth: true
}
TextField {
id: textField2
id: textFieldYoutubeURL
placeholderText: qsTr("Youtube URL")
width:parent.width
width: parent.width
Layout.fillWidth: true
}
TextField {
id: textField3
width:parent.width
placeholderText: qsTr("Tags")
TagSelector {
id: textFieldTags
width: parent.width
Layout.fillWidth: true
}
}
Row {
id: column1
height: 80
@ -254,39 +226,76 @@ Item {
horizontalCenter: parent.horizontalCenter
bottom: parent.bottom
}
Button {
id: btnExit
text: qsTr("Abort")
Material.background: Material.Gray
Material.background: Material.Red
Material.foreground: "white"
onClicked: {
screenPlayCreate.abort()
screenPlayCreate.abortAndCleanup()
utility.setNavigationActive(true)
utility.setNavigation("Create")
}
}
NextButton {
id: btnFinish
Button {
id: btnSave
text: qsTr("Save")
enabled: false
Material.background: Material.Orange
Material.foreground: "white"
onClicked: {
if (btnFinish.state === "enabled" && canNext) {
screenPlayCreate.createWallpaperProjectFile(
textField.text, textField1.text)
utility.setNavigationActive(true)
createNew.state = "success"
if (conversionFinishedSuccessful) {
screenPlayCreate.saveWallpaper(
textFieldName.text,
textFieldDescription.text,
wrapperContent.filePath,
previewSelector.imageSource,
textFieldYoutubeURL.text,
textFieldTags.getTags())
savePopup.open()
}
}
}
}
Connections {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === Create.State.ConvertingVideoFinished) {
btnFinish.state = "enabled"
}
}
Popup {
id: savePopup
modal: true
focus: true
width: 250
anchors.centerIn: parent
height: 200
onOpened: timerSave.start()
BusyIndicator {
anchors.centerIn: parent
running: true
}
Text {
text: qsTr("Save Wallpaper...")
anchors.horizontalCenter: parent.horizontalCenter
anchors.bottom: parent.bottom
anchors.bottomMargin: 30
}
Timer {
id: timerSave
interval: 3000 - Math.random() * 1000
onTriggered: {
utility.setNavigationActive(true)
utility.setNavigation("Create")
}
}
}
}
/*##^## Designer {
D{i:0;autoSize:true;height:480;width:950}
}
##^##*/

View File

@ -4,6 +4,7 @@ import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.3
import Qt.labs.platform 1.0
import QtQuick.Layouts 1.3
import net.aimber.create 1.0
Item {
@ -13,17 +14,16 @@ Item {
property string filePath
property bool canNext: false
property int importState: CreateWallpaperWizard.ImportState.Import
Component.onCompleted: {
state = "in"
utility.setNavigationActive(false)
if (importState === CreateWallpaperWizard.ImportState.Import) {
loader_wrapperContent.source
= "qrc:/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImport.qml"
} else {
loader_wrapperContent.source = "qrc:/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml"
}
loader_wrapperContent.setSource(
"qrc:/qml/Create/Wizards/CreateWallpaper/CreateWallpaperVideoImportConvert.qml",
{
"filePath": createNew.filePath
})
}
//Blocks some MouseArea from create page
@ -34,12 +34,15 @@ Item {
Connections {
target: screenPlayCreate
onCreateWallpaperStateChanged: {
if (state === Create.State.ConvertingPreviewGifError
|| state === Create.State.ConvertingPreviewVideoError
|| state === Create.State.ConvertingPreviewImageError
|| state === Create.State.AnalyseVideoError) {
createNew.state = "error"
if (state === CreateImportVideo.State.AnalyseVideoError || state
=== CreateImportVideo.State.ConvertingPreviewGifError || state
=== CreateImportVideo.State.ConvertingPreviewImageError || state
=== CreateImportVideo.State.ConvertingAudioError || state
=== CreateImportVideo.State.AbortCleanupError || state
=== CreateImportVideo.State.CopyFilesError || state
=== CreateImportVideo.State.CreateProjectFileError || state
=== CreateImportVideo.State.CreateTmpFolderError) {
createNew.state = "result"
}
}
}
@ -75,31 +78,29 @@ Item {
Rectangle {
id: wrapper
width: 910
radius: 4
height: 460
anchors {
horizontalCenter: parent.horizontalCenter
top: parent.top
topMargin: 0
}
width: 910
radius: 4
height: 460
Loader {
id: loader_wrapperContent
anchors.fill: parent
z: 10
Connections {
target: loader_wrapperContent.sourceComponent
onSave: {
createNew.state = "result"
}
}
}
CreateWallpaperError {
id: wrapperError
anchors.fill: parent
}
CreateWallpaperSuccess {
id: wrapperSuccess
CreateWallpaperResult {
id: wrapperResult
anchors.fill: parent
}
@ -156,7 +157,7 @@ Item {
opacity: 0
}
PropertyChanges {
target: wrapperError
target: wrapperResult
opacity: 0
}
},
@ -172,7 +173,7 @@ Item {
opacity: .4
}
PropertyChanges {
target: wrapperError
target: wrapperResult
opacity: 0
}
},
@ -193,7 +194,7 @@ Item {
z: 0
}
PropertyChanges {
target: wrapperError
target: wrapperResult
opacity: 1
}
},
@ -213,10 +214,6 @@ Item {
opacity: 0
z: 0
}
PropertyChanges {
target: wrapperSuccess
opacity: 1
}
}
]
transitions: [
@ -291,7 +288,7 @@ Item {
},
Transition {
from: "in"
to: "error"
to: "result"
SequentialAnimation {
PropertyAnimation {
target: loader_wrapperContent
@ -303,28 +300,7 @@ Item {
duration: 50
}
PropertyAnimation {
target: wrapperError
duration: 200
property: "opacity"
easing.type: Easing.OutQuart
}
}
},
Transition {
from: "in"
to: "success"
SequentialAnimation {
PropertyAnimation {
target: loader_wrapperContent
duration: 600
property: "opacity"
easing.type: Easing.OutQuart
}
PauseAnimation {
duration: 50
}
PropertyAnimation {
target: wrapperSuccess
target: wrapperResult
duration: 200
property: "opacity"
easing.type: Easing.OutQuart

View File

@ -1,44 +0,0 @@
import QtQuick 2.12
import QtGraphicalEffects 1.0
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.2
import Qt.labs.platform 1.0
import QtQuick.Layouts 1.3
Button {
id: root
text: qsTr("Next")
state: "disabled"
Material.background: Material.Orange
Material.foreground: "white"
states: [
State {
name: "enabled"
PropertyChanges {
target: root
text: qsTr("Finish")
}
},
State {
name: "disabled"
PropertyChanges {
target: root
text: qsTr("Creating")
Material.background: Material.Grey
}
}
]
// TODO find a way to smoothly change with on text change
// transitions: [
// Transition {
// from: "*"
// to: "*"
// NumberAnimation {
// property: "width"
// easing.type: Easing.OutQuart
// duration: 2000
// }
// }
// ]
}

View File

@ -62,7 +62,7 @@ DropArea {
Text {
id: text1
text: qsTr("Bad File!!")
font.pixelSize: 24
font.pointSize: 24
opacity: 1
anchors.horizontalCenter: parent.horizontalCenter
anchors.verticalCenter: parent.verticalCenter

View File

@ -59,7 +59,6 @@ Item {
flickDeceleration: 5000
anchors.fill: parent
cellWidth: 340
cacheBuffer: 10000
cellHeight: 200
interactive: pageInstalled.enabled
anchors {
@ -103,7 +102,7 @@ Item {
text: qsTr("Pull to refresh!")
anchors.centerIn: parent
color: "gray"
font.pixelSize: 18
font.pointSize: 18
}
}
footer: Item {

View File

@ -70,7 +70,7 @@ Item {
id: txtHeadline2
text: qsTr("DISTINCT")
font.family: "Roboto Mono Thin"
font.pixelSize: 75
font.pointSize: 75
color: "white"
font.weight: Font.Normal

View File

@ -177,23 +177,23 @@ Item {
bottom: parent.bottom
}
Text {
id: text1
height: 29
text: screenTitle
anchors {
right: parent.right
left: parent.left
top: parent.top
margins: 10
}
wrapMode: Text.WordWrap
// Text {
// id: text1
// height: 29
// text: screenTitle
// anchors {
// right: parent.right
// left: parent.left
// top: parent.top
// margins: 10
// }
// wrapMode: Text.WordWrap
color: "#2F2F2F"
font.pointSize: 9
// color: "#2F2F2F"
// font.pointSize: 9
font.family: "Segoe UI, Roboto"
}
// font.family: "Segoe UI, Roboto"
// }
}
}

View File

@ -165,7 +165,7 @@ Item {
font.family: "Roboto"
font.weight: Font.Thin
verticalAlignment: Text.AlignVCenter
font.pixelSize: 21
font.pointSize: 16
color: "#2F2F2F"
wrapMode: Text.WrapAnywhere
anchors {
@ -185,7 +185,7 @@ Item {
horizontalAlignment: Qt.AlignHCenter
font.family: "Roboto"
font.pixelSize: 18
font.pointSize: 14
color: "#2F2F2F"
wrapMode: Text.WrapAnywhere
anchors {
@ -239,7 +239,7 @@ Item {
font.family: "Roboto"
verticalAlignment: Text.AlignVCenter
font.pixelSize: 14
font.pointSize: 10
color: "#626262"
wrapMode: Text.WrapAnywhere
anchors {
@ -294,7 +294,7 @@ Item {
font.family: "Roboto"
verticalAlignment: Text.AlignVCenter
font.pixelSize: 14
font.pointSize: 10
color: "#626262"
wrapMode: Text.WrapAnywhere
anchors {

View File

@ -14,7 +14,7 @@ Item {
imgPreview.opacity = 1
}
property int fontSize: 14
property int fontSize: 10
property int index
property bool isSelected: false
property bool isWallpaperActive: false
@ -42,7 +42,7 @@ Item {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
//color: "white"
font.pixelSize: monitorSelectionItem.fontSize
font.pointSize: monitorSelectionItem.fontSize
font.family: "Roboto"
wrapMode: Text.WrapAnywhere
}

View File

@ -59,7 +59,7 @@ Item {
Text {
id: txtHeadline
text: qsTr("Wallpaper Configuration")
font.pixelSize: 21
font.pointSize: 21
color: "#626262"
font.family: "Roboto"
font.weight: Font.Thin

View File

@ -21,7 +21,7 @@ Item {
id: txtDescription
text: name
width: 100
font.pixelSize: isHeadline ? 21 : 14
font.pointSize: isHeadline ? 21 : 14
anchors.verticalCenter: parent.verticalCenter
font.family: "Roboto"
font.weight: Font.Normal

View File

@ -2,7 +2,10 @@ import QtQuick 2.12
import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.2
import "../Common"
Item {
id: screen
anchors.fill: parent
}

View File

@ -1,6 +1,7 @@
import QtQuick 2.12
import QtQuick.Controls 2.3
import QtQuick.Controls.Material 2.2
Item {
id: settingsBool
property string headline: "Headline"
@ -36,7 +37,7 @@ Item {
}
font.pixelSize: 16
font.pointSize: 12
font.family: "Roboto"
}
@ -48,7 +49,7 @@ Item {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pixelSize: 12
font.pointSize: 10
font.family: "Roboto"
anchors{
top:txtHeadline.bottom

View File

@ -147,7 +147,7 @@ Item {
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignLeft
font.pixelSize: 14
font.pointSize: 10
font.family: "Roboto"
anchors{
right:parent.right
@ -345,7 +345,7 @@ Item {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
font.pixelSize: 16
font.pointSize: 16
anchors {
top: parent.top
topMargin: 6
@ -361,7 +361,7 @@ Item {
wrapMode: Text.WordWrap
verticalAlignment: Text.AlignTop
horizontalAlignment: Text.AlignLeft
font.pixelSize: 14
font.pointSize: 10
font.family: "Roboto"
width: parent.width * .6
anchors {

View File

@ -42,7 +42,7 @@ Item {
}
font.pixelSize: 16
font.pointSize: 12
}
Text {
@ -53,7 +53,7 @@ Item {
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignLeft
font.pixelSize: 12
font.pointSize: 10
font.family: "Roboto"
anchors{
top:txtHeadline.bottom

View File

@ -36,7 +36,7 @@ Item {
}
font.pixelSize: 16
font.pointSize: 12
font.family: "Roboto"
}
@ -48,7 +48,7 @@ Item {
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignLeft
wrapMode: Text.WordWrap
font.pixelSize: 12
font.pointSize: 10
font.family: "Roboto"
anchors{
top:txtHeadline.bottom

View File

@ -62,7 +62,7 @@ Item {
Text {
id: txtHeadline
text: settingsHeader.text
font.pixelSize: 18
font.pointSize: 12
color: "white"
verticalAlignment: Text.AlignTop

View File

@ -25,7 +25,7 @@ Window {
id: text1
color: "#ffffff"
text: "empty"
font.pixelSize: 29
font.pointSize: 29
}

View File

@ -6,8 +6,5 @@ Theme=Light
Accent=Orange
Primary=White
Foreground=Grey
[Material\Font]
Family=Roboto
PixelSize=14
Font\Family=Roboto
Font\PixelSize=12

View File

@ -6,414 +6,124 @@ Create::Create(Settings* st, QMLUtilities* util, QObject* parent)
m_settings = st;
m_utils = util;
m_futureWatcher.setFuture(m_future);
qRegisterMetaType<Create::State>();
qRegisterMetaType<CreateImportVideo::State>();
qmlRegisterType<Create>("net.aimber.create", 1, 0, "Create");
}
void Create::copyProject(QString relativeProjectPath, QString toPath)
{
if (toPath.contains("file:///")) {
toPath.remove("file:///");
}
QString srcFilePath = m_settings->getScreenPlayBasePath().toString() + relativeProjectPath;
// Todo: UI Error handling
if (copyRecursively(srcFilePath, toPath)) {
emit m_utils->openFolderInExplorer(toPath);
}
}
bool Create::copyRecursively(const QString& srcFilePath, const QString& tgtFilePath)
{
QFileInfo srcFileInfo(srcFilePath);
if (srcFileInfo.isDir()) {
QDir targetDir(tgtFilePath);
targetDir.cdUp();
QDir sourceDir(srcFilePath);
QStringList fileNames = sourceDir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::Hidden | QDir::System);
foreach (const QString& fileName, fileNames) {
const QString newSrcFilePath
= srcFilePath + QLatin1Char('/') + fileName;
const QString newTgtFilePath
= tgtFilePath + QLatin1Char('/') + fileName;
if (!copyRecursively(newSrcFilePath, newTgtFilePath))
return false;
}
} else {
if (!QFile::copy(srcFilePath, tgtFilePath))
return false;
}
return true;
qmlRegisterType<CreateImportVideo>("net.aimber.create", 1, 0, "CreateImportVideo");
}
void Create::createWallpaperStart(QString videoPath)
{
videoPath.remove("file:///");
m_future = QtConcurrent::run([=]() {
QDir dir;
dir.cd(this->m_settings->localStoragePath().toLocalFile());
QDir dir;
dir.cd(m_settings->localStoragePath().toLocalFile());
m_createWallpaperData.videoPath = videoPath;
// Create a temp dir so we can later alter it to the workshop id
auto folderName = QString("_tmp_" + QTime::currentTime().toString()).replace(":", "");
// Create a temp dir so we can later alter it to the workshop id
auto folderName = QString("_tmp_" + QTime::currentTime().toString()).replace(":", "");
if (!dir.mkdir(folderName)) {
emit createWallpaperStateChanged(CreateImportVideo::State::CreateTmpFolderError);
emit abortCreateWallpaper();
return;
}
setWorkingDir(dir.path() + "/" + folderName);
if (!dir.mkdir(folderName))
return;
m_createImportVideoThread = new QThread();
m_createImportVideo = new CreateImportVideo(videoPath, workingDir());
m_createWallpaperData.exportPath = dir.path() + "/" + folderName;
this->setWorkingDir(m_createWallpaperData.exportPath);
connect(m_createImportVideo, &CreateImportVideo::createWallpaperStateChanged, this, &Create::createWallpaperStateChanged);
connect(m_createImportVideoThread, &QThread::started, m_createImportVideo, &CreateImportVideo::process);
connect(m_createImportVideo, &CreateImportVideo::canceled, this, &Create::abortAndCleanup);
connect(m_createImportVideo, &CreateImportVideo::finished, m_createImportVideoThread, &QThread::quit);
connect(m_createImportVideo, &CreateImportVideo::finished, m_createImportVideo, &QObject::deleteLater);
connect(m_createImportVideoThread, &QThread::finished, m_createImportVideoThread, &QObject::deleteLater);
// If we return early/false this means the creation
// process did not work
bool ok = true;
if (!this->createWallpaperInfo())
ok = false;
if (ok && !this->createWallpaperVideoPreview())
ok = false;
if (ok && !this->createWallpaperGifPreview())
ok = false;
if (ok && !this->extractWallpaperAudio())
ok = false;
if (!ok)
abortAndCleanup();
});
m_createImportVideo->moveToThread(m_createImportVideoThread);
m_createImportVideoThread->start();
}
bool Create::createWallpaperInfo()
void Create::saveWallpaper(QString title, QString description, QString filePath, QString previewImagePath, QString youtube, QVector<QString> tags)
{
// Get video info
QStringList args;
args.append("-print_format");
args.append("json");
args.append("-show_format");
args.append("-show_streams");
args.append(m_createWallpaperData.videoPath);
QScopedPointer<QProcess> pro(new QProcess());
pro.data()->setArguments(args);
filePath.remove("file:///");
previewImagePath.remove("file:///");
#ifdef Q_OS_WIN
pro.data()->setProgram(QApplication::applicationDirPath() + "/ffprobe.exe");
#endif
#ifdef Q_OS_MACOS
pro.data()->setProgram(QApplication::applicationDirPath() + "/ffprobe");
#endif
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFiles);
QFileInfo previewImageFile(previewImagePath);
if (!QFile::copy(previewImagePath, m_workingDir + "/" + previewImageFile.fileName())) {
qDebug() << "Could not copy" << previewImagePath << " to " << m_workingDir + "/" + previewImageFile.fileName();
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFilesError);
return;
}
QFileInfo filePathFile(filePath);
if (!QFile::copy(filePath, m_workingDir + "/" + filePathFile.fileName())) {
qDebug() << "Could not copy" << filePath << " to " << m_workingDir + "/" + filePathFile.fileName();
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFilesError);
return;
}
emit createWallpaperStateChanged(CreateImportVideo::State::CopyFilesFinished);
emit createWallpaperStateChanged(CreateImportVideo::State::CreateProjectFile);
QFile file(m_workingDir + "/project.json");
pro.data()->start();
emit createWallpaperStateChanged(Create::State::AnalyseVideo);
pro.data()->waitForFinished(-1);
emit createWallpaperStateChanged(Create::State::AnalyseVideoFinished);
QJsonObject obj;
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson(pro.data()->readAll(), &err);
if (err.error != QJsonParseError::NoError) {
emit processOutput("Error parsing ffmpeg json output");
emit createWallpaperStateChanged(Create::State::AnalyseVideoError);
return false;
obj.insert("description", description);
obj.insert("title", title);
obj.insert("youtube", youtube);
obj.insert("file", "video.webm");
obj.insert("previewGIF", "preview.gif");
obj.insert("previewWEBM", filePathFile.fileName());
obj.insert("preview", previewImageFile.fileName());
obj.insert("type", "video");
QJsonArray arr;
for (QString tmp : tags) {
arr.append(tmp);
}
obj.insert("tags", arr);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Could not open /project.json";
emit createWallpaperStateChanged(CreateImportVideo::State::CreateProjectFileError);
return;
}
obj = doc.object();
pro.data()->close();
QTextStream out(&file);
QJsonDocument doc(obj);
// Get video length
QJsonObject objFormat = obj.value("format").toObject();
bool okParseDuration = false;
auto tmpLength = objFormat.value("duration").toVariant().toFloat(&okParseDuration);
out << doc.toJson();
if (!okParseDuration) {
qDebug() << "Error parsing video length";
emit processOutput("Error parsing video length");
emit createWallpaperStateChanged(Create::State::AnalyseVideoError);
return false;
}
int length = 0;
length = static_cast<int>(tmpLength);
m_createWallpaperData.length = length;
// Get framerate
QJsonArray arrSteams = obj.value("streams").toArray();
if (arrSteams.size() < 1) {
qDebug() << "Error container does not have any video streams";
return false;
}
QJsonObject tmpObjStreams = arrSteams.at(0).toObject();
// The paramter gets us the exact framerate
// "avg_frame_rate":"47850000/797509"
// so we need no calc the value by dividing the two numbers
QString avgFrameRate = tmpObjStreams.value("avg_frame_rate").toVariant().toString();
QStringList avgFrameRateList = avgFrameRate.split('/', QString::SkipEmptyParts);
if (avgFrameRateList.length() != 2) {
qDebug() << "Error could not parse streams with length: " << avgFrameRateList.length();
return false;
}
int framerate = 0;
float value1 = static_cast<float>(avgFrameRateList.at(0).toInt());
float value2 = static_cast<float>(avgFrameRateList.at(1).toInt());
framerate = qCeil(value1 / value2);
m_createWallpaperData.framerate = framerate;
return true;
}
bool Create::createWallpaperVideoPreview()
{
QStringList args;
args.append("-loglevel");
args.append("error");
args.append("-y");
args.append("-stats");
args.append("-i");
args.append(m_createWallpaperData.videoPath);
args.append("-speed");
args.append("ultrafast");
args.append("-vf");
// We allways want to have a 5 second clip via 24fps -> 120 frames
// Divided by the number of frames we can skip (timeInSeconds * Framrate)
// scale & crop parameter: https://unix.stackexchange.com/a/284731
args.append("select='not(mod(n," + QString::number((m_createWallpaperData.length / 5)) + "))',setpts=N/FRAME_RATE/TB,crop=in_h*16/9:in_h,scale=-2:400");
// Disable audio
args.append("-an");
args.append(m_createWallpaperData.exportPath + "/preview.webm");
QScopedPointer<QProcess> proConvertPreviewWebM(new QProcess());
proConvertPreviewWebM.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertPreviewWebM.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
proConvertPreviewMP4.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
emit createWallpaperStateChanged(Create::State::ConvertingPreviewVideo);
connect(this, &Create::abortCreateWallpaper, proConvertPreviewWebM.data(), &QProcess::kill);
proConvertPreviewWebM.data()->start();
while (!proConvertPreviewWebM.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
QCoreApplication::processEvents();
}
disconnect(this, &Create::abortCreateWallpaper, proConvertPreviewWebM.data(), &QProcess::kill);
QString tmpErr = proConvertPreviewWebM.data()->readAllStandardError();
if (!tmpErr.isEmpty()) {
QFile previewVideo(m_createWallpaperData.exportPath + "/preview.webm");
if (!previewVideo.exists() && !(previewVideo.size() > 0)) {
emit processOutput(tmpErr);
emit createWallpaperStateChanged(Create::State::ConvertingPreviewVideoError);
return false;
}
}
this->processOutput(proConvertPreviewWebM.data()->readAll());
proConvertPreviewWebM.data()->close();
emit createWallpaperStateChanged(Create::State::ConvertingPreviewVideoFinished);
return true;
}
bool Create::createWallpaperGifPreview()
{
emit createWallpaperStateChanged(Create::State::ConvertingPreviewGif);
QStringList args;
args.append("-y");
args.append("-stats");
args.append("-i");
args.append(m_createWallpaperData.exportPath + "/preview.webm");
args.append("-filter_complex");
args.append("[0:v] fps=12,scale=w=480:h=-1,split [a][b];[a] palettegen=stats_mode=single [p];[b][p] paletteuse=new=1");
args.append(m_createWallpaperData.exportPath + "/preview.gif");
QScopedPointer<QProcess> proConvertGif(new QProcess());
proConvertGif.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertGif.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
proConvertGif.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
connect(this, &Create::abortCreateWallpaper, proConvertGif.data(), &QProcess::kill);
proConvertGif.data()->start();
while (!proConvertGif.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
QCoreApplication::processEvents();
}
disconnect(this, &Create::abortCreateWallpaper, proConvertGif.data(), &QProcess::kill);
QString tmpErrGif = proConvertGif.data()->readAllStandardError();
if (!tmpErrGif.isEmpty()) {
QFile previewGif(m_createWallpaperData.exportPath + "/preview.gif");
if (!previewGif.exists() && !(previewGif.size() > 0)) {
emit createWallpaperStateChanged(Create::State::ConvertingPreviewGifError);
return false;
}
}
this->processOutput(proConvertGif.data()->readAll());
proConvertGif.data()->close();
emit createWallpaperStateChanged(Create::State::ConvertingPreviewGifFinished);
return true;
}
bool Create::createWallpaperImagePreview()
{
emit createWallpaperStateChanged(Create::State::ConvertingPreviewImage);
QStringList args;
args.clear();
args.append("-y");
args.append("-stats");
args.append("-ss");
args.append("00:00:02");
args.append("-i");
args.append(m_createWallpaperData.videoPath);
args.append("-vframes");
args.append("1");
args.append("-q:v");
args.append("2");
args.append(m_createWallpaperData.exportPath + "/preview.png");
QScopedPointer<QProcess> proConvertImage(new QProcess());
proConvertImage.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertImage.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
proConvertImage.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
proConvertImage.data()->start();
while (!proConvertImage.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
QCoreApplication::processEvents();
}
QString tmpErrImg = proConvertImage.data()->readAllStandardError();
if (!tmpErrImg.isEmpty()) {
QFile previewImg(m_createWallpaperData.exportPath + "/preview.png");
if (!previewImg.exists() && !(previewImg.size() > 0)) {
emit createWallpaperStateChanged(Create::State::ConvertingPreviewImageError);
return false;
}
}
this->processOutput(proConvertImage.data()->readAll());
proConvertImage.data()->close();
emit createWallpaperStateChanged(Create::State::ConvertingPreviewImageFinished);
return true;
}
bool Create::extractWallpaperAudio()
{
emit createWallpaperStateChanged(Create::State::ConvertingAudio);
QStringList args;
args.clear();
args.append("-y");
args.append("-stats");
args.append("-i");
args.append(m_createWallpaperData.videoPath);
args.append("-f");
args.append("mp3");
args.append("-ab");
args.append("192000");
args.append("-vn");
args.append(m_createWallpaperData.exportPath + "/audio.mp3");
QScopedPointer<QProcess> proConvertAudio(new QProcess());
proConvertAudio.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertAudio.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
pro.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
connect(this, &Create::abortCreateWallpaper, proConvertAudio.data(), &QProcess::kill);
proConvertAudio.data()->start(QIODevice::ReadOnly);
while (!proConvertAudio.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
QCoreApplication::processEvents();
}
disconnect(this, &Create::abortCreateWallpaper, proConvertAudio.data(), &QProcess::kill);
QString tmpErrImg = proConvertAudio.data()->readAllStandardError();
if (!tmpErrImg.isEmpty()) {
QFile previewImg(m_createWallpaperData.exportPath + "/audio.mp3");
if (!previewImg.exists() && !(previewImg.size() > 0)) {
emit createWallpaperStateChanged(Create::State::ConvertingAudioError);
return false;
}
}
this->processOutput(proConvertAudio.data()->readAll());
proConvertAudio.data()->close();
emit createWallpaperStateChanged(Create::State::ConvertingAudioFinished);
return true;
}
bool Create::createWallpaperProjectFile(const QString title, const QString description)
{
//Copy Project File
QFile configFile(m_createWallpaperData.exportPath + "/project.json");
if (!configFile.open(QIODevice::ReadWrite | QIODevice::Text)) {
return false;
}
QTextStream out(&configFile);
QJsonObject configObj;
configObj.insert("description", description);
configObj.insert("title", title);
configObj.insert("file", "video.webm");
configObj.insert("preview", "preview.png");
configObj.insert("previewGIF", "preview.gif");
configObj.insert("previewWebM", "preview.webm");
configObj.insert("type", "video");
QJsonDocument configJsonDocument(configObj);
out << configJsonDocument.toJson();
configFile.close();
emit createWallpaperStateChanged(Create::State::Finished);
return true;
file.close();
emit createWallpaperStateChanged(CreateImportVideo::State::CreateProjectFileFinished);
}
void Create::abortAndCleanup()
{
emit abortCreateWallpaper();
m_futureWatcher.cancel();
QDir exportPath(m_createWallpaperData.exportPath);
if (exportPath.exists()) {
if (!exportPath.removeRecursively()) {
emit createWallpaperStateChanged(Create::State::AbortCleanupError);
qWarning() << "Could not delete temp exportPath: " << exportPath;
} else {
qDebug() << "cleanup " << m_createWallpaperData.exportPath;
}
if (m_createImportVideo == nullptr || m_createImportVideoThread == nullptr) {
qDebug() << m_createImportVideo << m_createImportVideoThread;
return;
}
disconnect(m_createImportVideo);
disconnect(m_createImportVideoThread);
// Save to export path before aborting to be able to cleanup the tmp folder
QString tmpExportPath = m_createImportVideo->m_exportPath;
connect(m_createImportVideoThread, &QThread::destroyed, this, [=]() {
QDir exportPath(tmpExportPath);
if (exportPath.exists()) {
if (!exportPath.removeRecursively()) {
emit createWallpaperStateChanged(CreateImportVideo::State::AbortCleanupError);
qWarning() << "Could not delete temp exportPath: " << exportPath;
} else {
qDebug() << "cleanup " << tmpExportPath;
}
}
m_createImportVideo = nullptr;
m_createImportVideoThread = nullptr;
});
m_createImportVideoThread->requestInterruption();
}

View File

@ -19,20 +19,13 @@
#include <QTimer>
#include <QUrl>
#include <QtMath>
#include <QTimer>
#include <memory>
#include "createimportvideo.h"
#include "qmlutilities.h"
#include "settings.h"
struct CreateWallpaperData {
CreateWallpaperData() {}
QString videoPath = "";
QString exportPath = "";
int length = 0;
int framerate = 0;
};
class Create : public QObject {
Q_OBJECT
public:
@ -44,76 +37,28 @@ public:
Create() {}
~Create() {}
enum class State {
Idle,
Started,
AnalyseVideo,
AnalyseVideoFinished,
AnalyseVideoError,
ConvertingPreviewVideo,
ConvertingPreviewVideoFinished,
ConvertingPreviewVideoError,
ConvertingPreviewGif,
ConvertingPreviewGifFinished,
ConvertingPreviewGifError,
ConvertingPreviewImage,
ConvertingPreviewImageFinished,
ConvertingPreviewImageError,
ConvertingAudio,
ConvertingAudioFinished,
ConvertingAudioError,
// Oh well... Due to so many patents around video codecs
// the user has to convert the video on his own :(
// ConvertingVideo,
// ConvertingVideoFinished,
// ConvertingVideoError,
AbortCleanupError,
Finished,
ErrorUnknown,
};
Q_ENUM(State)
float progress() const
{
return m_progress;
}
QString workingDir() const
{
return m_workingDir;
}
float progress() const
{
return m_progress;
}
signals:
void createWallpaperStateChanged(Create::State state);
void createWallpaperStateChanged(CreateImportVideo::State state);
void processOutput(QString text);
void workingDirChanged(QString workingDir);
void progressChanged(float progress);
void abortCreateWallpaper();
void workingDirChanged(QString workingDir);
public slots:
void copyProject(QString relativeProjectPath, QString toPath);
bool copyRecursively(const QString& srcFilePath, const QString& tgtFilePath);
// Steps to convert any video to a wallpaper broken down into
// several methods in this order:
void createWallpaperStart(QString videoPath);
bool createWallpaperInfo();
bool createWallpaperVideoPreview();
bool createWallpaperGifPreview();
bool createWallpaperImagePreview();
bool extractWallpaperAudio();
bool createWallpaperProjectFile(const QString title, const QString description);
void saveWallpaper(QString title, QString description, QString filePath, QString previewImagePath, QString youtube, QVector<QString> tags);
void abortAndCleanup();
void setWorkingDir(QString workingDir)
{
if (m_workingDir == workingDir)
return;
m_workingDir = workingDir;
emit workingDirChanged(m_workingDir);
}
void setProgress(float progress)
{
if (qFuzzyCompare(m_progress, progress))
@ -123,12 +68,21 @@ public slots:
emit progressChanged(m_progress);
}
void setWorkingDir(QString workingDir)
{
if (m_workingDir == workingDir)
return;
m_workingDir = workingDir;
emit workingDirChanged(m_workingDir);
}
private:
CreateImportVideo* m_createImportVideo;
Settings* m_settings;
QThread* m_createImportVideoThread;
QMLUtilities* m_utils;
CreateWallpaperData m_createWallpaperData;
QString m_workingDir;
float m_progress = 0.0f;
QFuture<void> m_future;
QFutureWatcher<void> m_futureWatcher;
QString m_workingDir;
};

View File

@ -0,0 +1,362 @@
#include "createimportvideo.h"
#include <QScopeGuard>
CreateImportVideo::CreateImportVideo(QObject* parent)
: QObject(parent)
{
}
CreateImportVideo::CreateImportVideo(QString videoPath, QString exportPath, QObject* parent)
: QObject(parent)
{
m_videoPath = videoPath;
m_exportPath = exportPath;
}
void CreateImportVideo::process()
{
qDebug() << "start converting video in thread: " << QThread::currentThreadId();
auto cleanup = qScopeGuard([this] {
qDebug() << "ABORT";
this->requestInterruption();
emit canceled();
});
if (!createWallpaperInfo())
return;
if (!createWallpaperVideoPreview())
return;
if (!createWallpaperGifPreview())
return;
if (!extractWallpaperAudio())
return;
emit createWallpaperStateChanged(CreateImportVideo::State::Finished);
}
bool CreateImportVideo::createWallpaperInfo()
{
// Get video info
QStringList args;
args.append("-print_format");
args.append("json");
args.append("-show_format");
args.append("-show_streams");
args.append(m_videoPath);
QScopedPointer<QProcess> pro(new QProcess());
pro.data()->setArguments(args);
#ifdef Q_OS_WIN
pro.data()->setProgram(QApplication::applicationDirPath() + "/ffprobe.exe");
#endif
#ifdef Q_OS_MACOS
pro.data()->setProgram(QApplication::applicationDirPath() + "/ffprobe");
#endif
pro.data()->start();
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideo);
while (!pro.data()->waitForFinished(100)) {
if (QThread::currentThread()->isInterruptionRequested()) {
qDebug() << "Interrupt thread";
pro.data()->terminate();
if (!pro.data()->waitForFinished(1000)) {
pro.data()->kill();
}
break;
}
QCoreApplication::processEvents();
}
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideoFinished);
QJsonObject obj;
QJsonParseError err;
QJsonDocument doc = QJsonDocument::fromJson(pro.data()->readAll(), &err);
if (err.error != QJsonParseError::NoError) {
emit processOutput("Error parsing ffmpeg json output");
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideoError);
return false;
}
obj = doc.object();
pro.data()->close();
// Get video length
QJsonObject objFormat = obj.value("format").toObject();
bool okParseDuration = false;
auto tmpLength = objFormat.value("duration").toVariant().toFloat(&okParseDuration);
if (!okParseDuration) {
qDebug() << "Error parsing video length";
emit processOutput("Error parsing video length");
emit createWallpaperStateChanged(CreateImportVideo::State::AnalyseVideoError);
return false;
}
int length = 0;
length = static_cast<int>(tmpLength);
m_length = length;
// Get framerate
QJsonArray arrSteams = obj.value("streams").toArray();
if (arrSteams.size() < 1) {
qDebug() << "Error container does not have any video streams";
return false;
}
QJsonObject tmpObjStreams = arrSteams.at(0).toObject();
// The paramter gets us the exact framerate
// "avg_frame_rate":"47850000/797509"
// so we need no calc the value by dividing the two numbers
QString avgFrameRate = tmpObjStreams.value("avg_frame_rate").toVariant().toString();
QStringList avgFrameRateList = avgFrameRate.split('/', QString::SkipEmptyParts);
if (avgFrameRateList.length() != 2) {
qDebug() << "Error could not parse streams with length: " << avgFrameRateList.length();
return false;
}
int framerate = 0;
double value1 = static_cast<double>(avgFrameRateList.at(0).toInt());
double value2 = static_cast<double>(avgFrameRateList.at(1).toInt());
framerate = qCeil(value1 / value2);
m_framerate = framerate;
return true;
}
bool CreateImportVideo::createWallpaperVideoPreview()
{
QStringList args;
args.append("-loglevel");
args.append("error");
args.append("-y");
args.append("-stats");
args.append("-i");
args.append(m_videoPath);
args.append("-vf");
// We allways want to have a 5 second clip via 24fps -> 120 frames
// Divided by the number of frames we can skip (timeInSeconds * Framrate)
// scale & crop parameter: https://unix.stackexchange.com/a/284731
args.append("select='not(mod(n," + QString::number((m_length / 5)) + "))',setpts=N/FRAME_RATE/TB,crop=in_h*16/9:in_h,scale=-2:400");
// Disable audio
args.append("-an");
args.append(m_exportPath + "/preview.webm");
QScopedPointer<QProcess> proConvertPreviewWebM(new QProcess());
proConvertPreviewWebM.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertPreviewWebM.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
proConvertPreviewMP4.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewVideo);
proConvertPreviewWebM.data()->start();
while (!proConvertPreviewWebM.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
if (QThread::currentThread()->isInterruptionRequested()) {
qDebug() << "Interrupt thread";
proConvertPreviewWebM.data()->terminate();
if (!proConvertPreviewWebM.data()->waitForFinished(1000)) {
proConvertPreviewWebM.data()->kill();
}
break;
}
QCoreApplication::processEvents();
}
QString tmpErr = proConvertPreviewWebM.data()->readAllStandardError();
if (!tmpErr.isEmpty()) {
QFile previewVideo(m_exportPath + "/preview.webm");
if (!previewVideo.exists() && !(previewVideo.size() > 0)) {
emit processOutput(tmpErr);
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewVideoError);
return false;
}
}
//this->processOutput(proConvertPreviewWebM.data()->readAll());
proConvertPreviewWebM.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewVideoFinished);
return true;
}
bool CreateImportVideo::createWallpaperGifPreview()
{
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewGif);
QStringList args;
args.append("-y");
args.append("-stats");
args.append("-i");
args.append(m_exportPath + "/preview.webm");
args.append("-filter_complex");
args.append("[0:v] fps=12,scale=w=480:h=-1,split [a][b];[a] palettegen=stats_mode=single [p];[b][p] paletteuse=new=1");
args.append(m_exportPath + "/preview.gif");
QScopedPointer<QProcess> proConvertGif(new QProcess());
proConvertGif.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertGif.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
proConvertGif.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
proConvertGif.data()->start();
while (!proConvertGif.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
if (QThread::currentThread()->isInterruptionRequested()) {
qDebug() << "Interrupt thread";
proConvertGif.data()->terminate();
if (!proConvertGif.data()->waitForFinished(1000)) {
proConvertGif.data()->kill();
}
break;
}
QCoreApplication::processEvents();
}
QString tmpErrGif = proConvertGif.data()->readAllStandardError();
if (!tmpErrGif.isEmpty()) {
QFile previewGif(m_exportPath + "/preview.gif");
if (!previewGif.exists() && !(previewGif.size() > 0)) {
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewGifError);
return false;
}
}
//this->processOutput(proConvertGif.data()->readAll());
proConvertGif.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewGifFinished);
return true;
}
bool CreateImportVideo::createWallpaperImagePreview()
{
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewImage);
QStringList args;
args.clear();
args.append("-y");
args.append("-stats");
args.append("-ss");
args.append("00:00:02");
args.append("-i");
args.append(m_videoPath);
args.append("-vframes");
args.append("1");
args.append("-q:v");
args.append("2");
args.append(m_exportPath + "/preview.png");
QScopedPointer<QProcess> proConvertImage(new QProcess());
proConvertImage.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertImage.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
proConvertImage.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
proConvertImage.data()->start();
while (!proConvertImage.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
if (QThread::currentThread()->isInterruptionRequested()) {
qDebug() << "Interrupt thread";
proConvertImage.data()->terminate();
if (!proConvertImage.data()->waitForFinished(1000)) {
proConvertImage.data()->kill();
}
break;
}
QCoreApplication::processEvents();
}
QString tmpErrImg = proConvertImage.data()->readAllStandardError();
if (!tmpErrImg.isEmpty()) {
QFile previewImg(m_exportPath + "/preview.png");
if (!previewImg.exists() && !(previewImg.size() > 0)) {
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewImageError);
return false;
}
}
//this->processOutput(proConvertImage.data()->readAll());
proConvertImage.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingPreviewImageFinished);
return true;
}
bool CreateImportVideo::extractWallpaperAudio()
{
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingAudio);
QStringList args;
args.clear();
args.append("-y");
args.append("-stats");
args.append("-i");
args.append(m_videoPath);
args.append("-f");
args.append("mp3");
args.append("-ab");
args.append("192000");
args.append("-vn");
args.append(m_exportPath + "/audio.mp3");
QScopedPointer<QProcess> proConvertAudio(new QProcess());
proConvertAudio.data()->setArguments(args);
#ifdef Q_OS_WIN
proConvertAudio.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg.exe");
#endif
#ifdef Q_OS_MACOS
pro.data()->setProgram(QApplication::applicationDirPath() + "/ffmpeg");
#endif
proConvertAudio.data()->start(QIODevice::ReadOnly);
while (!proConvertAudio.data()->waitForFinished(100)) //Wake up every 100ms and check if we must exit
{
if (QThread::currentThread()->isInterruptionRequested()) {
qDebug() << "Interrupt thread";
proConvertAudio.data()->terminate();
if (!proConvertAudio.data()->waitForFinished(1000)) {
proConvertAudio.data()->kill();
}
break;
}
QCoreApplication::processEvents();
}
QString tmpErrImg = proConvertAudio.data()->readAllStandardError();
if (!tmpErrImg.isEmpty()) {
QFile previewImg(m_exportPath + "/audio.mp3");
if (!previewImg.exists() && !(previewImg.size() > 0)) {
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingAudioError);
return false;
}
}
//this->processOutput(proConvertAudio.data()->readAll());
proConvertAudio.data()->close();
emit createWallpaperStateChanged(CreateImportVideo::State::ConvertingAudioFinished);
return true;
}

View File

@ -0,0 +1,79 @@
#pragma once
#include <QApplication>
#include <QDebug>
#include <QDir>
#include <QFile>
#include <QFileInfo>
#include <QJsonArray>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QObject>
#include <QProcess>
#include <QString>
#include <QThread>
#include <QtMath>
class CreateImportVideo : public QObject {
Q_OBJECT
public:
CreateImportVideo(QObject* parent = nullptr);
explicit CreateImportVideo(QString videoPath, QString exportPath, QObject* parent = nullptr);
enum class State {
Idle,
Started,
AnalyseVideo,
AnalyseVideoFinished,
AnalyseVideoError,
ConvertingPreviewVideo,
ConvertingPreviewVideoFinished,
ConvertingPreviewVideoError,
ConvertingPreviewGif,
ConvertingPreviewGifFinished,
ConvertingPreviewGifError,
ConvertingPreviewImage,
ConvertingPreviewImageFinished,
ConvertingPreviewImageError,
ConvertingAudio,
ConvertingAudioFinished,
ConvertingAudioError,
// Oh well... Due to so many patents around video codecs
// the user has to convert the video on his own :(
// ConvertingVideo,
// ConvertingVideoFinished,
// ConvertingVideoError,
CopyFiles,
CopyFilesFinished,
CopyFilesError,
CreateProjectFile,
CreateProjectFileFinished,
CreateProjectFileError,
AbortCleanupError,
CreateTmpFolderError,
Finished,
};
Q_ENUM(State)
QString m_videoPath;
QString m_exportPath;
int m_length = 0;
int m_framerate = 0;
signals:
void createWallpaperStateChanged(CreateImportVideo::State state);
void processOutput(QString text);
void finished();
void canceled();
public slots:
void process();
void requestInterruption() {}
bool createWallpaperInfo();
bool createWallpaperVideoPreview();
bool createWallpaperGifPreview();
bool createWallpaperImagePreview();
bool extractWallpaperAudio();
};

View File

@ -5,6 +5,11 @@ InstalledListModel::InstalledListModel(QObject* parent)
{
QObject::connect(this, &InstalledListModel::addInstalledItem,
this, &InstalledListModel::append, Qt::QueuedConnection);
m_loadScreenWatcher.setFuture(m_loadScreenFuture);
QObject::connect(&m_loadScreenWatcher, &QFutureWatcher<void>::progressValueChanged, [](int progressValue) {
qDebug() << progressValue;
});
}
int InstalledListModel::rowCount(const QModelIndex& parent) const
@ -76,6 +81,7 @@ bool InstalledListModel::getProjectByAbsoluteStoragePath(QUrl* path, ProjectFile
void InstalledListModel::append(const QJsonObject obj, const QString folderName)
{
//qDebug() << QThread::currentThreadId();
beginInsertRows(QModelIndex(), m_screenPlayFiles.size(), m_screenPlayFiles.size());
ProjectFile tmpFile(obj, folderName, m_absoluteStoragePath);
@ -86,7 +92,19 @@ void InstalledListModel::append(const QJsonObject obj, const QString folderName)
void InstalledListModel::loadInstalledContent()
{
QtConcurrent::run([this]() {
if (m_loadScreenWatcher.isRunning())
qDebug() << "allready running";
if (m_isLoadingContent) {
qDebug() << "Called loading installed files twice! Aborting";
return;
}
m_loadScreenFuture = QtConcurrent::run([this]() {
auto cleanup = qScopeGuard([this] { setIsLoadingContent(false); });
setIsLoadingContent(true);
QJsonDocument jsonProject;
QJsonParseError parseError;
@ -126,14 +144,14 @@ void InstalledListModel::loadInstalledContent()
obj.insert("type", "video");
}
if (fileEnding.endsWith(".webm") || (obj.value("type").toString() == "qmlScene" || fileEnding.endsWith(".mp4") ) || fileEnding.endsWith(".html"))
if (fileEnding.endsWith(".webm") || (obj.value("type").toString() == "qmlScene" || fileEnding.endsWith(".html")))
emit addInstalledItem(obj, item.baseName());
if(obj.value("type") == "qmlWidget" || obj.value("type") == "standalonewidget")
if (obj.value("type") == "qmlWidget" || obj.value("type") == "standalonewidget")
emit addInstalledItem(obj, item.baseName());
}
}
emit installedLoadingFinished();
});
}

View File

@ -16,6 +16,8 @@
#include <QUrl>
#include <QVector>
#include <QtConcurrent/QtConcurrent>
#include <QFutureWatcher>
#include <QFuture>
/*!
@ -38,6 +40,7 @@ public:
bool getProjectByAbsoluteStoragePath(QUrl* path, ProjectFile* spf);
Q_PROPERTY(QUrl absoluteStoragePath READ absoluteStoragePath WRITE setabsoluteStoragePath NOTIFY absoluteStoragePathChanged)
Q_PROPERTY(bool isLoadingContent READ isLoadingContent WRITE setIsLoadingContent NOTIFY isLoadingContentChanged)
enum InstalledRole {
TitleRole,
@ -56,6 +59,11 @@ public:
return m_absoluteStoragePath;
}
bool isLoadingContent() const
{
return m_isLoadingContent;
}
public slots:
void loadInstalledContent();
QVariantMap get(QString folderId);
@ -71,6 +79,15 @@ public slots:
int getAmountItemLoaded();
void reset();
void setIsLoadingContent(bool isLoadingContent)
{
if (m_isLoadingContent == isLoadingContent)
return;
m_isLoadingContent = isLoadingContent;
emit isLoadingContentChanged(m_isLoadingContent);
}
signals:
void setScreenVisible(bool visible);
void setScreenToVideo(QString absolutePath);
@ -78,7 +95,14 @@ signals:
void addInstalledItem(const QJsonObject, const QString);
void installedLoadingFinished();
void isLoadingContentChanged(bool isLoadingContent);
private:
QVector<ProjectFile> m_screenPlayFiles;
QUrl m_absoluteStoragePath;
QFuture<void> m_loadScreenFuture;
QFutureWatcher<void> m_loadScreenWatcher;
bool m_isLoadingContent = false;
};

View File

@ -66,10 +66,11 @@ QString ScreenPlay::generateID()
{
const QString possibleCharacters("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789");
const int randomStringLength = 32;
auto* radomGen = QRandomGenerator::system();
QString randomString;
for (int i = 0; i < randomStringLength; ++i) {
int index = qrand() % possibleCharacters.length();
int index = radomGen->bounded(possibleCharacters.length());
QChar nextChar = possibleCharacters.at(index);
randomString.append(nextChar);
}

View File

@ -10,7 +10,7 @@ SDKConnector::SDKConnector(QObject* parent)
m_server = QSharedPointer<QLocalServer>(new QLocalServer(this));
connect(m_server.data(), &QLocalServer::newConnection, this, &SDKConnector::newConnection);
if (!m_server.data()->listen("ScreenPlay")) {
//TODO
//TODO what to do if no ScreenPlay local socket can be open
}
}

View File

@ -1,9 +1,10 @@
TEMPLATE = lib
TARGET = ScreenPlaySDK
TARGET = $$qtLibraryTarget($$TARGET)
QT += qml quick
CONFIG += plugin c++11
TARGET = $$qtLibraryTarget($$TARGET)
uri = net.aimber.screenplaysdk
# Input

View File

@ -38,7 +38,10 @@ void redirectMessageOutputToMainWindow(QtMsgType type, const QMessageLogContext&
ScreenPlaySDK::ScreenPlaySDK(QQuickItem* parent)
: QQuickItem(parent)
{
// Redirect all messages from this to ScreenPlay
global_sdkPtr = this;
qInstallMessageHandler(redirectMessageOutputToMainWindow);
m_socket.setServerName("ScreenPlay");
connect(&m_socket, &QLocalSocket::connected, this, &ScreenPlaySDK::connected);
connect(&m_socket, &QLocalSocket::disconnected, this, &ScreenPlaySDK::disconnected);
@ -46,9 +49,6 @@ ScreenPlaySDK::ScreenPlaySDK(QQuickItem* parent)
connect(&m_socket, &QLocalSocket::readyRead, this, &ScreenPlaySDK::readyRead);
connect(&m_socket, QOverload<QLocalSocket::LocalSocketError>::of(&QLocalSocket::error), this, &ScreenPlaySDK::error);
m_socket.connectToServer();
// Redirect all messages from this to ScreenPlay
qInstallMessageHandler(redirectMessageOutputToMainWindow);
}
ScreenPlaySDK::~ScreenPlaySDK()
@ -101,6 +101,5 @@ void ScreenPlaySDK::redirectMessage(QByteArray& msg)
if (isConnected()) {
m_socket.write(msg);
m_socket.waitForBytesWritten();
}
}

View File

@ -4,11 +4,9 @@
#include <QDebug>
#include <QTimer>
#include <QString>
#ifdef Q_OS_WIN
#include <qt_windows.h>
#endif
// https://github.com/rainmeter/rainmeter/blob/master/Library/MeasureCPU.cpp
class CPU : public QObject {

View File

@ -1,5 +1,7 @@
#pragma once
#ifdef Q_OS_WIN
#include <qt_windows.h>
#include <QObject>
uint64_t FileTimeToInt64( const FILETIME& ft ) {
@ -8,3 +10,4 @@ uint64_t FileTimeToInt64( const FILETIME& ft ) {
uli.HighPart = ft.dwHighDateTime;
return uli.QuadPart;
}
#endif

View File

@ -6,8 +6,9 @@
#ifdef Q_OS_WIN
#include <qt_windows.h>
#endif
#include <sysinfoapi.h>
//#include <sysinfoapi.h>
#define DWORDLONG unsigned long long
class RAM : public QObject {
Q_OBJECT

View File

@ -1,6 +1,7 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>assets/image/noisy-texture-3.png</file>
<file>test.qml</file>
<file>mainWidget.qml</file>
</qresource>
</RCC>

View File

@ -1,60 +1,31 @@
QT += quick qml quickcontrols2 core widgets gui
CONFIG += c++17
CONFIG += qtquickcompiler
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
SPWidgetmain.cpp \
src/spwidgetmainwindow.cpp
main.cpp \
src/widgetwindow.cpp
HEADERS += \
src/widgetwindow.h
RESOURCES += \
SPWidgetResources.qrc
INCLUDEPATH += \
$$PWD/../../ThirdParty/ \
$$PWD/../../src/ \
include(../ScreenPlaySDK/Screenplaysdk.pri)
include(../ScreenPlaySDK/ScreenPlaySDK.pri)
macx: {
QMAKE_LIBDIR += $$OUT_PWD/
install_it.path = $${OUT_PWD}/../ScreenPlaySDK
QMAKE_LIBDIR += $$OUT_PWD/
}
!macx: {
CONFIG(debug, debug|release) {
LIBS += -lScreenplaysdkd
install_it.path = $${OUT_PWD}/debug/
LIBS += -lScreenPlaySDKd
QMAKE_LIBDIR += $$OUT_PWD/../ScreenPlaySDK/debug
} else {
LIBS += -lScreenplaysdk
install_it.path = $${OUT_PWD}/release/
LIBS += -lScreenPlaySDK
QMAKE_LIBDIR += $$OUT_PWD/../ScreenPlaySDK/release
}
QMAKE_LIBDIR += $$OUT_PWD/../ScreenPlaySDK
}
# Additional import path used to resolve QML modules just for Qt Quick Designer
# QML_DESIGNER_IMPORT_PATH =
QT_QUICK_CONTROLS_STYLE = "Material"
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
HEADERS += \
src/spwidgetmainwindow.h

View File

@ -2,7 +2,7 @@
#include <QQmlApplicationEngine>
#include <QStringList>
#include "src/spwidgetmainwindow.h"
#include "src/widgetwindow.h"
#include "../ScreenPlaySDK/screenplaysdk.h"
int main(int argc, char* argv[])
@ -12,18 +12,23 @@ int main(int argc, char* argv[])
ScreenPlaySDK sdk;
QGuiApplication app(argc, argv);
QStringList argumentList = app.arguments();
// If we start with only one argument (app path),
// it means we want to test a single widget
if (argumentList.length() == 1) {
WidgetWindow spwmw("test","appid" );
return app.exec();
}
if (argumentList.length() != 3) {
return -3;
}
SPWidgetmainwindow spwmw(argumentList.at(1), argumentList.at(2));
//SPWidgetmainwindow spwmw("D:/672870/xkcd","asasasasd" );
WidgetWindow spwmw(argumentList.at(1), argumentList.at(2));
QObject::connect(&sdk, &ScreenPlaySDK::sdkDisconnected, &spwmw, &SPWidgetmainwindow::destroyThis);
QObject::connect(&sdk, &ScreenPlaySDK::incommingMessage, &spwmw, &SPWidgetmainwindow::messageReceived);
QObject::connect(&sdk, &ScreenPlaySDK::sdkDisconnected, &spwmw, &WidgetWindow::destroyThis);
QObject::connect(&sdk, &ScreenPlaySDK::incommingMessage, &spwmw, &WidgetWindow::messageReceived);
return app.exec();
}

View File

@ -1,7 +1,8 @@
import QtQuick 2.12
import net.aimber.screenplaysdk 1.0
import QtQuick.Controls 2.3
import net.aimber.screenplaysdk 1.0
Item {
id: mainWindow
visible: true
@ -22,27 +23,54 @@ Item {
opacity: .05
fillMode: Image.Tile
}
Loader {
id: loader
anchors.fill: parent
asynchronous: true
source: {
Qt.resolvedUrl(window.sourcePath)
}
onStatusChanged: {
if (loader.status === Loader.Ready) {
}
}
}
MouseArea {
id: mouseArea
anchors.fill: parent
onPressed: {
backend.setClickPos(Qt.point(mouse.x, mouse.y))
window.setClickPos(Qt.point(mouse.x, mouse.y))
}
onPositionChanged: {
backend.setPos(mouse.x, mouse.y)
window.setPos(mouse.x, mouse.y)
}
onClicked: {
if (mouse.button === Qt.RightButton) {
contextMenu.popup()
}
}
}
Menu {
id: contextMenu
MenuItem {
text: qsTr("Close Widget")
onClicked: {
Qt.quit()
}
}
}
Connections {
target: backend
target: window
onSetWidgetSource: {
loader.source = Qt.resolvedUrl("file:///" + source)
print(loader.source)
}
onQmlSceneValueReceived: {
var obj2 = 'import QtQuick 2.12; Item {Component.onCompleted: loader.item.'
@ -52,14 +80,5 @@ Item {
}
}
Loader {
id: loader
anchors.fill: parent
asynchronous: true
onStatusChanged: {
if (loader.status === Loader.Ready) {
}
}
}
}

View File

@ -1,118 +0,0 @@
#include "spwidgetmainwindow.h"
#include <QCoreApplication>
SPWidgetmainwindow::SPWidgetmainwindow(QString projectPath, QString appid, QScreen* parent)
: QWindow(parent)
{
m_appID = appid;
m_hwnd = (HWND)this->winId();
Qt::WindowFlags flags = this->flags();
this->setWidth(500);
this->setHeight(300);
this->setFlags(flags | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint | Qt::BypassWindowManagerHint | Qt::SplashScreen);
QFile configTmp;
QJsonDocument configJsonDocument;
QJsonParseError parseError;
configTmp.setFileName(projectPath + "/project.json");
configTmp.open(QIODevice::ReadOnly | QIODevice::Text);
m_projectConfig = configTmp.readAll();
configJsonDocument = QJsonDocument::fromJson(m_projectConfig.toUtf8(), &parseError);
if (!(parseError.error == QJsonParseError::NoError)) {
qWarning("Settings Json Parse Error ");
}
m_project = configJsonDocument.object();
QString fullPath = projectPath + "/" + m_project.value("file").toString();
m_quickRenderer = QSharedPointer<QQuickView>(new QQuickView(this));
m_quickRenderer.data()->rootContext()->setContextProperty("backend", this);
m_quickRenderer.data()->setColor(Qt::transparent);
m_quickRenderer.data()->setWidth(this->width());
m_quickRenderer.data()->setHeight(this->height());
m_quickRenderer.data()->setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
m_quickRenderer.data()->setSource(QUrl("qrc:/main.qml"));
#ifdef Q_OS_WIN
SetWindowBlur(m_hwnd);
#endif
show();
m_quickRenderer.data()->show();
emit setWidgetSource(fullPath);
}
void SPWidgetmainwindow::setSize(QSize size)
{
this->setWidth(size.width());
this->setHeight(size.height());
m_quickRenderer.data()->setWidth(size.width());
m_quickRenderer.data()->setHeight(size.height());
}
void SPWidgetmainwindow::destroyThis()
{
QCoreApplication::quit();
}
void SPWidgetmainwindow::messageReceived(QString key, QString value)
{
emit qmlSceneValueReceived(key, value);
}
void SPWidgetmainwindow::setPos(int xPos, int yPos)
{
QPoint delta((xPos - m_clickPos.x()), (yPos - m_clickPos.y()));
int new_x = x() + delta.x();
int new_y = y() + delta.y();
setPosition(QPoint(new_x, new_y));
}
void SPWidgetmainwindow::setClickPos(const QPoint &clickPos)
{
m_clickPos = clickPos;
}
void SPWidgetmainwindow::SetWindowBlur(HWND hWnd)
{
#ifdef Q_OS_WIN
const HINSTANCE hModule = LoadLibrary(TEXT("user32.dll"));
if (hModule) {
struct ACCENTPOLICY {
int nAccentState;
int nFlags;
int nColor;
int nAnimationId;
};
struct WINCOMPATTRDATA {
int nAttribute;
PVOID pData;
ULONG ulDataSize;
};
enum class Accent {
DISABLED = 0,
GRADIENT = 1,
TRANSPARENTGRADIENT = 2,
BLURBEHIND = 3,
ACRYLIC = 4,
INVALID = 5
};
typedef BOOL(WINAPI * pSetWindowCompositionAttribute)(HWND, WINCOMPATTRDATA*);
const pSetWindowCompositionAttribute SetWindowCompositionAttribute = (pSetWindowCompositionAttribute)GetProcAddress(hModule, "SetWindowCompositionAttribute");
if (SetWindowCompositionAttribute) {
ACCENTPOLICY policy = { (int)Accent::BLURBEHIND, 0, 0, 0 }; // ACCENT_ENABLE_BLURBEHIND=3...
WINCOMPATTRDATA data = { 19, &policy, sizeof(ACCENTPOLICY) }; // WCA_ACCENT_POLICY=19
SetWindowCompositionAttribute(hWnd, &data);
}
FreeLibrary(hModule);
}
#endif
}

View File

@ -0,0 +1,118 @@
#include "widgetwindow.h"
#include <QCoreApplication>
WidgetWindow::WidgetWindow(QString projectPath, QString appid, QObject* parent)
: QObject(parent)
{
m_appID = appid;
Qt::WindowFlags flags = m_window.flags();
m_window.setWidth(300);
m_window.setHeight(300);
m_window.setFlags(flags | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint | Qt::BypassWindowManagerHint | Qt::SplashScreen);
m_window.rootContext()->setContextProperty("window", this);
m_window.setColor(Qt::transparent);
#ifdef Q_OS_WIN
m_hwnd = reinterpret_cast<HWND>(m_window.winId());
SetWindowBlur(m_hwnd);
#endif
if (projectPath != "test") {
QFile configTmp;
QJsonDocument configJsonDocument;
QJsonParseError parseError;
configTmp.setFileName(projectPath + "/project.json");
configTmp.open(QIODevice::ReadOnly | QIODevice::Text);
m_projectConfig = configTmp.readAll();
configJsonDocument = QJsonDocument::fromJson(m_projectConfig.toUtf8(), &parseError);
if (!(parseError.error == QJsonParseError::NoError)) {
qWarning("Settings Json Parse Error ");
}
m_project = configJsonDocument.object();
QString fullPath = "file:///" + projectPath + "/" + m_project.value("file").toString();
setSourcePath(fullPath);
} else {
setSourcePath("qrc:/test.qml");
}
// Instead of setting "renderType: Text.NativeRendering" every time
// we can set it here once :)
m_window.setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
m_window.setSource(QUrl("qrc:/mainWidget.qml"));
m_window.show();
}
void WidgetWindow::setSize(QSize size)
{
m_window.setWidth(size.width());
m_window.setHeight(size.height());
}
void WidgetWindow::destroyThis()
{
QCoreApplication::quit();
}
void WidgetWindow::messageReceived(QString key, QString value)
{
emit qmlSceneValueReceived(key, value);
}
void WidgetWindow::setPos(int xPos, int yPos)
{
QPoint delta((xPos - m_clickPos.x()), (yPos - m_clickPos.y()));
int new_x = m_window.x() + delta.x();
int new_y = m_window.y() + delta.y();
m_window.setPosition(QPoint(new_x, new_y));
}
void WidgetWindow::setClickPos(const QPoint& clickPos)
{
m_clickPos = clickPos;
}
#ifdef Q_OS_WIN
void WidgetWindow::SetWindowBlur(HWND hWnd)
{
const HINSTANCE hModule = LoadLibrary(TEXT("user32.dll"));
if (hModule) {
struct ACCENTPOLICY {
int nAccentState;
int nFlags;
int nColor;
int nAnimationId;
};
struct WINCOMPATTRDATA {
int nAttribute;
PVOID pData;
ULONG ulDataSize;
};
enum class Accent {
DISABLED = 0,
GRADIENT = 1,
TRANSPARENTGRADIENT = 2,
BLURBEHIND = 3,
ACRYLIC = 4,
INVALID = 5
};
typedef BOOL(WINAPI * pSetWindowCompositionAttribute)(HWND, WINCOMPATTRDATA*);
const pSetWindowCompositionAttribute SetWindowCompositionAttribute = (pSetWindowCompositionAttribute)GetProcAddress(hModule, "SetWindowCompositionAttribute");
if (SetWindowCompositionAttribute) {
ACCENTPOLICY policy = { static_cast<int>(Accent::BLURBEHIND), 0, 0, 0 }; // ACCENT_ENABLE_BLURBEHIND=3...
WINCOMPATTRDATA data = { 19, &policy, sizeof(ACCENTPOLICY) }; // WCA_ACCENT_POLICY=19
SetWindowCompositionAttribute(hWnd, &data);
}
FreeLibrary(hModule);
}
}
#endif

View File

@ -8,27 +8,28 @@
#include <QPoint>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QtQuick/QQuickView>
#include <QtQuick/QQuickWindow>
#include <QQmlEngine>
#include <QQuickWindow>
#include <QSharedPointer>
#include <QString>
#include <QWindow>
#include <QtQuick/QQuickView>
#include <QtQuick/QQuickWindow>
#ifdef Q_OS_WIN
#include <qt_windows.h>
#else
typedef long HWND;
#endif
class SPWidgetmainwindow : public QWindow {
class WidgetWindow : public QObject {
Q_OBJECT
public:
explicit SPWidgetmainwindow(QString projectPath, QString appid, QScreen* parent = nullptr);
explicit WidgetWindow(QString projectPath, QString appid, QObject* parent = nullptr);
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
Q_PROPERTY(QString projectConfig READ projectConfig WRITE setProjectConfig NOTIFY projectConfigChanged)
Q_PROPERTY(QString sourcePath READ sourcePath WRITE setSourcePath NOTIFY sourcePathChanged)
QString appID() const
{
@ -45,17 +46,24 @@ public:
return m_projectConfig;
}
QString sourcePath() const
{
return m_sourcePath;
}
signals:
void appIDChanged(QString appID);
void typeChanged(QString type);
void projectConfigChanged(QString projectConfig);
void setWidgetSource(QString source);
void sourcePathChanged(QString sourcePath);
void qmlSceneValueReceived(QString key, QString value);
public slots:
void setSize(QSize size);
void destroyThis();
void messageReceived(QString key, QString value);
void setAppID(QString appID)
{
if (m_appID == appID)
@ -83,15 +91,28 @@ public slots:
void setPos(int xPos, int yPos);
void setClickPos(const QPoint& clickPos);
#ifdef Q_OS_WIN
void SetWindowBlur(HWND hWnd);
#endif
void setSourcePath(QString sourcePath)
{
if (m_sourcePath == sourcePath)
return;
m_sourcePath = sourcePath;
emit sourcePathChanged(m_sourcePath);
}
private:
QString m_appID;
QString m_type = "qmlWidget";
QString m_projectConfig;
QJsonObject m_project;
#ifdef Q_OS_WIN
HWND m_hwnd;
#endif
QPoint m_clickPos = { 0, 0 };
QSharedPointer<QQuickView> m_quickRenderer;
QQuickView m_window;
QString m_sourcePath;
};

25
ScreenPlayWidget/test.qml Normal file
View File

@ -0,0 +1,25 @@
import QtQuick 2.12
Rectangle {
anchors.fill: parent
color: "#80000000"
Text {
id: name
text: qsTr("This is a empty test widget. You can change the source in test.qml")
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
anchors.fill: parent
anchors.margins: 10
color: "white"
}
}
/*##^## Designer {
D{i:0;autoSize:true;height:480;width:640}
}
##^##*/

View File

@ -1,5 +1,6 @@
<RCC>
<qresource prefix="/">
<file>qml/main.qml</file>
<file>mainWindow.qml</file>
<file>test.qml</file>
</qresource>
</RCC>

View File

@ -1,41 +0,0 @@
#include "../ScreenPlaySDK/screenplaysdk.h"
#include "src/SPWmainwindow.h"
#include <QApplication>
#include <QObject>
#include <QStringList>
#include <QtWebEngine>
int main(int argc, char* argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication a(argc, argv);
ScreenPlaySDK sdk;
QtWebEngine::initialize();
// 6 parameter + 1 OS working directory default paramter
QStringList argumentList = a.arguments();
if (argumentList.length() != 7) {
return -3;
}
bool canParseMonitorNumber = false;
int monitor = argumentList.at(1).toInt(&canParseMonitorNumber);
if (!canParseMonitorNumber) {
return -4;
}
// Args: which monitor, (2) path to project, (3)wallpaper secret to identify the connected socket, (4) decoder, (5) volume, (6) fillmode
// See screenplay.h @ScreenPlayWallpaper constructor how the args get created
//MainWindow w(0,"D:/672870/_tmp_135011","","","","");
sdk.setAppID(argumentList.at(3));
qDebug() << "Starting MainWindow: " << argumentList.at(2) << argumentList.at(3) << argumentList.at(4) << argumentList.at(5) << argumentList.at(6);
MainWindow w(monitor, argumentList.at(2), argumentList.at(3), argumentList.at(4), argumentList.at(5), argumentList.at(6));
QObject::connect(&sdk, &ScreenPlaySDK::sdkDisconnected, &w, &MainWindow::destroyThis);
QObject::connect(&sdk, &ScreenPlaySDK::incommingMessage, &w, &MainWindow::messageReceived);
return a.exec();
}

View File

@ -1,28 +1,45 @@
TEMPLATE = app
QT += qml quick quickcontrols2 widgets core webengine
CONFIG += c++17
#CONFIG += qtquickcompiler
msvc: LIBS += -luser32
DEFINES += QT_DEPRECATED_WARNINGS
TARGETPATH = ScreenPlayWindow
SOURCES += \
SPWmain.cpp \
src/SPWmainwindow.cpp
HEADERS += \
src/SPWmainwindow.h
RESOURCES += \
SPWResources.qrc
INCLUDEPATH += \
$$PWD/../../ThirdParty/ \
$$PWD/../../src/ \
SOURCES += \
main.cpp \
src/basewindow.cpp \
include(../ScreenPlaySDK/Screenplaysdk.pri)
HEADERS += \
src/basewindow.h \
macx: {
unix{
SOURCES += \
src/linuxwindow.cpp
HEADERS += \
src/linuxwindow.h
}
win32 {
LIBS += -luser32
SOURCES += \
src/windowsdesktopproperties.cpp \
src/winwindow.cpp
HEADERS += \
src/windowsdesktopproperties.h \
src/winwindow.h
}
include(../ScreenPlaySDK/ScreenPlaySDK.pri)
macx {
QMAKE_LIBDIR += $$OUT_PWD/
install_it.path = $${OUT_PWD}/../ScreenPlaySDK
@ -35,40 +52,29 @@ macx: {
HEADERS += src/macintegration.h \
src/macbridge.h
OBJECTIVE_SOURCES += src/MacBridge.mm
SOURCES += \
src/macwindow.cpp
HEADERS += \
src/macwindow.h
}
!macx: {
!macx {
CONFIG(debug, debug|release) {
LIBS += -lScreenplaysdkd
LIBS += -lScreenPlaySDKd
install_it.path = $${OUT_PWD}/debug/
QMAKE_LIBDIR += $$OUT_PWD/../ScreenPlaySDK/debug
} else {
LIBS += -lScreenplaysdk
LIBS += -lScreenPlaySDK
install_it.path = $${OUT_PWD}/release/
QMAKE_LIBDIR += $$OUT_PWD/../ScreenPlaySDK/release
}
QMAKE_LIBDIR += $$OUT_PWD/../ScreenPlaySDK
install_it.files += index.html \
INSTALLS += install_it
DISTFILES += \
index.html
}
install_it.files += index.html \
# Additional import path used to resolve QML modules in Qt Creator's code model
QML_IMPORT_PATH =
# Additional import path used to resolve QML modules just for Qt Quick Designer
QML_DESIGNER_IMPORT_PATH =
QT_QUICK_CONTROLS_STYLE = "Material"
# The following define makes your compiler emit warnings if you use
# any feature of Qt which as been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
INSTALLS += install_it
DISTFILES += \
index.html

View File

@ -8,18 +8,16 @@
height: 100%;
object-fit: fill;
overflow: hidden;
background-image: linear-gradient(120deg, #f6d365 0%, #fda085 100%);
}
body, html{
margin: 0px;
padding: 0px;
overflow: hidden;
background:orange;
margin: 0px;
padding: 0px;
overflow: hidden;
background:black;
}
#errorMsg{
position: fixed;
top: 0;
top: 50%;
text-align: center;
left: 0;
width: 100%;
@ -32,10 +30,9 @@
</style>
</head>
<body>
<h2 id="errorMsg">If you can read this something went wrong. Oh well....</h2>
<video id="videoPlayer" oncontextmenu="return false;" width="100%" height="100%" loop autoplay>
<source id="videoSource" src="" type="video/webm" oncontextmenu="return false;" width="100%" height="100%"> Your browser does not support the video tag.
<source id="videoSource" type="video/webm" oncontextmenu="return false;" width="100%" height="100%"> Your browser does not support the video tag. WTF?
</video>
</body>
</html>

106
ScreenPlayWindow/main.cpp Normal file
View File

@ -0,0 +1,106 @@
#include <QApplication>
#include <QObject>
#include <QStringList>
#include <QtGlobal>
#include <QtWebEngine>
#if defined(Q_OS_WIN)
#include "src/winwindow.h"
#endif
#if defined(Q_OS_LINUX)
#include "src/linuxwindow.h"
#endif
#if defined(Q_OS_OSX)
#include "src/macwindow.h"
#endif
#include "../ScreenPlaySDK/screenplaysdk.h"
int main(int argc, char* argv[])
{
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);
// This gives us nice clickable output in QtCreator
qSetMessagePattern("%{if-category}%{category}: %{endif}%{message}\n Loc: [%{file}:%{line}]");
// Qt < 6.0 needs this init QtWebEngine
QtWebEngine::initialize();
// If we start with only one argument (app path)
// It means we want to test a single wallpaper
QStringList argumentList = app.arguments();
if (argumentList.length() == 1) {
QVector<int> list;
list.append(0);
#if defined(Q_OS_WIN)
WinWindow window(list, "test", "appid", "1");
// WinWindow window(list, "D:/672870/827874818", "appid", "1");
#endif
#if defined(Q_OS_LINUX)
LinuxWindow window(list, "test", "appid", "1");
#endif
#if defined(Q_OS_OSX)
LinuxWindow window(list, "test", "appid", "1");
#endif
return app.exec();
}
// 6 parameter + 1 OS working directory default paramter
if (argumentList.length() != 7) {
return -3;
}
ScreenPlaySDK sdk;
sdk.setAppID(argumentList.at(3));
QString monitorNumbers = argumentList.at(1);
QVector<int> list;
if (monitorNumbers.length() == 1) {
bool canParseMonitorNumber = false;
int monitor = monitorNumbers.toInt(&canParseMonitorNumber);
if (!canParseMonitorNumber) {
qFatal("Could not parse monitor id to diplay wallpaper");
}
list.append(monitor);
} else {
QStringList activeScreensList = monitorNumbers.split(",");
for (QString s : activeScreensList) {
bool ok = false;
int val = s.toInt(&ok);
if (!ok) {
qFatal("Could not parse monitor id to diplay wallpaper");
}
list.append(val);
}
}
// Args: which monitor, (2) path to project, (3)wallpaper secret to identify the connected socket, (5) volume
// See screenplay.h @ScreenPlayWallpaper constructor how the args get created
#if defined(Q_OS_WIN)
WinWindow window(list, argumentList.at(2), argumentList.at(3), argumentList.at(5));
QObject::connect(&sdk, &ScreenPlaySDK::sdkDisconnected, &window, &WinWindow::destroyThis);
QObject::connect(&sdk, &ScreenPlaySDK::incommingMessage, &window, &WinWindow::messageReceived);
#endif
#if defined(Q_OS_LINUX)
LinuxWindow window(list, argumentList.at(2), argumentList.at(3), argumentList.at(5));
QObject::connect(&sdk, &ScreenPlaySDK::sdkDisconnected, &window, &LinuxWindow::destroyThis);
QObject::connect(&sdk, &ScreenPlaySDK::incommingMessage, &window, &LinuxWindow::messageReceived);
#endif
#if defined(Q_OS_OSX)
MacWindow window(list, argumentList.at(2), argumentList.at(3), argumentList.at(5));
QObject::connect(&sdk, &ScreenPlaySDK::sdkDisconnected, &MacWindow, &MacWindow::destroyThis);
QObject::connect(&sdk, &ScreenPlaySDK::incommingMessage, &MacWindow, &MacWindow::messageReceived);
#endif
return app.exec();
}

View File

@ -0,0 +1,177 @@
import QtQuick 2.12
import QtWebEngine 1.8
import net.aimber.wallpaper 1.0
Rectangle {
anchors.fill: parent
color: {
if (desktopProperties.color === null) {
return "black"
} else {
return desktopProperties.color
}
}
property bool canFadeIn: true
Component.onCompleted: {
WebEngine.settings.allowRunningInsecureContent = true
WebEngine.settings.accelerated2dCanvasEnabled = true
WebEngine.settings.javascriptCanOpenWindows = false
WebEngine.settings.printElementBackgrounds = false
WebEngine.settings.showScrollBars = false
WebEngine.settings.playbackRequiresUserGesture = false
switch (window.type) {
case Wallpaper.WallpaperType.Video:
webView.url = Qt.resolvedUrl(window.getApplicationPath(
) + "/index.html")
webView.enabled = true
break
case Wallpaper.WallpaperType.Html:
webView.enabled = true
webView.url = Qt.resolvedUrl(window.fullContentPath)
break
case Wallpaper.WallpaperType.ThreeJSScene:
webView.enabled = true
break
case Wallpaper.WallpaperType.Qml:
loader.source = Qt.resolvedUrl(window.fullContentPath)
break
}
fadeIn()
}
function fadeIn() {
window.setVisible(true)
if (canFadeIn) {
animFadeIn.start()
} else {
imgCover.opacity = 0
}
}
Loader {
id: loader
anchors.fill: parent
}
WebEngineView {
id: webView
enabled: false
anchors.fill: parent
onLoadProgressChanged: {
if (loadProgress === 100) {
var src = ""
src += "var videoPlayer = document.getElementById('videoPlayer');"
src += "var videoSource = document.getElementById('videoSource');"
src += "videoSource.src = '" + window.fullContentPath + "';"
src += "videoPlayer.load();"
src += "videoPlayer.volume = " + window.volume + ";"
src += "videoPlayer.play();"
webView.runJavaScript(src, function (result) {
fadeIn()
})
}
}
onJavaScriptConsoleMessage: print(lineNumber, message)
}
OpacityAnimator {
id: animFadeIn
target: imgCover
from: 1
to: 0
duration: 300
easing.type: Easing.InCubic
}
Image {
id: imgCover
anchors.fill: parent
source: Qt.resolvedUrl("file:///" + desktopProperties.wallpaperPath)
Component.onCompleted: {
switch (desktopProperties.wallpaperStyle) {
case 10:
imgCover.fillMode = Image.PreserveAspectCrop
break
case 6:
imgCover.fillMode = Image.PreserveAspectFit
break
case 2:
break
case 0:
if (desktopProperties.isTiled) {
// Tiled
imgCover.fillMode = Image.Tile
} else {
// Center
imgCover.fillMode = Image.PreserveAspectFit
imgCover.anchors.centerIn = parent
imgCover.width = sourceSize.width
imgCover.height = sourceSize.height
}
break
case 22:
canFadeIn = false
break
}
}
}
Connections {
target: window
onQmlExit: {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.volume = 0;")
window.destroyThis()
}
onQmlSceneValueReceived: {
var obj2 = 'import QtQuick 2.12; Item {Component.onCompleted: loader.item.'
+ key + ' = ' + value + '; }'
var newObject = Qt.createQmlObject(obj2.toString(), root, "err")
newObject.destroy(10000)
}
onLoopsChanged: {
if (webView.loadProgress === 100) {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.loop = " + loops + ";")
}
}
onVolumeChanged: {
if (webView.loadProgress === 100) {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.volume = " + volume + ";")
}
}
onPlaybackRateChanged: {
if (webView.loadProgress === 100) {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.playbackRate = " + playbackRate + ";")
}
}
onIsPlayingChanged: {
if (webView.loadProgress === 100) {
if (isPlaying === "false") {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.play();")
} else {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.pause();")
}
}
}
}
}

View File

@ -1,154 +0,0 @@
import QtQuick 2.12
import QtWebEngine 1.8
Rectangle {
id: root
anchors.fill: parent
Connections {
target: mainwindow
onQmlExit: {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.volume = 0;")
mainwindow.destroyThis()
}
onFillModeChanged: {
//TODO
}
onQmlSceneValueReceived: {
var obj2 = 'import QtQuick 2.12; Item {Component.onCompleted: loader.item.'
+ key + ' = ' + value + '; }'
var newObject = Qt.createQmlObject(obj2.toString(), root, "err")
newObject.destroy(10000)
}
onLoopsChanged: {
if (webView.loadProgress === 100) {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.loop = " + loops + ";")
}
}
onVolumeChanged: {
if (webView.loadProgress === 100) {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.volume = " + volume + ";")
}
}
onPlaybackRateChanged: {
if (webView.loadProgress === 100) {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.playbackRate = " + playbackRate + ";")
}
}
onIsPlayingChanged: {
if (webView.loadProgress === 100) {
if (isPlaying === "false") {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.play();")
} else {
webView.runJavaScript(
"var videoPlayer = document.getElementById('videoPlayer'); videoPlayer.pause();")
}
}
}
}
Component.onCompleted: {
if (mainwindow.type === "qmlScene") {
loader.setSource(Qt.resolvedUrl(
"file:///" + mainwindow.fullContentPath))
mainwindow.init()
timer.start()
} else if (mainwindow.type === "video") {
webView.visible = true
webView.url = Qt.resolvedUrl(
"file:///" + mainwindow.getApplicationPath(
) + "/index.html")
} else if (mainwindow.type === "html") {
webView.visible = true
webView.url = Qt.resolvedUrl(
"file:///" + mainwindow.fullContentPath)
mainwindow.init()
timer.start()
}
mainwindow.init()
timer.start()
}
WebEngineView {
id: webView
anchors.fill: parent
onLoadProgressChanged: {
if (loadProgress === 100) {
runJavaScript(("
var videoPlayer = document.getElementById('videoPlayer');
var videoSource = document.getElementById('videoSource');
videoSource.src = \"file:///" + mainwindow.fullContentPath + "\";
videoPlayer.load();
videoPlayer.volume = " + mainwindow.volume + ";" +
" videoPlayer.play();"), function (result) {
})
}
}
onJavaScriptConsoleMessage: {
print(message)
// runJavaScript("
// var videoPlayer = document.getElementById('errorMsg');
// var text = document.createTextNode("+message+");
// videoPlayer.appendChild(text);
//");
}
settings.allowRunningInsecureContent: true
settings.accelerated2dCanvasEnabled: true
settings.javascriptCanOpenWindows: false
settings.printElementBackgrounds: false
settings.showScrollBars: false
settings.playbackRequiresUserGesture: false
}
Loader {
id: loader
anchors.fill: parent
onStatusChanged: {
print(webViewWrapper.errorString())
}
}
Timer {
id: timer
interval: 200
onTriggered: {
anim.start()
}
}
Rectangle {
id: curtain
anchors.fill: parent
color: "black"
PropertyAnimation {
id: anim
property: "opacity"
target: curtain
from: "1"
to: "0"
duration: 300
}
}
}

View File

@ -18,14 +18,12 @@ BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam)
//for mac https://github.com/silvansky/QtMacApp/search?q=myprivate&unscoped_q=myprivate
MainWindow::MainWindow(int i, QString projectPath, QString id, QString decoder, QString volume, QString fillmode, QScreen* parent)
: QWindow(parent)
MainWindow::MainWindow(int screenAt, QString projectPath, QString id, QString decoder, QString volume, QString fillmode, QWindow* parent)
: QQuickView(parent)
{
m_appID = id;
m_screenNumber.insert(0, i);
m_screenNumber.append(screenAt);
setDecoder(decoder);
setProjectPath(projectPath);
@ -62,23 +60,23 @@ MainWindow::MainWindow(int i, QString projectPath, QString id, QString decoder,
if (m_project.value("type") == "video") {
QString tmpPath = m_projectPath.toString() + "/" + m_projectFile;
setFullContentPath(tmpPath);
setType("video");
setWallpaperType("video");
} else if (m_project.value("type") == "scene") {
return;
} else if (m_project.value("type") == "qmlScene") {
QString tmpPath = m_projectPath.toString() + "/" + m_projectFile;
setFullContentPath(tmpPath);
setType("qmlScene");
setWallpaperType("qmlScene");
} else if (m_project.value("type") == "html") {
QString tmpPath = m_projectPath.toString() + "/" + m_projectFile;
setFullContentPath(tmpPath);
setType("html");
setWallpaperType("html");
}
}
// Recalculate window coordiantes because of point (0,0)
// Is at the origin monitor or the most left
QScreen* screen = QApplication::screens().at(i);
int offsetX = 0;
int offsetY = 0;
@ -92,14 +90,13 @@ MainWindow::MainWindow(int i, QString projectPath, QString id, QString decoder,
}
}
#ifdef Q_OS_WIN
#ifdef Q_OS_WIN
m_hwnd = (HWND)this->winId();
m_hwnd = reinterpret_cast<HWND>(winId());
HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager");
// Spawn new worker window below desktop (using some undocumented Win32 magic)
// See
// https://www.codeproject.com/articles/856020/draw-behind-desktop-icons-in-windows
// See https://www.codeproject.com/articles/856020/draw-behind-desktop-icons-in-windows
// for more details
const DWORD WM_SPAWN_WORKER = 0x052C;
SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL,
@ -113,67 +110,79 @@ MainWindow::MainWindow(int i, QString projectPath, QString id, QString decoder,
}
//Hide first to avoid flickering
//ShowWindow(m_worker_hwnd, SW_HIDE);
QScreen* screen = QApplication::screens().at(screenAt);
if (screen == nullptr) {
destroyThis();
}
ShowWindow(m_hwnd, SW_HIDE);
MoveWindow(m_hwnd, screen->geometry().x() + offsetX, screen->geometry().y() + offsetY, screen->size().width(), screen->size().height(), true);
SetParent(m_hwnd, m_worker_hwnd);
UpdateWindow(m_hwnd);
UpdateWindow(m_worker_hwnd);
SetWindowLongPtr(m_hwnd, GWL_STYLE, WS_CHILDWINDOW);
SetWindowLongPtr(m_hwnd, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE );
// ShowWindow(m_hwnd, SW_SHOW);
//MoveWindow(m_hwnd, screen->geometry().x(), screen->geometry().y() , screen->size().width(), screen->size().height(), true);
SetWindowLongPtr(m_hwnd, GWL_STYLE, WS_CHILDWINDOW | WS_CAPTION | WS_THICKFRAME | WS_MINIMIZE | WS_MAXIMIZE | WS_SYSMENU | WS_POPUP);
SetWindowLongPtr(m_hwnd, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE | WS_EX_TOPMOST | WS_EX_TRANSPARENT | WS_EX_TOOLWINDOW);
qDebug() << "Create window: " << screenAt << ", x: " << screen->geometry().x() << "y: " << screen->geometry().y() << screen->size().width() << screen->size().height();
#endif
#endif
#ifdef Q_OS_MACOS
//debug
this->setWidth(screen->size().width());
this->setHeight(screen->size().height());
int x = screen->geometry().x();
int y = screen->geometry().y();
this->setX(screen->geometry().x());// + offsetX);
this->setY(screen->geometry().y());// + offsetY);#endif
this->setX(screen->geometry().x()); // );
this->setY(screen->geometry().y()); // );
#endif
Qt::WindowFlags flags = this->flags();
this->setFlags(flags | Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint);
setFlags(flags | Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint);
rootContext()->setContextProperty("mainwindow", this);
setSource(QUrl("qrc:/qml/main.qml"));
setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
setGeometry(screen->geometry().x() + offsetX, screen->geometry().y() + offsetY, screen->size().width(), screen->size().height());
//show();
m_quickRenderer = QSharedPointer<QQuickView>(new QQuickView(this));
m_quickRenderer.data()->rootContext()->setContextProperty("mainwindow", this);
m_quickRenderer.data()->setSource(QUrl("qrc:/qml/main.qml"));
m_quickRenderer.data()->setGeometry(0, 0, width(), height());
m_quickRenderer.data()->setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
m_quickRenderer.data()->setFlags(flags | Qt::FramelessWindowHint | Qt::WindowStaysOnBottomHint);
m_quickRenderer.data()->show();
UpdateWindow(m_hwnd);
UpdateWindow(m_worker_hwnd);
setVolume(volume.toFloat());
setFillMode(fillmode);
connect(m_quickRenderer.data(), &QQuickView::statusChanged, [=](QQuickView::Status status) {
connect(this, &QQuickView::statusChanged, [=](QQuickView::Status status) {
if (status == QQuickView::Error) {
destroyThis();
}
});
setVisible(true);
QTimer::singleShot(3000,[=](){
ShowWindow(m_hwnd, SW_SHOWNOACTIVATE);
});
//setVisible(true);
//ShowWindow(m_hwnd, SW_SHOWDEFAULT);
#ifdef Q_OS_MACOS
MacIntegration* integration = new MacIntegration(this);
integration->SetBackgroundLevel(this);
#endif
}
void MainWindow::init()
{
#ifdef Q_OS_WIN
// This needs to be set in this order or
// the window will be opened as fullscreen!
//ShowWindow(m_worker_hwnd, SW_SHOWDEFAULT);
ShowWindow(m_hwnd, SW_SHOWDEFAULT);
//ShowWindow(m_hwnd, SW_SHOWDEFAULT);
#endif
}
void MainWindow::destroyThis()
{
#ifdef Q_OS_WIN
ShowWindow(m_worker_hwnd, SW_HIDE);
ShowWindow(m_hwnd, SW_HIDE);
#endif
QCoreApplication::quit();

View File

@ -13,6 +13,7 @@
#include <QSharedPointer>
#include <QWindow>
#include <QtGlobal>
#include <QTimer>
#include <QtQuick/QQuickView>
#include <QtQuick/QQuickWindow>
@ -20,18 +21,18 @@
#include <qt_windows.h>
#endif
class MainWindow : public QWindow {
class MainWindow : public QQuickView {
Q_OBJECT
public:
explicit MainWindow(int i, QString projectPath, QString id, QString decoder, QString volume, QString fillmode, QScreen* parent = nullptr);
explicit MainWindow(int screenAt, QString projectPath, QString id, QString decoder, QString volume, QString fillmode, QWindow* parent = nullptr);
Q_PROPERTY(QVector<int> screenNumber READ screenNumber WRITE setScreenNumber NOTIFY screenNumberChanged)
Q_PROPERTY(QString projectConfig READ projectConfig WRITE setProjectConfig NOTIFY projectConfigChanged)
Q_PROPERTY(QString appID READ name WRITE setname NOTIFY nameChanged)
Q_PROPERTY(QString type READ type WRITE setType NOTIFY typeChanged)
Q_PROPERTY(QString fullContentPath READ fullContentPath WRITE setFullContentPath NOTIFY fullContentPathChanged)
Q_PROPERTY(QString fullContentPath READ fullContentPath WRITE setFullContentPath NOTIFY fullContentPathChanged)
Q_PROPERTY(QString wallpaperType READ wallpaperType WRITE setWallpaperType NOTIFY wallpaperTypeChanged)
Q_PROPERTY(QString fillMode READ fillMode WRITE setFillMode NOTIFY fillModeChanged)
Q_PROPERTY(bool loops READ loops WRITE setLoops NOTIFY loopsChanged)
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged)
@ -59,11 +60,6 @@ public:
return m_projectPath;
}
QString type() const
{
return m_type;
}
QString fillMode() const
{
return m_fillMode;
@ -98,6 +94,11 @@ public:
return m_decoder;
}
QString wallpaperType() const
{
return m_wallpaperType;
}
public slots:
void destroyThis();
void init();
@ -126,15 +127,6 @@ public slots:
emit nameChanged(m_appID);
}
void setType(QString type)
{
if (m_type == type)
return;
m_type = type;
emit typeChanged(m_type);
}
void setFillMode(QString fillMode)
{
if (m_fillMode == fillMode)
@ -155,7 +147,6 @@ public slots:
void setVolume(float volume)
{
qWarning("Floating point comparison needs context sanity check");
if (qFuzzyCompare(m_volume, volume))
return;
@ -210,13 +201,22 @@ public slots:
emit decoderChanged(m_decoder);
}
void setWallpaperType(QString wallpaperType)
{
if (m_wallpaperType == wallpaperType)
return;
m_wallpaperType = wallpaperType;
emit wallpaperTypeChanged(m_wallpaperType);
}
signals:
void playVideo(QString path);
void playQmlScene(QString file);
void projectConfigChanged(QString projectConfig);
void nameChanged(QString appID);
void screenNumberChanged(QVector<int> screenNumber);
void typeChanged(QString type);
void fillModeChanged(QString fillMode);
void loopsChanged(bool loops);
void volumeChanged(float volume);
@ -227,12 +227,14 @@ signals:
void decoderChanged(QString decoder);
void qmlExit();
void wallpaperTypeChanged(QString wallpaperType);
private:
#ifdef Q_OS_WIN
HWND m_hwnd;
HWND m_worker_hwnd;
#endif
QSharedPointer<QQuickView> m_quickRenderer = nullptr;
QUrl m_projectPath;
QString m_projectFile;
QJsonObject m_project;
@ -240,7 +242,7 @@ private:
QString m_appID;
QVector<int> m_screenNumber;
QString m_type;
QString m_fillMode;
bool m_loops;
float m_volume;
@ -248,4 +250,5 @@ private:
bool m_isPlaying;
float m_playbackRate;
QString m_decoder;
QString m_wallpaperType;
};

View File

@ -0,0 +1,78 @@
#include "basewindow.h"
BaseWindow::BaseWindow(QObject* parent)
: QObject(parent)
{
}
BaseWindow::BaseWindow(QString projectFilePath, QObject* parent)
: QObject(parent)
{
qRegisterMetaType<BaseWindow::WallpaperType>();
qmlRegisterType<BaseWindow>("net.aimber.wallpaper", 1, 0, "Wallpaper");
if (projectFilePath == "test") {
setType(BaseWindow::WallpaperType::Qml);
setFullContentPath("qrc:/test.qml");
return;
}
QFile projectFile;
QJsonDocument configJsonDocument;
QJsonParseError parseError;
projectFile.setFileName(projectFilePath + "/project.json");
projectFile.open(QIODevice::ReadOnly | QIODevice::Text);
QString projectConfig = projectFile.readAll();
configJsonDocument = QJsonDocument::fromJson(projectConfig.toUtf8(), &parseError);
/* project.json example:
*{
* "description": "",
* "file": "example.webm",
* "preview": "preview.png",
* "previewGIF": "preview.gif",
* "previewMP4": "preview.mp4",
* "title": "example title",
* "type": "video"
*}
*/
if (!(parseError.error == QJsonParseError::NoError)) {
qDebug() << projectConfig << "\n"
<< parseError.errorString();
qFatal("Settings Json Parse Error. Exiting now!");
}
QJsonObject projectObject = configJsonDocument.object();
if (!projectObject.contains("file")) {
qFatal("No file was specified inside the json object!");
}
if (!projectObject.contains("type")) {
qFatal("No type was specified inside the json object!");
}
setFullContentPath("file:///" + projectFilePath + "/" + projectObject.value("file").toString());
if (projectObject.value("type") == "video") {
setType(BaseWindow::WallpaperType::Video);
return;
}
if (projectObject.value("type") == "scene") {
setType(BaseWindow::WallpaperType::ThreeJSScene);
return;
}
if (projectObject.value("type") == "qml") {
setType(BaseWindow::WallpaperType::Qml);
return;
}
if (projectObject.value("type") == "html") {
setType(BaseWindow::WallpaperType::Html);
return;
}
}

View File

@ -0,0 +1,169 @@
#pragma once
#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QObject>
#include <QString>
#include <qqml.h>
class BaseWindow : public QObject {
Q_OBJECT
public:
BaseWindow(QObject* parent = nullptr);
BaseWindow(QString projectFilePath, QObject* parent = nullptr);
Q_PROPERTY(QString appID READ appID WRITE setAppID NOTIFY appIDChanged)
Q_PROPERTY(QString fullContentPath READ fullContentPath WRITE setFullContentPath NOTIFY fullContentPathChanged)
Q_PROPERTY(bool loops READ loops WRITE setLoops NOTIFY loopsChanged)
Q_PROPERTY(bool isPlaying READ isPlaying WRITE setIsPlaying NOTIFY isPlayingChanged)
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged)
Q_PROPERTY(float playbackRate READ playbackRate WRITE setPlaybackRate NOTIFY playbackRateChanged)
Q_PROPERTY(WallpaperType type READ type WRITE setType NOTIFY typeChanged)
enum class WallpaperType {
Video,
Html,
ThreeJSScene,
Qml,
};
Q_ENUM(WallpaperType)
bool loops() const
{
return m_loops;
}
float volume() const
{
return m_volume;
}
bool isPlaying() const
{
return m_isPlaying;
}
float playbackRate() const
{
return m_playbackRate;
}
WallpaperType type() const
{
return m_type;
}
QString fullContentPath() const
{
return m_fullContentPath;
}
QString appID() const
{
return m_appID;
}
signals:
void loopsChanged(bool loops);
void volumeChanged(float volume);
void isPlayingChanged(bool isPlaying);
void playbackRateChanged(float playbackRate);
void typeChanged(WallpaperType type);
void fullContentPathChanged(QString fullContentPath);
void appIDChanged(QString appID);
void qmlExit();
void qmlSceneValueReceived(QString key, QString value);
public slots:
virtual void destroyThis() {}
virtual void setVisible(bool show) { Q_UNUSED(show) }
virtual void messageReceived(QString key, QString value)
{
Q_UNUSED(key);
Q_UNUSED(value)
}
QString getApplicationPath()
{
return QApplication::applicationDirPath();
}
void setLoops(bool loops)
{
if (m_loops == loops)
return;
m_loops = loops;
emit loopsChanged(m_loops);
}
void setVolume(float volume)
{
if (qFuzzyCompare(m_volume, volume))
return;
m_volume = volume;
emit volumeChanged(m_volume);
}
void setIsPlaying(bool isPlaying)
{
if (m_isPlaying == isPlaying)
return;
m_isPlaying = isPlaying;
emit isPlayingChanged(m_isPlaying);
}
void setPlaybackRate(float playbackRate)
{
qWarning("Floating point comparison needs context sanity check");
if (qFuzzyCompare(m_playbackRate, playbackRate))
return;
m_playbackRate = playbackRate;
emit playbackRateChanged(m_playbackRate);
}
void setType(WallpaperType type)
{
if (m_type == type)
return;
m_type = type;
emit typeChanged(m_type);
}
void setFullContentPath(QString fullContentPath)
{
if (m_fullContentPath == fullContentPath)
return;
m_fullContentPath = fullContentPath;
emit fullContentPathChanged(m_fullContentPath);
}
void setAppID(QString appID)
{
if (m_appID == appID)
return;
m_appID = appID;
emit appIDChanged(m_appID);
}
private:
bool m_loops = true;
bool m_isPlaying = true;
float m_volume = 1.0f;
float m_playbackRate = 1.0f;
QString m_fullContentPath;
QString m_appID;
WallpaperType m_type = BaseWindow::WallpaperType::Qml;
};

View File

@ -0,0 +1,38 @@
#include "linuxwindow.h"
LinuxWindow::LinuxWindow(QVector<int>& activeScreensList, QString projectPath, QString id, QString volume, QObject* parent)
: BaseWindow(projectPath)
{
setAppID(id);
bool ok = false;
float volumeParsed = volume.toFloat(&ok);
if (!ok) {
qFatal("Could not parse volume");
}
setVolume(volumeParsed);
// WARNING: Setting Window flags must be called *here*!
Qt::WindowFlags flags = m_window.flags();
m_window.setFlags(flags | Qt::FramelessWindowHint | Qt::Desktop);
m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
m_window.rootContext()->setContextProperty("window", this);
// Instead of setting "renderType: Text.NativeRendering" every time
// we can set it here once :)
m_window.setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
m_window.setSource(QUrl("qrc:/mainWindow.qml"));
}
void LinuxWindow::setVisible(bool show)
{
m_window.setVisible(show);
}
void LinuxWindow::destroyThis()
{
QCoreApplication::quit();
}
void LinuxWindow::messageReceived(QString key, QString value)
{
}

View File

@ -0,0 +1,31 @@
#pragma once
#include <QApplication>
#include <QDebug>
#include <QObject>
#include <QQmlContext>
#include <QQmlEngine>
#include <QQuickView>
#include <QScreen>
#include <QSettings>
#include <QString>
#include <QVector>
#include "basewindow.h"
class LinuxWindow : public BaseWindow
{
Q_OBJECT
public:
explicit LinuxWindow(QVector<int>& activeScreensList, QString projectPath, QString id, QString volume,QObject *parent = nullptr);
signals:
public slots:
void setVisible(bool show) override;
void destroyThis() override;
void messageReceived(QString key, QString value) override;
private:
QQuickView m_window;
};

View File

@ -1,7 +1,7 @@
#include "macintegration.h"
#include "macbridge.h"
MacIntegration::MacIntegration(QObject *parent)
MacIntegration::MacIntegration(QObject* parent)
: QObject(parent)
{
MacBridge::instance();

View File

@ -1,15 +1,10 @@
#ifndef MACINTEGRATION_H
#define MACINTEGRATION_H
#pragma oncer
#include <QApplication>
class MacIntegration : public QObject
{
class MacIntegration : public QObject {
Q_OBJECT
public:
explicit MacIntegration(QObject *parent);
explicit MacIntegration(QObject* parent);
void SetBackgroundLevel(QWindow* window);
};
#endif // MACINTEGRATION_H

View File

@ -0,0 +1,38 @@
#include "macwindow.h"
MacWindow::MacWindow(QVector<int>& activeScreensList, QString projectPath, QString id, QString volume, QObject* parent)
: BaseWindow(projectPath)
{
setAppID(id);
bool ok = false;
float volumeParsed = volume.toFloat(&ok);
if (!ok) {
qFatal("Could not parse volume");
}
setVolume(volumeParsed);
// WARNING: Setting Window flags must be called *here*!
Qt::WindowFlags flags = m_window.flags();
m_window.setFlags(flags | Qt::FramelessWindowHint | Qt::Desktop);
m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
m_window.rootContext()->setContextProperty("window", this);
// Instead of setting "renderType: Text.NativeRendering" every time
// we can set it here once :)
m_window.setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
m_window.setSource(QUrl("qrc:/mainWindow.qml"));
}
void MacWindow::setVisible(bool show)
{
m_window.setVisible(show);
}
void MacWindow::destroyThis()
{
QCoreApplication::quit();
}
void MacWindow::messageReceived(QString key, QString value)
{
}

View File

@ -0,0 +1,31 @@
#pragma once
#include <QApplication>
#include <QDebug>
#include <QObject>
#include <QQmlContext>
#include <QQmlEngine>
#include <QQuickView>
#include <QScreen>
#include <QSettings>
#include <QString>
#include <QVector>
#include "basewindow.h"
class MacWindow : public BaseWindow
{
Q_OBJECT
public:
explicit MacWindow(QVector<int>& activeScreensList, QString projectPath, QString id, QString volume,QObject *parent = nullptr);
signals:
public slots:
void setVisible(bool show) override;
void destroyThis() override;
void messageReceived(QString key, QString value) override;
private:
QQuickView m_window;
};

View File

@ -0,0 +1,30 @@
#include "windowsdesktopproperties.h"
WindowsDesktopProperties::WindowsDesktopProperties(QObject* parent)
: QObject(parent)
{
qmlRegisterType<WindowsDesktopProperties>();
QSettings settings("HKEY_CURRENT_USER\\Control Panel\\Desktop", QSettings::NativeFormat);
setWallpaperPath(settings.value("WallPaper").toString());
setIsTiled(settings.value("TileWallpaper").toBool());
QPoint pos;
pos.setX(settings.value("WallpaperOriginX").toInt());
pos.setY(settings.value("WallpaperOriginY").toInt());
setPosition(pos);
setWallpaperStyle(settings.value("WallpaperStyle").toInt());
QSettings settingscolor("HKEY_CURRENT_USER\\Control Panel\\Colors", QSettings::NativeFormat);
QString colorStringRGB = settingscolor.value("Background").toString();
QStringList colorStringRGBList = colorStringRGB.split(" ");
if (colorStringRGBList.length() == 3) {
int colorR = colorStringRGBList.at(0).toInt();
int colorG = colorStringRGBList.at(1).toInt();
int colorB = colorStringRGBList.at(2).toInt();
setColor(QColor::fromRgb(colorR, colorG, colorB));
}
}

View File

@ -0,0 +1,120 @@
#pragma once
#include <QColor>
#include <QDebug>
#include <QObject>
#include <QPoint>
#include <QSettings>
#include <QString>
#include <QList>
#include <qqml.h>
#include <qt_windows.h>
class WindowsDesktopProperties : public QObject {
Q_OBJECT
public:
explicit WindowsDesktopProperties(QObject* parent = nullptr);
Q_PROPERTY(QString wallpaperPath READ wallpaperPath WRITE setWallpaperPath NOTIFY wallpaperPathChanged)
Q_PROPERTY(QPoint position READ position WRITE setPosition NOTIFY positionChanged)
Q_PROPERTY(bool isTiled READ isTiled WRITE setIsTiled NOTIFY isTiledChanged)
Q_PROPERTY(int wallpaperStyle READ wallpaperStyle WRITE setWallpaperStyle NOTIFY wallpaperStyleChanged)
Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged)
/* WallpaperStyle integer values in the windows registry
* 10 -> fill
* 6 -> fit
* 2 -> stretch
* 0 -> tile -> isTiled true
* 0 -> center -> isTiled false WTF Windows?
* 22 -> span
*/
QString wallpaperPath() const
{
return m_wallpaperPath;
}
QPoint position() const
{
return m_position;
}
bool isTiled() const
{
return m_isTiled;
}
int wallpaperStyle() const
{
return m_wallpaperStyle;
}
QColor color() const
{
return m_color;
}
signals:
void wallpaperPathChanged(QString wallpaperPath);
void positionChanged(QPoint position);
void isTiledChanged(bool isTiled);
void wallpaperStyleChanged(int wallpaperStyle);
void colorChanged(QColor color);
public slots:
void setWallpaperPath(QString wallpaperPath)
{
if (m_wallpaperPath == wallpaperPath)
return;
m_wallpaperPath = wallpaperPath;
emit wallpaperPathChanged(m_wallpaperPath);
}
void setPosition(QPoint position)
{
if (m_position == position)
return;
m_position = position;
emit positionChanged(m_position);
}
void setIsTiled(bool isTiled)
{
if (m_isTiled == isTiled)
return;
m_isTiled = isTiled;
emit isTiledChanged(m_isTiled);
}
void setWallpaperStyle(int wallpaperStyle)
{
if (m_wallpaperStyle == wallpaperStyle)
return;
m_wallpaperStyle = wallpaperStyle;
emit wallpaperStyleChanged(m_wallpaperStyle);
}
void setColor(QColor color)
{
if (m_color == color)
return;
m_color = color;
emit colorChanged(m_color);
}
private:
QString m_wallpaperPath;
QPoint m_position;
bool m_isTiled;
int m_wallpaperStyle;
QColor m_color;
};

View File

@ -0,0 +1,151 @@
#include "winwindow.h"
BOOL WINAPI SearchForWorkerWindow(HWND hwnd, LPARAM lparam)
{
// 0xXXXXXXX "" WorkerW
// ...
// 0xXXXXXXX "" SHELLDLL_DefView
// 0xXXXXXXXX "FolderView" SysListView32
// 0xXXXXXXXX "" WorkerW <---- We want this one
// 0xXXXXXXXX "Program Manager" Progman
if (FindWindowExW(hwnd, nullptr, L"SHELLDLL_DefView", nullptr))
*reinterpret_cast<HWND*>(lparam) = FindWindowExW(nullptr, hwnd, L"WorkerW", nullptr);
return TRUE;
}
WinWindow::WinWindow(QVector<int>& activeScreensList, QString projectPath, QString id, QString volume)
: BaseWindow(projectPath)
{
m_windowHandle = reinterpret_cast<HWND>(m_window.winId());
if (!IsWindow(m_windowHandle)) {
qFatal("Could not get a valid window handle!");
}
setAppID(id);
bool ok = false;
float volumeParsed = volume.toFloat(&ok);
if (!ok) {
qFatal("Could not parse volume");
}
setVolume(volumeParsed);
if (!searchWorkerWindowToParentTo()) {
qFatal("No worker window found");
}
// WARNING: Setting Window flags must be called *here*!
Qt::WindowFlags flags = m_window.flags();
m_window.setFlags(flags | Qt::FramelessWindowHint);
SetWindowLongPtr(m_windowHandle, GWL_STYLE, WS_CHILDWINDOW);
SetWindowLongPtr(m_windowHandle, GWL_EXSTYLE, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_NOACTIVATE);
// Windows coordante system begins at 0x0 at the
// main monitors upper left and not at the most left top monitor
calcOffsets();
// Ether for one Screen or for all
if ((QApplication::screens().length() == activeScreensList.length()) && (activeScreensList.length() != 1)) {
setupWallpaperForAllScreens();
} else if (activeScreensList.length() == 1) {
setupWallpaperForOneScreen(activeScreensList.at(0));
}
m_window.setResizeMode(QQuickView::ResizeMode::SizeRootObjectToView);
m_window.rootContext()->setContextProperty("window", this);
m_window.rootContext()->setContextProperty("desktopProperties", &m_windowsDesktopProperties);
// Instead of setting "renderType: Text.NativeRendering" every time
// we can set it here once :)
m_window.setTextRenderType(QQuickWindow::TextRenderType::NativeTextRendering);
m_window.setSource(QUrl("qrc:/mainWindow.qml"));
// FIXME WORKAROUND:
// There is a strange bug when we open the ScreenPlayWindow project on its one
// that if we set ShowWindow(m_windowHandle, SW_HIDE); we can no longer set
// the window visible via set Visible.
if(projectPath != "test"){
// Let QML decide when were are read to show the window
ShowWindow(m_windowHandle, SW_HIDE);
}
}
void WinWindow::setVisible(bool show)
{
if (show) {
ShowWindow(m_windowHandle, SW_SHOW);
m_window.show();
} else {
ShowWindow(m_windowHandle, SW_HIDE);
}
}
void WinWindow::destroyThis()
{
ShowWindow(m_windowHandle, SW_HIDE);
// Force refresh so that we display the regular
// desktop wallpaper again
ShowWindow(m_windowHandleWorker, SW_HIDE);
ShowWindow(m_windowHandleWorker, SW_SHOW);
QCoreApplication::quit();
}
void WinWindow::messageReceived(QString key, QString value)
{
}
void WinWindow::calcOffsets()
{
for (int i = 0; i < QApplication::screens().count(); i++) {
QScreen* screen = QApplication::screens().at(i);
if (screen->availableGeometry().x() < 0) {
m_windowOffsetX += (screen->availableGeometry().x() * -1);
}
if (screen->availableGeometry().y() < 0) {
m_windowOffsetY += (screen->availableGeometry().y() * -1);
}
}
}
void WinWindow::setupWallpaperForOneScreen(int activeScreen)
{
QScreen* screen = QApplication::screens().at(activeScreen);
QRect screenRect = screen->geometry();
m_window.setHeight(screenRect.height());
m_window.setWidth(screenRect.width());
if (!SetWindowPos(m_windowHandle, nullptr, screenRect.x() + m_windowOffsetX, screenRect.y() + m_windowOffsetY, screenRect.width(), screenRect.height(), SWP_SHOWWINDOW)) {
qFatal("Could not set window pos: ");
}
if (SetParent(m_windowHandle, m_windowHandleWorker) == nullptr) {
qFatal("Could not attach to parent window");
}
}
void WinWindow::setupWallpaperForAllScreens()
{
QRect rect;
for (int i = 0; i < QApplication::screens().count(); i++) {
QScreen* screenTmp = QApplication::screens().at(i);
rect.setWidth(rect.width() + screenTmp->geometry().width());
rect.setHeight(rect.height() + screenTmp->geometry().height());
}
m_window.setHeight(rect.height());
m_window.setWidth(rect.width());
if (!SetWindowPos(m_windowHandle, nullptr, 0, 0, rect.width(), rect.height(), SWP_SHOWWINDOW)) {
qFatal("Could not set window pos: ");
}
if (SetParent(m_windowHandle, m_windowHandleWorker) == nullptr) {
qFatal("Could not attach to parent window");
}
}
bool WinWindow::searchWorkerWindowToParentTo()
{
HWND progman_hwnd = FindWindowW(L"Progman", L"Program Manager");
const DWORD WM_SPAWN_WORKER = 0x052C;
SendMessageTimeoutW(progman_hwnd, WM_SPAWN_WORKER, 0xD, 0x1, SMTO_NORMAL,
10000, nullptr);
return EnumWindows(SearchForWorkerWindow, reinterpret_cast<LPARAM>(&m_windowHandleWorker));
}

View File

@ -0,0 +1,44 @@
#pragma once
#include <QApplication>
#include <QDebug>
#include <QObject>
#include <QQmlContext>
#include <QQmlEngine>
#include <QQuickView>
#include <QScreen>
#include <QSettings>
#include <QString>
#include <QVector>
#include <memory>
#include <qt_windows.h>
#include "basewindow.h"
#include "windowsdesktopproperties.h"
class WinWindow : public BaseWindow {
Q_OBJECT
public:
explicit WinWindow(QVector<int>& activeScreensList, QString projectPath, QString id, QString volume);
public slots:
void setVisible(bool show) override;
void destroyThis() override;
void messageReceived(QString key, QString value) override;
private:
void calcOffsets();
void setupWallpaperForOneScreen(int activeScreen);
void setupWallpaperForAllScreens();
bool searchWorkerWindowToParentTo();
private:
int m_windowOffsetX = 0;
int m_windowOffsetY = 0;
QQuickView m_window;
HWND m_windowHandle;
HWND m_windowHandleWorker;
WindowsDesktopProperties m_windowsDesktopProperties;
};

25
ScreenPlayWindow/test.qml Normal file
View File

@ -0,0 +1,25 @@
import QtQuick 2.12
import QtQuick.Controls.Material 2.12
Rectangle {
anchors.fill: parent
color: Material.color(Material.Grey, Material.Shade800)
Text {
id: name
text: qsTr("This is a empty test window. You can change the source in test.qml")
font.pointSize: 32
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
wrapMode: Text.WordWrap
anchors.fill: parent
anchors.margins: 10
color: "white"
}
}
/*##^## Designer {
D{i:0;autoSize:true;height:480;width:640}
}
##^##*/