Esempio n. 1
0
        public static async Task RunDIYToolCode(WebView webView, DIYTool tool)
        {
            if (!CheckJingyanDomain(webView))
            {
                App.currentMainPage.ShowNotify("自定义功能无效", strDomainNotSupported);
                return;
            }

            string desp = "";

            if (tool.IsClickTrig)
            {
                desp = "点击方式运行";
            }
            else
            {
                desp = "到达了指定页面触发运行";
            }

            App.currentMainPage.ShowNotify("运行 " + tool.Name, desp, Symbol.Comment);
            string errorable = ErrableUsingNotify(tool.Code);

            try
            {
                await RunJs(webView, errorable);
            }
            catch (Exception ee)
            {
                await Utility.ShowMessageDialog("运行出错", "代码有可能存在语法错误,运行不成功.");

                await Utility.ShowDetailedError("错误详细信息", ee);
            }
        }
        private async void listViewDIYTools_Tapped(object sender, TappedRoutedEventArgs e)
        {
            if (e.OriginalSource.GetType() == typeof(Button))
            {
                return;
            }

            DIYTool tool = (DIYTool)listViewDIYTools.SelectedItem;

            if (tool == null)
            {
                return;
            }


            if (tool.IsClickTrig)
            {
                await App.currentMainPage.RunDIYClickTool(tool);

                Tag = ContentDialogResult.None;
                Hide();
            }
            else
            {
                await App.currentMainPage.ToggleDIYNavigateTool(tool);

                listViewDIYTools.ItemsSource = null;
                listViewDIYTools.ItemsSource = StorageManager.dIYToolsSettings.DIYTools;
            }
        }
        public void Init(bool allClear = false)
        {
            //准备自带的功能
            var tempTools = new ObservableCollection <DIYTool>();

            DIYTool dt1 = new DIYTool(
                "开宝箱",
                "https://jingyan.baidu.com/usersign",
                "navigate",
                "先激活此工具,再打开签到日历页面,会一直开宝箱,直到所有宝箱都开启.",
                "var openb = document.getElementById('openBoxBtn'); if(openb) openb.click();");

            DIYTool dt21 = new DIYTool(
                "去往老虎机页面",
                "https://jingyan.baidu.com/user/nuc",
                "click",
                "先点击此工具,然后用 “开老虎机” 工具.",
                "window.external.notify(\"GOTO: https://jingyan.baidu.com/activity/lottery\");");

            DIYTool dt22 = new DIYTool(
                "开老虎机",
                "https://jingyan.baidu.com/user/nuc",
                "click",
                "先通过 “去往老虎机页面” 工具进入老虎机,再点击此工具.",
                "var zp = document.getElementsByClassName(\"zhuanpan\")[0];\nvar try10 = zp.getElementsByClassName(\"try10\")[0];\nfunction lwj(){\n  if(!try10.classList.contains(\"disable\")){\n     try10.click();\n     setTimeout(lwj, 1000);\n }\n}\nlwj();");

            DIYTool dt3 = new DIYTool(
                "查看未读消息-触发器",
                "https://jingyan.baidu.com/user/nuc",
                "click",
                "先激活 “查看未读消息” 功能,然后点击这个进入工作页面。",
                "window.external.notify('GOTO: https://jingyan.baidu.com/user/nucpage/message FROM: https://jingyan.baidu.com/user/nuc/');");

            DIYTool dt4 = new DIYTool(
                "查看未读消息",
                "https://jingyan.baidu.com/user/nucpage/message",
                "navigate",
                "先激活此功能,然后点击 查看未读消息-触发器",
                "var cks = document.getElementsByClassName('msg-more-btn'); var tcount = 200; for(let ck of cks) {setTimeout(function(){ck.click()}, tcount); tcount += 200;}");

            tempTools.Add(dt1);
            tempTools.Add(dt21);
            tempTools.Add(dt22);
            tempTools.Add(dt3);
            tempTools.Add(dt4);

            if (allClear)
            {
                DIYTools.Clear();
                foreach (var tool in tempTools)
                {
                    DIYTools.Add(tool);
                }
            }
            else
            {
                var midTools = new ObservableCollection <DIYTool>();
                foreach (var utool in DIYTools)
                {
                    bool isDefault = false;
                    foreach (var tool in tempTools)
                    {
                        if (tool.Name == utool.Name)
                        {
                            isDefault = true;
                        }
                    }
                    if (!isDefault)
                    {
                        midTools.Add(utool);
                    }
                }

                DIYTools.Clear();
                foreach (var tool in tempTools)
                {
                    DIYTools.Add(tool);
                }
                foreach (var tool in midTools)
                {
                    DIYTools.Add(tool);
                }
            }
        }
        private async void buttonSaveDIYEntry_Click(object sender, RoutedEventArgs e)
        {
            if (textBoxDIYEntryName.Text == "")
            {
                await Utility.ShowMessageDialog("内容不完整", "自定义功能名称不能为空。");

                return;
            }

            if (textBoxDIYEntryCode.Text == "")
            {
                await Utility.ShowMessageDialog("内容不完整", "代码不能为空。");

                return;
            }

            if (radioDIYEntryUrlTrig.IsChecked == true &&
                !(textBoxDIYEntryUrl.Text.StartsWith("https://")))
            {
                await Utility.ShowMessageDialog("内容不完整", "要使用到达页面触发的方式,必须填写https开头的页面地址.");

                return;
            }

            bool isFound = false;

            foreach (var tool in StorageManager.dIYToolsSettings.DIYTools)
            {
                if (tool.Name == textBoxDIYEntryName.Text)
                {
                    tool.TargetUrl = textBoxDIYEntryUrl.Text;
                    tool.Note      = textBoxDIYEntryNote.Text;
                    tool.Code      = textBoxDIYEntryCode.Text;
                    tool.TrigType  = radioDIYEntryClickTrig.IsChecked == true ? "click" : "navigate";
                    isFound        = true;
                    break;
                }
            }
            if (!isFound)
            {
                var tool = new DIYTool(
                    textBoxDIYEntryName.Text,
                    textBoxDIYEntryUrl.Text,
                    radioDIYEntryClickTrig.IsChecked == true ? "click" : "navigate",
                    textBoxDIYEntryNote.Text,
                    textBoxDIYEntryCode.Text);
                StorageManager.dIYToolsSettings.DIYTools.Add(tool);
            }
            bool isSucceed = await StorageManager.SaveDIYToolsSettings();

            if (!isSucceed)
            {
                await Utility.ShowMessageDialog("保存出错", "自定义工具未能保存到文件. 可联系开发者. [email protected]");
            }
            else
            {
                await Utility.ShowMessageDialog("保存成功", "自定义工具已保存.");

                listViewDIYTools.ItemsSource = null;
                listViewDIYTools.ItemsSource = StorageManager.dIYToolsSettings.DIYTools;
            }
        }