/// <summary> /// Fills the database strip with the local database.xml file. /// </summary> private void FillDatabaseStrip(BackgroundWorker worker) { // Something needs to be done to remove this i guess //Control.CheckForIllegalCrossThreadCalls = false; // Set fake items visible and real ones not. Only way to stop buggy enabled stuff. SetPropertyThreadSafe(SystemMenuList, false, "Visible"); SetPropertyThreadSafe(IOSMenuList, false, "Visible"); SetPropertyThreadSafe(VCMenuList, false, "Visible"); SetPropertyThreadSafe(WiiWareMenuList, false, "Visible"); SetPropertyThreadSafe(systemFakeMenuItem, true, "Visible"); SetPropertyThreadSafe(iosFakeMenuItem, true, "Visible"); SetPropertyThreadSafe(vcFakeMenuItem, true, "Visible"); SetPropertyThreadSafe(wwFakeMenuItem, true, "Visible"); Database databaseObj = new Database(); databaseObj.LoadDatabaseToStream(Path.Combine(CURRENT_DIR, "database.xml")); ToolStripMenuItem[] systemItems = databaseObj.LoadSystemTitles(); for (int a = 0; a < systemItems.Length; a++) { systemItems[a].DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); for (int b = 0; b < systemItems[a].DropDownItems.Count; b++) { ToolStripMenuItem syslowerentry = (ToolStripMenuItem)systemItems[a].DropDownItems[b]; if (syslowerentry.DropDownItems.Count > 0) { syslowerentry.DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); } } //AddToolStripItemToStrip(SystemMenuList, systemItems[a]); //SystemMenuList.DropDownItems.Add(systemItems[a]); } Array.Sort(systemItems, delegate(ToolStripMenuItem tsmi1, ToolStripMenuItem tsmi2) { return tsmi1.Text .Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19)); }); AddToolStripItemToStrip(SystemMenuList, systemItems); SetPropertyThreadSafe(systemFakeMenuItem, false, "Visible"); SetPropertyThreadSafe(SystemMenuList, true, "Visible"); Debug.WriteLine("Database: SysTitles added"); worker.ReportProgress(25); ToolStripMenuItem[] iosItems = databaseObj.LoadIosTitles(); for (int a = 0; a < iosItems.Length; a++) { iosItems[a].DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); //AddToolStripItemToStrip(IOSMenuList, iosItems[a]); //IOSMenuList.DropDownItems.Add(iosItems[a]); } AddToolStripItemToStrip(IOSMenuList, iosItems); SetPropertyThreadSafe(iosFakeMenuItem, false, "Visible"); SetPropertyThreadSafe(IOSMenuList, true, "Visible"); Debug.WriteLine("Database: IosTitles added"); worker.ReportProgress(50); ToolStripMenuItem[][] vcItems = databaseObj.LoadVirtualConsoleTitles(); for (int a = 0; a < vcItems.Length; a++) { for (int b = 0; b < vcItems[a].Length; b++) { vcItems[a][b].DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); for (int c = 0; c < vcItems[a][b].DropDownItems.Count; c++) { ToolStripMenuItem lowerentry = (ToolStripMenuItem)vcItems[a][b].DropDownItems[c]; lowerentry.DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); } } Array.Sort(vcItems[a], delegate(ToolStripMenuItem tsmi1, ToolStripMenuItem tsmi2) { return tsmi1.Text .Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19)); }); AddToolStripItemToStrip((ToolStripMenuItem)VCMenuList.DropDownItems[a], vcItems[a]); } SetPropertyThreadSafe(vcFakeMenuItem, false, "Visible"); SetPropertyThreadSafe(VCMenuList, true, "Visible"); Debug.WriteLine("Database: VCTitles added"); worker.ReportProgress(75); ToolStripMenuItem[] wwItems = databaseObj.LoadWiiWareTitles(); for (int a = 0; a < wwItems.Length; a++) { wwItems[a].DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); for (int b = 0; b < wwItems[a].DropDownItems.Count; b++) { ToolStripMenuItem lowerentry = (ToolStripMenuItem)wwItems[a].DropDownItems[b]; if (lowerentry.DropDownItems.Count > 0) { lowerentry.DropDownItemClicked += new ToolStripItemClickedEventHandler(DatabaseItem_Clicked); } } //AddToolStripItemToStrip(WiiWareMenuList, wwItems[a]); //WiiWareMenuList.DropDownItems.Add(wwItems[a]); } Array.Sort(wwItems, delegate(ToolStripMenuItem tsmi1, ToolStripMenuItem tsmi2) { return tsmi1.Text .Substring(18, tsmi1.Text.Length - 19).CompareTo(tsmi2.Text.Substring(18, tsmi2.Text.Length - 19)); }); AddToolStripItemToStrip(WiiWareMenuList, wwItems); SetPropertyThreadSafe(wwFakeMenuItem, false, "Visible"); SetPropertyThreadSafe(WiiWareMenuList, true, "Visible"); Debug.WriteLine("Database: WiiWareTitles added"); worker.ReportProgress(100); }