private void mediaItemSearchBox_SearchCompleted(object sender, MediaItemSearchEventArgs e) { if (e != null && e.Data != null) { if (e.Data.Count > 0) { if (e.Data.Count == 1 || e.AllowMultiple) { foreach (MediaItemData item in e.Data) { itemGrid.AddItem(item); } } else { MediaItemSearchResults results = new MediaItemSearchResults(); results.LoadData(e.Data); results.Instructions = "Multiple items were found that matched your search criteria. Please select which item(s) you want to add to the playlist and click OK."; results.SmallImageList = smallImageList; results.ChoiceAccepted += new EventHandler <MediaItemSearchEventArgs>(mediaItemSearchBox_SearchCompleted); results.Show(); } } else { MessageBox.Show("No items were found that matched your search criteria.\nYou may want to widen your search.", "NO MATCHING ITEMS FOUND"); } } }
private void searchButton_Click(object sender, EventArgs e) { string search = searchTextBox.Text; IList <MediaItemData> list = persistenceController.ListMediaItemData(search); if (SearchCompleted != null) { MediaItemSearchEventArgs searchArgs = new MediaItemSearchEventArgs(list); SearchCompleted(this, searchArgs); } }
private void searchButton_Click(object sender, EventArgs e) { string search = searchTextBox.Text; IList<MediaItemData> list = persistenceController.ListMediaItemData(search); if (SearchCompleted != null) { MediaItemSearchEventArgs searchArgs = new MediaItemSearchEventArgs(list); SearchCompleted(this, searchArgs); } }
private void okButton_Click(object sender, EventArgs e) { if (ChoiceAccepted != null) { if (grid.SelectedRows != null && grid.SelectedRows.Count > 0) { IList <MediaItemData> data = new List <MediaItemData>(); foreach (DataGridViewRow row in grid.SelectedRows) { MediaItemData item = grid.GetItem(row.Index); data.Add(item); } MediaItemSearchEventArgs searchArgs = new MediaItemSearchEventArgs(data, true); ChoiceAccepted(this, searchArgs); } } Close(); }
private void okButton_Click(object sender, EventArgs e) { if (ChoiceAccepted != null) { if (grid.SelectedRows != null && grid.SelectedRows.Count > 0) { IList<MediaItemData> data = new List<MediaItemData>(); foreach (DataGridViewRow row in grid.SelectedRows) { MediaItemData item = grid.GetItem(row.Index); data.Add(item); } MediaItemSearchEventArgs searchArgs = new MediaItemSearchEventArgs(data, true); ChoiceAccepted(this, searchArgs); } } Close(); }
/* private void DoUpdateOperator(string op) { bool addItem = false; ListViewItem item = null; if (filterListView.SelectedItems != null && filterListView.SelectedItems.Count > 0) { FilterInfo filterInfo = (FilterInfo)filterListView.SelectedItems[0].Tag; if (filterInfo.IsStandAloneOperator) { item = filterListView.SelectedItems[0]; } } if (item == null) { item = new ListViewItem(); addItem = true; } if (item != null) { item.Text = op; item.Tag = new FilterInfo(op); if (addItem) { filterListView.Items.Add(item); } } } private void DoAddFilter() { UpdateFilter addFilter = new UpdateFilter(this.filterSmallImageList, new FilterUpdateCallback(AddFilterItemCompleted)); addFilter.Show(); } private void DoEditFilter() { if (filterListView.SelectedItems != null && filterListView.SelectedItems.Count > 0) { FilterInfo filterInfo = (FilterInfo)filterListView.SelectedItems[0].Tag; UpdateFilter editFilter = new UpdateFilter(this.filterSmallImageList, new FilterUpdateCallback(EditFilterItemCompleted), filterInfo.Column, filterInfo.Operator, filterInfo.Value); editFilter.Show(); } } private void DoClearSelectedFilter() { if (filterListView.SelectedItems != null && filterListView.SelectedItems.Count > 0) { filterListView.SelectedItems[0].Remove(); } } private void DoClearAllFilters() { if (filterListView.Items.Count > 0) { filterListView.Items.Clear(); DoFilter(); } } private void DoFilter() { if (!filterInProgress) { try { filterInProgress = true; if (filterListView.Items.Count > 0) { Query query = new Query("MediaItem Search"); //StringBuilder filter = new StringBuilder(); bool negateNextFilter = false; bool andNextFilter = false; bool orNextFilter = false; for (int i = 0; i < filterListView.Items.Count; i++) { if (filterListView.Items[i].Tag != null) { FilterInfo filterInfo = (FilterInfo)filterListView.Items[i].Tag; if (filterInfo.IsStandAloneOperator) { switch (filterListView.Items[i].Text) { case Schema.FILTER_OP_NOT: negateNextFilter = true; break; case Schema.FILTER_OP_AND: andNextFilter = true; break; case Schema.FILTER_OP_OR: orNextFilter = true; break; default: break; } } else { if (filterInfo.Column != DEFAULT_COLUMN_FILTER) { if (negateNextFilter) { filterInfo = filterInfo.Negate(); negateNextFilter = false; } IExpression filter = null; if (orNextFilter) { filter = persistenceController.Schema.GetOrFilter<IMediaItem>(filterInfo.Column, filterInfo.Operator, filterInfo.FormattedValue); //filter.AppendFormat(" {0} ", FILTER_OP_OR); orNextFilter = false; } else if (andNextFilter) { filter = persistenceController.Schema.GetAndFilter<IMediaItem>(filterInfo.Column, filterInfo.Operator, filterInfo.FormattedValue); //filter.AppendFormat(" {0} ", FILTER_OP_AND); andNextFilter = false; } else { filter = persistenceController.Schema.GetFilter<IMediaItem>(filterInfo.Column, filterInfo.Operator, filterInfo.FormattedValue); } //filter.Append(filterInfo.ToString()); query.Filters.Add(filter); } else { //TODO: Add logic to handle abstract filters } } } } queueController.Filter(query); } else { queueController.LoadDefaultCatalog(); } DoSort(); } catch (Exception ex) { MessageBox.Show(string.Format("There was an error trying to apply this filter:\n{0}", ex.Message), "Filter Error"); } finally { filterInProgress = false; } } } private void filterButton_Click(object sender, EventArgs e) { DoFilter(); } private void andFilterButton_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_AND); } private void notFilterButton_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_NOT); } private void orFilterButton_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_OR); } private void filterContextMenuStrip_Opening(object sender, CancelEventArgs e) { bool hasItems = false; bool hasSelectedItems = false; bool hasOperatorSelected = false; if (filterListView.Items.Count > 0) { hasItems = true; if (filterListView.SelectedItems != null && filterListView.SelectedItems.Count > 0) { hasSelectedItems = true; FilterInfo filterInfo = (FilterInfo)filterListView.SelectedItems[0].Tag; hasOperatorSelected = filterInfo.IsStandAloneOperator; } } filterContextMenuItemClearAll.Enabled = hasItems; filterContextMenuItemEditFilter.Enabled = hasSelectedItems; filterContextMenuItemClearSelected.Enabled = hasSelectedItems; filterContextMenuItemUpdateOperator.Text = (hasOperatorSelected)? OP_TEXT_EDIT : OP_TEXT_ADD; } private void filterContextMenuItemAddFilter_Click(object sender, EventArgs e) { DoAddFilter(); } private void filterContextMenuItemEditFilter_Click(object sender, EventArgs e) { DoEditFilter(); } private ListViewItem GetFilterItem(string column, string op, string value) { ListViewItem item = new ListViewItem(); return GetFilterItem(column, op, value, item); } private ListViewItem GetFilterItem(string column, string op, string value, ListViewItem item) { Type columnType = queueDataGrid.Columns[column].ValueType; FilterDragDropData filterData = new FilterDragDropData(column, columnType, op, value); FilterInfo filterInfo = filterData.GetFilterInfo(); item.Text = filterInfo.GetDescription(); item.Tag = filterInfo; item.ImageIndex = filterData.ImageIndex; item.ToolTipText = filterInfo.ToString(); return item; } private void AddFilterItemCompleted(string column, string op, string value) { ListViewItem item = GetFilterItem(column, op, value); filterListView.Items.Add(item); DoFilter(); } private void EditFilterItemCompleted(string column, string op, string value) { if (filterListView.SelectedItems != null && filterListView.SelectedItems.Count > 0) { ListViewItem item = GetFilterItem(column, op, value, filterListView.SelectedItems[0]); DoFilter(); } } private void filterOperatorItemAnd_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_AND); } private void filterOperatorItemNot_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_NOT); } private void filterOperatorItemOr_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_OR); } private void addFilterButton_Click(object sender, EventArgs e) { DoAddFilter(); } private void editFilterButton_Click(object sender, EventArgs e) { DoEditFilter(); } private void clearFilterButton_Click(object sender, EventArgs e) { DoClearSelectedFilter(); } private void clearAllFiltersButton_Click(object sender, EventArgs e) { DoClearAllFilters(); } private void ParseFilterValue(string value) { bool filterIsValid = false; string column = DEFAULT_COLUMN_FILTER; string op = string.Empty; int opIndex = 0; int opLength = 1; for (int i = 0; i < Schema.FILTER_OPERATORS.Length; i++) { if (value.ToUpper().Contains(Schema.FILTER_OPERATORS[i].ToUpper())) { op = Schema.FILTER_OPERATORS[i]; opIndex = value.ToUpper().IndexOf(Schema.FILTER_OPERATORS[i].ToUpper()); opLength = Schema.FILTER_OPERATORS[i].Length; column = value.Substring(0, opIndex).Trim(); value = value.Substring(opIndex + opLength, value.Length - opIndex - opLength).Trim(); if (queueDataGrid.Columns.Contains(column)) { filterIsValid = true; filterContextMenuStrip.Close(); } else MessageBox.Show(string.Format("{0} is not a valid column", column), "Invalid Filter"); break; } } if (filterIsValid) { Type columnType = queueDataGrid.Columns[column].ValueType; FilterDragDropData filterData = new FilterDragDropData(column, columnType, op, value); FilterInfo filterInfo = filterData.GetFilterInfo(); ListViewItem item = new ListViewItem(filterInfo.GetDescription()); item.Tag = filterInfo; item.ImageIndex = filterData.ImageIndex; item.ToolTipText = filterInfo.ToString(); filterListView.Items.Add(item); DoFilter(); } } private void filterContextMenuItemClearSelected_Click(object sender, EventArgs e) { DoClearSelectedFilter(); } private void filterContextMenuItemClearAll_Click(object sender, EventArgs e) { DoClearAllFilters(); } private void filterToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { bool hasItems = false; bool hasSelectedItems = false; bool hasOperatorSelected = false; if (filterListView.Items.Count > 0) { hasItems = true; if (filterListView.SelectedItems != null && filterListView.SelectedItems.Count > 0) { hasSelectedItems = true; FilterInfo filterInfo = (FilterInfo)filterListView.SelectedItems[0].Tag; hasOperatorSelected = filterInfo.IsStandAloneOperator; } } clearAllFiltersToolStripMenuItem.Enabled = hasItems; editFilterToolStripMenuItem.Enabled = hasSelectedItems; clearFilterToolStripMenuItem.Enabled = hasSelectedItems; updateOperatorToolStripMenuItem.Text = (hasOperatorSelected) ? OP_TEXT_EDIT : OP_TEXT_ADD; } private void addFilterToolStripMenuItem_Click(object sender, EventArgs e) { DoAddFilter(); } private void editFilterToolStripMenuItem_Click(object sender, EventArgs e) { DoEditFilter(); } private void clearFilterToolStripMenuItem_Click(object sender, EventArgs e) { DoClearSelectedFilter(); } private void clearAllFiltersToolStripMenuItem_Click(object sender, EventArgs e) { DoClearAllFilters(); } private void andOperatorToolStripMenuItem_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_AND); } private void orOperatorToolStripMenuItem_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_OR); } private void notOperatorToolStripMenuItem_Click(object sender, EventArgs e) { DoUpdateOperator(Schema.FILTER_OP_NOT); } private void filterListView_KeyUp(object sender, KeyEventArgs e) { if (e != null) { switch (e.KeyCode) { case Keys.Delete: DoClearSelectedFilter(); break; default: break; } } } private void filterListView_ItemDrag(object sender, ItemDragEventArgs e) { ListViewItem item = e.Item as ListViewItem; if (item != null) { DoDragDrop(new FilterDragDropData(item), DragDropEffects.Move); } } private void filterListView_DragEnter(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(typeof(FilterDragDropData))) e.Effect = DragDropEffects.Move; else e.Effect = DragDropEffects.None; } private void filterListView_DragDrop(object sender, DragEventArgs e) { FilterDragDropData filterData = e.Data.GetData(typeof(FilterDragDropData)) as FilterDragDropData; if (filterData != null) { int index = 0; if (filterListView.Items.Count > 0) { Point dropPoint = filterListView.PointToClient(new Point(e.X, e.Y)); for (int i = 0; i < filterListView.Items.Count; i++) { Point itemPoint = filterListView.Items[i].Position; if (itemPoint.X + 15 < dropPoint.X) { index = filterListView.Items[i].Index + 1; } else break; } } FilterInfo filterInfo = new FilterInfo(filterData.Column, filterData.ColumnType, filterData.Operator, filterData.Value); ListViewItem item = null; if (filterInfo.IsStandAloneOperator) item = new ListViewItem(filterInfo.GetDescription()); else item = new ListViewItem(filterInfo.GetDescription(), filterData.ImageIndex); item.Tag = filterInfo; item.ToolTipText = filterInfo.ToString(); filterListView.Items.Insert(index, item); filterListView.Items[index].Selected = true; if (filterData.Item != null) { filterListView.Items.Remove(filterData.Item); } } } */ #endregion #region Search Methods private void OnMediaItemSearchCompleted(object sender, MediaItemSearchEventArgs e) { queueController.Clear(); queueController.LoadTracks(e.Data); }
private void mediaItemSearchBox_SearchCompleted(object sender, MediaItemSearchEventArgs e) { if (e != null && e.Data != null) { if (e.Data.Count > 0) { if (e.Data.Count == 1 || e.AllowMultiple) { foreach (MediaItemData item in e.Data) itemGrid.AddItem(item); } else { MediaItemSearchResults results = new MediaItemSearchResults(); results.LoadData(e.Data); results.Instructions = "Multiple items were found that matched your search criteria. Please select which item(s) you want to add to the playlist and click OK."; results.SmallImageList = smallImageList; results.ChoiceAccepted += new EventHandler<MediaItemSearchEventArgs>(mediaItemSearchBox_SearchCompleted); results.Show(); } } else { MessageBox.Show("No items were found that matched your search criteria.\nYou may want to widen your search.", "NO MATCHING ITEMS FOUND"); } } }