Example #1
0
        /// <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);
                }
            }
        }
Example #2
0
        /// <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();
        }