public async Task InitializeAsync()
        {
            var settingsLoader = new SettingsLoader();

            VideosPerPage = int.Parse((await settingsLoader.GetSettingAsync(Setting.MAXVIDEOSPERPAGE))?.Value ?? "50");
            ThumpnailSize = int.Parse((await settingsLoader.GetSettingAsync(Setting.THUMPNAILSIZE))?.Value ?? "320");

            var videos = await _VideoProvider.GetVideos();

            videos = videos.OrderBy(x => x.Artist.Name).ThenBy(x => x.Name).ToList();
            foreach (var video in videos)
            {
                var vidVM = new VideoViewModel(video);
                Videos.Add(vidVM);
            }

            FilteredVideos = Videos.ToList();

            // Add all videos to CurrentPageVideos, page filtering is done via SourceCollectionView.Filter
            foreach (var video in Videos)
            {
                CurrentPageVideos.Add(video);
            }

            VideoCollectionView.MoveCurrentToFirst();

            MaxPage = Videos.Count / VideosPerPage;

            GroupAfterArtist(null);

            foreach (var video in Videos)
            {
                video.ThumbailBitmap = await video.GetThumbnailBitmap().ConfigureAwait(false);
            }
        }
        private async void RefreshVideos(int?obj)
        {
            var settingsLoader        = new SettingsLoader();
            var settingsVideosPerPage = await settingsLoader.GetSettingAsync(Setting.MAXVIDEOSPERPAGE);

            var settingsThumpnailsize = await settingsLoader.GetSettingAsync(Setting.THUMPNAILSIZE);

            if (settingsVideosPerPage != null)
            {
                VideosPerPage = int.Parse(settingsVideosPerPage.Value);

                int maxPage = FilteredVideos.Count / VideosPerPage;

                if (CurrentPage > maxPage)
                {
                    CurrentPage = maxPage;
                }
            }

            if (settingsThumpnailsize != null)
            {
                ThumpnailSize = int.Parse(settingsThumpnailsize.Value);
            }

            SetCurrentPage();
        }
예제 #3
0
        public SettingsPage()
        {
            InitializeComponent();

            var settingsLoader = new SettingsLoader();

            TextBoxUserName.Text     = settingsLoader.GetSettingAsync(Setting.ACCOUNT_NAME).Result?.Value;
            TextBoxPassword.Password = settingsLoader.GetSettingAsync(Setting.ACCOUNT_PASSWORD).Result?.Value;

            NumericMaxVideosPerPage.Value = double.Parse(settingsLoader.GetSettingAsync(Setting.MAXVIDEOSPERPAGE).Result?.Value ?? "50");
            ThumpnailSizeSlider.Value     = double.Parse(settingsLoader.GetSettingAsync(Setting.THUMPNAILSIZE).Result?.Value ?? "320");

            TextBoxArtistFolderPath.Text = settingsLoader.GetSettingAsync(Setting.VIDEOPATH).Result?.Value;
        }
        private async void IwaraWebView_ContentLoading(object sender, Microsoft.Web.WebView2.Core.CoreWebView2ContentLoadingEventArgs e)
        {
            btDownload.IsEnabled = false;
            await SetVideo();

            var settingsLoader = new SettingsLoader();
            var account        = await settingsLoader.GetSettingAsync(Setting.ACCOUNT_NAME);

            var password = await settingsLoader.GetSettingAsync(Setting.ACCOUNT_PASSWORD);

            if (account != null)
            {
                await IwaraWebView.CoreWebView2.ExecuteScriptAsync($"globalThis.userAccount = '{account.Value}';");
            }
            if (password != null)
            {
                await IwaraWebView.CoreWebView2.ExecuteScriptAsync($"globalThis.userPassword = '******';");
            }
        }
        private async void Download_VideoFinishedDownloading(object sender, Video e)
        {
            SettingsLoader settingsLoader   = new SettingsLoader();
            var            videoPathSetting = await settingsLoader.GetSettingAsync(Setting.VIDEOPATH);

            e.FileCreated = File.GetCreationTime(e.FilePath);
            e.Artist.Videos.Add(e);

            ArtistLoader artistLoader = new ArtistLoader();
            await artistLoader.SetArtistAsync(e.Artist);

            _VideoProvider.NotifyNewVideo(e);
        }
        private async Task <Setting> GetVideoPathSettings()
        {
            SettingsLoader settingsLoader   = new SettingsLoader();
            var            videoPathSetting = await settingsLoader.GetSettingAsync(Setting.VIDEOPATH);

            if (videoPathSetting == null)
            {
                var msgBox = System.Windows.MessageBox.Show("First time starting Iwara Media Manager", "Please select a video folder.");

                videoPathSetting = await SetVideoPathDialogAsync();
            }

            return(videoPathSetting);
        }
예제 #7
0
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            this.ShutdownMode = ShutdownMode.OnExplicitShutdown;

            using (DataBaseContext dbContext = new DataBaseContext())
            {
                dbContext.Database.Migrate();
            }

            var    settingsLoader = new SettingsLoader();
            string savedTheme     = settingsLoader.GetSettingAsync(Setting.COLORTHEME).Result?.Value;

            if (savedTheme != null)
            {
                ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark;

                try
                {
                    var color = ColorTranslator.FromHtml(savedTheme);
                    ModernWpf.ThemeManager.Current.AccentColor = System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
                }
                catch { }
            }
            else
            {
                ModernWpf.ThemeManager.Current.ApplicationTheme = ModernWpf.ApplicationTheme.Dark;
                ModernWpf.ThemeManager.Current.AccentColor      = Colors.SteelBlue;
            }


            var serviceLocator = this.FindResource("ServiceLocator") as ServiceLocator;

            serviceLocator.Initialize();

            var mainWindow = new MainWindow();

            mainWindow.FontFamily = new System.Windows.Media.FontFamily("Segoe UI");
            mainWindow.Show();

            this.ShutdownMode = ShutdownMode.OnLastWindowClose;
        }
        private async void DownloadVideo(Video video)
        {
            if (video == null)
            {
                return;
            }

            AllowDownload = false;

            SettingsLoader settingsLoader   = new SettingsLoader();
            var            videoPathSetting = await settingsLoader.GetSettingAsync(Setting.VIDEOPATH);

            var chars = Path.GetInvalidFileNameChars();

            var artistName = video.Artist.Name;

            foreach (var c in chars)
            {
                artistName = artistName.Replace(c, '_');
            }

            video.Artist.FolderPath = Path.Combine(videoPathSetting.Value, artistName);

            var vidName = video.Name;

            foreach (var c in chars)
            {
                vidName = vidName.Replace(c, '_');
            }

            video.FilePath = Path.Combine(video.Artist.FolderPath, $"{vidName}.mp4");

            DownloadViewModel download = new DownloadViewModel();

            download.FinishedDownloading += Download_VideoFinishedDownloading;
            DownloadProvider.Downloads.Add(download);
            await download.StartDownload(video);
        }