@@ -483,23 +483,6 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
483
483
matchingItem . LoadFileIcon = true ;
484
484
}
485
485
}
486
- if ( App . Connection != null )
487
- {
488
- var value = new ValueSet ( ) ;
489
- value . Add ( "Arguments" , "GetIconOverlay" ) ;
490
- value . Add ( "filePath" , matchingItem . ItemPath ) ;
491
- var response = await App . Connection . SendMessageAsync ( value ) ;
492
- var iconOverlay = response . Message . Get ( "IconOverlay" , ( string ) null ) ;
493
- if ( iconOverlay != null )
494
- {
495
- matchingItem . IconOverlay = new BitmapImage ( ) ;
496
- byte [ ] bitmapData = Convert . FromBase64String ( iconOverlay ) ;
497
- using ( var ms = new MemoryStream ( bitmapData ) )
498
- {
499
- await matchingItem . IconOverlay . SetSourceAsync ( ms . AsRandomAccessStream ( ) ) ;
500
- }
501
- }
502
- }
503
486
if ( item . IsShortcutItem )
504
487
{
505
488
// Reset cloud sync status icon
@@ -511,6 +494,7 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
511
494
matchingItem . ItemType = matchingStorageItem . DisplayType ;
512
495
var syncStatus = await CheckCloudDriveSyncStatus ( matchingStorageItem ) ;
513
496
matchingItem . SyncStatusUI = CloudDriveSyncStatusUI . FromCloudDriveSyncStatus ( syncStatus ) ;
497
+ matchingItem . IconOverlay = ( await LoadIconOverlay ( matchingItem . ItemPath ) ) . Icon ;
514
498
}
515
499
}
516
500
}
@@ -533,44 +517,35 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
533
517
StorageFolder matchingStorageItem = await StorageFileExtensions . GetFolderFromPathAsync ( ( item as ShortcutItem ) ? . TargetPath ?? item . ItemPath , _workingRoot , _currentStorageFolder ) ;
534
518
if ( matchingItem != null && matchingStorageItem != null )
535
519
{
536
- if ( App . Connection != null )
520
+ var iconOverlay = await LoadIconOverlay ( matchingItem . ItemPath ) ;
521
+ if ( iconOverlay . IsCustom )
537
522
{
538
- var value = new ValueSet ( ) ;
539
- value . Add ( "Arguments" , "GetIconOverlay" ) ;
540
- value . Add ( "filePath" , matchingItem . ItemPath ) ;
541
- var response = await App . Connection . SendMessageAsync ( value ) ;
542
- var hasCustomIcon = ( response . Status == Windows . ApplicationModel . AppService . AppServiceResponseStatus . Success )
543
- && response . Message . Get ( "HasCustomIcon" , false ) ;
544
- if ( hasCustomIcon )
523
+ // Only set folder icon if it's a custom icon
524
+ using ( var Thumbnail = await matchingStorageItem . GetThumbnailAsync ( ThumbnailMode . SingleItem , thumbnailSize , ThumbnailOptions . UseCurrentScale ) )
545
525
{
546
- // Only set folder icon if it's a custom icon
547
- using ( var Thumbnail = await matchingStorageItem . GetThumbnailAsync ( ThumbnailMode . SingleItem , thumbnailSize , ThumbnailOptions . UseCurrentScale ) )
526
+ if ( Thumbnail != null )
548
527
{
549
- if ( Thumbnail != null )
550
- {
551
- matchingItem . FileImage = new BitmapImage ( ) ;
552
- await matchingItem . FileImage . SetSourceAsync ( Thumbnail ) ;
553
- matchingItem . LoadUnknownTypeGlyph = false ;
554
- matchingItem . LoadFolderGlyph = false ;
555
- matchingItem . LoadFileIcon = true ;
556
- }
557
- }
558
- }
559
- var iconOverlay = response . Message . Get ( "IconOverlay" , ( string ) null ) ;
560
- if ( iconOverlay != null )
561
- {
562
- matchingItem . IconOverlay = new BitmapImage ( ) ;
563
- byte [ ] bitmapData = Convert . FromBase64String ( iconOverlay ) ;
564
- using ( var ms = new MemoryStream ( bitmapData ) )
565
- {
566
- await matchingItem . IconOverlay . SetSourceAsync ( ms . AsRandomAccessStream ( ) ) ;
528
+ matchingItem . FileImage = new BitmapImage ( ) ;
529
+ await matchingItem . FileImage . SetSourceAsync ( Thumbnail ) ;
530
+ matchingItem . LoadUnknownTypeGlyph = false ;
531
+ matchingItem . LoadFolderGlyph = false ;
532
+ matchingItem . LoadFileIcon = true ;
567
533
}
568
534
}
569
535
}
570
- matchingItem . FolderRelativeId = matchingStorageItem . FolderRelativeId ;
571
- matchingItem . ItemType = matchingStorageItem . DisplayType ;
572
- var syncStatus = await CheckCloudDriveSyncStatus ( matchingStorageItem ) ;
573
- matchingItem . SyncStatusUI = CloudDriveSyncStatusUI . FromCloudDriveSyncStatus ( syncStatus ) ;
536
+ if ( item . IsShortcutItem )
537
+ {
538
+ // Reset cloud sync status icon
539
+ matchingItem . SyncStatusUI = new CloudDriveSyncStatusUI ( ) { LoadSyncStatus = false } ;
540
+ }
541
+ else
542
+ {
543
+ matchingItem . FolderRelativeId = matchingStorageItem . FolderRelativeId ;
544
+ matchingItem . ItemType = matchingStorageItem . DisplayType ;
545
+ var syncStatus = await CheckCloudDriveSyncStatus ( matchingStorageItem ) ;
546
+ matchingItem . SyncStatusUI = CloudDriveSyncStatusUI . FromCloudDriveSyncStatus ( syncStatus ) ;
547
+ matchingItem . IconOverlay = iconOverlay . Icon ;
548
+ }
574
549
}
575
550
}
576
551
catch ( Exception )
@@ -589,6 +564,32 @@ public async void LoadExtendedItemProperties(ListedItem item, uint thumbnailSize
589
564
}
590
565
}
591
566
567
+ private async Task < ( BitmapImage Icon , bool IsCustom ) > LoadIconOverlay ( string filePath )
568
+ {
569
+ if ( App . Connection != null )
570
+ {
571
+ var value = new ValueSet ( ) ;
572
+ value . Add ( "Arguments" , "GetIconOverlay" ) ;
573
+ value . Add ( "filePath" , filePath ) ;
574
+ var response = await App . Connection . SendMessageAsync ( value ) ;
575
+ var hasCustomIcon = ( response . Status == Windows . ApplicationModel . AppService . AppServiceResponseStatus . Success )
576
+ && response . Message . Get ( "HasCustomIcon" , false ) ;
577
+ var iconOverlay = response . Message . Get ( "IconOverlay" , ( string ) null ) ;
578
+ if ( iconOverlay != null )
579
+ {
580
+ var image = new BitmapImage ( ) ;
581
+ byte [ ] bitmapData = Convert . FromBase64String ( iconOverlay ) ;
582
+ using ( var ms = new MemoryStream ( bitmapData ) )
583
+ {
584
+ await image . SetSourceAsync ( ms . AsRandomAccessStream ( ) ) ;
585
+ }
586
+ return ( image , hasCustomIcon ) ;
587
+ }
588
+ return ( null , hasCustomIcon ) ;
589
+ }
590
+ return ( null , false ) ;
591
+ }
592
+
592
593
public void RefreshItems ( )
593
594
{
594
595
AddItemsToCollectionAsync ( WorkingDirectory ) ;
0 commit comments