@@ -51,6 +51,7 @@ public sealed override void GetBaseProperties()
5151 public override async Task GetSpecialPropertiesAsync ( )
5252 {
5353 bool allFiles = true , allReadOnly = true , allNotReadOnly = true , allHidden = true , allNotHidden = true ;
54+ bool allCompressed = true , allNotCompressed = true , anyCanCompress = false ;
5455 foreach ( var x in List )
5556 {
5657 allFiles &= x . PrimaryItemAttribute == StorageItemTypes . File ;
@@ -61,6 +62,10 @@ public override async Task GetSpecialPropertiesAsync()
6162 bool isHidden = fileAttributes . HasFlag ( System . IO . FileAttributes . Hidden ) ;
6263 allHidden &= isHidden ;
6364 allNotHidden &= ! isHidden ;
65+ bool isCompressed = fileAttributes . HasFlag ( System . IO . FileAttributes . Compressed ) ;
66+ allCompressed &= isCompressed ;
67+ allNotCompressed &= ! isCompressed ;
68+ anyCanCompress |= Win32Helper . CanCompressContent ( x . ItemPath ) ;
6469 }
6570
6671 if ( allFiles )
@@ -80,6 +85,14 @@ public override async Task GetSpecialPropertiesAsync()
8085 else
8186 ViewModel . IsHidden = null ;
8287
88+ ViewModel . CanCompressContent = anyCanCompress ;
89+ if ( allCompressed )
90+ ViewModel . IsContentCompressed = true ;
91+ else if ( allNotCompressed )
92+ ViewModel . IsContentCompressed = false ;
93+ else
94+ ViewModel . IsContentCompressed = null ;
95+
8396 ViewModel . LastSeparatorVisibility = false ;
8497 ViewModel . ItemSizeVisibility = true ;
8598
@@ -131,7 +144,7 @@ CloudDriveSyncStatus.FolderOnline or
131144 SetItemsCountString ( ) ;
132145 }
133146
134- private void ViewModel_PropertyChanged ( object sender , System . ComponentModel . PropertyChangedEventArgs e )
147+ private async void ViewModel_PropertyChanged ( object sender , System . ComponentModel . PropertyChangedEventArgs e )
135148 {
136149 switch ( e . PropertyName )
137150 {
@@ -174,9 +187,12 @@ private void ViewModel_PropertyChanged(object sender, System.ComponentModel.Prop
174187
175188 case "IsContentCompressed" :
176189 {
177- List . ForEach ( x =>
190+ var isCompressed = ViewModel . IsContentCompressed ?? false ;
191+ var items = List . Select ( x => x . ItemPath ) . ToList ( ) ;
192+ await Task . Run ( ( ) =>
178193 {
179- Win32Helper . SetCompressionAttributeIoctl ( x . ItemPath , ViewModel . IsContentCompressed ?? false ) ;
194+ foreach ( var path in items )
195+ Win32Helper . SetCompressionAttributeIoctl ( path , isCompressed ) ;
180196 } ) ;
181197 }
182198 break ;
0 commit comments