コード例 #1
0
 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");
         }
     }
 }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
		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);
			}
		}
コード例 #4
0
        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();
        }
コード例 #5
0
		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();
		}
コード例 #6
0
ファイル: MainForm.cs プロジェクト: bossaia/alexandrialibrary
        /*
		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);
		}
コード例 #7
0
		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");
				}
			}
		}