Пример #1
0
        /// <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);
        }