AronaSlate/Source/Arona/UI/Widget/SMainWindowHeader.cpp
2024-01-25 11:21:15 +08:00

76 lines
1.6 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#include "SMainWindowHeader.h"
#include "Singleton/PortAudioAPI.h"
#include "SButton.h"
#include "SlateOptMacros.h"
#include "SProgressBar.h"
#include "WindowManager.h"
#include "ChannelRack/ChannelRack.h"
#include "PatternThumbnail/SPatternSelector.h"
#include "Widgets/SBoxPanel.h"
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
TOptional<float> SMainWindowHeader::GetProgress() const
{
return FPortAudioAPI::Get().GetBufferLoad();
}
void SMainWindowHeader::Construct(const FArguments& InArgs)
{
OnChannelRackClicked = InArgs._OnChannelRackClicked;
OnMixerClicked = InArgs._OnMixerClicked;
ChildSlot
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text(FText::FromString("ChannelRack"))
.OnClicked_Raw(this, &SMainWindowHeader::ToggleChannelRack)
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SButton)
.Text(FText::FromString("Mixer"))
.OnClicked_Raw(this, &SMainWindowHeader::ToggleMixer)
]
+SHorizontalBox::Slot()
.AutoWidth()
[
SNew(SProgressBar)
.Percent(this, &SMainWindowHeader::GetProgress)
]
+SHorizontalBox::Slot()
.AutoWidth()
.VAlign(EVerticalAlignment::VAlign_Fill)
[
SNew(SBox)
.WidthOverride(200)
[
SNew(SPatternSelector)
]
]
];
}
FReply SMainWindowHeader::ToggleChannelRack()
{
OnChannelRackClicked.ExecuteIfBound();
return FReply::Handled();
}
FReply SMainWindowHeader::ToggleMixer()
{
OnMixerClicked.ExecuteIfBound();
return FReply::Handled();
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION