11// Copyright (c) 2023 Files Community
22// Licensed under the MIT License. See the LICENSE.
33
4+ using Files . App . Data . Contexts ;
45using Files . App . UserControls . FilePreviews ;
56using Files . App . ViewModels . Previews ;
6- using Files . Core . Helpers ;
7- using Files . Core . Utils . Cloud ;
87using Microsoft . UI . Xaml ;
98using Microsoft . UI . Xaml . Controls ;
109using System . Windows . Input ;
@@ -45,16 +44,29 @@ public ListedItem SelectedItem
4544 get => selectedItem ;
4645 set
4746 {
47+ if ( selectedItem is not null )
48+ selectedItem . PropertyChanged -= SelectedItem_PropertyChanged ;
49+
4850 if ( SetProperty ( ref selectedItem , value ) )
51+ {
4952 OnPropertyChanged ( nameof ( TagsFlyout ) ) ;
53+ OnPropertyChanged ( nameof ( LoadTagsList ) ) ;
54+
55+ if ( value is not null )
56+ value . PropertyChanged += SelectedItem_PropertyChanged ;
57+ }
5058 }
5159 }
5260
5361 private PreviewPaneStates previewPaneState ;
5462 public PreviewPaneStates PreviewPaneState
5563 {
5664 get => previewPaneState ;
57- set => SetProperty ( ref previewPaneState , value ) ;
65+ set
66+ {
67+ if ( SetProperty ( ref previewPaneState , value ) )
68+ OnPropertyChanged ( nameof ( LoadTagsList ) ) ;
69+ }
5870 }
5971
6072 private bool showCloudItemButton ;
@@ -71,6 +83,11 @@ public UIElement PreviewPaneContent
7183 set => SetProperty ( ref previewPaneContent , value ) ;
7284 }
7385
86+ public bool LoadTagsList
87+ => SelectedItem ? . HasTags ?? false &&
88+ PreviewPaneState is PreviewPaneStates . NoPreviewAvailable ||
89+ PreviewPaneState is PreviewPaneStates . PreviewAndDetailsAvailable ;
90+
7491 public MenuFlyout TagsFlyout
7592 => new Files . App . UserControls . Menus . FileTagsContextMenu ( new List < ListedItem > ( ) { SelectedItem } ) ;
7693
@@ -353,6 +370,12 @@ private async Task LoadBasicPreviewAsync()
353370 }
354371 }
355372
373+ private void SelectedItem_PropertyChanged ( object ? sender , PropertyChangedEventArgs e )
374+ {
375+ if ( e . PropertyName is nameof ( ListedItem . HasTags ) )
376+ OnPropertyChanged ( nameof ( LoadTagsList ) ) ;
377+ }
378+
356379 public void Dispose ( )
357380 {
358381 previewSettingsService . PropertyChanged -= PreviewSettingsService_OnPropertyChangedEvent ;
0 commit comments