public void DebugPage() { TraceHelper.AddMessage("Debug: constructor"); // render URL and status var serviceUrl = new EntryElement("URL", "URL to connect to", WebServiceHelper.BaseUrl); var service = new Section("Service") { serviceUrl, new StringElement("Store New Service URL", delegate { serviceUrl.FetchValue(); // validate that this is a good URL before storing it (a bad URL can hose the phone client) Uri uri = null; if (Uri.TryCreate(serviceUrl.Value, UriKind.RelativeOrAbsolute, out uri) && (uri.Scheme == "http" || uri.Scheme == "https")) WebServiceHelper.BaseUrl = serviceUrl.Value; else serviceUrl.Value = WebServiceHelper.BaseUrl; }), new StringElement("Connected", App.ViewModel.LastNetworkOperationStatus.ToString()), }; // render user queue var userQueue = new Section("User Queue"); userQueue.Add(new StringElement( "Clear Queue", delegate { RequestQueue.DeleteQueue(RequestQueue.UserQueue); userQueue.Clear (); })); List<RequestQueue.RequestRecord> requests = RequestQueue.GetAllRequestRecords(RequestQueue.UserQueue); if (requests != null) { foreach (var req in requests) { string typename; string reqtype; string id; string name; RequestQueue.RetrieveRequestInfo(req, out typename, out reqtype, out id, out name); var sse = new StyledStringElement(String.Format(" {0} {1} {2} (id {3})", reqtype, typename, name, id)) { Font = UIFont.FromName("Helvetica", UIFont.SmallSystemFontSize), }; userQueue.Add (sse); } } // render system queue var systemQueue = new Section("System Queue"); systemQueue.Add(new StringElement( "Clear Queue", delegate { RequestQueue.DeleteQueue(RequestQueue.SystemQueue); systemQueue.Clear (); })); requests = RequestQueue.GetAllRequestRecords(RequestQueue.SystemQueue); if (requests != null) { foreach (var req in requests) { string typename; string reqtype; string id; string name; RequestQueue.RetrieveRequestInfo(req, out typename, out reqtype, out id, out name); var sse = new StyledStringElement(String.Format(" {0} {1} {2} (id {3})", reqtype, typename, name, id)) { Font = UIFont.FromName("Helvetica", UIFont.SmallSystemFontSize), }; systemQueue.Add (sse); } } var traceMessages = new Section("Trace Messages"); traceMessages.Add(new StringElement( "Clear Trace", delegate { TraceHelper.ClearMessages(); traceMessages.Clear (); })); traceMessages.Add(new StringElement( "Send Trace", delegate { TraceHelper.SendMessages(App.ViewModel.User); })); foreach (var m in TraceHelper.GetMessages().Split('\n')) { // skip empty messages if (m == "") continue; // create a new (small) string element with a detail indicator which // brings up a message box with the entire message var sse = new StyledStringElement(m) { Accessory = UITableViewCellAccessory.DetailDisclosureButton, Font = UIFont.FromName("Helvetica", UIFont.SmallSystemFontSize), }; string msg = m; // make a copy for the closure below sse.AccessoryTapped += delegate { var alert = new UIAlertView ("Detail", msg, null, "Ok"); alert.Show (); }; traceMessages.Add(sse); }; var root = new RootElement("Debug") { service, userQueue, systemQueue, traceMessages, }; var dvc = new DialogViewController (root, true); dvc.TableView.BackgroundColor = UIColorHelper.FromString(App.ViewModel.Theme.PageBackground); this.PushViewController (dvc, true); //this.NavigationController.PushViewController (dvc, true); }