Exemplo n.º 1
0
        private void AddUwpModeItem()
        {
            XmlDocument doc = AppDic.ReadXml(AppConfig.WebUwpModeItemsDic,
                                             AppConfig.UserUwpModeItemsDic, Properties.Resources.UwpModeItemsDic);
            List <Guid> guids = new List <Guid>();

            foreach (XmlElement sceneXE in doc.DocumentElement.ChildNodes)
            {
                if (sceneXE.Name == Scene.ToString())
                {
                    foreach (XmlElement itemXE in sceneXE.ChildNodes)
                    {
                        if (GuidEx.TryParse(itemXE.GetAttribute("Guid"), out Guid guid))
                        {
                            if (guids.Contains(guid))
                            {
                                continue;
                            }
                            string uwpName = GuidInfo.GetUwpName(guid);
                            if (!string.IsNullOrEmpty(uwpName))
                            {
                                this.AddItem(new UwpModeItem(uwpName, guid));
                                guids.Add(guid);
                            }
                        }
                    }
                }
            }
        }
 public void LoadItems()
 {
     try
     {
         XmlDocument doc = AppDic.ReadXml(AppConfig.WebEnhanceMenusDic,
                                          AppConfig.UserEnhanceMenusDic, Properties.Resources.EnhanceMenusDic);
         foreach (XmlNode xn in doc.DocumentElement.ChildNodes)
         {
             GroupPathItem groupItem = GetGroupPathItem(xn);
             if (groupItem == null)
             {
                 continue;
             }
             this.AddItem(groupItem);
             XmlElement shellXE   = (XmlElement)xn.SelectSingleNode("Shell");
             XmlElement shellExXE = (XmlElement)xn.SelectSingleNode("ShellEx");
             if (shellXE != null)
             {
                 LoadShellItems(shellXE, groupItem);
             }
             if (shellExXE != null)
             {
                 LoadShellExItems(shellExXE, groupItem);
             }
             groupItem.IsFold = true;
             groupItem.HideWhenNoSubItem();
         }
     }
     catch { }
 }
        public void LoadItems()
        {
            try
            {
                XmlDocument doc = AppDic.ReadXml(AppConfig.WebThirdRulesDic,
                                                 AppConfig.UserThirdRulesDic, Properties.Resources.ThirdRulesDic);
                foreach (XmlElement groupXE in doc.DocumentElement.ChildNodes)
                {
                    Guid guid = Guid.Empty;
                    if (groupXE.HasAttribute("Guid"))
                    {
                        if (GuidEx.TryParse(groupXE.GetAttribute("Guid"), out guid))
                        {
                            if (!File.Exists(GuidInfo.GetFilePath(guid)))
                            {
                                continue;
                            }
                        }
                        else
                        {
                            continue;
                        }
                    }

                    GroupPathItem       groupItem;
                    bool                isIniGroup = groupXE.HasAttribute("IsIniGroup");
                    string              attribute  = isIniGroup ? "FilePath" : "RegPath";
                    ObjectPath.PathType pathType   = isIniGroup ? ObjectPath.PathType.File : ObjectPath.PathType.Registry;
                    groupItem = new GroupPathItem(groupXE.GetAttribute(attribute), pathType)
                    {
                        Text  = groupXE.GetAttribute("Text"),
                        Image = GuidInfo.GetImage(guid)
                    };
                    if (groupItem.Text.IsNullOrWhiteSpace())
                    {
                        groupItem.Text = GuidInfo.GetText(guid);
                    }
                    this.AddItem(groupItem);

                    string GetRuleFullRegPath(string regPath)
                    {
                        if (string.IsNullOrEmpty(regPath))
                        {
                            regPath = groupItem.TargetPath;
                        }
                        else if (regPath.StartsWith("\\"))
                        {
                            regPath = groupItem.TargetPath + regPath;
                        }
                        return(regPath);
                    };

                    foreach (XmlElement itemXE in groupXE.ChildNodes)
                    {
                        if (!EnhanceMenusList.JudgeOSVersion(itemXE))
                        {
                            continue;
                        }
                        RuleItem ruleItem;
                        ItemInfo info = new ItemInfo
                        {
                            Text            = itemXE.GetAttribute("Text"),
                            Tip             = itemXE.GetAttribute("Tip"),
                            RestartExplorer = itemXE.HasAttribute("RestartExplorer"),
                        };
                        int defaultValue = 0, maxValue = 0, minValue = 0;
                        if (itemXE.HasAttribute("IsNumberItem"))
                        {
                            XmlElement ruleXE = (XmlElement)itemXE.SelectSingleNode("Rule");
                            defaultValue = ruleXE.HasAttribute("Default") ? Convert.ToInt32(ruleXE.GetAttribute("Default")) : 0;
                            maxValue     = ruleXE.HasAttribute("Max") ? Convert.ToInt32(ruleXE.GetAttribute("Max")) : int.MaxValue;
                            minValue     = ruleXE.HasAttribute("Min") ? Convert.ToInt32(ruleXE.GetAttribute("Min")) : int.MinValue;
                        }

                        if (isIniGroup)
                        {
                            XmlElement ruleXE  = (XmlElement)itemXE.SelectSingleNode("Rule");
                            string     iniPath = ruleXE.GetAttribute("FilePath");
                            if (iniPath.IsNullOrWhiteSpace())
                            {
                                iniPath = groupItem.TargetPath;
                            }
                            string section = ruleXE.GetAttribute("Section");
                            string keyName = ruleXE.GetAttribute("KeyName");
                            if (itemXE.HasAttribute("IsNumberItem"))
                            {
                                var rule = new NumberIniRuleItem.IniRule
                                {
                                    IniPath      = iniPath,
                                    Section      = section,
                                    KeyName      = keyName,
                                    DefaultValue = defaultValue,
                                    MaxValue     = maxValue,
                                    MinValue     = maxValue
                                };
                                ruleItem = new NumberIniRuleItem(rule, info);
                            }
                            else if (itemXE.HasAttribute("IsStringItem"))
                            {
                                var rule = new StringIniRuleItem.IniRule
                                {
                                    IniPath  = iniPath,
                                    Secation = section,
                                    KeyName  = keyName
                                };
                                ruleItem = new StringIniRuleItem(rule, info);
                            }
                            else
                            {
                                var rule = new VisbleIniRuleItem.IniRule
                                {
                                    IniPath      = iniPath,
                                    Section      = section,
                                    KeyName      = keyName,
                                    TurnOnValue  = ruleXE.HasAttribute("On") ? ruleXE.GetAttribute("On") : null,
                                    TurnOffValue = ruleXE.HasAttribute("Off") ? ruleXE.GetAttribute("Off") : null,
                                };
                                ruleItem = new VisbleIniRuleItem(rule, info);
                            }
                        }

                        else
                        {
                            if (itemXE.HasAttribute("IsNumberItem"))
                            {
                                XmlElement ruleXE = (XmlElement)itemXE.SelectSingleNode("Rule");
                                var        rule   = new NumberRegRuleItem.RegRule
                                {
                                    RegPath      = GetRuleFullRegPath(ruleXE.GetAttribute("RegPath")),
                                    ValueName    = ruleXE.GetAttribute("ValueName"),
                                    ValueKind    = GetValueKind(ruleXE.GetAttribute("ValueKind")),
                                    DefaultValue = defaultValue,
                                    MaxValue     = maxValue,
                                    MinValue     = minValue
                                };
                                ruleItem = new NumberRegRuleItem(rule, info);
                            }
                            else if (itemXE.HasAttribute("IsStringItem"))
                            {
                                XmlElement ruleXE = (XmlElement)itemXE.SelectSingleNode("Rule");
                                var        rule   = new StringRegRuleItem.RegRule
                                {
                                    RegPath   = GetRuleFullRegPath(ruleXE.GetAttribute("RegPath")),
                                    ValueName = ruleXE.GetAttribute("ValueName"),
                                };
                                ruleItem = new StringRegRuleItem(rule, info);
                            }
                            else
                            {
                                XmlNodeList ruleXNList = itemXE.SelectNodes("Rule");
                                var         rules      = new VisibleRegRuleItem.RegRule[ruleXNList.Count];
                                for (int i = 0; i < ruleXNList.Count; i++)
                                {
                                    XmlElement ruleXE = (XmlElement)ruleXNList[i];
                                    rules[i] = new VisibleRegRuleItem.RegRule
                                    {
                                        RegPath      = GetRuleFullRegPath(ruleXE.GetAttribute("RegPath")),
                                        ValueName    = ruleXE.GetAttribute("ValueName"),
                                        ValueKind    = GetValueKind(ruleXE.GetAttribute("ValueKind")),
                                        TurnOnValue  = ruleXE.HasAttribute("On") ? ruleXE.GetAttribute("On") : null,
                                        TurnOffValue = ruleXE.HasAttribute("Off") ? ruleXE.GetAttribute("Off") : null,
                                    };
                                }
                                ruleItem = new VisibleRegRuleItem(rules, info);
                            }
                        }
                        this.AddItem(ruleItem);
                        ruleItem.HasImage      = false;
                        ruleItem.FoldGroupItem = groupItem;
                    }
                    groupItem.IsFold = true;
                    groupItem.HideWhenNoSubItem();
                }
            }
            catch { }
        }