using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Windows; using static QuikDawEditor.EDITING.StaticProperties; namespace QuikDawEditor.EditingClasses; public partial class Project : INotifyPropertyChanged { public decimal CurrentSnapTo { get; set; } = 0.0625M; //default no 16th note public int BeatsPerMeasure { get; set; } = 4; private double _StartingBookmarkMs = 0; public double StartingBookmarkMs { get { return _StartingBookmarkMs; } set { _StartingBookmarkMs = value; NotifyPropertyChanged(nameof(StartingBookmarkMs)); } } private ObservableCollection _Markers = new ObservableCollection(); public ObservableCollection Markers { get { return _Markers; } set { _Markers = value; NotifyPropertyChanged(nameof(Markers)); } } public ObservableCollection Tracks { get; set; } = new ObservableCollection(); internal List shownLyricLines; private ObservableCollection _LyricLines = new ObservableCollection(); public ObservableCollection LyricLines { get { return _LyricLines; } set { _LyricLines = value; shownLyricLines = _LyricLines.Where(ll => ll.ShowOnLyricLane).ToList(); } } public MasterTrack MasterTrack { get; set; } private bool _IsMixerVisible = false; public bool IsMixerVisible { get { return _IsMixerVisible; } set { _IsMixerVisible = value; NotifyPropertyChanged(nameof(MixerVisibility)); } } public Visibility MixerVisibility { get { return IsMixerVisible ? Visibility.Visible : Visibility.Collapsed; } } private bool _IsLyricBarVisible = false; public bool IsLyricBarVisible { get { return _IsLyricBarVisible; } set { _IsLyricBarVisible = value; NotifyPropertyChanged(nameof(IsLyricBarVisible)); } } private bool _IsLyricEditorVisible = false; public bool IsLyricEditorVisible { get { return _IsLyricEditorVisible; } set { _IsLyricEditorVisible = value; NotifyPropertyChanged(nameof(IsLyricEditorVisible)); } } public double LyricWindowLeft { get; set; } = 300; public double LyricWindowTop { get; set; } = 100; public double LyricWindowWidth { get; set; } = 500; public double LyricWindowHeight { get; set; } = 650; private double _LoopRangeLeftMs = 0; public double LoopRangeLeftMs { get { return _LoopRangeLeftMs; } set { _LoopRangeLeftMs = value; NotifyPropertyChanged(nameof(LoopRangeMargin)); } } public Thickness LoopRangeMargin { get { return new Thickness(MsecToPixelsZoomed(LoopRangeLeftMs), -3, 0, -3); } } private double _LoopRangeWidthMs = 400; public double LoopRangeWidthMs { get { return _LoopRangeWidthMs; } set { _LoopRangeWidthMs = value; NotifyPropertyChanged(nameof(LoopRangeWidthPix)); } } public double LoopRangeWidthPix { get { return MsecToPixelsZoomed(LoopRangeWidthMs); } } private bool _LoopRangeSelected = false; public bool LoopRangeSelected { get { return _LoopRangeSelected; } set { _LoopRangeSelected = value; if (projPlayer != null) projPlayer.NotifyPropertyChanged("LoopRangeRectSelected"); NotifyPropertyChanged(nameof(LoopRangeSelected)); } } }