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); }
public void HandleNavigate(ScriptObject state) { if (Navigate != null) { var historyState = state.ConvertTo <TState>(); var eventArg = new HistoryEventArgs <TState> { State = historyState }; Navigate(this, eventArg); } }
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); }
public void ProcessPhotosCallback(ScriptObject json) { OnPhotoCollectionCompleted(new PhotoCollectionEventArgs(json.ConvertTo<PhotoCollection>())); }
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; } }