public void NavigateTo(string controlName, ScriptObject parameterList)
 {
     var paramList = parameterList.ConvertTo<List<object>>();
     var launcher = pageLaunchers[controlName];
     LayoutRoot.Children.Clear();
     var form = launcher(paramList);
     LayoutRoot.Children.Add(form);
 }
        public void NavigateTo(string controlName, ScriptObject parameterList)
        {
            var paramList = parameterList.ConvertTo <List <object> >();
            var launcher  = pageLaunchers[controlName];

            LayoutRoot.Children.Clear();
            var form = launcher(paramList);

            LayoutRoot.Children.Add(form);
        }
Beispiel #3
0
 public void HandleNavigate(ScriptObject state)
 {
     if (Navigate != null)
     {
         var historyState = state.ConvertTo <TState>();
         var eventArg     = new HistoryEventArgs <TState> {
             State = historyState
         };
         Navigate(this, eventArg);
     }
 }
Beispiel #4
0
        public static bool TryChangeType(object value, Type type, CultureInfo culture, out object ret)
        {
            ret = value;
            if (value == null)
            {
                return(true);
            }

            if (value.GetType() == type)
            {
                return(true);
            }

            ScriptObject so = value as ScriptObject;

            if (so != null)
            {
                if (value.GetType().Equals(typeof(ManagedObject)) || value.GetType().Equals(typeof(ScriptObject)))
                {
                    ret = so.ConvertTo(type, false);
                    return(true);
                }
                else if (type.IsAssignableFrom(value.GetType()))
                {
                    return(true);
                }
                return(false);
            }

            bool ismousebuttons = type.Equals(typeof(MouseButtons));

            if (ismousebuttons)
            {
                try {
                    int d = (int)Convert.ChangeType(value, typeof(int), culture);
                    switch (d)
                    {
                    case 0: ret = MouseButtons.Left; break;

                    case 1: ret = MouseButtons.Middle; break;

                    case 2: ret = MouseButtons.Right; break;

                    default:
                        return(false);
                    }
                    return(true);
                } catch {
                    return(false);
                }
            }

            if (type.IsAssignableFrom(value.GetType()))
            {
                return(true);
            }

            if (type.IsEnum)
            {
                try {
                    ret = Enum.Parse(type, value.ToString(), true);
                    return(true);
                } catch {
                    return(false);
                }
            }

            if (type == typeof(Guid) && value is string)
            {
                ret = new Guid((string)value);
                return(true);
            }

            if (type == typeof(ScriptObject))
            {
                ret = new ManagedObject(value);
                return(true);
            }

            try {
                ret = Convert.ChangeType(value, type, culture);
                return(true);
            }
            catch {
                switch (Type.GetTypeCode(type))
                {
                case TypeCode.Char:
                case TypeCode.Byte:
                case TypeCode.SByte:
                case TypeCode.Int16:
                case TypeCode.Int32:
                case TypeCode.Int64:
                case TypeCode.UInt16:
                case TypeCode.UInt32:
                case TypeCode.UInt64:
                case TypeCode.Single:
                case TypeCode.Double:
                    ret = Convert.ChangeType(0, type, culture);
                    return(true);

                case TypeCode.String:
                    ret = "";
                    return(true);

                case TypeCode.Boolean:
                    ret = false;
                    return(true);
                }
            }

            return(false);
        }
Beispiel #5
0
 public void ProcessPhotosCallback(ScriptObject json)
 {
     OnPhotoCollectionCompleted(new PhotoCollectionEventArgs(json.ConvertTo<PhotoCollection>()));
 }
Beispiel #6
0
        internal void readAsArrayBufferSync(ScriptObject scriptBlob)
        {
            Blob blob = scriptBlob.ConvertTo<Blob>();

            if (readyState == LOADING) {
                throw new OperationNotAllowedException();
            }
            try
            {
                ConstrainedStreamWrapper s = blob.GetStream();

                this.readyState = LOADING;
                if(this.onloadstart != null){
                    this.onloadstart(this,new ProgressEvent(0,s.Length));
                }

                byte[] buf = new byte[(int)s.Length];
                int bytesRead = 0;
                int offset = 0;
                s.Seek(0, SeekOrigin.Begin); //rewinding stream to read from the start
                while ((bytesRead = s.Read(buf, offset, 1024)) > 0)
                {
                    offset += bytesRead;
                    this.onprogress.FireAsync(this, new ProgressEvent(offset, s.Length));
                    //TODO: 6.4.5.2 violation! A .result should be populated with partial blob data while it's being read
                    //prolly methods, using this impl shoud subscribe to onprogress and modify result as we go
                }

                this.readyState = DONE;
                if (this.onloadend != null)
                {
                    this.onloadend.FireAsync(this, new ProgressEvent(offset, s.Length));
                }
                this.result = buf;
            }
            catch (Exception e) {
                this.readyState = DONE;
                this.result = null;
                switch (e.GetType().Name){
                    default:
                    case "IOException":
                        this.error = FileError.NOT_READABLE_ERR;
                    break;
                    case "FileNotFoundException":
                        this.error = FileError.NOT_FOUND_ERR;
                    break;
                    case "SecurityException":
                        this.error = FileError.SECURITY_ERR;
                    break;
                }
                if (this.onerror != null) {
                    this.onerror.FireAsync(this, null);
                }
                if (this.onloadend != null)
                {
                    this.onloadend.FireAsync(this, new ProgressEvent(0));
                }
                return;
            }
        }