Download MovieFinder.Viewer/Views/ViewWindow.cs from niobures/VideoSearch: direct link, hf CLI and curl.
- Browser
- Download file 8.46 kB
-
https://huggingface.co/niobures/VideoSearch/resolve/main/MovieFinder.Viewer/Views/ViewWindow.cs
- Command line
-
hf download hf://niobures/VideoSearch/MovieFinder.Viewer/Views/ViewWindow.cs
-
curl -L -o ViewWindow.cs https://huggingface.co/niobures/VideoSearch/resolve/main/MovieFinder.Viewer/Views/ViewWindow.cs
8.46 kB
| using System; | |
| using System.Collections.Generic; | |
| using System.ComponentModel; | |
| using System.Drawing; | |
| using System.Data; | |
| using System.Text; | |
| using System.Windows.Forms; | |
| using System.Linq; | |
| using ComponentFactory.Krypton.Toolkit; | |
| using Client.Scraper; | |
| namespace BlueTube.Viewer | |
| { | |
| public partial class ViewWindow : UserControl, IScraperServiceCallback, IView | |
| { | |
| private int widthLeftRight; | |
| private ScrapedVideo currentRequestedVideo; | |
| private ScrapedPage lastPage; | |
| public ViewWindow() | |
| { | |
| InitializeComponent(); | |
| } | |
| private void buttonSpecHeaderGroupSearchResult_Click(object sender, EventArgs e) | |
| { | |
| // Suspend layout changes until all splitter properties have been updated | |
| kryptonSplitContainerMain.SuspendLayout(); | |
| // Is the left header group currently expanded? | |
| if (kryptonSplitContainerMain.FixedPanel == FixedPanel.None) | |
| { | |
| // Make the left panel of the splitter fixed in size | |
| kryptonSplitContainerMain.FixedPanel = FixedPanel.Panel1; | |
| kryptonSplitContainerMain.IsSplitterFixed = true; | |
| // Remember the current height of the header group | |
| widthLeftRight = headerGroupSearchResult.Width; | |
| // We have not changed the orientation of the header yet, so the width of | |
| // the splitter panel is going to be the height of the collapsed header group | |
| int newWidth = headerGroupSearchResult.PreferredSize.Height; | |
| // Make the header group fixed just as the new height | |
| kryptonSplitContainerMain.Panel1MinSize = newWidth; | |
| kryptonSplitContainerMain.SplitterDistance = newWidth; | |
| // Change header to be vertical and button to near edge | |
| headerGroupSearchResult.HeaderPositionPrimary = VisualOrientation.Right; | |
| headerGroupSearchResult.ButtonSpecs[0].Edge = PaletteRelativeEdgeAlign.Near; | |
| } | |
| else | |
| { | |
| // Make the bottom panel not-fixed in size anymore | |
| kryptonSplitContainerMain.FixedPanel = FixedPanel.None; | |
| kryptonSplitContainerMain.IsSplitterFixed = false; | |
| // Put back the minimise size to the original | |
| kryptonSplitContainerMain.Panel1MinSize = 100; | |
| // Calculate the correct splitter we want to put back | |
| kryptonSplitContainerMain.SplitterDistance = widthLeftRight; | |
| // Change header to be horizontal and button to far edge | |
| headerGroupSearchResult.HeaderPositionPrimary = VisualOrientation.Top; | |
| headerGroupSearchResult.ButtonSpecs[0].Edge = PaletteRelativeEdgeAlign.Far; | |
| } | |
| kryptonSplitContainerMain.ResumeLayout(); | |
| } | |
| private void buttonSpecHeaderGroupCollapse_Click(object sender, EventArgs e) | |
| { | |
| this.tableLayoutPanelRight.SuspendLayout(); | |
| kryptonHeaderGroup.Height = kryptonHeaderGroup.Height == kryptonHeaderGroup.PreferredSize.Height ? | |
| this.relatedVideoGalleryWidget.MinimumSize.Height + | |
| kryptonHeaderGroup.PreferredSize.Height | |
| : kryptonHeaderGroup.PreferredSize.Height; | |
| this.tableLayoutPanelRight.ResumeLayout(); | |
| } | |
| private void verticalSingleColumnGalleryWidget1_ItemSelected(object sender, GalleryItemSelectedEventArgs e) | |
| { | |
| LoadVideo(e.Video); | |
| } | |
| private void relatedVideoGalleryWidget_ItemSelected(object sender, GalleryItemSelectedEventArgs e) | |
| { | |
| LoadVideo(e.Video); | |
| } | |
| private void buttonSpecHeaderGroupMore_Click(object sender, EventArgs e) | |
| { | |
| var page = GetNextPage(); | |
| if (page!= null) | |
| { | |
| new ScraperService().ScrapVideosAsync(this, new SearchParameters { Url = page.Url }); | |
| } | |
| } | |
| private void videoPlayerWidget_ToggelFavourite(object sender, ToggleFavouriteEventArgs e) | |
| { | |
| this.verticalSingleColumnGalleryWidget1.RefreshView(); | |
| } | |
| private void videoPlayerWidget_PlayNext(object sender, PlayEventArgs e) | |
| { | |
| var next = this.verticalSingleColumnGalleryWidget1.GetNextVideo(e.Current); | |
| if (next != null) | |
| LoadVideo(next); | |
| } | |
| private void videoPlayerWidget_PlayPrevious(object sender, PlayEventArgs e) | |
| { | |
| var pevious = this.verticalSingleColumnGalleryWidget1.GetPreviousVideo(e.Current); | |
| if (pevious != null) | |
| LoadVideo(pevious); | |
| } | |
| public void LoadVideo(ScrapedVideo video) | |
| { | |
| if (this.currentRequestedVideo == video && !video.FullyLoaded) | |
| return; | |
| Program.SetBusy(); | |
| this.videoPlayerWidget.PlayStop(); | |
| this.currentRequestedVideo = video; | |
| if (video.FullyLoaded) | |
| OnScrapVideoDetailsCompleted(video); | |
| else | |
| new ScraperService().ScrapVideosDetailsAsync(video, this); | |
| } | |
| private PagingLink GetNextPage() | |
| { | |
| if (this.lastPage != null && this.lastPage.Links.Count > 0) | |
| { | |
| if (this.lastPage.Links.Count == 1 && !this.lastPage.Links[0].IsSelected) | |
| return this.lastPage.Links[0]; | |
| var index = this.lastPage.Links.IndexOf(this.lastPage.Links.FirstOrDefault(x => x.IsSelected)); | |
| if ( this.lastPage.Links.Count > index + 1) | |
| return this.lastPage.Links[index + 1]; | |
| } | |
| return null; | |
| } | |
| public void Initialize(ScrapedPage page) | |
| { | |
| LogManager.Log("Initializing view window"); | |
| this.lastPage = page; | |
| this.buttonSpecHeaderGroupMore.Visible = GetNextPage() != null; | |
| this.verticalSingleColumnGalleryWidget1.AddItems(page); | |
| } | |
| public void OnScrapVideoCompleted(ScrapedPage page) | |
| { | |
| Program.SetIdle(); | |
| this.InvokeEx(() => | |
| { | |
| Initialize(page); | |
| }); | |
| } | |
| public void OnScrapVideoDetailsCompleted(ScrapedVideo video) | |
| { | |
| this.InvokeEx(() => | |
| { | |
| if (this.currentRequestedVideo == video) | |
| { | |
| var played = this.videoPlayerWidget.PlayStart(video); | |
| if (played) | |
| { | |
| this.verticalSingleColumnGalleryWidget1.AddItem(video, true); | |
| this.relatedVideoGalleryWidget.ClearItems(); | |
| this.relatedVideoGalleryWidget.AddItems(new ScrapedPage { Videos = video.RelatedVideos }); | |
| } | |
| else | |
| { | |
| this.currentRequestedVideo = null; | |
| } | |
| } | |
| Program.SetIdle(); | |
| }); | |
| } | |
| public void OnScrapError(Exception ex) | |
| { | |
| Program.SetIdle(); | |
| KryptonMessageBox.Show("An error occurred: " + ex.Message, Constants.AppTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); | |
| } | |
| public void ActivateView() | |
| { | |
| this.videoPlayerWidget.ActivateView(); | |
| this.verticalSingleColumnGalleryWidget1.RefreshView(); | |
| this.BringToFront(); | |
| } | |
| public void DeactivateView() | |
| { | |
| this.videoPlayerWidget.DeactivateView(); | |
| } | |
| public void TriggerSearch(SearchParameters param) | |
| { | |
| Program.SetBusy(); | |
| this.verticalSingleColumnGalleryWidget1.ClearItems(); | |
| new ScraperService().ScrapVideosAsync(this, param); | |
| } | |
| } | |
| } | |