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

			#region Database setup
			var sqliteFilename = "TodoSQLite.db3";
			string documentsPath = System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal); // Documents folder
			var path = Path.Combine(documentsPath, sqliteFilename);

			// This is where we copy in the prepopulated database
			Console.WriteLine (path);
			if (!File.Exists(path))
			{
				var s = Resources.OpenRawResource(RazorTodo.Resource.Raw.TodoSQLite);  // RESOURCE NAME ###

				// create a write stream
				FileStream writeStream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write);
				// write to the stream
				ReadWriteStream(s, writeStream);
			}

			var plat = new SQLite.Net.Platform.XamarinAndroid.SQLitePlatformAndroid();
			var conn = new SQLite.Net.SQLiteConnection(plat, path);

			// Set the database connection string
			App.SetDatabaseConnection (conn);
			#endregion

			// Set our view from the "main" layout resource
			SetContentView (Resource.Layout.Main);

			var webView = FindViewById<WebView> (Resource.Id.webView);
			webView.Settings.JavaScriptEnabled = true;

			// Use subclassed WebViewClient to intercept hybrid native calls
			webView.SetWebViewClient (new RazorWebViewClient (this));

			// Render the view from the type generated from RazorView.cshtml
			var model = App.Database.GetItems ().ToList();
			var template = new TodoList () { Model = model };
			var page = template.GenerateString ();

			// Load the rendered HTML into the view with a base URL 
			// that points to the root of the bundled Assets folder
			webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
		}
예제 #2
0
		public override void ViewDidLoad ()
		{
			base.ViewDidLoad ();

			webView = new UIWebView (UIScreen.MainScreen.Bounds);
			View.Add (webView);

			// Intercept URL loading to handle native calls from browser
			webView.ShouldStartLoad += HandleShouldStartLoad;

			// Render the view from the type generated from RazorView.cshtml

			var model = App.Database.GetItems ().ToList ();
			var template = new TodoList () { Model = model };
			var page = template.GenerateString ();
			webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
		}
예제 #3
0
        bool HandleShouldStartLoad(UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navigationType)
        {
            var scheme = "hybrid:";

            // If the URL is not our own custom scheme, just let the webView load the URL as usual
            if (request.Url.Scheme != scheme.Replace(":", ""))
            {
                return(true);
            }

            // This handler will treat everything between the protocol and "?"
            // as the method name.  The querystring has all of the parameters.
            var resources  = request.Url.ResourceSpecifier.Split('?');
            var method     = resources [0];
            var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]);             // breaks if ? not present (ie no params)

            if (method == "ListAll")
            {
                var model    = new Lip3Data().MyRecs;
                var template = new TodoList()
                {
                    Model = model
                };
                var page = template.GenerateString();
                webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
            }
            else if (method == "AddTask")
            {
                var template = new TodoView()
                {
                    Model = new TodoItem()
                };
                var page = template.GenerateString();
                webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
            }
            else if (method == "ViewTask")
            {
                var id       = parameters ["todoid"];
                var model    = App.Database.GetItem(Convert.ToInt32(id));
                var template = new TodoView()
                {
                    Model = model
                };
                var page = template.GenerateString();
                webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
            }
            else if (method == "SpeakAll")
            {
                var todos   = App.Database.GetItemsNotDone();
                var tospeak = "";
                foreach (var t in todos)
                {
                    tospeak += t.Name + " ";
                }
                if (tospeak == "")
                {
                    tospeak = "there are no tasks to do";
                }
                Speech.Speak(tospeak);
            }
            else if (method == "TweetAll")
            {
                var todos   = App.Database.GetItemsNotDone();
                var totweet = "";
                foreach (var t in todos)
                {
                    totweet += t.Name + ",";
                }
                if (totweet == "")
                {
                    totweet = "there are no tasks to tweet";
                }
                else
                {
                    totweet = "Still do to:" + totweet;
                }
                var tweetController = new TWTweetComposeViewController();
                tweetController.SetInitialText(totweet);
                PresentModalViewController(tweetController, true);
            }
            else if (method == "TextAll")
            {
                if (MFMessageComposeViewController.CanSendText)
                {
                    var todos  = App.Database.GetItemsNotDone();
                    var totext = "";
                    foreach (var t in todos)
                    {
                        totext += t.Name + ",";
                    }
                    if (totext == "")
                    {
                        totext = "there are no tasks to text";
                    }

                    MFMessageComposeViewController message =
                        new MFMessageComposeViewController();
                    message.Finished += (sender, e) => {
                        e.Controller.DismissViewController(true, null);
                    };
                    //message.Recipients = new string[] { receiver };
                    message.Body = totext;
                    PresentModalViewController(message, true);
                }
                else
                {
                    new UIAlertView("Sorry", "Cannot text from this device", null, "OK", null).Show();
                }
            }
            else if (method == "TodoView")
            {
                // the editing form
                var button = parameters ["Button"];
                if (button == "Save")
                {
                    var id    = parameters ["id"];
                    var name  = parameters ["name"];
                    var notes = parameters ["notes"];
                    var done  = parameters ["done"];

                    var todo = new TodoItem {
                        ID    = Convert.ToInt32(id),
                        Name  = name,
                        Notes = notes,
                        Done  = (done == "on")
                    };

                    App.Database.SaveItem(todo);

                    var model    = new Lip3Data().MyRecs;
                    var template = new TodoList()
                    {
                        Model = model
                    };
                    var page = template.GenerateString();
                    webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
                }
                else if (button == "Delete")
                {
                    var id = parameters ["id"];

                    App.Database.DeleteItem(Convert.ToInt32(id));

                    var model    = new Lip3Data().MyRecs;
                    var template = new TodoList()
                    {
                        Model = model
                    };
                    var page = template.GenerateString();
                    webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
                }
                else if (button == "Cancel")
                {
                    var model    = new Lip3Data().MyRecs;
                    var template = new TodoList()
                    {
                        Model = model
                    };
                    var page = template.GenerateString();
                    webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
                }
                else if (button == "Speak")
                {
                    var name  = parameters ["name"];
                    var notes = parameters ["notes"];
                    Speech.Speak(name + " " + notes);
                }
            }
            return(false);
        }
		public override bool ShouldOverrideUrlLoading (WebView webView, string url) {
			var scheme = "hybrid:";
			// If the URL is not our own custom scheme, just let the webView load the URL as usual
			if (!url.StartsWith (scheme)) 
				return false;

			// This handler will treat everything between the protocol and "?"
			// as the method name.  The querystring has all of the parameters.
			var resources = url.Substring(scheme.Length).Split('?');
			var method = resources [0];
			var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]);


			if (method == "ListAll") {
				var model = App.Database.GetItems ().ToList();
				var template = new TodoList () { Model = model };
				var page = template.GenerateString ();
				webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
			}
			else if (method == "AddTask") {
				var template = new TodoView () { Model = new TodoItem() };
				var page = template.GenerateString ();
				webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
			}
			else if (method == "ViewTask") {
				var id = parameters ["todoid"];
				var model = App.Database.GetItem (Convert.ToInt32 (id));
				var template = new TodoView () { Model = model };
				var page = template.GenerateString ();
				webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
			} 
			else if (method == "SpeakAll") {
				var todos = App.Database.GetItemsNotDone ();
				var tospeak = "";
				foreach (var t in todos)
					tospeak += t.Name + " ";
				if (tospeak == "")
					tospeak = "there are no tasks to do";
				if (speech == null)
					speech = new Speech ();
				speech.Speak (context, tospeak);
			} else if (method == "TextAll" || method == "TweetAll") {

				var todos = App.Database.GetItemsNotDone ();
				var totext = "";
				foreach (var t in todos)
					totext += t.Name + ",";
				if (totext == "")
					totext = "there are no tasks to share";

				try {
					var intent = new Intent(Intent.ActionSend);
					intent.PutExtra(Intent.ExtraText,totext);
					intent.SetType("text/plain");
					context.StartActivity(Intent.CreateChooser(intent, "Undone Todos"));
				} catch(Exception ex) {
					System.Diagnostics.Debug.WriteLine (ex);
				}

			} else if (method == "TodoView") {
				// the editing form
				var button = parameters ["Button"];
				if (button == "Save") {
					var id = parameters ["id"];
					var name = parameters ["name"];
					var notes = parameters ["notes"];
					var done = parameters ["done"];

					var todo = new TodoItem {
						ID = Convert.ToInt32 (id),
						Name = name,
						Notes = notes,
						Done = (done == "on")
					};

					App.Database.SaveItem (todo);

					var model = App.Database.GetItems ().ToList ();
					var template = new TodoList () { Model = model };
					var page = template.GenerateString ();
					webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
				} else if (button == "Delete") {
					var id = Convert.ToInt32 (parameters ["id"]);

					App.Database.DeleteItem (new TodoItem {ID = id});

					var model = App.Database.GetItems ().ToList ();
					var template = new TodoList () { Model = model };
					var page = template.GenerateString ();
					webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
				} else if (button == "Cancel") {
					var model = App.Database.GetItems ().ToList ();
					var template = new TodoList () { Model = model };
					var page = template.GenerateString ();
					webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
				} else if (button == "Speak") {
					var name = parameters ["name"];
					var notes = parameters ["notes"];
					if (speech == null)
						speech = new Speech ();
					speech.Speak (context, name + " " + notes);
				}
			}


			return true;
		}
예제 #5
0
        bool HandleShouldStartLoad(UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navigationType)
        {
            var scheme = "hybrid:";

            // If the URL is not our own custom scheme, just let the webView load the URL as usual
            if (request.Url.Scheme != scheme.Replace(":", ""))
            {
                return(true);
            }

            // This handler will treat everything between the protocol and "?"
            // as the method name.  The querystring has all of the parameters.
            var resources  = request.Url.ResourceSpecifier.Split('?');
            var method     = resources[0];
            var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]); // breaks if ? not present (ie no params)

            if (method == "ListAll")
            {
                var model = App.Database.GetItems().ToList();
                List <List <Data> > lista = model
                                            .GroupBy(u => u.Group)
                                            .Select(grp => grp.ToList())
                                            .ToList();
                var template = new TodoList()
                {
                    Model = lista
                };
                var page = template.GenerateString();
                webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
            }
            else if (method == "AddTask")
            {
                var template = new TodoView()
                {
                    Model = new DataViewModel {
                        Time = DateTime.Now.ToString("HH:mm"), Date = DateTime.Now.ToString("dd.MM.yyyy")
                    }
                };
                var page = template.GenerateString();
                webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
            }
            else if (method == "ViewTask")
            {
                var id    = parameters["todoid"];
                var data  = App.Database.GetItem(Convert.ToInt32(id));
                var model = new DataViewModel();
                model.ID      = data.ID;
                model.Insulin = data.Insulin;
                model.Result  = data.Result;
                model.Date    = data.Date.ToString("dd.MM.yyyy");
                model.Time    = data.Date.ToString("HH.mm");
                model.Notes   = data.Notes;
                var template = new TodoView()
                {
                    Model = model
                };
                var page = template.GenerateString();
                webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
            }
            else if (method == "DataView")
            {
                // the editing form
                var button = parameters["Button"];
                if (button == "Save")
                {
                    var id     = parameters["id"];
                    var date   = parameters["date"];
                    var result = parameters["result"];
                    var notes  = parameters["notes"];
                    var time   = parameters["time"];

                    var dateArray = date.Split('.');
                    var timeArray = time.Split(':');
                    var todo      = new Data
                    {
                        ID     = Convert.ToInt32(id),
                        Date   = new DateTime(int.Parse(dateArray[2]), int.Parse(dateArray[1]), int.Parse(dateArray[0]), int.Parse(timeArray[0]), int.Parse(timeArray[1]), 0),
                        Result = Decimal.Parse(result),
                        Notes  = notes,
                        Group  = date
                    };

                    App.Database.SaveItem(todo);

                    var model = App.Database.GetItems().ToList();

                    List <List <Data> > lista = model
                                                .GroupBy(u => u.Group)
                                                .Select(grp => grp.ToList())
                                                .ToList();

                    var template = new TodoList()
                    {
                        Model = lista
                    };
                    var page = template.GenerateString();
                    webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
                }
                else if (button == "Delete")
                {
                    var id = parameters["id"];

                    App.Database.DeleteItem(Convert.ToInt32(id));

                    var model = App.Database.GetItems().ToList();
                    List <List <Data> > lista = model
                                                .GroupBy(u => u.Group)
                                                .Select(grp => grp.ToList())
                                                .ToList();

                    var template = new TodoList()
                    {
                        Model = lista
                    };
                    var page = template.GenerateString();

                    webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
                }
                else if (button == "Cancel")
                {
                    var model = App.Database.GetItems().ToList();
                    List <List <Data> > lista = model
                                                .GroupBy(u => u.Group)
                                                .Select(grp => grp.ToList())
                                                .ToList();

                    var template = new TodoList()
                    {
                        Model = lista
                    };
                    var page = template.GenerateString();

                    webView.LoadHtmlString(page, NSBundle.MainBundle.BundleUrl);
                }
            }
            return(false);
        }
예제 #6
0
		bool HandleShouldStartLoad (UIWebView webView, NSUrlRequest request, UIWebViewNavigationType navigationType) {
			var scheme = "hybrid:";
			// If the URL is not our own custom scheme, just let the webView load the URL as usual
			if (request.Url.Scheme != scheme.Replace(":", ""))
				return true;

			// This handler will treat everything between the protocol and "?"
			// as the method name.  The querystring has all of the parameters.
			var resources = request.Url.ResourceSpecifier.Split('?');
			var method = resources [0];
			var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]); // breaks if ? not present (ie no params)

			if (method == "ListAll") {
				var model = App.Database.GetItems ().ToList();
				var template = new TodoList () { Model = model };
				var page = template.GenerateString ();
				webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
			}
			else if (method == "AddTask") {
				var template = new TodoView () { Model = new TodoItem() };
				var page = template.GenerateString ();
				webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
			}
			else if (method == "ViewTask") {
				var id = parameters ["todoid"];
				var model = App.Database.GetItem (Convert.ToInt32 (id));
				var template = new TodoView () { Model = model };
				var page = template.GenerateString ();
				webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
			} 
			else if (method == "SpeakAll") {
				var todos = App.Database.GetItemsNotDone ();
				var tospeak = "";
				foreach (var t in todos)
					tospeak += t.Name + " ";
				if (tospeak == "")
					tospeak = "there are no tasks to do";
				Speech.Speak (tospeak);
			} else if (method == "TweetAll") {
				var todos = App.Database.GetItemsNotDone ();
				var totweet = "";
				foreach (var t in todos)
					totweet += t.Name + ",";
				if (totweet == "")
					totweet = "there are no tasks to tweet";
				else 
					totweet = "Still do to:" + totweet;
				var tweetController = new TWTweetComposeViewController ();
				tweetController.SetInitialText (totweet); 
				PresentModalViewController (tweetController, true);
			} else if (method == "TextAll") {
				if (MFMessageComposeViewController.CanSendText) {

					var todos = App.Database.GetItemsNotDone ();
					var totext = "";
					foreach (var t in todos)
						totext += t.Name + ",";
					if (totext == "")
						totext = "there are no tasks to text";

					MFMessageComposeViewController message =
						new MFMessageComposeViewController ();
					message.Finished += (sender, e) => {
						e.Controller.DismissViewController (true, null);
					};
					//message.Recipients = new string[] { receiver };
					message.Body = totext;
					PresentModalViewController (message, true);
				} else {
					new UIAlertView ("Sorry", "Cannot text from this device", null, "OK", null).Show ();
				}
			} else if (method == "TodoView") {
				// the editing form
				var button = parameters ["Button"];
				if (button == "Save") {
					var id = parameters ["id"];
					var name = parameters ["name"];
					var notes = parameters ["notes"];
					var done = parameters ["done"];

					var todo = new TodoItem {
						ID = Convert.ToInt32 (id),
						Name = name,
						Notes = notes,
						Done = (done == "on")
					};

					App.Database.SaveItem (todo);

					var model = App.Database.GetItems ().ToList ();
					var template = new TodoList () { Model = model };
					var page = template.GenerateString ();
					webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
				} else if (button == "Delete") {
					var id = parameters ["id"];

					App.Database.DeleteItem (Convert.ToInt32 (id));

					var model = App.Database.GetItems ().ToList ();
					var template = new TodoList () { Model = model };
					var page = template.GenerateString ();
					webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
				} else if (button == "Cancel") {
					var model = App.Database.GetItems ().ToList ();
					var template = new TodoList () { Model = model };
					var page = template.GenerateString ();
					webView.LoadHtmlString (page, NSBundle.MainBundle.BundleUrl);
				} else if (button == "Speak") {
					var name = parameters ["name"];
					var notes = parameters ["notes"];
					Speech.Speak (name + " " + notes);
				}
			}
			return false;
		}
예제 #7
0
        public override bool ShouldOverrideUrlLoading(WebView webView, string url)
        {
            var scheme = "hybrid:";

            // If the URL is not our own custom scheme, just let the webView load the URL as usual
            if (!url.StartsWith(scheme))
            {
                return(false);
            }

            // This handler will treat everything between the protocol and "?"
            // as the method name.  The querystring has all of the parameters.
            var resources  = url.Substring(scheme.Length).Split('?');
            var method     = resources[0];
            var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]);


            if (method == "ListAll")
            {
                var model = App.Database.GetItems().ToList();
                List <List <Data> > lista = model
                                            .GroupBy(u => u.Group)
                                            .Select(grp => grp.ToList())
                                            .ToList();
                var template = new TodoList()
                {
                    Model = lista
                };
                var page = template.GenerateString();
                webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
            }
            else if (method == "AddTask")
            {
                var template = new TodoView()
                {
                    Model = new DataViewModel {
                        Time = DateTime.Now.ToString("HH:mm"), Date = DateTime.Now.ToString("dd.MM.yyyy")
                    }
                };
                var page = template.GenerateString();
                webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
            }
            else if (method == "ViewTask")
            {
                var id    = parameters["todoid"];
                var data  = App.Database.GetItem(Convert.ToInt32(id));
                var model = new DataViewModel();
                model.ID      = data.ID;
                model.Insulin = data.Insulin;
                model.Result  = data.Result;
                model.Date    = data.Date.ToString("dd.MM.yyyy");
                model.Time    = data.Date.ToString("HH.mm");
                model.Notes   = data.Notes;
                var template = new TodoView()
                {
                    Model = model
                };
                var page = template.GenerateString();
                webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
            }

            else if (method == "DataView")
            {
                // the editing form
                var button = parameters["Button"];
                if (button == "Save")
                {
                    var id     = parameters["id"];
                    var date   = parameters["date"];
                    var result = parameters["result"];
                    var notes  = parameters["notes"];
                    var time   = parameters["time"];

                    var dateArray = date.Split('.');
                    var timeArray = time.Split(':');
                    var todo      = new Data
                    {
                        ID     = Convert.ToInt32(id),
                        Date   = new DateTime(int.Parse(dateArray[2]), int.Parse(dateArray[1]), int.Parse(dateArray[0]), int.Parse(timeArray[0]), int.Parse(timeArray[1]), 0),
                        Result = Decimal.Parse(result),
                        Notes  = notes,
                        Group  = date
                    };

                    App.Database.SaveItem(todo);

                    var model = App.Database.GetItems().ToList();

                    List <List <Data> > lista = model
                                                .GroupBy(u => u.Group)
                                                .Select(grp => grp.ToList())
                                                .ToList();

                    var template = new TodoList()
                    {
                        Model = lista
                    };
                    var page = template.GenerateString();
                    webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
                }
                else if (button == "Delete")
                {
                    var id = parameters["id"];

                    App.Database.DeleteItem(Convert.ToInt32(id));

                    var model = App.Database.GetItems().ToList();
                    List <List <Data> > lista = model
                                                .GroupBy(u => u.Group)
                                                .Select(grp => grp.ToList())
                                                .ToList();

                    var template = new TodoList()
                    {
                        Model = lista
                    };
                    var page = template.GenerateString();
                    webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
                }
                else if (button == "Cancel")
                {
                    var model = App.Database.GetItems().ToList();
                    List <List <Data> > lista = model
                                                .GroupBy(u => u.Group)
                                                .Select(grp => grp.ToList())
                                                .ToList();
                    var template = new TodoList()
                    {
                        Model = lista
                    };
                    var page = template.GenerateString();
                    webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
                }
            }


            return(true);
        }
예제 #8
0
        public override bool ShouldOverrideUrlLoading(WebView webView, string url)
        {
            var scheme = "hybrid:";

            // If the URL is not our own custom scheme, just let the webView load the URL as usual
            if (!url.StartsWith(scheme))
            {
                return(false);
            }

            // This handler will treat everything between the protocol and "?"
            // as the method name.  The querystring has all of the parameters.
            var resources  = url.Substring(scheme.Length).Split('?');
            var method     = resources [0];
            var parameters = System.Web.HttpUtility.ParseQueryString(resources[1]);


            if (method == "ListAll")
            {
                var model    = App.Database.GetItems().ToList();
                var template = new TodoList()
                {
                    Model = model
                };
                var page = template.GenerateString();
                webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
            }
            else if (method == "AddTask")
            {
                var template = new TodoView()
                {
                    Model = new TodoItem()
                };
                var page = template.GenerateString();
                webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
            }
            else if (method == "ViewTask")
            {
                var id       = parameters ["todoid"];
                var model    = App.Database.GetItem(Convert.ToInt32(id));
                var template = new TodoView()
                {
                    Model = model
                };
                var page = template.GenerateString();
                webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
            }
            else if (method == "SpeakAll")
            {
                var todos   = App.Database.GetItemsNotDone();
                var tospeak = "";
                foreach (var t in todos)
                {
                    tospeak += t.Name + " ";
                }
                if (tospeak == "")
                {
                    tospeak = "there are no tasks to do";
                }
                if (speech == null)
                {
                    speech = new Speech();
                }
                speech.Speak(context, tospeak);
            }
            else if (method == "TextAll" || method == "TweetAll")
            {
                var todos  = App.Database.GetItemsNotDone();
                var totext = "";
                foreach (var t in todos)
                {
                    totext += t.Name + ",";
                }
                if (totext == "")
                {
                    totext = "there are no tasks to share";
                }

                try {
                    var intent = new Intent(Intent.ActionSend);
                    intent.PutExtra(Intent.ExtraText, totext);
                    intent.SetType("text/plain");
                    context.StartActivity(Intent.CreateChooser(intent, "Undone Todos"));
                } catch (Exception ex) {
                    System.Diagnostics.Debug.WriteLine(ex);
                }
            }
            else if (method == "TodoView")
            {
                // the editing form
                var button = parameters ["Button"];
                if (button == "Save")
                {
                    var id    = parameters ["id"];
                    var name  = parameters ["name"];
                    var notes = parameters ["notes"];
                    var done  = parameters ["done"];

                    var todo = new TodoItem {
                        ID    = Convert.ToInt32(id),
                        Name  = name,
                        Notes = notes,
                        Done  = (done == "on")
                    };

                    App.Database.SaveItem(todo);

                    var model    = App.Database.GetItems().ToList();
                    var template = new TodoList()
                    {
                        Model = model
                    };
                    var page = template.GenerateString();
                    webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
                }
                else if (button == "Delete")
                {
                    var id = parameters ["id"];

                    App.Database.DeleteItem(Convert.ToInt32(id));

                    var model    = App.Database.GetItems().ToList();
                    var template = new TodoList()
                    {
                        Model = model
                    };
                    var page = template.GenerateString();
                    webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
                }
                else if (button == "Cancel")
                {
                    var model    = App.Database.GetItems().ToList();
                    var template = new TodoList()
                    {
                        Model = model
                    };
                    var page = template.GenerateString();
                    webView.LoadDataWithBaseURL("file:///android_asset/", page, "text/html", "UTF-8", null);
                }
                else if (button == "Speak")
                {
                    var name  = parameters ["name"];
                    var notes = parameters ["notes"];
                    if (speech == null)
                    {
                        speech = new Speech();
                    }
                    speech.Speak(context, name + " " + notes);
                }
            }


            return(true);
        }