Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions src/Files.Uwp/App.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,18 +1,23 @@
using CommunityToolkit.Mvvm.DependencyInjection;
using Files.Backend.Services;
using Files.Backend.Services.Settings;
using Files.Shared;
using Files.Shared.Extensions;
using Files.Uwp.CommandLine;
using Files.Uwp.Controllers;
using Files.Uwp.Filesystem;
using Files.Uwp.Filesystem.FilesystemHistory;
using Files.Uwp.Helpers;
using Files.Uwp.ServicesImplementation;
using Files.Uwp.ServicesImplementation.Settings;
using Files.Uwp.UserControls.MultitaskingControl;
using Files.Uwp.ViewModels;
using Files.Uwp.ViewModels.SettingsViewModels;
using Files.Uwp.Views;
using Microsoft.AppCenter;
using Microsoft.AppCenter.Analytics;
using Microsoft.AppCenter.Crashes;
using Microsoft.Extensions.DependencyInjection;
using CommunityToolkit.Mvvm.DependencyInjection;
using Microsoft.Toolkit.Uwp;
using Microsoft.Toolkit.Uwp.Helpers;
using Microsoft.Toolkit.Uwp.Notifications;
Expand All @@ -36,11 +41,6 @@
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Media.Animation;
using Windows.UI.Xaml.Navigation;
using Files.Shared;
using Files.Shared.Extensions;
using Files.Backend.Services;
using Files.Uwp.ServicesImplementation;
using Files.Uwp.ViewModels.SettingsViewModels;

namespace Files.Uwp
{
Expand Down Expand Up @@ -115,6 +115,7 @@ private IServiceProvider ConfigureServices()
.AddSingleton<IBundlesSettingsService, BundlesSettingsService>()

// Other services
.AddSingleton(Logger)
.AddSingleton<IDialogService, DialogService>()
.AddSingleton<IImagingService, ImagingService>()
.AddSingleton<IThreadingService, ThreadingService>()
Expand Down
41 changes: 19 additions & 22 deletions src/Files.Uwp/Filesystem/CloudDrivesManager.cs
Original file line number Diff line number Diff line change
@@ -1,42 +1,41 @@
using CommunityToolkit.Mvvm.DependencyInjection;
using Files.Backend.Services.Settings;
using Files.Shared;
using Files.Uwp.DataModels.NavigationControlItems;
using Files.Uwp.Filesystem.Cloud;
using Files.Uwp.Helpers;
using Files.Backend.Services.Settings;
using CommunityToolkit.Mvvm.DependencyInjection;
using Microsoft.Toolkit.Uwp;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Linq;
using System.Threading.Tasks;
using Windows.ApplicationModel.Core;
using System.Collections.Specialized;

namespace Files.Uwp.Filesystem
{
public class CloudDrivesManager
{
private IUserSettingsService UserSettingsService { get; } = Ioc.Default.GetService<IUserSettingsService>();

private static readonly ILogger Logger = App.Logger;
private readonly List<DriveItem> drivesList = new List<DriveItem>();
private readonly ILogger logger = Ioc.Default.GetService<ILogger>();
private readonly IUserSettingsService userSettingsService = Ioc.Default.GetService<IUserSettingsService>();

public EventHandler<NotifyCollectionChangedEventArgs> DataChanged;

private readonly List<DriveItem> drives = new();
public IReadOnlyList<DriveItem> Drives
{
get
{
lock (drivesList)
lock (drives)
{
return drivesList.ToList().AsReadOnly();
return drives.ToList().AsReadOnly();
}
}
}

public async Task EnumerateDrivesAsync()
{
if (!UserSettingsService.AppearanceSettingsService.ShowCloudDrivesSection)
if (!userSettingsService.AppearanceSettingsService.ShowCloudDrivesSection)
{
return;
}
Expand All @@ -46,37 +45,35 @@ public async Task EnumerateDrivesAsync()

foreach (var provider in cloudProviders)
{
Logger.Info($"Adding cloud provider \"{provider.Name}\" mapped to {provider.SyncFolder}");
var cloudProviderItem = new DriveItem()
logger.Info($"Adding cloud provider \"{provider.Name}\" mapped to {provider.SyncFolder}");
var cloudProviderItem = new DriveItem
{
Text = provider.Name,
Path = provider.SyncFolder,
Type = DriveType.CloudDrive
Type = DriveType.CloudDrive,
};
cloudProviderItem.MenuOptions = new ContextMenuOptions
{
IsLocationItem = true,
ShowEjectDevice = cloudProviderItem.IsRemovable,
ShowShellItems = true,
ShowProperties = true
ShowProperties = true,
};
var iconData = await FileThumbnailHelper.LoadIconWithoutOverlayAsync(provider.SyncFolder, 24);
if (iconData != null)
if (iconData is not null)
{
cloudProviderItem.IconData = iconData;
await CoreApplication.MainView.CoreWindow.DispatcherQueue.EnqueueAsync(async () =>
{
cloudProviderItem.Icon = await iconData.ToBitmapAsync();
});
await CoreApplication.MainView.CoreWindow.DispatcherQueue
.EnqueueAsync(async () => cloudProviderItem.Icon = await iconData.ToBitmapAsync());
}

lock (drivesList)
lock (drives)
{
if (drivesList.Any(x => x.Path == cloudProviderItem.Path))
if (drives.Any(x => x.Path == cloudProviderItem.Path))
{
continue;
}
drivesList.Add(cloudProviderItem);
drives.Add(cloudProviderItem);
}

DataChanged?.Invoke(SectionType.CloudDrives, new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, cloudProviderItem));
Expand Down
Loading