protected UIClick Click(UIClick ui)
        {
            String type = this.AsyncDialog("Click", g =>
            {
                UIRadioDialog di = new UIRadioDialog();
                di.Title         = ("关联功能");
                ListItemCollection listItemCollection = di.Options;//new ListItemCollection();
                listItemCollection.Add("连接扫一扫", "Scanning");
                listItemCollection.Add("连接指令", "Setting");
                listItemCollection.Add("连接拨号", "Tel");
                listItemCollection.Add("连接网址", "Url");

                return(di);
            });

            switch (type)
            {
            case "Scanning":
                return(UIClick.Scanning());

            case "Tel":
                return(UIClick.Tel(this.AsyncDialog("Tel", g =>
                {
                    UITextDialog di = new UITextDialog();
                    di.Title = ("拨号号码");
                    return di;
                })));

            case "Url":
                return(UIClick.Url(new Uri(this.AsyncDialog("Url", g =>
                {
                    UITextDialog di = new UITextDialog();
                    di.Title = ("网址地址");
                    return di;
                }))));


            default:
            case "Setting":

                var     c        = UMC.Data.JSON.Deserialize(UMC.Data.JSON.Serialize(ui)) as Hashtable;
                WebMeta settings = this.AsyncDialog(g =>
                {
                    UIFormDialog di = new UIFormDialog();
                    di.Title        = ("功能指令");
                    di.AddText("模块代码", "Model", (String)c["model"]);
                    di.AddText("指令代码", "Command", (String)c["cmd"]);
                    di.AddPrompt("此块内容为专业内容,请由工程师设置");

                    if (c.ContainsKey("send"))
                    {
                        Object send = c["send"];
                        if (send is String)
                        {
                            di.AddText("参数", "Send", (String)send).PlaceHolder("如果没参数,则用none");
                        }
                        else
                        {
                            di.AddText("参数", "Send", UMC.Data.JSON.Serialize(send)).PlaceHolder("如果没参数,则用none");
                        }
                    }
                    else
                    {
                        di.AddText("参数", "Send").PlaceHolder("如果没参数,则用none").NotRequired();
                    }

                    return(di);
                }, "Send");
                UIClick click   = new UIClick();
                String  Model   = settings.Get("Model");
                String  Command = settings.Get("Command");
                String  Send    = settings.Get("Send");
                click.Send(Model, Command);

                if ("none".Equals(Send, StringComparison.CurrentCultureIgnoreCase) == false)
                {
                    if (String.IsNullOrEmpty(Send) == false)
                    {
                        if (Send.StartsWith("{"))
                        {
                            click.Send(UMC.Data.JSON.Deserialize <WebMeta>(Send));
                        }
                        else
                        {
                            click.Send(Send);
                        }
                    }
                }
                return(click);
            }
        }
예제 #2
0
        public override void ProcessActivity(WebRequest request, WebResponse response)
        {
            var config = this.AsyncDialog("Key", g => this.DialogValue("none"));

            switch (config)
            {
            case "Version":
            case "Builder":
            case "json":
            case "Android":
            case "IOS":
                break;

            default:
                if (request.IsMaster == false)
                {
                    this.Prompt("只有管理员才能设置App");
                }
                break;
            }
            var file = Reflection.ConfigPath("App.json");

            if (System.IO.File.Exists(file) == false)
            {
                using (System.IO.Stream stream = new System.Net.Http.HttpClient().GetStreamAsync("http://oss.365lu.cn/UserResources/demo.json").Result)
                {
                    UMC.Data.Utility.Copy(stream, file);
                }
            }
            var appConfig = Data.JSON.Deserialize(Utility.Reader(file)) as Hashtable;

            switch (config)
            {
            case "Version":
            {
                int vindex = request.UserAgent.IndexOf("android");
                if (vindex > 0)
                {
                    var v    = request.UserAgent.Substring(request.UserAgent.IndexOf("V", vindex) + 1);
                    var cfgs = UMC.Configuration.ProviderConfiguration.GetProvider(Reflection.ConfigPath("Version.xml"));
                    if (cfgs == null)
                    {
                        this.Prompt("提示", "当前已经是最新版本");
                    }

                    var provider = cfgs[config];
                    if (provider != null)
                    {
                        if (Data.Utility.IntParse(provider["versionCode"], 0) > UMC.Data.Utility.IntParse(v, 0))
                        {
                            this.AsyncDialog("Confirm", g =>
                                {
                                    return(new UMC.Web.UIConfirmDialog("您有新版本,点击确认安装")
                                    {
                                        Title = "新版本安装"
                                    });
                                });
                            var meta = new UMC.Web.WebMeta();
                            meta.Put("name", provider.Name);
                            meta.Put("text", provider["text"]);
                            meta.Put("title", provider["title"]);
                            meta.Put("src", provider["src"]).Put("type", "Download");
                            this.Context.Send(meta, true);
                        }
                        else
                        {
                            this.Prompt("提示", "当前已经是最新版本");
                        }
                    }
                    else
                    {
                        this.Prompt("提示", "当前已经是最新版本");
                    }
                }
                else
                {
                    this.Prompt("苹果版本自动更新");
                }
            }
            break;

            case "Builder":
                if (String.IsNullOrEmpty(appConfig["AppName"] as string))
                {
                    this.Prompt("应用名称不能为空");
                }
                if (String.IsNullOrEmpty(appConfig["IconSrc"] as string))
                {
                    this.Prompt("请上传图标");
                }
                if (String.IsNullOrEmpty(appConfig["BgSrc"] as string))
                {
                    this.Prompt("请上传启动图");
                }
                var dataKey = new Hashtable();
                dataKey["root"]      = Utility.GetRoot(request.Url);
                dataKey["host"]      = new Uri(request.Url, "/").AbsoluteUri.Trim('/');
                appConfig["DataKey"] = dataKey;
                response.Redirect(appConfig);
                break;

            case "json":
                appConfig["IsMaster"] = request.IsMaster;
                response.Redirect(appConfig);
                break;

            case "Reset":
            {
                var ResetName = this.AsyncDialog("Reset", g =>
                    {
                        var k = new UISelectDialog()
                        {
                            Title = "选择参考的默认的界面架构"
                        };
                        k.Options.Add("DOME架构", "demo");
                        return(k);
                    });
                String stream = new System.Net.Http.HttpClient().GetStringAsync(String.Format("http://oss.365lu.cn/UserResources/{0}.json", ResetName)).Result;

                var appConfig2 = Data.JSON.Deserialize(stream) as Hashtable;
                appConfig2["BgSrc"]   = appConfig["BgSrc"];
                appConfig2["IconSrc"] = appConfig["IconSrc"];
                appConfig2["AppName"] = appConfig["AppName"];
                appConfig2["Android"] = appConfig["Android"];
                appConfig2["IOS"]     = appConfig["IOS"];
                appConfig             = appConfig2;
            }
            break;

            case "News":
            {
                var key = this.AsyncDialog("Sheet", g =>
                    {
                        var k = new UIFormDialog()
                        {
                            Title = "新增Bar"
                        };
                        k.AddText("标题", "text", String.Empty);
                        k.AddOption("图标", "icon").Command("System", "Icon");
                        k.AddCheckBox("", "max", "no").Put("显示大按钮", "true");
                        k.AddRadio("Bar加载类型", "Type")
                        .Put("默认主页", "Home").Put("电商购物篮", "Cart").Put("电商品类页", "Category").Put("Tabs", "Tab配置页").Put("点击项", "Click")
                        .Put("基本页", "Pager");
                        k.Submit("确认提交", request, "AppConfig");
                        return(k);
                    });
                var footbar = new ArrayList(appConfig["footBar"] as Array);
                var data    = new WebMeta().Put("key", key["Type"]).Put("text", key["text"]).Put("icon", key["icon"]);
                if ((key["max"] ?? "").Contains("true"))
                {
                    data.Put("max", true);
                }
                footbar.Add(data);
                appConfig["footBar"] = footbar;
            }
            break;

            case "Android":
            case "IOS":
                appConfig[config] = this.AsyncDialog("Value", g =>
                {
                    var k = new UITextDialog()
                    {
                        Title = config + "下载地址", DefaultValue = appConfig[config] as string
                    };
                    return(k);
                });
                break;

            case "BgSrc":
            case "IconSrc":
            {
                var AppName = this.AsyncDialog("Value", g =>
                    {
                        var k = new UITextDialog()
                        {
                            Title = "值"
                        };
                        return(k);
                    });
                var Key  = String.Format("UserResources/{0}/{1}/{2}", Utility.GetRoot(request.Url), config, AppName.Substring(AppName.LastIndexOf('/') + 1));
                var webR = UMC.Data.WebResource.Instance();
                webR.Transfer(new Uri(AppName), Key);
                appConfig[config] = new Uri(request.Url, webR.WebDomain() + Key).AbsoluteUri;
            }
            break;

            case "AppName":
            {
                var AppName = this.AsyncDialog("AppName", g =>
                    {
                        var k = new UITextDialog()
                        {
                            Title        = "应用名称",
                            DefaultValue = appConfig["AppName"] as string
                        };
                        return(k);
                    });
                appConfig["AppName"] = AppName;
            }
            break;

            case "Del":
            {
                var footbar = new ArrayList(appConfig["footBar"] as Array);

                var index = Utility.IntParse(this.AsyncDialog("Index", "0"), -1);
                footbar.RemoveAt(index);
                appConfig["footBar"] = footbar;
            }
            break;

            default:
            {
                var footbar = new ArrayList(appConfig["footBar"] as Array);
                var index   = Utility.IntParse(this.AsyncDialog("Index", "0"), -1);

                var hash     = footbar[index] as Hashtable;
                var settings = this.AsyncDialog("Settings", g =>
                    {
                        var fm   = new UIFormDialog();
                        fm.Title = "图标";
                        fm.AddText("标题", "text", hash["text"] as string);
                        fm.AddOption("图标", "icon", hash["icon"] as string, hash["icon"] as string).Command("System", "Icon");
                        switch (config)
                        {
                        case "Setting":
                            switch (hash["key"] as string ?? "Click")
                            {
                            case "Home":
                            case "Category":
                                break;

                            case "Cart":
                                fm.AddCheckBox("", "max", "no").Put("显示大按钮", "true", hash.ContainsKey("max"));
                                break;

                            case "Click":
                                fm.AddCheckBox("", "max", "no").Put("显示大按钮", "true", hash.ContainsKey("max"));
                                var click = (hash["click"] as Hashtable) ?? new Hashtable();
                                fm.AddText("事件模块", "model", click["model"] as string);
                                fm.AddText("事件指令", "cmd", click["cmd"] as string);
                                fm.AddText("事件参数", "send", click["send"] as string).NotRequired();
                                break;

                            case "Tabs":
                                fm.AddText("数据源模块", "model", hash["model"] as string);
                                fm.AddText("数据源指令", "cmd", hash["cmd"] as string);
                                break;

                            case "Pager":
                                fm.AddText("加载模块", "model", hash["model"] as string);
                                fm.AddText("加载指令", "cmd", hash["cmd"] as string);
                                break;

                            default:
                                this.Prompt("固定页面,不支持设置");;
                                break;
                            }
                            break;
                        }
                        return(fm);
                    });

                hash["text"] = settings["text"];
                hash["icon"] = settings["icon"];
                if ((settings["max"] ?? "").Contains("true"))
                {
                    hash["max"] = true;
                }
                else
                {
                    hash.Remove("max");
                }
                switch (hash["key"] as string)
                {
                case "Click":
                    var click = new WebMeta().Put("model", settings["model"])
                                .Put("cmd", settings["cmd"]);
                    if (String.IsNullOrEmpty(settings["model"]) == false)
                    {
                        click.Put("send", settings["send"]);
                    }
                    hash["click"] = click;
                    break;

                case "Cart":
                    break;

                case "Tabs":
                    hash["model"] = settings["model"];
                    hash["cmd"]   = settings["cmd"];
                    break;

                case "Pager":
                    hash["model"] = settings["model"];
                    hash["cmd"]   = settings["cmd"];
                    break;
                }
            }
            break;
            }

            Utility.Writer(file, Data.JSON.Serialize(appConfig), false);
            this.Context.Send("AppConfig", new WebMeta().Put("Config", appConfig), true);
        }