www.pudn.com > Fetion.rar > WebPageChannel.cs


namespace Imps.Client.Pc.Channel 
{ 
    using Imps.Client.Core; 
    using Imps.Client.Pc; 
    using Imps.Client.Pc.BizControls; 
    using Imps.Utils; 
    using System; 
    using System.Runtime.InteropServices; 
    using System.Text; 
    using System.Windows.Forms; 
 
    [ComVisible(true)] 
    public class WebPageChannel : IChannel 
    { 
        private IFrameworkWindow _host; 
        private string _initUrl; 
 
        public WebPageChannel(IFrameworkWindow host) 
        { 
            this._host = host; 
        } 
 
        private string GetArgsValue(string args) 
        { 
            if (string.IsNullOrEmpty(args)) 
            { 
                return string.Empty; 
            } 
            StringBuilder builder = new StringBuilder(); 
            User currentUser = this.FrameworkWnd.AccountManager.CurrentUser; 
            foreach (string str in args.Split(new char[] { ',' })) 
            { 
                if (builder.Length > 0) 
                { 
                    builder.Append('&'); 
                } 
                builder.Append(str); 
                if (str.IndexOf('=') < 0) 
                { 
                    builder.Append('='); 
                } 
                switch (str) 
                { 
                    case "c": 
                        builder.Append(currentUser.SsicUrlEncoded); 
                        break; 
 
                    case "gender": 
                        builder.Append(((int) currentUser.PersonalInfo.Gender.Value).ToString()); 
                        break; 
 
                    case "province": 
                        builder.Append(currentUser.PersonalInfo.Province.Value); 
                        break; 
 
                    case "city": 
                        builder.Append(currentUser.PersonalInfo.City.Value); 
                        break; 
 
                    case "avatarUrlBase": 
                        builder.Append(HttpWebRequestHelper.UrlEncode(currentUser.Configuration.SystemSetting.PortraitSetting.UriDownloadPortrait)); 
                        break; 
 
                    case "mobileNo": 
                        builder.Append(currentUser.PersonalInfo.MobileNo); 
                        break; 
 
                    case "sid": 
                        builder.Append(currentUser.Sid.ToString()); 
                        break; 
 
                    case "t": 
                        builder.Append(new Random().Next().ToString()); 
                        break; 
                } 
            } 
            return builder.ToString(); 
        } 
 
        public virtual bool Load(string strUri, string args) 
        { 
            try 
            { 
                this.InnerWebBrowser.ObjectForScripting = null; 
                string str = strUri; 
                if (string.IsNullOrEmpty(str)) 
                { 
                    str = "about:blank"; 
                } 
                else if (!string.IsNullOrEmpty(args)) 
                { 
                    str = str + ((str.IndexOf('?') < 0) ? ((string) '?') : ((string) '&')) + this.GetArgsValue(args); 
                } 
                ChannelManagerImp.ChannelWebBrowser.Navigate(str); 
            } 
            catch (Exception) 
            { 
                return false; 
            } 
            return true; 
        } 
 
        protected void NavigateToBlankPage() 
        { 
            this.InnerWebBrowser.Navigate("about:blank"); 
        } 
 
        public virtual void Reset() 
        { 
            if (!string.IsNullOrEmpty(this._initUrl)) 
            { 
                this.Load(this._initUrl, string.Empty); 
            } 
        } 
 
        public Control ChannelControl 
        { 
            get 
            { 
                return ChannelManagerImp.ChannelWebBrowser; 
            } 
        } 
 
        protected IFrameworkWindow FrameworkWnd 
        { 
            get 
            { 
                return this._host; 
            } 
        } 
 
        public string InitUrl 
        { 
            get 
            { 
                return this._initUrl; 
            } 
            set 
            { 
                this._initUrl = value; 
            } 
        } 
 
        protected Imps.Client.Pc.BizControls.WebBrowserContainer InnerWebBrowser 
        { 
            get 
            { 
                return ChannelManagerImp.ChannelWebBrowser; 
            } 
        } 
    } 
}