private void BtnDeleteTitle_Click(object sender, EventArgs e) { if (m_currentTitle == null) { return; } if (MessageBox.Show("Do you want to delete " + m_currentTitle.TitleName + "?", "Confirm Title Removal", MessageBoxButtons.OKCancel) == DialogResult.OK) { try { if (m_images != null) { foreach (var img in m_images) { MediaSamplePersistence.RemoveSample(img); } } TitlePersistence.DeleteTitle(m_currentTitle.Id); TVTitles.RemoveObject(m_currentTitle); DisplayTitleInfo(null); } catch (Exception err) { MessageBox.Show(err.Message, "Error Deleting Title"); } } }
private void Set() { if (m_currentTitle == null) { return; } m_currentTitle.DateModifiedUtc = GeneralPersistense.GetTimestamp(); m_currentTitle.TitleName = TbxTitleName.Text; m_currentTitle.Kind = CbxKind.GetSelectedKey <TitleKind>(); m_currentTitle.Year = TbxReleaseYear.Text.To <int>(0); m_currentTitle.Description = TbxDescription.Text; m_currentTitle.ImdbId = TbxImdbId.Text; m_currentTitle.Season = TbxSeason.Text.To <int>(0); m_currentTitle.Disk = TbxDisk.Text.To <int>(0); m_currentTitle.EpisodeOrTrack = TbxEpisode.Text.To <int>(0); GeneralPersistense.Upsert(m_currentTitle); SetControlsFromDirtyState(false); //HACK: TVTitles.Sort doesn't work if (!m_currentTitle.ParentTitleId.HasValue) { var roots = new List <Title>(TVTitles.Roots.Cast <Title>()); roots.Sort(); TVTitles.Roots = roots; TVTitles.EnsureModelVisible(m_currentTitle); } }
private void Reload() { var kind = GetResourceKind(); TVTitles.ClearObjects(); CbxKind.Items.Clear(); BtnSave.Enabled = false; switch (kind) { case ResourceKind.Audio: TVTitles.Roots = new SortableTitles(TitlePersistence.ListRootAudio()); CbxKind.SetupComboBox <TitleKind>("Audio_"); break; case ResourceKind.Video: TVTitles.Roots = new SortableTitles(TitlePersistence.ListRootVideo()); CbxKind.SetupComboBox <TitleKind>("Video_"); break; } m_currentTitle = null; m_images = null; m_imageIndex = 0; SetImageNavigationControls(); PbxImage.Image = null; }
private void Refilter() { TVTitles.BeginUpdate(); var mf = TVTitles.ModelFilter; TVTitles.ModelFilter = null; TVTitles.ModelFilter = mf; TVTitles.EndUpdate(); }
private void BtnNew_Click(object sender, EventArgs e) { TitleKind kind; switch (GetResourceKind()) { case ResourceKind.Audio: kind = TitleKind.AlbumArtist; break; case ResourceKind.Video: kind = TitleKind.Title; break; default: return; } Title newTitle = null; foreach (Title item in TVTitles.Objects) { if (item.Id < 1) { //Unsaved new item already there newTitle = item; } } if (newTitle == null) { newTitle = new Title() { TitleName = "New", Kind = kind, DateAddedUtc = GeneralPersistense.GetTimestamp() }; TVTitles.AddObject(newTitle); } TVTitles.SelectedObject = newTitle; DisplayTitleInfo(newTitle); TVTitles.EnsureModelVisible(newTitle); TbxTitleName.Focus(); }
public MainForm() { InitializeComponent(); LVLocations.VirtualMode = false; LVRatings.VirtualMode = false; AppDomain.CurrentDomain.UnhandledException += (o, e) => { var ex = e.ExceptionObject as Exception; string msg = ex == null ? "Unhandled error" : ex.Message; MessageBox.Show(msg, "Application Error"); }; Application.ThreadException += (o, e) => { string msg = e.Exception == null ? "Unhandled error (thread)" : e.Exception.Message; MessageBox.Show(msg, "Application Error"); }; TVTitles.CanExpandGetter = (o) => { var t = o as Title; if (t == null) { return(false); } return(t.Kind != TitleKind.Episode && t.Kind != TitleKind.Track && t.Kind != TitleKind.Title); }; TVTitles.ChildrenGetter = (o) => { var t = o as Title; if (t == null) { return(null); } return(new SortableTitles(TitlePersistence.ListTitlesByParent(t.Id))); }; OlvColumnName.ImageGetter = (o) => { var t = o as Title; if (t == null) { return(-1); } return((int)t.Kind); }; OlvBtnPlay.AspectGetter = (o) => { var l = o as LocationForDisplay; if (l != null && l.LocationKind != LocationBaseKind.Shelf) { return("Play"); } return(null); }; var sink = (BrightIdeasSoftware.SimpleDropSink)TVTitles.DropSink; sink.AcceptExternal = false; sink.CanDropBetween = false; sink.CanDropOnBackground = false; sink.CanDropOnItem = true; sink.CanDropOnSubItem = true; sink.CanDrop += (sender, e) => { e.Handled = true; e.Effect = DragDropEffects.None; var models = GetModelsFromDropEvent(e); if (CanDrop(models.Item1, models.Item2)) { e.Effect = DragDropEffects.Move; } }; sink.Dropped += (sender, e) => { var models = GetModelsFromDropEvent(e); if (models.Item1 == null || models.Item2 == null) { return; } SetSeriesHierarchy(models.Item1, models.Item2); GeneralPersistense.Upsert(models.Item1); e.Effect = DragDropEffects.Move; TVTitles.RemoveObject(models.Item1); TVTitles.RefreshObject(models.Item2); }; TVTitles.ModelFilter = new ModelFilter((m) => { var t = m as Title; if (t == null) { return(false); } string filter = TbxSearch.Text.Trim().ToLower(); if (m_titleFilter.Count > 0) { if (m_titleFilter.Contains(t.Id)) { if (filter.Length == 0) { return(true); } return(t.TitleName.ToLower().Contains(filter)); } else { return(false); } } else { if (filter.Length == 0) { return(true); } return(t.TitleName.ToLower().Contains(filter)); } }); olvColumnRatingValue.AspectPutter = (object o, object val) => { var r = o as TitleRatingWithName; if (r != null) { r.RatingValue = Convert.ToSingle(val); } }; CbxDevices.Items.AddRange(DevicePersistense.ListForPalyback().ToArray()); if (CbxDevices.Items.Count > 0) { CbxDevices.SelectedIndex = 0; } m_imageIndex = 0; }