/// <summary> /// Apply set as commands /// </summary> /// <param name="wallpaper"></param> /// <param name="action"></param> public void SetAs(object parameter) { var values = (object[])parameter; var wallpaper = (Models.Wallpaper.Entities.Wallpaper)values[0]; var action = (string)values[1]; if (action == "AsBackground") { new Uri(wallpaper.Path).SetAsDesktopWallpaper(SetAsWallpaperHelpers.Style.Centered); } else if (action == "SaveAs") { var folderBrowserDialog = new FolderBrowserDialog { Description = ViewModelApplication.LanguageResourceDictionary["SelectSaveDestination"].ToString(), RootFolder = Environment.SpecialFolder.Desktop }; var result = folderBrowserDialog.ShowDialog(); if (result == DialogResult.OK && !string.IsNullOrEmpty(folderBrowserDialog.SelectedPath)) { var fileName = Path.GetFileName(wallpaper.Path); File.Copy(wallpaper.Path, $"{folderBrowserDialog.SelectedPath}\\{fileName}"); } } else if (action == "Remove") { if (!wallpaper.Path.StartsWith("https://")) { File.Delete(wallpaper.Path); } if (!wallpaper.Thumbnail.BitmapImageToPath().StartsWith("https://")) { File.Delete(wallpaper.Thumbnail.BitmapImageToPath()); } using var db = new AppDbContext(); db.Wallpapers.Remove(wallpaper); db.SaveChanges(); if (wallpaper.WallpaperType == WallpaperType.Desktop) { DesktopWallpapers.Remove(wallpaper); } else if (wallpaper.WallpaperType == WallpaperType.Mobile) { MobileWallpapers.Remove(wallpaper); } } }
/// <summary> /// Load saved desktop wallpapers /// </summary> public void LoadDesktopWallpapers() { new Task(async() => { DesktopWallpapersLIVisibility = Visibility.Visible; await Task.Delay(700); System.Windows.Application.Current.Dispatcher.Invoke(() => { using var db = new AppDbContext(); var totalSize = db.Wallpapers .Where(x => x.WallpaperType == WallpaperType.Desktop) .Count(); totalSize = totalSize > 0 ? totalSize : 1; DesktopPagination = new Pagination(totalSize, DesktopCurrentPage, DesktopPageLimit, 10); DesktopWallpapers = db.Wallpapers .Select(x => new Models.Wallpaper.Entities.Wallpaper { Id = x.Id, UId = x.UId, Path = x.Path, Thumbnail = x.Thumbnail, DimensionX = x.DimensionX, DimensionY = x.DimensionY, IsFavorite = x.IsFavorite, WallpaperUrl = x.WallpaperUrl, WallpaperThumbUrl = x.WallpaperThumbUrl, WallpaperType = x.WallpaperType, ColorPalette = db.Colors.Where(c => c.WallpaperId == x.Id) .ToObservableCollection(), History = db.History.Where(c => c.WallpaperId == x.Id).ToObservableCollection() }) .Where(x => x.WallpaperType == WallpaperType.Desktop && db.History.Any(c => c.WallpaperId == x.Id)) .OrderByDescending(x => x.AddedDate) .Skip((DesktopCurrentPage - 1) * DesktopPageLimit) .Take(DesktopPageLimit) .ToObservableCollection(); SelectedDesktopWallpaper = DesktopWallpapers.FirstOrDefault(); DesktopPagination = new Pagination(totalSize, DesktopCurrentPage, DesktopPageLimit, 10); DesktopWallpapersLIVisibility = Visibility.Hidden; }); }).Start(); }