mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-25 12:13:00 +01:00
Cleanup and small fixes
This commit is contained in:
parent
38f6262f8e
commit
11905a6370
@ -14,7 +14,7 @@ namespace ScreenPlay {
|
||||
class InstalledListFilter : public QSortFilterProxyModel {
|
||||
Q_OBJECT
|
||||
QML_UNCREATABLE("")
|
||||
|
||||
|
||||
public:
|
||||
InstalledListFilter(const std::shared_ptr<InstalledListModel>& ilm);
|
||||
|
||||
|
@ -14,7 +14,7 @@ Item {
|
||||
|
||||
property Item modalSource
|
||||
|
||||
Component.onCompleted: {
|
||||
StackView.onActivated: {
|
||||
wizardContentWrapper.state = "in";
|
||||
stackView.push("qrc:/qml/ScreenPlayApp/qml/Create/StartInfo.qml");
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
StackView.onActivated: {
|
||||
navWrapper.state = "in";
|
||||
App.installedListFilter.sortBySearchType(SearchType.All);
|
||||
checkIsContentInstalled();
|
||||
|
@ -76,19 +76,6 @@ Item {
|
||||
SettingsHorizontalSeperator {
|
||||
}
|
||||
|
||||
SettingBool {
|
||||
headline: qsTr("High priority Autostart")
|
||||
available: false
|
||||
description: qsTr("This options grants ScreenPlay a higher autostart priority than other apps.")
|
||||
isChecked: App.settings.highPriorityStart
|
||||
onCheckboxChanged: {
|
||||
App.settings.setHighPriorityStart(checked);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsHorizontalSeperator {
|
||||
}
|
||||
|
||||
SettingBool {
|
||||
height: 70
|
||||
headline: qsTr("Send anonymous crash reports and statistics")
|
||||
@ -240,7 +227,7 @@ Item {
|
||||
header: SettingsHeader {
|
||||
id: headerPerformance
|
||||
|
||||
text: qsTr("Performance")
|
||||
text: qsTr("Wallpaper and Widgets")
|
||||
image: "qrc:/qml/ScreenPlayApp/assets/icons/icon_build.svg"
|
||||
}
|
||||
|
||||
@ -249,22 +236,10 @@ Item {
|
||||
anchors.margins: 20
|
||||
spacing: 20
|
||||
|
||||
SettingBool {
|
||||
headline: qsTr("Pause wallpaper video rendering while another app is in the foreground")
|
||||
description: qsTr("We disable the video rendering (not the audio!) for the best performance. If you have problem you can disable this behaviour here. Wallpaper restart required!")
|
||||
isChecked: App.settings.checkWallpaperVisible
|
||||
onCheckboxChanged: function (checked) {
|
||||
App.settings.setCheckWallpaperVisible(checked);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsHorizontalSeperator {
|
||||
}
|
||||
|
||||
SettingsComboBox {
|
||||
id: cbVideoFillMode
|
||||
|
||||
headline: qsTr("Default Fill Mode")
|
||||
headline: qsTr("Default Wallpaper Fill Mode")
|
||||
description: qsTr("Set this property to define how the video is scaled to fit the target area.")
|
||||
Component.onCompleted: {
|
||||
cbVideoFillMode.comboBox.currentIndex = root.indexOfValue(cbVideoFillMode.comboBox.model, App.settings.videoFillMode);
|
||||
|
@ -1,8 +1,8 @@
|
||||
// SPDX-License-Identifier: LicenseRef-EliasSteurerTachiom OR AGPL-3.0-only
|
||||
|
||||
#pragma once
|
||||
#include <qobjectdefs.h>
|
||||
|
||||
#include <QtCore/qmetatype.h>
|
||||
#include <QObject>
|
||||
namespace ScreenPlay {
|
||||
/*!
|
||||
\namespace ScreenPlay::SearchType
|
||||
|
@ -20,7 +20,7 @@ ScreenPlay::WallpaperExitCode MacWindow::start()
|
||||
// OSX Development workaround:
|
||||
// This folder needs then to be copied into the .app/Contents/MacOS/
|
||||
// for the deploy version.
|
||||
m_window.engine()->addImportPath(QGuiApplication::instance()->applicationDirPath()+ "/qml");
|
||||
m_window.engine()->addImportPath(QGuiApplication::instance()->applicationDirPath() + "/qml");
|
||||
|
||||
// WARNING: Setting Window flags must be called *here*!
|
||||
Qt::WindowFlags flags = m_window.flags();
|
||||
|
@ -33,7 +33,7 @@ int main(int argc, char* argv[])
|
||||
// If we start with only one argument (path, appID, type),
|
||||
// it means we want to test a single widget
|
||||
if (argumentList.length() == 1) {
|
||||
//WidgetWindow spwmw("test", "appid", "qmlWidget", { 100, 100 }, true);
|
||||
// WidgetWindow spwmw("test", "appid", "qmlWidget", { 100, 100 }, true);
|
||||
|
||||
QString exampleContentPath = QString(SCREENPLAY_SOURCE_DIR) + "/Content";
|
||||
QStringList contentFolder = {
|
||||
|
@ -5,8 +5,6 @@ import QtQuick.Controls.Material
|
||||
import Qt5Compat.GraphicalEffects
|
||||
import ScreenPlayWorkshop
|
||||
import ScreenPlayUtil
|
||||
import ScreenPlayApp
|
||||
import ScreenPlay
|
||||
|
||||
Popup {
|
||||
id: root
|
||||
|
@ -8,12 +8,12 @@ import "upload/"
|
||||
|
||||
Item {
|
||||
id: root
|
||||
objectName: "WorkshopProfilePage"
|
||||
|
||||
property ScreenPlayWorkshop screenPlayWorkshop
|
||||
property SteamWorkshop steamWorkshop
|
||||
|
||||
signal requestBack
|
||||
Component.onCompleted: steamWorkshop.requestUserItems()
|
||||
property StackView stackView
|
||||
StackView.onActivated: steamWorkshop.requestUserItems()
|
||||
|
||||
Flickable {
|
||||
id: scrollView
|
||||
@ -39,28 +39,11 @@ Item {
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
spacing: 20
|
||||
SteamImage {
|
||||
SteamProfilePicture {
|
||||
id: avatar
|
||||
|
||||
width: 70
|
||||
height: 70
|
||||
Component.onCompleted: {
|
||||
root.steamWorkshop.steamAccount.loadAvatar();
|
||||
}
|
||||
|
||||
Connections {
|
||||
function onAvatarChanged(_avatar) {
|
||||
avatar.setImage(_avatar);
|
||||
avatarPlaceholder.opacity = 0;
|
||||
}
|
||||
|
||||
target: root.steamWorkshop.steamAccount
|
||||
}
|
||||
Image {
|
||||
id: avatarPlaceholder
|
||||
anchors.fill: parent
|
||||
source: "qrc:/qml/ScreenPlayWorkshop/assets/images/steam_default_avatar.png"
|
||||
}
|
||||
}
|
||||
|
||||
Text {
|
||||
@ -71,7 +54,9 @@ Item {
|
||||
|
||||
Button {
|
||||
text: qsTr("Back")
|
||||
onClicked: root.requestBack()
|
||||
onClicked: {
|
||||
stackView.pop();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,15 +44,6 @@ Item {
|
||||
StackView {
|
||||
id: stackView
|
||||
property int duration: 300
|
||||
|
||||
Connections {
|
||||
target: stackView.currentItem
|
||||
ignoreUnknownSignals: true
|
||||
function onRequestBack() {
|
||||
stackView.pop();
|
||||
}
|
||||
}
|
||||
|
||||
anchors.fill: parent
|
||||
replaceEnter: Transition {
|
||||
OpacityAnimator {
|
||||
|
@ -15,7 +15,7 @@ Item {
|
||||
property SteamWorkshop steamWorkshop
|
||||
property Background background
|
||||
|
||||
Component.onCompleted: {
|
||||
StackView.onActivated: {
|
||||
root.state = "searching";
|
||||
root.steamWorkshop.searchWorkshopByText("");
|
||||
}
|
||||
@ -239,6 +239,7 @@ Item {
|
||||
|
||||
Button {
|
||||
id: btnSteamProfile
|
||||
objectName: "btnSteamProfile"
|
||||
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
@ -251,7 +252,8 @@ Item {
|
||||
onClicked: {
|
||||
stackView.push("qrc:/qml/ScreenPlayWorkshop/qml/SteamProfile.qml", {
|
||||
"screenPlayWorkshop": root.screenPlayWorkshop,
|
||||
"steamWorkshop": root.steamWorkshop
|
||||
"steamWorkshop": root.steamWorkshop,
|
||||
"stackView": root.stackView
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -270,7 +272,8 @@ Item {
|
||||
onClicked: {
|
||||
stackView.push("qrc:/qml/ScreenPlayWorkshop/qml/upload/UploadProject.qml", {
|
||||
"screenPlayWorkshop": root.screenPlayWorkshop,
|
||||
"steamWorkshop": root.steamWorkshop
|
||||
"steamWorkshop": root.steamWorkshop,
|
||||
"stackView": root.stackView
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -287,43 +290,44 @@ Item {
|
||||
leftMargin: 20
|
||||
verticalCenter: parent.verticalCenter
|
||||
}
|
||||
ToolButton {
|
||||
icon.source: "qrc:/qml/ScreenPlayWorkshop/assets/icons/icon_search.svg"
|
||||
onClicked: {
|
||||
root.state = "searching";
|
||||
root.steamWorkshop.searchWorkshopByText(tiSearch.text);
|
||||
}
|
||||
icon.width: 20
|
||||
icon.height: 20
|
||||
anchors {
|
||||
left: parent.left
|
||||
leftMargin: -3
|
||||
bottom: parent.bottom
|
||||
bottomMargin: 3
|
||||
}
|
||||
}
|
||||
|
||||
TextField {
|
||||
id: tiSearch
|
||||
placeholderTextColor: Material.secondaryTextColor
|
||||
placeholderText: qsTr("Search for Wallpaper and Widgets...")
|
||||
// WORKAROUND:
|
||||
// onEditingFinished causes internal qml layout crash in Qt 6.4
|
||||
Keys.onReturnPressed: event => {
|
||||
event.accepted = true;
|
||||
tiSearch.searchWorkshop();
|
||||
}
|
||||
|
||||
// WORKAROUND:
|
||||
// onEditingFinished causes internal qml layout crash in Qt 6.4
|
||||
Timer {
|
||||
id: timer
|
||||
interval: 300
|
||||
repeat: false
|
||||
onTriggered: tiSearch.searchWorkshop()
|
||||
}
|
||||
|
||||
onTextEdited: timer.restart()
|
||||
function searchWorkshop() {
|
||||
if (root.state === "searching") {
|
||||
print("SEARCHING");
|
||||
return;
|
||||
}
|
||||
root.state = "searching";
|
||||
print("EDITING FINISHED", root.state);
|
||||
if (tiSearch.text === "")
|
||||
return root.steamWorkshop.searchWorkshop(SteamEnums.K_EUGCQuery_RankedByTrend);
|
||||
root.steamWorkshop.searchWorkshopByText(tiSearch.text);
|
||||
if (tiSearch.text === "") {
|
||||
Qt.callLater(function () {
|
||||
root.steamWorkshop.searchWorkshop(SteamEnums.K_EUGCQuery_RankedByTrend);
|
||||
});
|
||||
return;
|
||||
}
|
||||
Qt.callLater(function () {
|
||||
root.steamWorkshop.searchWorkshopByText(tiSearch.text);
|
||||
});
|
||||
}
|
||||
|
||||
leftInset: -20
|
||||
leftPadding: 20
|
||||
anchors {
|
||||
top: parent.top
|
||||
right: parent.right
|
||||
@ -333,20 +337,29 @@ Item {
|
||||
}
|
||||
}
|
||||
ToolButton {
|
||||
icon.source: "qrc:/qml/ScreenPlayWorkshop/assets/icons/icon_close.svg"
|
||||
property bool hasContent: tiSearch.text.length > 0
|
||||
icon.source: hasContent ? "qrc:/qml/ScreenPlayWorkshop/assets/icons/icon_close.svg" : "qrc:/qml/ScreenPlayWorkshop/assets/icons/icon_search.svg"
|
||||
onClicked: {
|
||||
if (hasContent) {
|
||||
root.state = "searching";
|
||||
tiSearch.clear();
|
||||
Qt.callLater(function () {
|
||||
root.steamWorkshop.searchWorkshop(SteamEnums.K_EUGCQuery_RankedByTrend);
|
||||
});
|
||||
return;
|
||||
}
|
||||
root.state = "searching";
|
||||
tiSearch.text = "";
|
||||
root.steamWorkshop.searchWorkshop(SteamEnums.K_EUGCQuery_RankedByTrend);
|
||||
Qt.callLater(function () {
|
||||
root.steamWorkshop.searchWorkshopByText(tiSearch.text);
|
||||
});
|
||||
}
|
||||
enabled: tiSearch.text !== ""
|
||||
icon.width: 20
|
||||
icon.height: 20
|
||||
anchors {
|
||||
right: parent.right
|
||||
rightMargin: -3
|
||||
rightMargin: 0
|
||||
bottom: parent.bottom
|
||||
bottomMargin: 3
|
||||
bottomMargin: 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9,8 +9,7 @@ Item {
|
||||
|
||||
property ScreenPlayWorkshop screenPlayWorkshop
|
||||
property SteamWorkshop steamWorkshop
|
||||
|
||||
signal requestBack
|
||||
property StackView stackView
|
||||
|
||||
Item {
|
||||
id: headerWrapper
|
||||
@ -109,7 +108,7 @@ Item {
|
||||
|
||||
text: qsTr("Abort")
|
||||
onClicked: {
|
||||
root.requestBack();
|
||||
stackView.pop();
|
||||
}
|
||||
|
||||
anchors {
|
||||
|
@ -14,6 +14,9 @@ SteamAccount::SteamAccount(QObject* parent)
|
||||
|
||||
void SteamAccount::loadAvatar()
|
||||
{
|
||||
if (!m_avatar.isNull()) {
|
||||
return;
|
||||
}
|
||||
int largeFriendAvatarHandle = SteamFriends()->GetLargeFriendAvatar(m_steamID);
|
||||
|
||||
// Returns 0 if no avatar is set for the user.
|
||||
@ -43,40 +46,33 @@ void SteamAccount::loadAmountSubscribedItems()
|
||||
|
||||
void SteamAccount::onAvatarImageLoaded(AvatarImageLoaded_t* avatarImage)
|
||||
{
|
||||
// If called from another steam app
|
||||
if (m_avatarLoaded)
|
||||
return;
|
||||
|
||||
const int largeFriendAvatarHandle = SteamFriends()->GetLargeFriendAvatar(m_steamID);
|
||||
|
||||
if (largeFriendAvatarHandle <= 0) {
|
||||
qWarning() << "onAvatarImageLoaded: getLargeFriendAvatarResult retunred: " << largeFriendAvatarHandle;
|
||||
qWarning() << "onAvatarImageLoaded: GetLargeFriendAvatar returned: " << largeFriendAvatarHandle;
|
||||
return;
|
||||
}
|
||||
|
||||
uint32 width = 0;
|
||||
uint32 height = 0;
|
||||
if (!SteamUtils()->GetImageSize(avatarImage->m_iImage, &width, &height)) {
|
||||
qWarning() << "Failed GetImageSize";
|
||||
const bool sizeRetrieved = SteamUtils()->GetImageSize(avatarImage->m_iImage, &width, &height);
|
||||
if (!sizeRetrieved) {
|
||||
qWarning() << "onAvatarImageLoaded: Failed to get image size";
|
||||
return;
|
||||
}
|
||||
|
||||
const int size = width * height * 4;
|
||||
QVector<uint8> imageData;
|
||||
imageData.resize(size);
|
||||
|
||||
if (!SteamUtils()->GetImageRGBA(avatarImage->m_iImage, imageData.data(), size)) {
|
||||
qWarning() << "Failed to load image buffer from callback";
|
||||
const int imageSize = width * height * 4;
|
||||
QVector<uint8> imageData(imageSize);
|
||||
const bool imageRetrieved = SteamUtils()->GetImageRGBA(avatarImage->m_iImage, imageData.data(), imageSize);
|
||||
if (!imageRetrieved) {
|
||||
qWarning() << "onAvatarImageLoaded: Failed to load image buffer from callback";
|
||||
return;
|
||||
}
|
||||
|
||||
QImage avatar {
|
||||
imageData.data(),
|
||||
static_cast<int>(width),
|
||||
static_cast<int>(height),
|
||||
QImage::Format_RGBA8888
|
||||
};
|
||||
|
||||
const QImage avatar { imageData.data(), static_cast<int>(width), static_cast<int>(height), QImage::Format_RGBA8888 };
|
||||
setAvatar(avatar);
|
||||
m_avatarLoaded = true;
|
||||
}
|
||||
|
@ -11,17 +11,16 @@
|
||||
#include "steamapiwrapper.h"
|
||||
|
||||
namespace SteamApiWrapper {
|
||||
bool setItemTags(const QVariant& updateHandle, const QStringList tags)
|
||||
bool setItemTags(const QVariant& updateHandle, const QStringList& tags)
|
||||
{
|
||||
SteamParamStringArray_t* pTags = new SteamParamStringArray_t();
|
||||
const uint32 strCount = tags.size();
|
||||
pTags->m_ppStrings = new const char*[strCount];
|
||||
pTags->m_nNumStrings = strCount;
|
||||
for (uint32 i = 0; i < strCount; i++) {
|
||||
pTags->m_ppStrings[i] = tags.at(i).toUtf8().data();
|
||||
auto pTags = std::make_unique<SteamParamStringArray_t>();
|
||||
const uint32_t numTags = tags.size();
|
||||
pTags->m_nNumStrings = numTags;
|
||||
auto tagStrings = std::make_unique<const char*[]>(numTags);
|
||||
for (uint32_t i = 0; i < numTags; ++i) {
|
||||
tagStrings[i] = tags.at(i).toUtf8().constData();
|
||||
}
|
||||
|
||||
return SteamUGC()->SetItemTags(updateHandle.toULongLong(), pTags);
|
||||
pTags->m_ppStrings = tagStrings.get();
|
||||
return SteamUGC()->SetItemTags(updateHandle.toULongLong(), pTags.get());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -37,9 +37,14 @@ void SteamWorkshopItem::checkUploadProgress()
|
||||
if (progress > 0.0f && progress < 1.0f)
|
||||
setUploadProgress((progress * 100));
|
||||
}
|
||||
|
||||
void SteamWorkshopItem::uploadItemToWorkshop(CreateItemResult_t* pCallback, bool bIOFailure)
|
||||
{
|
||||
if (!pCallback) {
|
||||
qWarning() << "Invalid CreateItemResult_t pointer";
|
||||
emit removeThis(this);
|
||||
return;
|
||||
}
|
||||
|
||||
if (pCallback->m_bUserNeedsToAcceptWorkshopLegalAgreement) {
|
||||
emit userNeedsToAcceptWorkshopLegalAgreement();
|
||||
}
|
||||
@ -87,7 +92,7 @@ void SteamWorkshopItem::uploadItemToWorkshop(CreateItemResult_t* pCallback, bool
|
||||
|
||||
QString youtube;
|
||||
if (jsonObject.contains("youtube")) {
|
||||
language = jsonObject.value("youtube").toString();
|
||||
youtube = jsonObject.value("youtube").toString();
|
||||
}
|
||||
|
||||
if (!youtube.isEmpty()) {
|
||||
@ -132,21 +137,21 @@ void SteamWorkshopItem::uploadItemToWorkshop(CreateItemResult_t* pCallback, bool
|
||||
|
||||
m_UGCUpdateHandle = SteamUGC()->StartItemUpdate(m_appID, pCallback->m_nPublishedFileId);
|
||||
|
||||
QVector<QByteArray> tagByteArray;
|
||||
QVector<const char*> tagCharArray;
|
||||
for (const auto& tag : tags) {
|
||||
if (tag.length() > 255) {
|
||||
qInfo() << "Skip to long tag (max 255) " << tag << " with length:" << tag.length();
|
||||
qInfo() << "Skip too long tag (max 255):" << tag;
|
||||
continue;
|
||||
}
|
||||
tagByteArray.append(tag.toUtf8());
|
||||
pTags->m_ppStrings[i] = tagByteArray.at(i).data();
|
||||
qInfo() << tag.toStdString().c_str() << pTags->m_ppStrings[i];
|
||||
i++;
|
||||
tagCharArray.append(tag.toUtf8());
|
||||
}
|
||||
pTags->m_nNumStrings = count;
|
||||
bool success = SteamUGC()->SetItemTags(m_UGCUpdateHandle, pTags);
|
||||
qInfo() << "SetItemTags" << success;
|
||||
pTags->m_nNumStrings = tagCharArray.count();
|
||||
pTags->m_ppStrings = tagCharArray.data();
|
||||
|
||||
bool success = SteamUGC()->SetItemTags(m_UGCUpdateHandle, pTags);
|
||||
if (!success) {
|
||||
qWarning() << "Failed to set item tags";
|
||||
}
|
||||
SteamUGC()->AddItemPreviewFile(m_UGCUpdateHandle, QByteArray(preview.toUtf8()).data(), EItemPreviewType::k_EItemPreviewType_Image);
|
||||
SteamUGC()->SetItemTitle(m_UGCUpdateHandle, QByteArray(title.toUtf8().data()));
|
||||
SteamUGC()->SetItemDescription(m_UGCUpdateHandle, QByteArray(description.toUtf8()).data());
|
||||
@ -159,6 +164,11 @@ void SteamWorkshopItem::uploadItemToWorkshop(CreateItemResult_t* pCallback, bool
|
||||
saveWorkshopID();
|
||||
|
||||
SteamAPICall_t apicall = SteamUGC()->SubmitItemUpdate(m_UGCUpdateHandle, nullptr);
|
||||
if (apicall == k_uAPICallInvalid) {
|
||||
qWarning() << "Failed to submit item update";
|
||||
return;
|
||||
}
|
||||
|
||||
m_submitItemUpdateResultResult.Set(apicall, this, &SteamWorkshopItem::submitItemUpdateStatus);
|
||||
m_updateTimer.start(m_updateTimerInterval);
|
||||
}
|
||||
|
@ -94,37 +94,39 @@ public slots:
|
||||
m_uploadListModelItems.clear();
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
void append(const QString& name, const QString& path, const quint64 appID)
|
||||
{
|
||||
auto item = std::make_unique<SteamWorkshopItem>(name, path, appID);
|
||||
|
||||
const auto roles = QVector<int> {
|
||||
static_cast<int>(UploadListModelRole::UploadProgressRole),
|
||||
static_cast<int>(UploadListModelRole::NameRole),
|
||||
static_cast<int>(UploadListModelRole::AbsolutePreviewImagePath),
|
||||
static_cast<int>(UploadListModelRole::Status)
|
||||
};
|
||||
|
||||
const auto onDataChanged = [&]() {
|
||||
emit this->dataChanged(index(0, 0), index(rowCount() - 1, 0), roles);
|
||||
};
|
||||
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::userNeedsToAcceptWorkshopLegalAgreement, this, &UploadListModel::userNeedsToAcceptWorkshopLegalAgreement);
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::uploadProgressChanged, this, onDataChanged);
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::nameChanged, this, onDataChanged);
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::absolutePreviewImagePathChanged, this, onDataChanged);
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::uploadComplete, this, [=](bool successful) {
|
||||
onDataChanged();
|
||||
});
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::statusChanged, this, [=](ScreenPlayWorkshopSteamEnums::EResult status) {
|
||||
onDataChanged();
|
||||
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::uploadProgressChanged, this, [this]() {
|
||||
emit this->dataChanged(index(0, 0), index(rowCount() - 1, 0), QVector<int> { static_cast<int>(UploadListModelRole::UploadProgressRole) });
|
||||
});
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::nameChanged, this, [this]() {
|
||||
emit this->dataChanged(index(0, 0), index(rowCount() - 1, 0), QVector<int> { static_cast<int>(UploadListModelRole::NameRole) });
|
||||
});
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::absolutePreviewImagePathChanged, this, [this]() {
|
||||
emit this->dataChanged(index(0, 0), index(rowCount() - 1, 0), QVector<int> { static_cast<int>(UploadListModelRole::AbsolutePreviewImagePath) });
|
||||
});
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::uploadComplete, this, [this](bool successful) {
|
||||
emit this->dataChanged(index(0, 0), index(rowCount() - 1, 0), QVector<int> { static_cast<int>(UploadListModelRole::AbsolutePreviewImagePath) });
|
||||
});
|
||||
QObject::connect(item.get(), &SteamWorkshopItem::statusChanged, this, [this](ScreenPlayWorkshopSteamEnums::EResult status) {
|
||||
emit this->dataChanged(index(0, 0), index(rowCount() - 1, 0), QVector<int> { static_cast<int>(UploadListModelRole::Status) });
|
||||
bool allItemsUploaded = std::all_of(m_uploadListModelItems.cbegin(), m_uploadListModelItems.cend(), [](const auto& item) {
|
||||
const auto status = item->status();
|
||||
return status == ScreenPlayWorkshopSteamEnums::EResult::K_EResultOK || status == ScreenPlayWorkshopSteamEnums::EResult::K_EResultFail;
|
||||
});
|
||||
|
||||
// Check if all items are
|
||||
|
||||
for (const auto& item : m_uploadListModelItems) {
|
||||
qDebug() << "item->status() " << item->status();
|
||||
if (!(item->status() != ScreenPlayWorkshopSteamEnums::EResult::K_EResultOK
|
||||
|| item->status() != ScreenPlayWorkshopSteamEnums::EResult::K_EResultFail)) {
|
||||
return;
|
||||
}
|
||||
if (allItemsUploaded) {
|
||||
emit this->uploadCompleted();
|
||||
}
|
||||
emit this->uploadCompleted();
|
||||
});
|
||||
|
||||
beginInsertRows(QModelIndex(), rowCount(), rowCount());
|
||||
|
@ -7,7 +7,7 @@ choco pack
|
||||
|
||||
Install the generated nupkg:
|
||||
```
|
||||
choco install screenplay.0.15.0-RC5.nupkg -dv -s .
|
||||
choco install screenplay.0.15.0-RC6.nupkg -dv -s .
|
||||
```
|
||||
|
||||
Set api key from [https://community.chocolatey.org/account](https://community.chocolatey.org/account):
|
||||
@ -17,5 +17,5 @@ choco apikey --key AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAA --source https://push.chocol
|
||||
|
||||
Psuh:
|
||||
```
|
||||
choco push screenplay.0.15.0-RC5.nupkg --source https://push.chocolatey.org/
|
||||
choco push screenplay.0.15.0-RC6.nupkg --source https://push.chocolatey.org/
|
||||
```
|
@ -26,7 +26,7 @@ This is a nuspec. It mostly adheres to https://docs.nuget.org/create/Nuspec-Refe
|
||||
<!-- version should MATCH as closely as possible with the underlying software -->
|
||||
<!-- Is the version a prerelease of a version? https://docs.nuget.org/create/versioning#creating-prerelease-packages -->
|
||||
<!-- Note that unstable versions like 0.0.1 can be considered a released version, but it's possible that one can release a 0.0.1-beta before you release a 0.0.1 version. If the version number is final, that is considered a released version and not a prerelease. -->
|
||||
<version>0.15.0-RC5</version>
|
||||
<version>0.15.0-RC6</version>
|
||||
<packageSourceUrl>https://gitlab.com/kelteseth/ScreenPlay/-/tree/master/Tools/chocolatey/ScreenPlay</packageSourceUrl>
|
||||
<!-- owners is a poor name for maintainers of the package. It sticks around by this name for compatibility reasons. It basically means you. -->
|
||||
<owners>Elias Steurer</owners>
|
||||
|
@ -2,7 +2,7 @@
|
||||
$ErrorActionPreference = 'Stop';
|
||||
$toolsDir = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
|
||||
$url = ''
|
||||
$url64 = 'https://kelteseth.com/releases/0.15.0-RC5/ScreenPlay-0.15.0-RC5-x64-windows-release.zip'
|
||||
$url64 = 'https://kelteseth.com/releases/0.15.0-RC6/ScreenPlay-0.15.0-RC6-x64-windows-release.zip'
|
||||
|
||||
$packageArgs = @{
|
||||
packageName = $env:ChocolateyPackageName
|
||||
|
Loading…
Reference in New Issue
Block a user