/[xmltv_parser]/trunk/xmltv_parser/main.cs
ViewVC logotype

Diff of /trunk/xmltv_parser/main.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 131 by william, Wed Mar 13 15:16:59 2013 UTC revision 139 by william, Thu Mar 14 12:24:47 2013 UTC
# Line 200  namespace xmltv_parser Line 200  namespace xmltv_parser
200              catch (Exception ex) { gLog.Error.WriteLine(ex.ToString()); }              catch (Exception ex) { gLog.Error.WriteLine(ex.ToString()); }
201          }          }
202    
203            
204          void CreatControlsFromType(Type data_type)          void CreatControlsFromType(Type data_type)
205          {          {
206  #if USE_DYNAMIC_SORTING_FILTERING_CONTROLS  #if USE_DYNAMIC_SORTING_FILTERING_CONTROLS
# Line 244  namespace xmltv_parser Line 244  namespace xmltv_parser
244          {          {
245              gLog.Warn.WriteLine("No controls have been defined for: {0}", data_type.Name);              gLog.Warn.WriteLine("No controls have been defined for: {0}", data_type.Name);
246          }          }
247          #endregion              #endregion
248    
249    
250          #region Column Sorting Support          #region Column Sorting Support
# Line 257  namespace xmltv_parser Line 257  namespace xmltv_parser
257              dataGrid.DataSource = datasource;              dataGrid.DataSource = datasource;
258              ToggleDescedning();              ToggleDescedning();
259          }          }
260          private void btnSortChannelName_Click(object sender, EventArgs e)  
261            private void SortByColumn(Button button)
262          {          {
263                string column = (button.Tag as string);
264              object data = dataGrid.DataSource;              object data = dataGrid.DataSource;
265              XMLTV.CreateSorterFromDataSource(ref data, Descending, "channelname");              XMLTV.CreateSorterFromDataSource(ref data, Descending, column);
266              dataGrid.DataSource = data;              dataGrid.DataSource = data;
267              ToggleDescedning();              ToggleDescedning();
268          }          }
269    
270            private void btnSortChannelName_Click(object sender, EventArgs e)
271            {
272                Button button = (sender as Button);
273                SortByColumn(button);
274            }
275            private void btnSortChannelNumber_Click(object sender, EventArgs e)
276            {
277                Button button = (sender as Button);
278                SortByColumn(button);
279            }
280          private void btnSortStart_Click(object sender, EventArgs e)          private void btnSortStart_Click(object sender, EventArgs e)
281          {          {
282              object data = dataGrid.DataSource;              Button button = (sender as Button);
283              XMLTV.CreateSorterFromDataSource(ref data, Descending, "start");              SortByColumn(button);
             dataGrid.DataSource = data;  
             ToggleDescedning();  
284          }          }
285          private void btnSortStop_Click(object sender, EventArgs e)          private void btnSortStop_Click(object sender, EventArgs e)
286          {          {
287              object data = dataGrid.DataSource;              Button button = (sender as Button);
288              XMLTV.CreateSorterFromDataSource(ref data, Descending, "stop");              SortByColumn(button);
             dataGrid.DataSource = data;  
             ToggleDescedning();  
289          }          }
290          private void btnSortTitle_Click(object sender, EventArgs e)          private void btnSortTitle_Click(object sender, EventArgs e)
291          {          {
292              object data = dataGrid.DataSource;              Button button = (sender as Button);
293              XMLTV.CreateSorterFromDataSource(ref data, Descending, "title");              SortByColumn(button);
             dataGrid.DataSource = data;  
             ToggleDescedning();  
294          }          }
295          private void btnSortSubTitle_Click(object sender, EventArgs e)          private void btnSortSubTitle_Click(object sender, EventArgs e)
296          {          {
297              object data = dataGrid.DataSource;              Button button = (sender as Button);
298              XMLTV.CreateSorterFromDataSource(ref data, Descending, "subtitle");              SortByColumn(button);
             dataGrid.DataSource = data;  
             ToggleDescedning();  
299          }          }
300          private void btnSortDescription_Click(object sender, EventArgs e)          private void btnSortDescription_Click(object sender, EventArgs e)
301          {          {
302              object data = dataGrid.DataSource;              Button button = (sender as Button);
303              XMLTV.CreateSorterFromDataSource(ref data, Descending, "description");              SortByColumn(button);
             dataGrid.DataSource = data;  
             ToggleDescedning();  
304          }          }
305          #endregion          #endregion
306            private void FilterByColumn(RadioButton button)
307            {
308                Type data_type;
309                string column = (button.Tag as string);
310                object data = XMLTV.CreateBindingSourceFromData(XMLTV.GetPrograms(), out data_type);
311                XMLTV.CreateFilterFromDataSource(ref data, column, txtFilterText.Text);
312                dataGrid.DataSource = data;
313            }
314            private void btnFilter_Click(object sender, EventArgs e)
315            {
316                RadioButton button = GetSelectedFilteringControl();
317                FilterByColumn(button);                  
318            }
319    
320            private void dataGrid_SelectionChanged(object sender, EventArgs e)
321            {
322                try
323                {
324                    DataGridView dgv = (DataGridView)sender;
325                    //var row = dgv.SelectedRows[0]; // the row that was selected
326                    //var cell = dgv.SelectedCells[0];
327                    DataGridViewRow row = null;
328                    string data = string.Empty;
329                    if (dgv.SelectedCells.Count > 0) { var cell = dgv.SelectedCells[0]; row = dgv.Rows[cell.RowIndex]; }
330                    if (dgv.SelectedRows.Count > 0) { row = dgv.SelectedRows[0]; }
331                    RadioButton button = GetSelectedFilteringControl();
332                    data = row.Cells[GetColumnIndexForRadioButton(button)].Value.ToString();
333                    txtFilterText.Text = data;
334                }
335                catch (Exception ex)
336                {
337                    gLog.Verbose.Error.WriteLine(ex.ToString());
338                }
339            }
340    
341            private RadioButton GetSelectedFilteringControl()
342            {
343                bool control_selected = false;
344                RadioButton button = new RadioButton();
345                foreach(var c in grpFilter_flow.Controls)
346                {
347                    button = (c as RadioButton);
348                    if (button != null) { if (button.Checked) { control_selected = true; break; } }
349                    else { continue; }
350                }
351                if (!control_selected)
352                {
353                    gLog.Warn.WriteLine("Unkown filter value used.  Was not: channelname, title, subtitle, or description.");
354                    throw new InvalidOperationException("No filtering control is currently selected.");
355                }
356                else { return button; }
357            }
358            private int GetColumnIndexForRadioButton(RadioButton radio) { return GetColumnIndex(radio.Tag as string); }
359            private int GetColumnIndex(string columnname)
360            {
361                int index =0;
362                Type t = typeof(IProgramDefinition);
363    
364                var props = t.GetProperties();
365                foreach (var prop in props)
366                {
367                    if (prop.Name.ToLower() == columnname.ToLower()) { break; }
368                    index++;
369                }
370                return index;
371            }
372    
373            private void UpdateFilterText(RadioButton radio, DataGridView dgv)
374            {            
375                if (radio.Checked)
376                {
377                    int cellindex = GetColumnIndexForRadioButton(radio);
378                    string t = radio.Tag as string;
379                    DataGridViewRow row = null;
380                    string data = string.Empty;
381                    if (dgv.SelectedCells.Count > 0)
382                    {
383                        var cell = dgv.SelectedCells[0];
384                        row = dgv.Rows[cell.RowIndex];
385                    }
386                    if (dgv.SelectedRows.Count > 0)
387                    {
388                        row = dgv.SelectedRows[0];
389                    }
390                    data = row.Cells[cellindex].Value.ToString();
391                    txtFilterText.Text = data;
392                }
393            }
394            private void radio_filter_channelnumber_CheckedChanged(object sender, EventArgs e)
395            {
396                RadioButton radio = (sender as RadioButton);
397                UpdateFilterText(radio, dataGrid);
398            }
399            private void radio_filter_title_CheckedChanged(object sender, EventArgs e)
400            {
401                RadioButton radio = (sender as RadioButton);
402                UpdateFilterText(radio, dataGrid);
403            }
404    
405            private void radio_filter_subtitle_CheckedChanged(object sender, EventArgs e)
406            {
407                RadioButton radio = (sender as RadioButton);
408                UpdateFilterText(radio, dataGrid);
409            }
410    
411            private void radio_filter_description_CheckedChanged(object sender, EventArgs e)
412            {
413                RadioButton radio = (sender as RadioButton);
414                UpdateFilterText(radio, dataGrid);
415            }
416    
417            private void radio_filter_channelname_CheckedChanged(object sender, EventArgs e)
418            {
419                RadioButton radio = (sender as RadioButton);
420                UpdateFilterText(radio, dataGrid);
421            }
422    
423          
424    
425          
426                
427      }      }
428  }  }

Legend:
Removed from v.131  
changed lines
  Added in v.139

  ViewVC Help
Powered by ViewVC 1.1.22