2024-01-25 11:21:15 +08:00

51 lines
1.6 KiB
C++

// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "SCompoundWidget.h"
#include "SPlayListTrackHead.h"
#include "Midi/MidiType.h"
#include "Midi/Time/TimePos.h"
#include "UI/Widget/IChildWindow.h"
class SPlayListTimeLine;
class SPlayListPanel;
class SScrollBox;
/**
*
*/
class ARONA_API SPlayList : public SCompoundWidget, public IChildWindow
{
public:
SLATE_BEGIN_ARGS(SPlayList)
{}
SLATE_END_ARGS()
/** Constructs this widget with InArgs */
void Construct(const FArguments& InArgs);
virtual void Tick(const FGeometry& AllottedGeometry, const double InCurrentTime, const float InDeltaTime) override;
virtual FReply OnKeyDown(const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent) override;
virtual FReply OnKeyUp(const FGeometry& MyGeometry, const FKeyEvent& InKeyEvent) override;
virtual FReply OnMouseWheel(const FGeometry& MyGeometry, const FPointerEvent& InMouseEvent) override;
virtual bool SupportsKeyboardFocus() const override { return true; }
virtual TSharedRef<SWidget> GetWidget() override { return AsShared(); }
virtual TSharedPtr<SWidget> GetFocusWidget() override { return GetWidget(); }
AudioFrame GetScalerLevel();
TRange<AudioFrame> GetFrameRange() const { return FrameRange; }
TRange<AudioFrame> FrameRange;
TRange<AudioFrame> TargetFrameRange;
AudioFrame ExternRange = 100;
private:
TSharedPtr<SScrollBox> ScrollBox;
TSharedPtr<SPlayListPanel> PlayListPanel;
TSharedPtr<SPlayListTimeLine> TimeLine;
bool Zooming = false;
bool HorizonScrolling = false;
};