/// <summary> /// Build the column based on the type. /// </summary> /// <param name="type"></param> /// <param name="order"></param> public OrgItemColumn(OrgColumnType type, int order) { // Set properties this.Type = type; this.Order = order; // Build header from type Header = new ColumnHeader(); Header.Text = type.ToString().Replace('_', ' '); // Set width based on type switch (type) { case OrgColumnType.DateTime: Header.Width = 150; break; case OrgColumnType.Status: Header.Width = 75; break; case OrgColumnType.Show: Header.Width = 200; break; case OrgColumnType.Season: Header.Width = 50; break; case OrgColumnType.Episode: Header.Width = 50; break; case OrgColumnType.Movie: Header.Width = 200; break; case OrgColumnType.Source_Folder: Header.Width = 300; break; case OrgColumnType.Source_File: Header.Width = 250; break; case OrgColumnType.Category: Header.Width = 100; break; case OrgColumnType.Action: Header.Width = 100; break; case OrgColumnType.Destination_Folder: Header.Width = 300; break; case OrgColumnType.Destination_File: Header.Width = 250; break; case OrgColumnType.Progress: Header.Width = 75; break; case OrgColumnType.Number: Header.Width = 50; break; default: throw new Exception("Unknown column type"); } }
/// <summary> /// Sets up the columns of a listview for displaying OrgItem lists. /// </summary> /// <param name="setup">Setup type for selecting which column will be enabled</param> /// <param name="lv">The listview to setup columns for</param> /// <returns>Dictionary of column types and the column for that type that was set in the listview</returns> public static Dictionary <OrgColumnType, OrgItemColumn> SetOrgItemListColumns(OrgColumnSetup setup, ListView lv) { // Initialize columns dictionary Dictionary <OrgColumnType, OrgItemColumn> scanColumns = new Dictionary <OrgColumnType, OrgItemColumn>(); int columnOrder = 0; // Select which columns will be enabled based on setup OrgColumnType columnsToAdd = OrgColumnType.Source_Folder | OrgColumnType.Source_File | OrgColumnType.Action | OrgColumnType.Destination_Folder | OrgColumnType.Destination_File; if (setup == OrgColumnSetup.DirectoryScan || setup == OrgColumnSetup.MissingCheck) { columnsToAdd |= OrgColumnType.Category; } if (setup == OrgColumnSetup.MissingCheck) { columnsToAdd |= OrgColumnType.Status | OrgColumnType.Show | OrgColumnType.Season | OrgColumnType.Episode; } if (setup == OrgColumnSetup.Queue) { columnsToAdd |= OrgColumnType.Progress; } if (setup == OrgColumnSetup.Log) { columnsToAdd |= OrgColumnType.DateTime; } if (setup == OrgColumnSetup.RootFolderCheck) { columnsToAdd |= OrgColumnType.Movie; } // Add the enabled columns to the listview lv.Columns.Clear(); foreach (OrgColumnType type in Enum.GetValues(typeof(OrgColumnType))) { if ((type & columnsToAdd) > 0) { scanColumns.Add(type, new OrgItemColumn(type, columnOrder++)); lv.Columns.Add(scanColumns[type].Header); } } // Return columns dictionary return(scanColumns); }
/// <summary> /// Sorts a list of OrgItems based on a specific data (column) type. /// </summary> /// <param name="orgItems">List of items to be sorted</param> /// <param name="sortType">Column type to sort by</param> public static void Sort(List<OrgItem> orgItems, OrgColumnType sortType) { // Sort the Scan results (so that indices from that will still match listview after sort) switch (sortType) { case OrgColumnType.DateTime: orgItems.Sort(OrgItem.CompareByDateTime); break; case OrgColumnType.Show: orgItems.Sort(OrgItem.CompareByShowName); break; case OrgColumnType.Season: orgItems.Sort(OrgItem.CompareBySeasonNumber); break; case OrgColumnType.Episode: orgItems.Sort(OrgItem.CompareByEpisodeNumber); break; case OrgColumnType.Movie: orgItems.Sort(OrgItem.CompareByMovie); break; case OrgColumnType.Source_Folder: orgItems.Sort(OrgItem.CompareBySourceFolder); break; case OrgColumnType.Source_File: orgItems.Sort(OrgItem.CompareBySourceFile); break; case OrgColumnType.Category: orgItems.Sort(OrgItem.CompareByCategory); break; case OrgColumnType.Status: orgItems.Sort(OrgItem.CompareByStatus); break; case OrgColumnType.Action: orgItems.Sort(OrgItem.CompareByAction); break; case OrgColumnType.Destination_Folder: orgItems.Sort(OrgItem.CompareByDestinationFolder); break; case OrgColumnType.Destination_File: orgItems.Sort(OrgItem.CompareByDestinationFile); break; case OrgColumnType.Number: orgItems.Sort(OrgItem.CompareByNumber); break; default: throw new Exception("Unknown column type"); } }
/// <summary> /// Sorts a list of items based on a specific data (column) type. /// </summary> /// <param name="orgItems">List of items to be sorted</param> /// <param name="sortType">Column type to sort by</param> public static void Sort(List<OrgListItem> orgItems, OrgColumnType sortType, bool ascending) { OrgItem.AscendingSort = ascending; // Sort the Scan results (so that indices from that will still match listview after sort) switch (sortType) { case OrgColumnType.DateTime: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByDateTime(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Show: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByShowName(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Season: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareBySeasonNumber(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Episode: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByEpisodeNumber(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Movie: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByMovie(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Source_Folder: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareBySourceFolder(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Source_File: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareBySourceFile(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Category: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByCategory(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Status: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByStatus(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Action: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByAction(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Destination_Folder: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByDestinationFolder(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Destination_File: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByDestinationFile(p1.OrgItem, p2.OrgItem); } ); break; case OrgColumnType.Number: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return OrgItem.CompareByNumber(p1.OrgItem, p2.OrgItem); } ); break; default: throw new Exception("Unknown column type"); } }
/// <summary> /// Sorts a list of items based on a specific data (column) type. /// </summary> /// <param name="orgItems">List of items to be sorted</param> /// <param name="sortType">Column type to sort by</param> public static void Sort(List <OrgListItem> orgItems, OrgColumnType sortType, bool ascending) { OrgItem.AscendingSort = ascending; // Sort the Scan results (so that indices from that will still match listview after sort) switch (sortType) { case OrgColumnType.DateTime: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByDateTime(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Show: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByShowName(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Season: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareBySeasonNumber(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Episode: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByEpisodeNumber(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Movie: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByMovie(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Source_Folder: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareBySourceFolder(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Source_File: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareBySourceFile(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Category: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByCategory(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Status: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByStatus(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Action: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByAction(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Destination_Folder: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByDestinationFolder(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Destination_File: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByDestinationFile(p1.OrgItem, p2.OrgItem)); } ); break; case OrgColumnType.Number: orgItems.Sort( delegate(OrgListItem p1, OrgListItem p2) { return(OrgItem.CompareByNumber(p1.OrgItem, p2.OrgItem)); } ); break; default: throw new Exception("Unknown column type"); } }