예제 #1
0
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate (bundle);

            #region color the titlebar
            View titleView = Window.FindViewById(Android.Resource.Id.Title);
            if (titleView != null) {
              IViewParent parent = titleView.Parent;
              if (parent != null && (parent is View)) {
                View parentView = (View)parent;
                parentView.SetBackgroundColor(Color.Rgb(0x26, 0x75 ,0xFF)); //38, 117 ,255
              }
            }
            #endregion

            // set our layout to be the details screen
            SetContentView(Resource.Layout.TaskDetails);

            int taskID = Intent.GetIntExtra("TaskID", -1);
            if (taskID >= 0)
                task = AzureWebService.GetTodo(taskID); // from Azure
            else
                task = new Task();

            nameTextEdit = FindViewById<EditText>(Resource.Id.txtName);
            //notesTextEdit = FindViewById<EditText>(Resource.Id.txtNotes);
            saveButton = FindViewById<Button>(Resource.Id.btnSave);
            doneCheckbox = FindViewById<CheckBox>(Resource.Id.chkDone);

            // find all our controls
            cancelDeleteButton = FindViewById<Button>(Resource.Id.btnCancelDelete);

            // set the cancel delete based on whether or not it's an existing task
            cancelDeleteButton.Text = (task.Id < 0 ? "Cancel" : "Delete");

            // name
            nameTextEdit.Text = task.Title;

            // notes
            //notesTextEdit.Text = task.Notes;

            doneCheckbox.Checked = task.IsDone;

            // button clicks
            cancelDeleteButton.Click += (sender, e) => { CancelDelete(); };
            saveButton.Click += (sender, e) => { Save(); };
        }
예제 #2
0
        /// <summary>
        /// DELETE /tables/TodoItem/{id}
        /// </summary>
        public static void DeleteTodo(Task t)
        {
            WebClient client = new WebClient();
            try {
                // make it synchronous
                client.Headers.Add (HttpRequestHeader.Accept, "application/json");
                client.Headers.Add (HttpRequestHeader.ContentType, "application/json");
                client.Headers.Add ("X-ZUMO-APPLICATION", MobileServiceAppId);

                var payload = t.ToJson ();
                var response = client.UploadString (String.Format (DeleteUrl,t.Id), "DELETE", payload); // DELETE
                // ...and wait...
                var responseString = response;

                //var responseJson = JsonValue.Parse (responseString); //HACK:
                Console.WriteLine ("Delete Json response => " + responseString);

            } catch (System.Net.WebException e) {
                Console.WriteLine ("X-ZUMO-APPLICATION add failed" + e.Message);
            }
        }
예제 #3
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad ();
            addButton = new UIBarButtonItem(UIBarButtonSystemItem.Add, (s,e) =>{
                var task = new Task() {Title="<new task>"};
                // Save to Azure
                var added = AzureWebService.AddTodo (task);
                tasks.Add (added);
                Reload (); // show the new task
            });
            NavigationItem.RightBarButtonItem = addButton;

            // UIBarButtonSystemItem.Refresh or http://barrow.io/posts/iphone-emoji/
            refreshButton = new UIBarButtonItem('\uE049'.ToString ()
            , UIBarButtonItemStyle.Plain
            , (s,e) => {
                tasks = AzureWebService.LoadTodos(Reload);
            });
            NavigationItem.LeftBarButtonItem = refreshButton;

            tasks = AzureWebService.LoadTodos(Reload);
        }
예제 #4
0
        /// <summary>
        /// POST /tables/TodoItem
        /// {"text":"new task text","complete":false}
        /// </summary>
        public static Task AddTodo(Task t)
        {
            WebClient client = new WebClient();
            try {
                // make it synchronous
                client.Headers.Add (HttpRequestHeader.Accept, "application/json");
                client.Headers.Add (HttpRequestHeader.ContentType, "application/json");
                client.Headers.Add ("X-ZUMO-APPLICATION", MobileServiceAppId);

                var payload = t.ToJson ();
                var response = client.UploadString (AddUrl, "POST", payload); // PATCH
                // ...and wait...
                var responseString = response;
                // RETURNS [{"id":1,"text":"Port to iOS and Android","complete":false}]
                Console.WriteLine ("Add Json response => " + responseString);

                var responseJson = JsonValue.Parse (responseString);
                return new Task(responseJson);

            } catch (System.Net.WebException e) {
                Console.WriteLine ("X-ZUMO-APPLICATION add failed" + e.Message);
            }
            return null;
        }
예제 #5
0
        /// <summary>
        /// POST /tables/TodoItem
        /// 
        /// </summary>
        public static void AddTodo(Task t)
        {
            WebClient client = new WebClient();
            try {
                // HACK: Android issue - see Validator method declaration
                ServicePointManager.ServerCertificateValidationCallback = Workaround.Validator;

                // make it synchronous
                client.Headers.Add (HttpRequestHeader.Accept, "application/json");
                client.Headers.Add (HttpRequestHeader.ContentType, "application/json");
                client.Headers.Add ("X-ZUMO-APPLICATION", MobileServiceAppId);

                var payload = t.ToJson ();
                var response = client.UploadString (AddUrl, "POST", payload); // PATCH
                // ...and wait...
                var responseString = response;

                //var responseJson = JsonValue.Parse (responseString); //HACK:
                Console.WriteLine ("Add Json response => " + responseString);

            } catch (System.Net.WebException e) {
                Console.WriteLine ("X-ZUMO-APPLICATION add failed" + e.Message);
            }
        }
예제 #6
0
        /// <summary>
        /// GET /tables/TodoItem/{id}
        /// </summary>
        public static Task GetTodo(int id)
        {
            Task task = null;
            WebClient client = new WebClient();
            try {
                // make it synchronous
                client.Headers.Add (HttpRequestHeader.Accept, "application/json");
                client.Headers.Add ("X-ZUMO-APPLICATION", MobileServiceAppId);
                var response = client.DownloadData (String.Format (GetUrl, id)); // GET
                // ...and wait...
                var responseString = System.Text.Encoding.UTF8.GetString(response);
                // RETURNS [{"id":1,"text":"Port to iOS and Android","complete":false}]

                var responseJson = JsonValue.Parse (responseString);

                if (responseJson != null)
                {
                    for (var j = 0; j < responseJson.Count; j++) {
                        var t = responseJson[j];// as JsonValue;
                        task = new Task(t);
                        break; // just one required :)
                    }
                }

                Console.WriteLine ("Json get response => " + responseString);

            } catch (System.Net.WebException e) {
                Console.WriteLine ("X-ZUMO-APPLICATION failed" + e.Message);
            }
            return task;
        }
예제 #7
0
        /// <summary>
        /// GET /tables/TodoItem
        /// </summary>
        public static List<Task> LoadTodos(Action whenDone)
        {
            var tasks = new List<Task>();
            WebClient client = new WebClient();
            try {
                // make it synchronous
                client.Headers.Add (HttpRequestHeader.Accept, "application/json");
                client.Headers.Add ("X-ZUMO-APPLICATION", MobileServiceAppId);
                var response = client.DownloadData (GetAllUrl); // GET
                // ...and wait...
                var responseString = System.Text.Encoding.UTF8.GetString(response);
                // RETURNS [{"id":1,"text":"Port to iOS and Android","complete":false}]

                var responseJson = JsonValue.Parse (responseString); //HACK:

                if (responseJson != null)
                {
                    tasks = new List<Task>();
                    for (var j = 0;j <responseJson.Count; j++) {
                        var t = responseJson[j];// as JsonValue;
                        var task = new Task(t);

                        tasks.Add (task);
                    }
                    whenDone();  // hacky to keep doing this...?
                }

                Console.WriteLine ("Json response => " + responseString);

            } catch (System.Net.WebException e) {
                Console.WriteLine ("X-ZUMO-APPLICATION failed" + e.Message);
            }
            return tasks;
        }
예제 #8
0
 public TaskScreen(Task t)
 {
     task = t;
 }