1616using AudioCuesheetEditor . Model . AudioCuesheet ;
1717using AudioCuesheetEditor . Model . IO . Audio ;
1818using AudioCuesheetEditor . Model . IO . Import ;
19+ using AudioCuesheetEditor . Model . UI ;
1920
2021namespace AudioCuesheetEditor . Services . UI
2122{
22- public class SessionStateContainer : ISessionStateContainer
23+ public class SessionStateContainer : ISessionStateContainer , ITraceable
2324 {
2425 public event EventHandler ? CuesheetChanged ;
2526 public event EventHandler ? ImportCuesheetChanged ;
27+ public event EventHandler < TraceablePropertiesChangedEventArgs > ? TraceablePropertyChanged ;
2628
2729 private readonly ITraceChangeManager _traceChangeManager ;
2830 private Cuesheet cuesheet ;
@@ -34,6 +36,7 @@ public SessionStateContainer(ITraceChangeManager traceChangeManager)
3436 _traceChangeManager = traceChangeManager ;
3537 cuesheet = new Cuesheet ( ) ;
3638 SetCuesheetReference ( cuesheet ) ;
39+ _traceChangeManager . TraceChanges ( this ) ;
3740 }
3841 public Cuesheet Cuesheet
3942 {
@@ -84,9 +87,10 @@ public void ResetImport()
8487
8588 private void SetCuesheetReference ( Cuesheet value )
8689 {
90+ var previousValue = Cuesheet ;
8791 cuesheet = value ;
88- _traceChangeManager . Reset ( ) ;
8992 _traceChangeManager . TraceChanges ( Cuesheet ) ;
93+ TraceablePropertyChanged ? . Invoke ( this , new TraceablePropertiesChangedEventArgs ( new TraceableChange ( previousValue , nameof ( Cuesheet ) ) ) ) ;
9094 CuesheetChanged ? . Invoke ( this , EventArgs . Empty ) ;
9195 }
9296 }
0 commit comments