using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Text; using System.Windows.Forms; using MovieTube.Client.Scraper; using System.Linq; namespace MovieTube.Viewer { public partial class HorizontalSingleRowGalleryWidget : GalleryWidgetBase { private int startIndex, endIndex; #region Constructor public HorizontalSingleRowGalleryWidget() { InitializeComponent(); } #endregion #region Methods protected override void OnAddItems(MoviePage page) { this.startIndex = 0; this.endIndex = Math.Min(page.Videos.Count - 1,GetControlEndIndex()) ; AddSinglePage(); } protected override void OnAddItem(Movie movie, bool select) { var found = false; LogManager.Log("Adding items to Veritcal gallery"); foreach (Control c in this.flowLayoutPanel.Controls) { var widget = c as WebViewWidget; if (widget != null) { var link = widget.Video; if (link.ID == movie.ID) { widget.SelectView(); found = true; } else widget.DeselectView(); } } if (!found) { var m = this.currentPage.Videos.FirstOrDefault(x => x.ID == movie.ID); if (m != null) this.currentPage.Videos.Remove(m); this.currentPage.Videos.Insert(this.startIndex, movie); AddSinglePage(); if (select) ((WebViewWidget)this.flowLayoutPanel.Controls[0]).SelectView(); } } private WebViewWidget AddItem(Movie movie) { var widget = new WebViewWidget(movie, Properties.Resources.TestHtml.Replace("{0}", movie.Url) .Replace("{1}", String.IsNullOrEmpty(movie.ImageUrl) ? "no_image.gif" : movie.ImageUrl) .Replace("{2}", movie.Name) .Replace("{3}", movie.ReleaseDate.Year.ToString()) .Replace("{4}", movie.Description) .Replace("{5}", movie.LanguageText)); this.flowLayoutPanel.Controls.Add(widget); widget.ViewSelected += delegate(object sender, GalleryItemSelectedEventArgs e) { OnItemSelected(sender, e); }; widget.Favourited += delegate(object sender, GalleryItemFavouriteEventArgs e) { OnItemFavourited(sender, e); }; return widget; } private void AddSinglePage() { this.flowLayoutPanel.Controls.Clear(); for (var i = this.startIndex; i <= this.endIndex; i++) { AddItem(this.currentPage.Videos[i]); if (Constants.ShowAds && i % 4 == 0) { var ad = CreateAdWidget(Constants.HorizontalAdId); this.flowLayoutPanel.Controls.Add(ad); } } } private int GetControlEndIndex() { if (this.Size.Width < 351) return 0; var i = this.Size.Width / 350 ; if (this.Size.Width % 350 > 100) return i; return i - 1; } protected override Control WidgetContainer { get { return this.flowLayoutPanel; } } public void ShowNext() { this.startIndex = this.endIndex; this.endIndex = Math.Min(this.startIndex +GetControlEndIndex(), this.currentPage.Videos.Count - 1); AddSinglePage(); } public void ShowPrevious() { this.startIndex = Math.Max(this.startIndex - GetControlEndIndex(), 0); this.endIndex = Math.Min(this.startIndex + GetControlEndIndex(), this.currentPage.Videos.Count - 1); AddSinglePage(); } public bool IsEnd { get { return this.endIndex == this.currentPage.Videos.Count - 1; } } public bool IsBeginning { get { return this.startIndex == 0; } } #endregion private void HorizontalSingleRowGalleryWidget_Resize(object sender, EventArgs e) { if (this.currentPage != null) { this.endIndex = Math.Min(this.startIndex + GetControlEndIndex(), this.currentPage.Videos.Count - 1); AddSinglePage(); } } } }