private void setupControls() { txtFilter = new QTextBox(); txtFilter.EnableWatermark(this, Localization.Get(UI_Key.Filter_Search), String.Empty); fltPlaylist = new FilterButton(FilterType.Playlist); fltGenre = new FilterButton(FilterType.Genre); fltArtist = new FilterButton(FilterType.Artist); fltAlbum = new FilterButton(FilterType.Album); fltYear = new FilterButton(FilterType.Year); fltGrouping = new FilterButton(FilterType.Grouping); filterButtons = new Dictionary <FilterType, FilterButton>(); filterButtons.Add(fltPlaylist.FilterType, fltPlaylist); filterButtons.Add(fltGenre.FilterType, fltGenre); filterButtons.Add(fltArtist.FilterType, fltArtist); filterButtons.Add(fltAlbum.FilterType, fltAlbum); filterButtons.Add(fltYear.FilterType, fltYear); filterButtons.Add(fltGrouping.FilterType, fltGrouping); txtFilter.Bounds = new Rectangle(8, 5, 135, 12); clearTextFilterRectangle = new Rectangle(150, 0, 15, this.ClientRectangle.Height); fltPlaylist.Left = 175; fltPlaylist.FilterName = Localization.Get(UI_Key.Filter_Playlist); fltGenre.FilterName = Localization.Get(UI_Key.Filter_Genre); fltArtist.FilterName = Localization.Get(UI_Key.Filter_Artist); fltAlbum.FilterName = Localization.Get(UI_Key.Filter_Album); fltYear.FilterName = Localization.Get(UI_Key.Filter_Year); fltGrouping.FilterName = Localization.Get(UI_Key.Filter_Grouping); foreach (KeyValuePair <FilterType, FilterButton> kvp in filterButtons) { kvp.Value.SelectedEvent += filterSelected; kvp.Value.FilterValueChanged += filterChanged; kvp.Value.IndexSelected += showFilterIndex; kvp.Value.ClickedWithoutSelected += (s) => { RemoveFilterIndex(); }; kvp.Value.ReleaseFilter(); } txtFilter.Enter += (s, e) => { txtFilterFocus = true; controller.RequestAction(QActionType.KeyPreviewChange); }; txtFilter.Leave += (s, e) => { txtFilterFocus = false; controller.RequestAction(QActionType.KeyPreviewChange); }; txtFilter.TextChanged += new EventHandler(txtFilter_TextChanged); this.Controls.AddRange(new Control[] { txtFilter, fltPlaylist, fltGenre, fltArtist, fltAlbum, fltYear, fltGrouping }); }
public Radio() { this.Visible = false; this.DoubleBuffered = true; stationPanel = new StationPanel(); this.Panel2.Controls.Add(stationPanel); stationPanel.AllowDrop = true; instance = this; scrollBar = new QScrollBar(false); scrollBar.Width = SCROLL_BAR_WIDTH; scrollBar.UserScroll += new QScrollBar.ScrollDelegate(scroll); stationPanel.Controls.Add(scrollBar); txtURL = new QTextBoxFocusOnClick(); stationPanel.Controls.Add(txtURL); txtURL.EnableWatermark(stationPanel, Localization.Get(UI_Key.Radio_URL_Watermark), String.Empty); txtURL.MaxLength = 2048; txtURL.Enter += (s, e) => { keyPreviewChange(); }; txtURL.Leave += (s, e) => { keyPreviewChange(); }; txtURL.KeyPress += (s, e) => { switch (e.KeyChar) { case '\r': if (txtURL.Text.Length > 0) { go(btnGo); } e.Handled = true; break; } }; txtFilter = new QTextBox(); stationPanel.Controls.Add(txtFilter); txtFilter.EnableWatermark(stationPanel, Localization.Get(UI_Key.Radio_Filter_Watermark), String.Empty); txtFilter.Enter += (s, e) => { keyPreviewChange(); }; txtFilter.Leave += (s, e) => { keyPreviewChange(); }; txtFilter.TextChanged += (s, e) => { populateStations(); }; btnClear = new QButton("X", false, true); btnClear.ButtonPressed += new QButton.ButtonDelegate(clear); btnClear.BackColor = stationPanel.BackColor; stationPanel.Controls.Add(btnClear); btnGo = new QButton(Localization.Get(UI_Key.Radio_Add_And_Play), false, true); btnGo.ButtonPressed += new QButton.ButtonDelegate(go); btnGo.BackColor = stationPanel.BackColor; stationPanel.Controls.Add(btnGo); genrePanel = new RadioGenreSelectPanel(); genrePanel.Location = Point.Empty; genrePanel.HeaderText = Localization.Get(UI_Key.Radio_Genres); this.Panel1.Controls.Add(genrePanel); cells = new List <Cell>(); setupCells(); this.Panel1.Resize += (s, e) => { arrangeSelectPanel(); }; this.Panel2.Resize += (s, e) => { arrangeStationPanel(); }; stationPanel.MouseMove += new MouseEventHandler(stationPanelMouseMove); stationPanel.MouseDown += new MouseEventHandler(stationPanelMouseDown); stationPanel.MouseUp += new MouseEventHandler(stationPanelMouseUp); stationPanel.Paint += new PaintEventHandler(stationPanelPaint); stationPanel.MouseDoubleClick += new MouseEventHandler(stationPanelDoubleClick); stationPanel.MouseWheel += new MouseEventHandler(stationPanelMouseWheel); stationPanel.MouseEnter += (s, e) => { if (!txtURL.Focused && !txtFilter.Focused) { stationPanel.Focus(); } }; stationPanel.MouseLeave += (s, e) => { hoverCell = null; }; stationPanel.Resize += (s, e) => { setupCells(); }; stationPanel.GotFocus += (s, e) => { stationPanel.Active = true; keyPreviewChange(); }; stationPanel.LostFocus += (s, e) => { stationPanel.Active = false; }; stationPanel.DragEnter += (s, e) => { onDragEnter(e); }; stationPanel.DragDrop += (s, e) => { onDragDrop(e, true); }; txtURL.DragEnter += (s, e) => { onDragEnter(e); }; txtURL.DragDrop += (s, e) => { onDragDrop(e, false); }; txtURL.AllowDrop = true; txtURL.Watermark.DragEnter += (s, e) => { onDragEnter(e); }; txtURL.Watermark.DragDrop += (s, e) => { onDragDrop(e, false); }; txtURL.Watermark.AllowDrop = true; genrePanel.AllowDrop = true; genrePanel.SelectedIndexChanged += () => { populateStations(); }; genrePanel.ValueChanged += new QSelectPanel.ValueEditDelegate(selectPanel_ValueChanged); genrePanel.DragEnter += (s, e) => { onDragEnter(e); }; genrePanel.DragDrop += (s, e) => { onDragDropGenre(e); }; this.genrePanel.MouseEnter += (s, e) => { genrePanel.Focus(); }; this.genrePanel.GotFocus += (s, e) => { genrePanel.Active = true; }; this.genrePanel.LostFocus += (s, e) => { genrePanel.Active = false; }; this.genrePanel.DoubleClick += (s, e) => { genreDoubleClick(); }; int tabIndex = 0; txtFilter.TabIndex = tabIndex++; btnClear.TabIndex = tabIndex++; txtURL.TabIndex = tabIndex++; btnGo.TabIndex = tabIndex++; }
private void setupControl(IEditControl Control, string Caption, bool MakeCheckbox) { QLabel label = new QLabel(Caption, Styles.FontSmaller); this.Controls.Add(label); labels.Add(Control, label); label.ShowAccellerator(); if (MakeCheckbox) { QCheckBox cb = new QCheckBox(String.Empty, this.BackColor); cb.CheckedChanged += (s, e) => { updateColor(s, e); Dirty = true; }; this.Controls.Add(cb); checkboxes.Add(Control, cb); Control.ForeColor = Styles.Watermark; } this.Controls.Add(Control as Control); if (Control is QTextBox) { Control.TextChanged += textChanged; QTextBox tb = Control as QTextBox; tb.GotFocus += (s, e) => { Clock.DoOnMainThread(tb.SelectAll, 30); }; if (tb.Text == VARIES_TOKEN) { tb.EnableWatermark(this, MULTIPLE_VALUES, String.Empty); tb.Text = String.Empty; } editControls.Add(tb); } else if (Control is QComboBox) { QComboBox cb = Control as QComboBox; // need both, depends on editable vs. uneditable cb.TextChanged += textChanged; cb.SelectedIndexChanged += textChanged; if (cb.Text == VARIES_TOKEN) { cb.EnableWatermark(this, MULTIPLE_VALUES, String.Empty); cb.Text = String.Empty; } cb.DropDown += (s, e) => { if (isMultiple) { cb.ForeColor = Color.Black; } }; cb.DropDownClosed += (s, e) => { if (isMultiple) { updateColor(cb, checkboxes[cb]); } else { updateColor(cb, EventArgs.Empty); } }; editControls.Add(cb); } }