Bug submission works, and now there is a mysterious bug that makes this whole thing crash for reasons I am unable to track. Great.
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
// ©2022 Batty Bovine Productions, LLC. All Rights Reserved.
|
// ©2022 Batty Bovine Productions, LLC. All Rights Reserved.
|
||||||
|
|
||||||
#include "BugFormTextEntryButton.h"
|
#include "BugFormButton.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -44,12 +44,23 @@ const FString FormatQueryString(const TMap<FString, FString> &QueryData)
|
|||||||
return FString::Join(AssembledKeyValuePairs, TEXT("&"));
|
return FString::Join(AssembledKeyValuePairs, TEXT("&"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const FString GetGameVersion()
|
||||||
|
{
|
||||||
|
FString GameVersion;
|
||||||
|
GConfig->GetString(TEXT("/Script/EngineSettings.GeneralProjectSettings"), TEXT("ProjectVersion"), GameVersion, GGameIni);
|
||||||
|
if (GameVersion.IsEmpty())
|
||||||
|
{
|
||||||
|
GameVersion = "1.0.0.0";
|
||||||
|
}
|
||||||
|
return GameVersion;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void UBugSubmissionForm::NativeOnInitialized()
|
void UBugSubmissionForm::NativeOnInitialized()
|
||||||
{
|
{
|
||||||
this->ShowProcessingOverlayLoading();
|
this->ShowProcessingOverlayLoading();
|
||||||
|
|
||||||
this->ProductNameValue->SetText(FText::FromString(GetDefault<UUnrealzillaGlobalSettings>()->ProductName));
|
this->ProductNameValue->SetText(FText::AsCultureInvariant(GetDefault<UUnrealzillaGlobalSettings>()->ProductName));
|
||||||
|
|
||||||
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->SubmissionServer + "/rest.cgi";
|
const FString FullURL = GetDefault<UUnrealzillaGlobalSettings>()->SubmissionServer + "/rest.cgi";
|
||||||
|
|
||||||
@@ -100,7 +111,7 @@ void UBugSubmissionForm::SetMarkerData(ABugMarkerActor *BugMarker)
|
|||||||
{
|
{
|
||||||
this->BugMarkerActor = BugMarker;
|
this->BugMarkerActor = BugMarker;
|
||||||
|
|
||||||
MapNameValue->SetText(FText::FromString(this->GetWorld()->GetMapName().RightChop(this->GetWorld()->StreamingLevelsPrefix.Len())));
|
this->MapName = FText::AsCultureInvariant(this->GetWorld()->GetMapName().RightChop(this->GetWorld()->StreamingLevelsPrefix.Len()));
|
||||||
|
|
||||||
const FVector MarkerLocation = this->BugMarkerActor->GetActorLocation();
|
const FVector MarkerLocation = this->BugMarkerActor->GetActorLocation();
|
||||||
FFormatNamedArguments MarkerLocationArgs;
|
FFormatNamedArguments MarkerLocationArgs;
|
||||||
@@ -121,13 +132,13 @@ void UBugSubmissionForm::SetMarkerData(ABugMarkerActor *BugMarker)
|
|||||||
MapDataArgs.Add("MarkerUpVector", MarkerUpVectorText);
|
MapDataArgs.Add("MarkerUpVector", MarkerUpVectorText);
|
||||||
const FText MapDataText = FText::Format(NSLOCTEXT("BugSubmissionForm", "MapDataFormat", "{MarkerLocation}:{MarkerUpVector}"), MapDataArgs);
|
const FText MapDataText = FText::Format(NSLOCTEXT("BugSubmissionForm", "MapDataFormat", "{MarkerLocation}:{MarkerUpVector}"), MapDataArgs);
|
||||||
|
|
||||||
this->LocationValue->SetText(MapDataText);
|
this->MarkerLocation = MapDataText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void UBugSubmissionForm::ShowProcessingOverlayLoading()
|
void UBugSubmissionForm::ShowProcessingOverlayLoading()
|
||||||
{
|
{
|
||||||
this->ProcessingRequestErrorText->SetText(FText::FromString(""));
|
this->ProcessingRequestErrorText->SetText(FText::AsCultureInvariant(""));
|
||||||
this->ProcessingRequestOverlay->SetVisibility(ESlateVisibility::Visible);
|
this->ProcessingRequestOverlay->SetVisibility(ESlateVisibility::Visible);
|
||||||
this->ProcessingRequestThrobber->SetVisibility(ESlateVisibility::Visible);
|
this->ProcessingRequestThrobber->SetVisibility(ESlateVisibility::Visible);
|
||||||
this->ProcessingRequestErrorBox->SetVisibility(ESlateVisibility::Collapsed);
|
this->ProcessingRequestErrorBox->SetVisibility(ESlateVisibility::Collapsed);
|
||||||
@@ -135,7 +146,7 @@ void UBugSubmissionForm::ShowProcessingOverlayLoading()
|
|||||||
|
|
||||||
void UBugSubmissionForm::ShowProcessingOverlayMessage(const FString Message)
|
void UBugSubmissionForm::ShowProcessingOverlayMessage(const FString Message)
|
||||||
{
|
{
|
||||||
this->ProcessingRequestErrorText->SetText(FText::FromString(Message));
|
this->ProcessingRequestErrorText->SetText(FText::AsCultureInvariant(Message));
|
||||||
this->ProcessingRequestOverlay->SetVisibility(ESlateVisibility::Visible);
|
this->ProcessingRequestOverlay->SetVisibility(ESlateVisibility::Visible);
|
||||||
this->ProcessingRequestThrobber->SetVisibility(ESlateVisibility::Collapsed);
|
this->ProcessingRequestThrobber->SetVisibility(ESlateVisibility::Collapsed);
|
||||||
this->ProcessingRequestErrorBox->SetVisibility(ESlateVisibility::Visible);
|
this->ProcessingRequestErrorBox->SetVisibility(ESlateVisibility::Visible);
|
||||||
@@ -160,27 +171,52 @@ void UBugSubmissionForm::SubmitForm()
|
|||||||
const FString SummaryText = this->SummaryEntryBox->GetText().ToString();
|
const FString SummaryText = this->SummaryEntryBox->GetText().ToString();
|
||||||
const FString CommentText = this->CommentEntryBox->GetText().ToString();
|
const FString CommentText = this->CommentEntryBox->GetText().ToString();
|
||||||
|
|
||||||
if (SummaryText.IsEmpty())
|
const FString DefaultStatus = GetDefault<UUnrealzillaGlobalSettings>()->DefaultStatus;
|
||||||
{
|
|
||||||
this->ShowProcessingOverlayMessage("You must provide a summary.");
|
|
||||||
}
|
|
||||||
|
|
||||||
//if (CommentText.IsEmpty())
|
|
||||||
//{
|
|
||||||
// this->ShowProcessingOverlayMessage("You must provide a description.");
|
|
||||||
//}
|
|
||||||
|
|
||||||
FString PostJsonString;
|
FString PostJsonString;
|
||||||
FJSONPostBug PostData;
|
FJSONPostBug PostData;
|
||||||
PostData.product = GetDefault<UUnrealzillaGlobalSettings>()->ProductName;
|
PostData.product = GetDefault<UUnrealzillaGlobalSettings>()->ProductName;
|
||||||
PostData.component = "Component";
|
PostData.version = this->VersionButton->GetText().ToString();
|
||||||
PostData.version = "unspecified";
|
PostData.platform = this->HardwareButton->GetText().ToString();
|
||||||
PostData.cf_mapname = this->MapNameValue->GetText().ToString();
|
PostData.op_sys = this->OSButton->GetText().ToString();
|
||||||
PostData.cf_location = this->LocationValue->GetText().ToString();
|
PostData.component = this->ComponentButton->GetText().ToString();
|
||||||
|
PostData.severity = this->SeverityButton->GetText().ToString();
|
||||||
|
PostData.cf_mapname = this->MapName.ToString();
|
||||||
|
PostData.cf_location = this->MarkerLocation.ToString();
|
||||||
PostData.summary = SummaryText;
|
PostData.summary = SummaryText;
|
||||||
PostData.description = CommentText;
|
PostData.description = CommentText;
|
||||||
|
if (!DefaultStatus.IsEmpty())
|
||||||
|
{
|
||||||
|
PostData.status = DefaultStatus;
|
||||||
|
}
|
||||||
FJsonObjectConverter::UStructToJsonObjectString(PostData, PostJsonString);
|
FJsonObjectConverter::UStructToJsonObjectString(PostData, PostJsonString);
|
||||||
|
|
||||||
|
if (PostData.version.IsEmpty())
|
||||||
|
{
|
||||||
|
this->ShowProcessingOverlayMessage("You must select a version number.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (PostData.platform.IsEmpty() || PostData.op_sys.IsEmpty())
|
||||||
|
{
|
||||||
|
PostData.platform = "All";
|
||||||
|
PostData.op_sys = "All";
|
||||||
|
}
|
||||||
|
if (PostData.component.IsEmpty())
|
||||||
|
{
|
||||||
|
this->ShowProcessingOverlayMessage("You must select a component.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (PostData.severity.IsEmpty())
|
||||||
|
{
|
||||||
|
this->ShowProcessingOverlayMessage("You must select a severity level.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (SummaryText.IsEmpty())
|
||||||
|
{
|
||||||
|
this->ShowProcessingOverlayMessage("You must provide a summary.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
FHttpModule &HttpModule = FHttpModule::Get();
|
FHttpModule &HttpModule = FHttpModule::Get();
|
||||||
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = HttpModule.CreateRequest();
|
TSharedRef<IHttpRequest, ESPMode::ThreadSafe> Request = HttpModule.CreateRequest();
|
||||||
Request->SetVerb(TEXT("POST"));
|
Request->SetVerb(TEXT("POST"));
|
||||||
@@ -247,8 +283,9 @@ void UBugSubmissionForm::ServerProductInfoResponse(FHttpRequestPtr Request, FHtt
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
for (const FJSONProductData &ProductData : ResponseData.products)
|
if (!ResponseData.products.IsEmpty())
|
||||||
{
|
{
|
||||||
|
const FJSONProductData &ProductData = ResponseData.products[0];
|
||||||
if (ProductData.name == GetDefault<UUnrealzillaGlobalSettings>()->ProductName)
|
if (ProductData.name == GetDefault<UUnrealzillaGlobalSettings>()->ProductName)
|
||||||
{
|
{
|
||||||
for (const FJSONComponentData &ComponentData : ProductData.components)
|
for (const FJSONComponentData &ComponentData : ProductData.components)
|
||||||
@@ -259,10 +296,26 @@ void UBugSubmissionForm::ServerProductInfoResponse(FHttpRequestPtr Request, FHtt
|
|||||||
{
|
{
|
||||||
this->VersionsList.Add(VersionData.name);
|
this->VersionsList.Add(VersionData.name);
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this->VersionsList.Contains(GetGameVersion()))
|
||||||
|
{
|
||||||
|
this->VersionButton->SetText(FText::AsCultureInvariant(GetGameVersion()));
|
||||||
|
}
|
||||||
|
else if (this->VersionsList.Contains("unspecified"))
|
||||||
|
{
|
||||||
|
this->VersionButton->SetText(FText::AsCultureInvariant("unspecified"));
|
||||||
|
}
|
||||||
|
else if (this->VersionsList.Contains("Latest"))
|
||||||
|
{
|
||||||
|
this->VersionButton->SetText(FText::AsCultureInvariant("Latest"));
|
||||||
|
}
|
||||||
|
else if (!this->VersionsList.IsEmpty())
|
||||||
|
{
|
||||||
|
this->VersionButton->SetText(FText::AsCultureInvariant(this->VersionsList[0]));
|
||||||
|
}
|
||||||
|
|
||||||
this->CheckIfAllInitialResponsesAreIn();
|
this->CheckIfAllInitialResponsesAreIn();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -370,50 +423,41 @@ void UBugSubmissionForm::CheckIfAllInitialResponsesAreIn()
|
|||||||
if (!this->ComponentList.IsEmpty() && !this->VersionsList.IsEmpty() && !this->SeverityList.IsEmpty() &&
|
if (!this->ComponentList.IsEmpty() && !this->VersionsList.IsEmpty() && !this->SeverityList.IsEmpty() &&
|
||||||
!this->PlatformsList.IsEmpty() && !this->OSList.IsEmpty())
|
!this->PlatformsList.IsEmpty() && !this->OSList.IsEmpty())
|
||||||
{
|
{
|
||||||
if (this->PlatformsList.Contains("PC"))
|
// Set these as defaults in case nothing below changes this setting
|
||||||
|
this->HardwareButton->SetText(FText::AsCultureInvariant("All"));
|
||||||
|
this->OSButton->SetText(FText::AsCultureInvariant("All"));
|
||||||
|
|
||||||
|
if (this->PlatformsList.Contains("PC")) // Try our best to auto-detect PC hardware
|
||||||
{
|
{
|
||||||
if (UGameplayStatics::GetPlatformName() == "Windows" && this->OSList.Contains("Windows"))
|
if (UGameplayStatics::GetPlatformName() == "Windows" && this->OSList.Contains("Windows"))
|
||||||
{
|
{
|
||||||
this->ShowProcessingOverlayMessage("Windows detected");
|
this->HardwareButton->SetText(FText::AsCultureInvariant("PC"));
|
||||||
|
this->OSButton->SetText(FText::AsCultureInvariant("Windows"));
|
||||||
}
|
}
|
||||||
else if (UGameplayStatics::GetPlatformName() == "Linux" && this->OSList.Contains("Linux"))
|
else if (UGameplayStatics::GetPlatformName() == "Linux" && this->OSList.Contains("Linux"))
|
||||||
{
|
{
|
||||||
this->ShowProcessingOverlayMessage("Linux on PC detected");
|
this->HardwareButton->SetText(FText::AsCultureInvariant("PC"));
|
||||||
|
this->OSButton->SetText(FText::AsCultureInvariant("Linux"));
|
||||||
}
|
}
|
||||||
else if (UGameplayStatics::GetPlatformName() == "Mac" && this->OSList.Contains("Mac OS"))
|
else if (UGameplayStatics::GetPlatformName() == "Mac" && this->OSList.Contains("Mac OS"))
|
||||||
{
|
{
|
||||||
this->ShowProcessingOverlayMessage("This should not be possible");
|
this->HardwareButton->SetText(FText::AsCultureInvariant("All"));
|
||||||
|
this->OSButton->SetText(FText::AsCultureInvariant("Mac OS"));
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
|
if (UGameplayStatics::GetPlatformName() == "Mac") // Try our best to auto-detect Macintosh hardware
|
||||||
{
|
{
|
||||||
this->ShowProcessingOverlayMessage("Could not auto-detect operating system");
|
if (this->PlatformsList.Contains("Macintosh"))
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (this->PlatformsList.Contains("Macintosh"))
|
|
||||||
{
|
{
|
||||||
if (UGameplayStatics::GetPlatformName() == "Windows" && this->OSList.Contains("Windows"))
|
if (this->OSList.Contains("Mac OS"))
|
||||||
{
|
{
|
||||||
this->ShowProcessingOverlayMessage("Windows on a Macintosh detected");
|
this->HardwareButton->SetText(FText::AsCultureInvariant("Macintosh"));
|
||||||
}
|
this->OSButton->SetText(FText::AsCultureInvariant("Mac OS"));
|
||||||
else if (UGameplayStatics::GetPlatformName() == "Linux" && this->OSList.Contains("Linux"))
|
|
||||||
{
|
|
||||||
this->ShowProcessingOverlayMessage("Linux on a Macintosh detected");
|
|
||||||
}
|
|
||||||
else if (UGameplayStatics::GetPlatformName() == "Mac" && this->OSList.Contains("Mac OS"))
|
|
||||||
{
|
|
||||||
this->ShowProcessingOverlayMessage("macOS detected");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this->ShowProcessingOverlayMessage("Could not auto-detect operating system");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else // At this stage, don't bother trying to auto-detect; we'll just set it to All here.
|
|
||||||
{
|
|
||||||
this->ShowProcessingOverlayMessage("Can't auto-detect platform");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//this->HideProcessingOverlay();
|
this->HideProcessingOverlay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,36 @@
|
|||||||
|
// ©2022 Batty Bovine Productions, LLC. All Rights Reserved.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "CoreMinimal.h"
|
||||||
|
#include "CommonButtonBase.h"
|
||||||
|
#include "CommonTextBlock.h"
|
||||||
|
|
||||||
|
#include "BugFormButton.generated.h"
|
||||||
|
|
||||||
|
|
||||||
|
UCLASS()
|
||||||
|
class UNREALZILLA_API UBugFormButton : public UCommonButtonBase
|
||||||
|
{
|
||||||
|
GENERATED_BODY()
|
||||||
|
|
||||||
|
public:
|
||||||
|
virtual void NativeConstruct() override { this->SetText(this->CurrentText); }
|
||||||
|
|
||||||
|
UFUNCTION(BlueprintCallable)
|
||||||
|
void SetText(const FText Text) { this->CurrentText = Text.IsEmpty() ? this->DefaultText : Text; this->TextLabel->SetText(this->CurrentText); }
|
||||||
|
UFUNCTION(BlueprintPure)
|
||||||
|
FText GetText() const { return this->TextLabel->GetText().EqualTo(this->DefaultText) ? FText::GetEmpty() : this->TextLabel->GetText(); }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void NativePreConstruct() override { this->TextLabel->SetText(this->DefaultText); }
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
|
TObjectPtr<class UCommonTextBlock> TextLabel;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly, EditAnywhere)
|
||||||
|
FText DefaultText;
|
||||||
|
|
||||||
|
private:
|
||||||
|
FText CurrentText;
|
||||||
|
};
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
// ©2022 Batty Bovine Productions, LLC. All Rights Reserved.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "CoreMinimal.h"
|
|
||||||
#include "CommonButtonBase.h"
|
|
||||||
#include "CommonTextBlock.h"
|
|
||||||
|
|
||||||
#include "BugFormTextEntryButton.generated.h"
|
|
||||||
|
|
||||||
|
|
||||||
UCLASS()
|
|
||||||
class UNREALZILLA_API UBugFormTextEntryButton : public UCommonButtonBase
|
|
||||||
{
|
|
||||||
GENERATED_BODY()
|
|
||||||
|
|
||||||
public:
|
|
||||||
UFUNCTION(BlueprintCallable)
|
|
||||||
void SetText(const FText Text) { this->TextLabel->SetText(Text); }
|
|
||||||
UFUNCTION(BlueprintPure)
|
|
||||||
FText GetText() const { return this->TextLabel->GetText(); }
|
|
||||||
|
|
||||||
protected:
|
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
|
||||||
TObjectPtr<class UCommonTextBlock> TextLabel;
|
|
||||||
};
|
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
#include "CoreMinimal.h"
|
#include "CoreMinimal.h"
|
||||||
|
|
||||||
#include "BugFormTextEntryButton.h"
|
#include "BugFormButton.h"
|
||||||
#include "CommonActivatableWidget.h"
|
#include "CommonActivatableWidget.h"
|
||||||
#include "Interfaces/IHttpRequest.h"
|
#include "Interfaces/IHttpRequest.h"
|
||||||
#include "Interfaces/IHttpResponse.h"
|
#include "Interfaces/IHttpResponse.h"
|
||||||
@@ -22,22 +22,26 @@ struct FJSONPostBug
|
|||||||
public:
|
public:
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString product;
|
FString product;
|
||||||
UPROPERTY()
|
|
||||||
FString component;
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString version;
|
FString version;
|
||||||
UPROPERTY()
|
|
||||||
FString cf_mapname;
|
|
||||||
UPROPERTY()
|
|
||||||
FString cf_location;
|
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString platform;
|
FString platform;
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString op_sys;
|
FString op_sys;
|
||||||
|
UPROPERTY()
|
||||||
|
FString component;
|
||||||
|
UPROPERTY()
|
||||||
|
FString severity;
|
||||||
|
UPROPERTY()
|
||||||
|
FString cf_mapname;
|
||||||
|
UPROPERTY()
|
||||||
|
FString cf_location;
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString summary;
|
FString summary;
|
||||||
UPROPERTY()
|
UPROPERTY()
|
||||||
FString description;
|
FString description;
|
||||||
|
UPROPERTY()
|
||||||
|
FString status;
|
||||||
};
|
};
|
||||||
|
|
||||||
USTRUCT(Blueprintable)
|
USTRUCT(Blueprintable)
|
||||||
@@ -248,14 +252,22 @@ protected:
|
|||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UCommonTextBlock> ProductNameValue;
|
TObjectPtr<class UCommonTextBlock> ProductNameValue;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UCommonTextBlock> MapNameValue;
|
TObjectPtr<class UBugFormButton> ComponentButton;
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UCommonTextBlock> LocationValue;
|
TObjectPtr<class UBugFormButton> VersionButton;
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UBugFormTextEntryButton> SummaryEntryBox;
|
TObjectPtr<class UBugFormButton> SeverityButton;
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UBugFormTextEntryButton> CommentEntryBox;
|
TObjectPtr<class UBugFormButton> HardwareButton;
|
||||||
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
|
TObjectPtr<class UBugFormButton> OSButton;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
|
TObjectPtr<class UBugFormButton> SummaryEntryBox;
|
||||||
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
|
TObjectPtr<class UBugFormButton> CommentEntryBox;
|
||||||
|
|
||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UCommonButtonBase> CancelButton;
|
TObjectPtr<class UCommonButtonBase> CancelButton;
|
||||||
@@ -271,6 +283,17 @@ protected:
|
|||||||
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
UPROPERTY(BlueprintReadOnly, meta=(BindWidget))
|
||||||
TObjectPtr<class UCommonTextBlock> ProcessingRequestErrorText;
|
TObjectPtr<class UCommonTextBlock> ProcessingRequestErrorText;
|
||||||
|
|
||||||
|
UPROPERTY(BlueprintReadOnly)
|
||||||
|
TArray<FString> VersionsList;
|
||||||
|
UPROPERTY(BlueprintReadOnly)
|
||||||
|
TArray<FString> PlatformsList;
|
||||||
|
UPROPERTY(BlueprintReadOnly)
|
||||||
|
TArray<FString> OSList;
|
||||||
|
UPROPERTY(BlueprintReadOnly)
|
||||||
|
TArray<FString> ComponentList;
|
||||||
|
UPROPERTY(BlueprintReadOnly)
|
||||||
|
TArray<FString> SeverityList;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void ServerPOSTResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool Success);
|
void ServerPOSTResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool Success);
|
||||||
void ServerProductInfoResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool Success);
|
void ServerProductInfoResponse(FHttpRequestPtr Request, FHttpResponsePtr Response, bool Success);
|
||||||
@@ -295,11 +318,8 @@ private:
|
|||||||
|
|
||||||
void ServerConnectionError(const EHttpRequestStatus::Type Status);
|
void ServerConnectionError(const EHttpRequestStatus::Type Status);
|
||||||
|
|
||||||
TArray<FString> ComponentList;
|
FText MapName;
|
||||||
TArray<FString> VersionsList;
|
FText MarkerLocation;
|
||||||
TArray<FString> SeverityList;
|
|
||||||
TArray<FString> PlatformsList;
|
|
||||||
TArray<FString> OSList;
|
|
||||||
|
|
||||||
TObjectPtr<class ABugMarkerActor> BugMarkerActor;
|
TObjectPtr<class ABugMarkerActor> BugMarkerActor;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -16,20 +16,53 @@ class UNREALZILLA_API UUnrealzillaGlobalSettings : public UDeveloperSettingsBack
|
|||||||
GENERATED_BODY()
|
GENERATED_BODY()
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
// The distance to send the trace out when placing bug markers in the world.
|
||||||
UPROPERTY(Config, BlueprintReadOnly, EditDefaultsOnly, Category="Bug Placement", meta=(DisplayName="Precise Placement Distance"))
|
UPROPERTY(Config, BlueprintReadOnly, EditDefaultsOnly, Category="Bug Placement", meta=(DisplayName="Precise Placement Distance"))
|
||||||
float BugPlacementTraceDistance = 1500.0f;
|
float BugPlacementTraceDistance = 1500.0f;
|
||||||
|
// The distance to hold the bug marker when using the arbitrary placement option.
|
||||||
UPROPERTY(Config, BlueprintReadOnly, EditDefaultsOnly, Category="Bug Placement", meta=(DisplayName="Arbitrary Placement Distance"))
|
UPROPERTY(Config, BlueprintReadOnly, EditDefaultsOnly, Category="Bug Placement", meta=(DisplayName="Arbitrary Placement Distance"))
|
||||||
float ArbitraryBugPlacementDistance = 250.0f;
|
float ArbitraryBugPlacementDistance = 250.0f;
|
||||||
|
|
||||||
|
// The Bugzilla server where bugs will be posted.
|
||||||
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting")
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting")
|
||||||
FString SubmissionServer;
|
FString SubmissionServer;
|
||||||
|
// The name of the product for which bugs will be posted.
|
||||||
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting")
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting")
|
||||||
FString ProductName;
|
FString ProductName;
|
||||||
|
// The API key to use when posting bugs. All bugs will be posted under the account of the owner of this API key.
|
||||||
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting", meta=(DisplayName="API Key"))
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting", meta=(DisplayName="API Key"))
|
||||||
FString APIKey;
|
FString APIKey;
|
||||||
|
// The viewport depth of the bug report interface widget.
|
||||||
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting")
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Reporting")
|
||||||
int32 BugReportWidgetDepth = 0;
|
int32 BugReportWidgetDepth = 0;
|
||||||
|
|
||||||
|
// The status to use when filing a new bug. A status such as "UNCONFIRMED" is suggested.
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
FString DefaultStatus;
|
||||||
|
|
||||||
|
// Whether to show unresolved bugs when displaying bug report markers.
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
bool bShowUnresolvedBugs = false;
|
||||||
|
// Whether to show in-progress bugs when displaying bug report markers.
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
bool bShowInProgressBugs = false;
|
||||||
|
// Whether to show resolved bugs when displaying bug report markers.
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
bool bShowResolvedBugs = false;
|
||||||
|
|
||||||
|
// A list of bug statuses that represent unresolved bugs in your Bugzilla install.
|
||||||
|
// Generally this would be something like "UNCONFIRMED" and "CONFIRMED".
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
TArray<FString> UnresolvedStatuses;
|
||||||
|
// A list of bug statuses that represent in progress bugs in your Bugzilla install.
|
||||||
|
// Generally this would include "IN_PROGRESS".
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
TArray<FString> InProgressStatuses;
|
||||||
|
// A list of bug statuses that represent resolved bugs in your Bugzilla install.
|
||||||
|
// Generally this would include "RESOLVED" and "VERIFIED".
|
||||||
|
UPROPERTY(Config, EditDefaultsOnly, BlueprintReadOnly, Category="Marking")
|
||||||
|
TArray<FString> ResolvedStatuses;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual void PostInitProperties() override;
|
virtual void PostInitProperties() override;
|
||||||
virtual FName GetCategoryName() const override;
|
virtual FName GetCategoryName() const override;
|
||||||
|
|||||||
Reference in New Issue
Block a user