2023-11-21 09:56:04 -05:00
|
|
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
2023-11-21 10:29:56 -05:00
|
|
|
#if SOURCE_CONTROL_WITH_SLATE
|
|
|
|
|
|
2023-11-21 09:56:04 -05:00
|
|
|
#include "CoreMinimal.h"
|
|
|
|
|
#include "ISourceControlProvider.h"
|
|
|
|
|
#include "Delegates/IDelegateInstance.h"
|
|
|
|
|
#include "Framework/SlateDelegates.h"
|
|
|
|
|
#include "Styling/SlateTypes.h"
|
|
|
|
|
#include "Widgets/SCompoundWidget.h"
|
|
|
|
|
|
2024-04-29 10:22:55 -04:00
|
|
|
DECLARE_DELEGATE_RetVal(int32, FNumConflicts);
|
|
|
|
|
|
2024-02-26 03:57:11 -05:00
|
|
|
DECLARE_DELEGATE_RetVal(bool, FIsVisible);
|
|
|
|
|
DECLARE_DELEGATE_RetVal(bool, FIsEnabled);
|
|
|
|
|
|
2023-11-21 09:56:04 -05:00
|
|
|
/** Widget for displaying Source Control Check in Changes and Sync Latest buttons */
|
|
|
|
|
class SOURCECONTROL_API SSourceControlControls : public SCompoundWidget
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
SLATE_BEGIN_ARGS(SSourceControlControls) {}
|
2024-02-26 03:57:11 -05:00
|
|
|
SLATE_ATTRIBUTE(bool, IsEnabledMiddleSeparator)
|
|
|
|
|
SLATE_ATTRIBUTE(bool, IsEnabledRightSeparator)
|
2023-11-21 09:56:04 -05:00
|
|
|
SLATE_EVENT(FOnGetContent, OnGenerateKebabMenu)
|
|
|
|
|
SLATE_END_ARGS()
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
/** Construct this widget */
|
|
|
|
|
void Construct(const FArguments& InArgs);
|
|
|
|
|
|
2024-02-26 03:57:11 -05:00
|
|
|
public:
|
|
|
|
|
/** Separators */
|
|
|
|
|
EVisibility GetSourceControlMiddleSeparatorVisibility() const;
|
|
|
|
|
EVisibility GetSourceControlRightSeparatorVisibility() const;
|
|
|
|
|
|
2023-11-21 09:56:04 -05:00
|
|
|
/** Sync button */
|
2024-02-26 03:57:11 -05:00
|
|
|
static bool IsAtLatestRevision();
|
|
|
|
|
static bool IsSourceControlSyncEnabled();
|
|
|
|
|
static bool HasSourceControlChangesToSync();
|
|
|
|
|
static EVisibility GetSourceControlSyncStatusVisibility();
|
|
|
|
|
static FText GetSourceControlSyncStatusText();
|
|
|
|
|
static FText GetSourceControlSyncStatusToolTipText();
|
|
|
|
|
static const FSlateBrush* GetSourceControlSyncStatusIcon();
|
|
|
|
|
static FReply OnSourceControlSyncClicked();
|
2023-11-21 09:56:04 -05:00
|
|
|
|
|
|
|
|
/** Check-in button */
|
2024-02-26 03:57:11 -05:00
|
|
|
static int GetNumLocalChanges();
|
|
|
|
|
static bool IsSourceControlCheckInEnabled();
|
|
|
|
|
static bool HasSourceControlChangesToCheckIn();
|
|
|
|
|
static EVisibility GetSourceControlCheckInStatusVisibility();
|
|
|
|
|
static FText GetSourceControlCheckInStatusText();
|
|
|
|
|
static FText GetSourceControlCheckInStatusToolTipText();
|
|
|
|
|
static const FSlateBrush* GetSourceControlCheckInStatusIcon();
|
|
|
|
|
static FReply OnSourceControlCheckInChangesClicked();
|
2023-11-21 09:56:04 -05:00
|
|
|
|
2024-02-01 13:58:40 -05:00
|
|
|
/** Restore as latest button */
|
2024-02-26 03:57:11 -05:00
|
|
|
static bool IsSourceControlRestoreAsLatestEnabled();
|
|
|
|
|
static EVisibility GetSourceControlRestoreAsLatestVisibility();
|
|
|
|
|
static FText GetSourceControlRestoreAsLatestText();
|
|
|
|
|
static FText GetSourceControlRestoreAsLatestToolTipText();
|
|
|
|
|
static const FSlateBrush* GetSourceControlRestoreAsLatestStatusIcon();
|
|
|
|
|
static FReply OnSourceControlRestoreAsLatestClicked();
|
2024-02-01 13:58:40 -05:00
|
|
|
|
2023-12-22 14:15:22 -05:00
|
|
|
public:
|
2024-02-26 03:57:11 -05:00
|
|
|
static int32 GetNumConflictsRemaining();
|
2024-03-29 11:45:26 -04:00
|
|
|
static int32 GetNumConflictsUpcoming();
|
2024-02-01 13:58:40 -05:00
|
|
|
|
2024-02-26 03:57:11 -05:00
|
|
|
public:
|
2024-04-29 10:22:55 -04:00
|
|
|
static void SetNumConflictsRemaining(const FNumConflicts& InNumConflictsRemaining) { NumConflictsRemaining = InNumConflictsRemaining; }
|
|
|
|
|
static void SetNumConflictsUpcoming(const FNumConflicts& InNumConflictsUpcoming) { NumConflictsUpcoming = InNumConflictsUpcoming; }
|
|
|
|
|
|
2024-02-26 03:57:11 -05:00
|
|
|
static void SetIsSyncLatestEnabled(const FIsEnabled& InSyncLatestEnabled) { IsSyncLatestEnabled = InSyncLatestEnabled; }
|
|
|
|
|
static void SetIsCheckInChangesEnabled(const FIsEnabled& InCheckInChangesEnabled) { IsCheckInChangesEnabled = InCheckInChangesEnabled; }
|
|
|
|
|
static void SetIsRestoreAsLatestEnabled(const FIsEnabled& InRestoreAsLatestEnabled) { IsRestoreAsLatestEnabled = InRestoreAsLatestEnabled; }
|
|
|
|
|
|
|
|
|
|
static void SetIsSyncLatestVisible(const FIsVisible& InSyncLatestVisible) { IsSyncLatestVisible = InSyncLatestVisible; }
|
|
|
|
|
static void SetIsCheckInChangesVisible(const FIsVisible& InCheckInChangesVisible) { IsCheckInChangesVisible = InCheckInChangesVisible; }
|
|
|
|
|
static void SetIsRestoreAsLatestVisible(const FIsVisible& InRestoreAsLatestVisible) { IsRestoreAsLatestVisible = InRestoreAsLatestVisible; }
|
|
|
|
|
|
|
|
|
|
static void SetOnSyncLatestClicked(const FOnClicked& InSyncLatestClicked) { OnSyncLatestClicked = InSyncLatestClicked; }
|
|
|
|
|
static void SetOnCheckInChangesClicked(const FOnClicked& InCheckInChangesClicked) { OnCheckInChangesClicked = InCheckInChangesClicked; }
|
|
|
|
|
static void SetOnRestoreAsLatestClicked(const FOnClicked& InRestoreAsLatestClicked) { OnRestoreAsLatestClicked = InRestoreAsLatestClicked; }
|
2023-11-21 09:56:04 -05:00
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
2024-02-26 03:57:11 -05:00
|
|
|
TAttribute<bool> IsMiddleSeparatorEnabled;
|
|
|
|
|
TAttribute<bool> IsRightSeparatorEnabled;
|
2023-11-21 09:56:04 -05:00
|
|
|
|
2024-04-29 10:22:55 -04:00
|
|
|
static FNumConflicts NumConflictsRemaining;
|
|
|
|
|
static FNumConflicts NumConflictsUpcoming;
|
2024-02-01 13:58:40 -05:00
|
|
|
|
2024-02-26 03:57:11 -05:00
|
|
|
static FIsEnabled IsSyncLatestEnabled;
|
|
|
|
|
static FIsEnabled IsCheckInChangesEnabled;
|
|
|
|
|
static FIsEnabled IsRestoreAsLatestEnabled;
|
|
|
|
|
|
|
|
|
|
static FIsVisible IsSyncLatestVisible;
|
|
|
|
|
static FIsVisible IsCheckInChangesVisible;
|
|
|
|
|
static FIsVisible IsRestoreAsLatestVisible;
|
|
|
|
|
|
|
|
|
|
static FOnClicked OnSyncLatestClicked;
|
|
|
|
|
static FOnClicked OnCheckInChangesClicked;
|
|
|
|
|
static FOnClicked OnRestoreAsLatestClicked;
|
2023-11-21 10:29:56 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif // SOURCE_CONTROL_WITH_SLATE
|