Inheritance: Xamarin.Forms.ContentPage
Exemple #1
0
        protected override void OnStart()
        {
            Debug.WriteLine("OnStart");

            // always re-set when the app starts
            // users expect this (usually)
//			Properties ["ResumeAtTodoId"] = "";
            if (Properties.ContainsKey("ResumeAtTodoId"))
            {
                var rati = Properties ["ResumeAtTodoId"].ToString();
                Debug.WriteLine("   rati=" + rati);
                if (!String.IsNullOrEmpty(rati))
                {
                    Debug.WriteLine("   rati = " + rati);
                    ResumeAtTodoId = int.Parse(rati);

                    if (ResumeAtTodoId >= 0)
                    {
                        var todoPage = new TodoItemPage();
                        todoPage.BindingContext = Database.GetItem(ResumeAtTodoId);

                        MainPage.Navigation.PushAsync(
                            todoPage,
                            false);                             // no animation
                    }
                }
            }
        }
		protected override void OnStart()
		{
			Debug.WriteLine ("OnStart");

			// always re-set when the app starts
			// users expect this (usually)
//			Properties ["ResumeAtTodoId"] = "";
			if (Properties.ContainsKey ("ResumeAtTodoId")) {
				var rati = Properties ["ResumeAtTodoId"].ToString();
				Debug.WriteLine ("   rati="+rati);
				if (!String.IsNullOrEmpty (rati)) {
					Debug.WriteLine ("   rati = " + rati);
					ResumeAtTodoId = int.Parse (rati);

					if (ResumeAtTodoId >= 0) {
						var todoPage = new TodoItemPage ();
						todoPage.BindingContext = Database.GetItem (ResumeAtTodoId);

						MainPage.Navigation.PushAsync (
							todoPage,
							false); // no animation
					}
				}
			}
		}
		public TodoListPage ()
		{
			Title = AppResources.ApplicationTitle; // "Todo";

			listView = new ListView { RowHeight = 40 };
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));

			listView.ItemSelected += (sender, e) => {
				var todoItem = (TodoItem)e.SelectedItem;

				// use C# localization
				var todoPage = new TodoItemPage();

				// use XAML localization
//				var todoPage = new TodoItemXaml();


				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			};

			var layout = new StackLayout();
			if (Device.OS == TargetPlatform.WinPhone) { // WinPhone doesn't have the title showing
				layout.Children.Add(new Label{Text="Todo", Font=Font.SystemFontOfSize(NamedSize.Large, FontAttributes.Bold)});
			}
			layout.Children.Add(listView);
			layout.VerticalOptions = LayoutOptions.FillAndExpand;
			Content = layout;


			var tbiAdd = new ToolbarItem("Add", "plus.png", () =>
				{
					var todoItem = new TodoItem();
					var todoPage = new TodoItemPage();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync(todoPage);
				}, 0, 0);


			ToolbarItems.Add (tbiAdd);


			var tbiSpeak = new ToolbarItem ("Speak", "chat.png", () => {
				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 (todos.Any ()) {
					var s = L10n.Localize ("SpeakTaskCount", "Number of tasks to do");
					tospeak = String.Format (s, todos.Count ()) + tospeak;
				}

				DependencyService.Get<ITextToSpeech>().Speak(tospeak);
			}, 0, 0);
			ToolbarItems.Add (tbiSpeak);


		}
        public TodoListPage()
        {
            Title = "Todo";

            NavigationPage.SetHasNavigationBar(this, true);

            listView = new ListView {
                RowHeight = 40
            };
            listView.ItemTemplate = new DataTemplate(typeof(TodoItemCell));

            listView.ItemSelected += (sender, e) => {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            };

            var layout = new StackLayout();

            if (Device.OS == TargetPlatform.WinPhone)               // WinPhone doesn't have the title showing
            {
                layout.Children.Add(new Label {
                    Text = "Todo", Font = Font.SystemFontOfSize(NamedSize.Large, FontAttributes.Bold)
                });
            }
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;


            var tbiAdd = new ToolbarItem("+", "plus.png", () => {
                var todoItem            = new TodoItem();
                var todoPage            = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            }, 0, 0);

            ToolbarItems.Add(tbiAdd);

            var tbiSpeak = new ToolbarItem("?", "chat.png", () => {
                var todos   = App.Database.GetItemsNotDone();
                var tospeak = "";
                foreach (var t in todos)
                {
                    tospeak += t.Name + " ";
                }
                if (tospeak == "")
                {
                    tospeak = "there are no tasks to do";
                }

                DependencyService.Get <ITextToSpeech>().Speak(tospeak);
            }, 0, 0);

            ToolbarItems.Add(tbiSpeak);
        }
		public TodoListPage ()
		{
			Title = "Todo";

			NavigationPage.SetHasNavigationBar (this, true);

			listView = new ListView {
			    RowHeight = 40
			};
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));

			listView.ItemSelected += (sender, e) => {
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			};

			var layout = new StackLayout();
			if (Device.OS == TargetPlatform.WinPhone) { // WinPhone doesn't have the title showing
				layout.Children.Add(new Label{Text="Todo", Font=Font.SystemFontOfSize(NamedSize.Large, FontAttributes.Bold)});
			}
			layout.Children.Add(listView);
			layout.VerticalOptions = LayoutOptions.FillAndExpand;
			Content = layout;


			var tbiAdd = new ToolbarItem ("+", "plus.png", () => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			}, 0, 0);

			ToolbarItems.Add (tbiAdd);

			var tbiSpeak = new ToolbarItem ("?", "chat.png", () => {
				var todos = App.Database.GetItemsNotDone();
				var tospeak = "";
				foreach (var t in todos)
					tospeak += t.Name + " ";
				if (tospeak == "") tospeak = "there are no tasks to do";

				DependencyService.Get<ITextToSpeech>().Speak(tospeak);
			}, 0, 0);
			ToolbarItems.Add (tbiSpeak);

		}
Exemple #6
0
        public TodoListPage()
        {
            Title = "Todo";
            var searchBar = new SearchBar()
            {
                Placeholder = "Type here to search", HeightRequest = 50
            };

            searchBar.HorizontalOptions = LayoutOptions.StartAndExpand;
            searchBar.TextChanged      += SearchBar_TextChanged;


            listView              = new ListView();
            listView.RowHeight    = 50;
            listView.ItemTemplate = new DataTemplate
                                        (typeof(TodoItemCell));
            listView.ItemSelected += (sender, e) =>
            {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;

                ((App)Application.Current).ResumeAtTodoId = todoItem.ID;
                Debug.WriteLine("setting ResumeAtTodoId = " + todoItem.ID);

                Navigation.PushAsync(todoPage);
            };

            var layout = new StackLayout();

            if (Device.OS == TargetPlatform.WinPhone)
            { // WinPhone doesn't have the title showing
                layout.Children.Add(new Label
                {
                    Text     = "Todo",
                    FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
                });
            }
            layout.Children.Add(searchBar);
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;

            #region toolbar
            ToolbarItem tbi = null;
            if (Device.OS == TargetPlatform.iOS)
            {
                tbi = new ToolbarItem("+", null, () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.Android)
            { // BUG: Android doesn't support the icon being null
                tbi = new ToolbarItem("+", "plus", () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.WinPhone || Device.OS == TargetPlatform.Windows)
            {
                tbi = new ToolbarItem("Add", "add.png", () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }

            ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", null, () =>
                {
                    var todos   = App.Repository.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }

                    DependencyService.Get <ITextToSpeech>().Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
            #endregion
        }
		public TodoListPage ()
		{
			Title = "Todo";

			NavigationPage.SetHasNavigationBar (this, true);

			listView = new ListView {
			    RowHeight = 40
			};
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));

//			listView.ItemSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
//			listView.ItemSource = new TodoItem [] { 
//				new TodoItem {Name = "Buy pears`"}, 
//				new TodoItem {Name = "Buy oranges`", Done=true},
//				new TodoItem {Name = "Buy mangos`"}, 
//				new TodoItem {Name = "Buy apples`", Done=true},
//				new TodoItem {Name = "Buy bananas`", Done=true}
//			};

			// HACK: workaround issue #894 for now
			if (Device.OS == TargetPlatform.iOS)
				listView.ItemsSource = new string [1] {""};

			listView.ItemSelected += (sender, e) => {
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			};

			Content = new StackLayout {
				VerticalOptions = LayoutOptions.FillAndExpand,
				Children = {listView}
			};

			var tbi = new ToolbarItem ("+", null, () => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			}, 0, 0);
			if (Device.OS == TargetPlatform.Android) { // BUG: Android doesn't support the icon being null
				tbi = new ToolbarItem ("+", "plus", () => {
					var todoItem = new TodoItem();
					var todoPage = new TodoItemPage();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync(todoPage);
				}, 0, 0);
			}

			ToolbarItems.Add (tbi);

			if (Device.OS == TargetPlatform.iOS) {
				var tbi2 = new ToolbarItem ("?", null, () => {
					var todos = App.Database.GetItemsNotDone();
					var tospeak = "";
					foreach (var t in todos)
						tospeak += t.Name + " ";
					if (tospeak == "") tospeak = "there are no tasks to do";
					App.Speech.Speak(tospeak);
				}, 0, 0);
				ToolbarItems.Add (tbi2);
			}

		}
		public TodoListPage ()
		{
			Title = "Todo";

			NavigationPage.SetHasNavigationBar (this, true);

			listView = new ListView ();
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));

//			listView.ItemSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
//			listView.ItemSource = new TodoItem [] { 
//				new TodoItem {Name = "Buy pears`"}, 
//				new TodoItem {Name = "Buy oranges`", Done=true},
//				new TodoItem {Name = "Buy mangos`"}, 
//				new TodoItem {Name = "Buy apples`", Done=true},
//				new TodoItem {Name = "Buy bananas`", Done=true}
//			};

			listView.ItemSelected += (sender, e) => {
				if (e.SelectedItem == null) {
					return; // ensures we ignore this handler when the selection is just being cleared
				}
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
				((ListView)sender).SelectedItem = null; // clears the 'selected' background
			};

			// make floating (+) image at bottom of screen
			var tap = new TapGestureRecognizer (async (View obj) => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;

				var b = newImage.Bounds;
				b.Y = b.Y - 50;

				await newImage.LayoutTo(b,250, Easing.SinIn);
				b.Y = b.Y + 50;
				await newImage.LayoutTo(b,250, Easing.SinOut);

				Navigation.PushAsync(todoPage);
			});
			newImage = new Image {
				Source = "newitem.png",
				WidthRequest = 40,
				Opacity = 0.8f
			};
			newImage.GestureRecognizers.Add (tap);

			layout = new RelativeLayout ();
			layout.Children.Add (listView, 
				xConstraint: Constraint.Constant(0), 
				yConstraint: Constraint.Constant(0), 
				widthConstraint: Constraint.RelativeToParent ((parent) => {return parent.Width;}),
				heightConstraint: Constraint.RelativeToParent ((parent) => {return parent.Height;}));
			layout.Children.Add (newImage, 
				xConstraint: Constraint.RelativeToParent((parent) =>
					{
						return (parent.Width / 2) - 20; // center of image (which is 40 wide)
					}),
				yConstraint: Constraint.RelativeToParent((parent) =>
					{
						return parent.Height - 60;
					}));
			Content = layout;


			#region toolbar
			var tbi = new ToolbarItem ("+", "plus.png", () => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			}, 0, 0);

			ToolbarItems.Add (tbi);

			if (Device.OS == TargetPlatform.iOS) {
				var tbi2 = new ToolbarItem ("?", "chat.png", () => {
					var todos = App.Database.GetItemsNotDone();
					var tospeak = "";
					foreach (var t in todos)
						tospeak += t.Name + " ";
					if (tospeak == "") tospeak = "there are no tasks to do";
					App.Speech.Speak(tospeak);
				}, 0, 0);
				ToolbarItems.Add (tbi2);
			}
			#endregion
		}
		public TodoListPage ()
		{
			Title = "Todo";

			listView = new ListView {StyleId = "TodoList"};
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));

			listView.ItemSelected += async (sender, e) => {
				if (e.SelectedItem == null) {
					return; // ensures we ignore this handler when the selection is just being cleared
				}
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				await Navigation.PushAsync(todoPage);
				((ListView)sender).SelectedItem = null; // clears the 'selected' background
			};

			// make floating (+) image at bottom of screen
			var tap = new TapGestureRecognizer (async (View obj) => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;

				var b = newImage.Bounds;
				b.Y = b.Y - 50;

				await newImage.LayoutTo(b,250, Easing.SinIn);
				b.Y = b.Y + 50;
				await newImage.LayoutTo(b,250, Easing.SinOut);

				await Navigation.PushAsync(todoPage);
			});
			newImage = new Image {
				Source = "newitem.png",
				WidthRequest = 40,
				Opacity = 0.8f,
				StyleId = "TodoAdd"
			};
			newImage.GestureRecognizers.Add (tap);

			layout = new RelativeLayout ();
			layout.Children.Add (listView, 
				xConstraint: Constraint.Constant(0), 
				yConstraint: Constraint.Constant(0), 
				widthConstraint: Constraint.RelativeToParent ((parent) => {return parent.Width;}),
				heightConstraint: Constraint.RelativeToParent ((parent) => {return parent.Height;}));
			layout.Children.Add (newImage, 
				xConstraint: Constraint.RelativeToParent((parent) =>
					{
						return (parent.Width / 2) - 20; // center of image (which is 40 wide)
					}),
				yConstraint: Constraint.RelativeToParent((parent) =>
					{
						return parent.Height - 60;
					}));
			Content = layout;


			#region toolbar
			var tbiAdd = new ToolbarItem ("+", "plus.png", () => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			}, 0, 0);
			tbiAdd.StyleId = "ToolbarAdd";
			//tbiAdd.Order = ToolbarItemOrder.Secondary;
			ToolbarItems.Add (tbiAdd);

			var tbiSpeak = new ToolbarItem ("?", "chat.png", () => {
				var todos = App.Database.GetItemsNotDone();
				var tospeak = "";
				foreach (var t in todos)
					tospeak += t.Name + " ";
				if (tospeak == "") tospeak = "there are no tasks to do";

				DependencyService.Get<ITextToSpeech>().Speak("Hello from Xamarin Forms");

			}, 0, 0);
			tbiAdd.StyleId = "ToolbarSpeak";
			// demonstrate toolbar/optionmenu
			//tbiSpeak.Order = ToolbarItemOrder.Secondary;
			ToolbarItems.Add (tbiSpeak);

			#endregion
		}
Exemple #10
0
        public TodoListPage()
        {
            Title = "Todo";

            NavigationPage.SetHasNavigationBar(this, true);

            listView = new ListView {
                RowHeight    = 40,
                ItemTemplate = new DataTemplate(typeof(TodoItemCell))
            };

            // These commented-out lines were used to test the ListView prior to integrating the database
//			listView.ItemsSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
//			listView.ItemsSource = new TodoItem [] {
//				new TodoItem {Name = "Buy pears`"},
//				new TodoItem {Name = "Buy oranges`", Done=true},
//				new TodoItem {Name = "Buy mangos`"},
//				new TodoItem {Name = "Buy apples`", Done=true},
//				new TodoItem {Name = "Buy bananas`", Done=true}
//			};

            listView.ItemSelected += (sender, e) => {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            };

            var layout = new StackLayout();

            if (Device.OS == TargetPlatform.WinPhone)               // WinPhone doesn't have the title showing
            {
                layout.Children.Add(new Label {
                    Text           = "Todo",
                    FontSize       = Device.GetNamedSize(NamedSize.Large, typeof(Label)),
                    FontAttributes = FontAttributes.Bold
                });
            }
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;


            ToolbarItem tbi = null;

            if (Device.OS == TargetPlatform.iOS)
            {
                tbi = new ToolbarItem("+", null, () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.Android)               // BUG: Android doesn't support the icon being null
            {
                tbi = new ToolbarItem("+", "plus", () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }

            if (Device.OS == TargetPlatform.WinPhone)
            {
                tbi = new ToolbarItem("Add", "add.png", () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }

            ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", null, () => {
                    var todos   = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }

                    DependencyService.Get <ITextToSpeech> ().Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
        }
        public TodoListPage()
        {
            Title = AppResources.ApplicationTitle;             // "Todo";

            listView = new ListView {
                RowHeight = 40
            };
            listView.ItemTemplate = new DataTemplate(typeof(TodoItemCell));

            listView.ItemSelected += (sender, e) => {
                var todoItem = (TodoItem)e.SelectedItem;

                // use C# localization
                var todoPage = new TodoItemPage();

                // use XAML localization
//				var todoPage = new TodoItemXaml();


                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            };

            var layout = new StackLayout();

            if (Device.OS == TargetPlatform.WinPhone)               // WinPhone doesn't have the title showing
            {
                layout.Children.Add(new Label {
                    Text = "Todo", Font = Font.BoldSystemFontOfSize(NamedSize.Large)
                });
            }
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;


            ToolbarItem tbi = null;

            if (Device.OS == TargetPlatform.iOS)
            {
                tbi = new ToolbarItem("+", null, () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.Android)               // BUG: Android doesn't support the icon being null
            {
                tbi = new ToolbarItem("+", "plus", () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.WinPhone)
            {
                tbi = new ToolbarItem("Add", "add.png", () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }

            ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", null, () => {
                    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 (todos.Count() > 0)
                    {
                        var s   = L10n.Localize("SpeakTaskCount", "Number of tasks to do");
                        tospeak = String.Format(s, todos.Count()) + tospeak;
                    }

                    DependencyService.Get <ITextToSpeech>().Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
        }
Exemple #12
0
        public TodoListPage()
        {
            Title = "Strainer";

            listView = new ListView
            {
                SeparatorVisibility = SeparatorVisibility.None,
                BackgroundColor     = Color.FromRgb(34, 49, 62)
            };
            listView.ItemTemplate = new DataTemplate
                                        (typeof(TodoItemCell));

            listView.ItemSelected += (sender, e) => {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;

                Navigation.PushAsync(todoPage);
            };

            listView.IsPullToRefreshEnabled = true;
            listView.RefreshCommand         = new Command(() => {
                listView.ItemsSource  = null;
                listView.ItemsSource  = App.Database.GetItems();
                listView.IsRefreshing = false;
            });

            var layout = new StackLayout();

            if (Device.OS == TargetPlatform.WinPhone)               // WinPhone doesn't have the title showing
            {
                layout.Children.Add(new Label {
                    Text     = "Strainer",
                    FontSize = Device.GetNamedSize(NamedSize.Large, typeof(Label))
                });
            }
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;



            #region toolbar
            ToolbarItem tbi = null;
            if (Device.OS == TargetPlatform.iOS)
            {
                tbi = new ToolbarItem(null, "plus.png", () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.Android)               // BUG: Android doesn't support the icon being null
            {
                tbi = new ToolbarItem("+", "plus", () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
//			if (Device.OS == TargetPlatform.WinPhone)
//			{
//				tbi = new ToolbarItem("Add", "add.png", () =>
//					{
//						var todoItem = new TodoItem();
//						var todoPage = new TodoItemPage();
//						todoPage.BindingContext = todoItem;
//						Navigation.PushAsync(todoPage);
//					}, 0, 0);
//			}

            ToolbarItems.Add(tbi);

//			if (Device.OS == TargetPlatform.iOS) {
//				var tbi2 = new ToolbarItem ("?", null, () => {
//					var todos = App.Database.GetItemsNotDone();
//					var tospeak = "";
//					foreach (var t in todos)
//						tospeak += t.Name + " ";
//					if (tospeak == "") tospeak = "there are no tasks to do";
//
//					DependencyService.Get<ITextToSpeech>().Speak(tospeak);
//				}, 0, 0);
//				ToolbarItems.Add (tbi2);
//			}
            #endregion
        }
Exemple #13
0
        public TodoListPage()
        {
            Title = "Todo";

            NavigationPage.SetHasNavigationBar(this, true);

            listView = new ListView {
                RowHeight = 40
            };
            listView.ItemTemplate = new DataTemplate(typeof(TodoItemCell));

            // These commented-out lines were used to test the ListView prior to integrating the database
//			listView.ItemSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
//			listView.ItemSource = new TodoItem [] {
//				new TodoItem {Name = "Buy pears`"},
//				new TodoItem {Name = "Buy oranges`", Done=true},
//				new TodoItem {Name = "Buy mangos`"},
//				new TodoItem {Name = "Buy apples`", Done=true},
//				new TodoItem {Name = "Buy bananas`", Done=true}
//			};

            // HACK: workaround issue #894 for now
            if (Device.OS == TargetPlatform.iOS)
            {
                listView.ItemsSource = new string [1] {
                    ""
                }
            }
            ;

            listView.ItemSelected += (sender, e) => {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            };

            Content = new StackLayout {
                VerticalOptions = LayoutOptions.FillAndExpand,
                Children        = { listView }
            };

            var tbi = new ToolbarItem("+", null, () => {
                var todoItem            = new TodoItem();
                var todoPage            = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            }, 0, 0);

            if (Device.OS == TargetPlatform.Android)               // BUG: Android doesn't support the icon being null
            {
                tbi = new ToolbarItem("+", "plus", () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }

            ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", null, () => {
                    var todos   = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }

                    DependencyService.Get <ITextToSpeech>().Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
        }
        public TodoListPage()
        {
            Title           = "Todo";
            BackgroundColor = Constants.Yellow;
            NavigationPage.SetHasNavigationBar(this, true);
            int listY = 0;

            listView = new NotesListView();
            listView.ItemTemplate    = new DataTemplate(typeof(TodoItemCell));
            listView.BackgroundColor = Constants.Yellow;

            listView.ItemSelected += (sender, e) => {
                if (e.SelectedItem == null)
                {
                    return;                     // ensures we ignore this handler when the selection is just being cleared
                }
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
                ((ListView)sender).SelectedItem = null;                 // clears the 'selected' background
            };

            layout = new RelativeLayout();

            if (Device.OS == TargetPlatform.WinPhone)
            {
                listY = 60;
                layout.Children.Add(new BoxView {
                    BackgroundColor = Constants.Brown
                },
                                    xConstraint: Constraint.Constant(0),
                                    yConstraint: Constraint.Constant(0),
                                    widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width); }),
                                    heightConstraint: Constraint.Constant(listY)
                                    );
                layout.Children.Add(new Label {
                    Text = "Todo", Font = Font.SystemFontOfSize(36), XAlign = TextAlignment.Center
                },
                                    xConstraint: Constraint.Constant(0),
                                    yConstraint: Constraint.Constant(10),
                                    widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width); }),
                                    heightConstraint: Constraint.Constant(listY - 10)
                                    );
            }



            layout.Children.Add(listView,
                                xConstraint: Constraint.Constant(0),
                                yConstraint: Constraint.Constant(listY),
                                widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width); }),
                                heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Height); })
                                );

            #region floating Add button for iOS and Android
            if (Device.OS != TargetPlatform.WinPhone)
            {
                // make floating (+) image at bottom of screen
                var tap = new TapGestureRecognizer(async(View obj) =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;

                    var b = newImage.Bounds;
                    b.X   = b.X + 5;
                    b.Y   = b.Y + 5;

                    await newImage.LayoutTo(b, 100);
                    b.X = b.X - 5;
                    b.Y = b.Y - 5;
                    await newImage.LayoutTo(b, 100);

                    Navigation.PushAsync(todoPage);
                });
                newImage = new Image
                {
                    Source       = "newitem.png",
                    WidthRequest = 40,
                    Opacity      = 0.8f
                };
                newImage.GestureRecognizers.Add(tap);

                layout.Children.Add(newImage,
                                    xConstraint: Constraint.RelativeToParent((parent) =>
                {
                    return((parent.Width / 2) - 20); // center of image (which is 40 wide)
                }),
                                    yConstraint: Constraint.RelativeToParent((parent) =>
                {
                    return(parent.Height - 60);
                }));
            }
            #endregion

            Content = layout;


            #region toolbar for WinPhone (only)
            if (Device.OS == TargetPlatform.WinPhone)
            {
                var tbi = new ToolbarItem("add", "add.png", () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
                ToolbarItems.Add(tbi);

                var tbi2 = new ToolbarItem("speak", "transport.play.png", () =>
                {
                    var todos   = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }
                    App.Speech.Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
            else
            {
                var tbi2 = new ToolbarItem("read", "chat.png", () =>
                {
                    var todos   = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }
                    App.Speech.Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
            #endregion
        }
Exemple #15
0
        public TodoListPage()
        {
            Title = "Todo";

            listView = new ListView();
            listView.ItemTemplate = new DataTemplate
                                        (typeof(TodoItemCell));
            listView.ItemSelected += (sender, e) => {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            };

            var layout = new StackLayout();

            if (Device.OS == TargetPlatform.WinPhone)               // WinPhone doesn't have the title showing
            {
                layout.Children.Add(new Label {
                    Text = "Todo",
                    Font = Font.SystemFontOfSize(NamedSize.Large)
                });
            }
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;

            #region toolbar
            ToolbarItem tbi = null;
            if (Device.OS == TargetPlatform.iOS)
            {
                tbi = new ToolbarItem("+", null, () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.Android)               // BUG: Android doesn't support the icon being null
            {
                tbi = new ToolbarItem("+", "plus", () => {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.WinPhone)
            {
                tbi = new ToolbarItem("Add", "add.png", () =>
                {
                    var todoItem            = new TodoItem();
                    var todoPage            = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }

            ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", null, () => {
                    var todos   = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }

                    DependencyService.Get <ITextToSpeech>().Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
            #endregion
        }
Exemple #16
0
        public TodoListPage()
        {
            Title = "Todo";

            NavigationPage.SetHasNavigationBar(this, true);

            listView = new ListView();
            listView.ItemTemplate = new DataTemplate(typeof(TodoItemCell));

//			listView.ItemSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
//			listView.ItemSource = new TodoItem [] {
//				new TodoItem {Name = "Buy pears`"},
//				new TodoItem {Name = "Buy oranges`", Done=true},
//				new TodoItem {Name = "Buy mangos`"},
//				new TodoItem {Name = "Buy apples`", Done=true},
//				new TodoItem {Name = "Buy bananas`", Done=true}
//			};

            listView.ItemSelected += (sender, e) => {
                if (e.SelectedItem == null)
                {
                    return;                     // ensures we ignore this handler when the selection is just being cleared
                }
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
                ((ListView)sender).SelectedItem = null;                 // clears the 'selected' background
            };

            // make floating (+) image at bottom of screen
            var tap = new TapGestureRecognizer(async(View obj) => {
                var todoItem            = new TodoItem();
                var todoPage            = new TodoItemPage();
                todoPage.BindingContext = todoItem;

                var b = newImage.Bounds;
                b.Y   = b.Y - 50;

                await newImage.LayoutTo(b, 250, Easing.SinIn);
                b.Y = b.Y + 50;
                await newImage.LayoutTo(b, 250, Easing.SinOut);

                Navigation.PushAsync(todoPage);
            });

            newImage = new Image {
                Source       = "newitem.png",
                WidthRequest = 40,
                Opacity      = 0.8f
            };
            newImage.GestureRecognizers.Add(tap);

            layout = new RelativeLayout();
            layout.Children.Add(listView,
                                xConstraint: Constraint.Constant(0),
                                yConstraint: Constraint.Constant(0),
                                widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width); }),
                                heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Height); }));
            layout.Children.Add(newImage,
                                xConstraint: Constraint.RelativeToParent((parent) =>
            {
                return((parent.Width / 2) - 20);                                // center of image (which is 40 wide)
            }),
                                yConstraint: Constraint.RelativeToParent((parent) =>
            {
                return(parent.Height - 60);
            }));
            Content = layout;


            #region toolbar
            var tbi = new ToolbarItem("+", "plus.png", () => {
                var todoItem            = new TodoItem();
                var todoPage            = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            }, 0, 0);

            ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", "chat.png", () => {
                    var todos   = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                    {
                        tospeak += t.Name + " ";
                    }
                    if (tospeak == "")
                    {
                        tospeak = "there are no tasks to do";
                    }
                    App.Speech.Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }
            #endregion
        }
Exemple #17
0
		public TodoListPage ()
		{
			Title = "Staff List";

			NavigationPage.SetHasNavigationBar (this, true);

			listView = new ListView {
				RowHeight = 40,
				ItemTemplate = new DataTemplate (typeof(TodoItemCell))
			};
					

			listView.ItemSelected += (sender, e) => {
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage ();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync (todoPage);
			};

			var lv = new ListView();
			lv.BackgroundColor = Color.Yellow;

			var layout = new StackLayout ();
			if (Device.OS == TargetPlatform.WinPhone) { // WinPhone doesn't have the title showing
				layout.Children.Add (new Label {
					Text = "Staff List",
					FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label)),
					FontAttributes = FontAttributes.Bold
				});
			}
			layout.Children.Add (listView);
			layout.VerticalOptions = LayoutOptions.FillAndExpand;
			Content = layout;


			ToolbarItem tbi = null;
			if (Device.OS == TargetPlatform.iOS) {
				tbi = new ToolbarItem ("+", null, () => {
					var todoItem = new TodoItem ();
					var todoPage = new TodoItemPage ();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync (todoPage);
				}, 0, 0);
			}
			if (Device.OS == TargetPlatform.Android) { // BUG: Android doesn't support the icon being null
				tbi = new ToolbarItem ("+", "plus", () => {
					var todoItem = new TodoItem ();
					var todoPage = new TodoItemPage ();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync (todoPage);
				}, 0, 0);
			}

			if (Device.OS == TargetPlatform.WinPhone) {
				tbi = new ToolbarItem ("Add", "add.png", () => {
					var todoItem = new TodoItem ();
					var todoPage = new TodoItemPage ();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync (todoPage);
				}, 0, 0);
			}

			ToolbarItems.Add (tbi);

			if (Device.OS == TargetPlatform.iOS) {
				var tbi2 = new ToolbarItem ("?", null, () => {
					var todos = App.Database.GetItemsNotDone ();
					var tospeak = "";
					foreach (var t in todos)
						tospeak += t.Name + " ";
					if (tospeak == "")
						tospeak = "there are no tasks to do";

					DependencyService.Get<ITextToSpeech> ().Speak (tospeak);
				}, 0, 0);
				ToolbarItems.Add (tbi2);
			}
		}
		public TodoListPage ()
		{
			Title = "Todo";

			NavigationPage.SetHasNavigationBar (this, true);

			listView = new ListView ();
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));

//			listView.ItemSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
//			listView.ItemSource = new TodoItem [] { 
//				new TodoItem {Name = "Buy pears`"}, 
//				new TodoItem {Name = "Buy oranges`", Done=true},
//				new TodoItem {Name = "Buy mangos`"}, 
//				new TodoItem {Name = "Buy apples`", Done=true},
//				new TodoItem {Name = "Buy bananas`", Done=true}
//			};

			listView.ItemSelected += (sender, e) => {
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			};

			var tap = new TapGestureRecognizer ((View obj) => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			});

			newImage = new Image ();
			newImage.Source = "new.png";
			newImage.WidthRequest = 40;
			newImage.GestureRecognizers.Add (tap);

			layout = new RelativeLayout ();
			layout.Children.Add (listView, 
				xConstraint: Constraint.Constant(0), 
				yConstraint: Constraint.Constant(0), 
				widthConstraint: Constraint.RelativeToParent ((parent) => {return parent.Width;}),
				heightConstraint: Constraint.RelativeToParent ((parent) => {return parent.Height;}));
			layout.Children.Add (newImage, 
				xConstraint: Constraint.RelativeToParent((parent) =>
					{
						return (parent.Width / 2) - 20; // center of image (which is 40 wide)
					}),
				yConstraint: Constraint.RelativeToParent((parent) =>
					{
						return parent.Height - 60;
					}));
			Content = layout;


			#region toolbar
			var tbi = new ToolbarItem ("+", null, () => {
				var todoItem = new TodoItem();
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
			}, 0, 0);
			if (Device.OS == TargetPlatform.Android) { // BUG: Android doesn't support the icon being null
				tbi = new ToolbarItem ("+", "plus", () => {
					var todoItem = new TodoItem();
					var todoPage = new TodoItemPage();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync(todoPage);
				}, 0, 0);
			}

			ToolbarItems.Add (tbi);

			if (Device.OS == TargetPlatform.iOS) {
				var tbi2 = new ToolbarItem ("?", null, () => {
					var todos = App.Database.GetItemsNotDone();
					var tospeak = "";
					foreach (var t in todos)
						tospeak += t.Name + " ";
					if (tospeak == "") tospeak = "there are no tasks to do";
					App.Speech.Speak(tospeak);
				}, 0, 0);
				ToolbarItems.Add (tbi2);
			}
			#endregion
		}
		public TodoListPage ()
		{
			Title = "Todo";

			listView = new ListView ();
			listView.ItemTemplate = new DataTemplate 
					(typeof (TodoItemCell));
			listView.ItemSelected += (sender, e) => {
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;

				((App)App.Current).ResumeAtTodoId = todoItem.ID;
				Debug.WriteLine("setting ResumeAtTodoId = " + todoItem.ID);

				Navigation.PushAsync(todoPage);
			};

			var layout = new StackLayout();
			if (Device.OS == TargetPlatform.WinPhone) { // WinPhone doesn't have the title showing
				layout.Children.Add(new Label{
					Text="Todo", 
					FontSize = Device.GetNamedSize (NamedSize.Large, typeof(Label))});
			}
			layout.Children.Add(listView);
			layout.VerticalOptions = LayoutOptions.FillAndExpand;
			Content = layout;

			#region toolbar
			ToolbarItem tbi = null;
			if (Device.OS == TargetPlatform.iOS)
			{
				tbi = new ToolbarItem("+", null, () =>
					{
						var todoItem = new TodoItem();
						var todoPage = new TodoItemPage();
						todoPage.BindingContext = todoItem;
						Navigation.PushAsync(todoPage);
					}, 0, 0);
			}
			if (Device.OS == TargetPlatform.Android) { // BUG: Android doesn't support the icon being null
				tbi = new ToolbarItem ("+", "plus", () => {
					var todoItem = new TodoItem();
					var todoPage = new TodoItemPage();
					todoPage.BindingContext = todoItem;
					Navigation.PushAsync(todoPage);
				}, 0, 0);
			}
			if (Device.OS == TargetPlatform.WinPhone)
			{
				tbi = new ToolbarItem("Add", "add.png", () =>
					{
						var todoItem = new TodoItem();
						var todoPage = new TodoItemPage();
						todoPage.BindingContext = todoItem;
						Navigation.PushAsync(todoPage);
					}, 0, 0);
			}

			ToolbarItems.Add (tbi);

			if (Device.OS == TargetPlatform.iOS) {
				var tbi2 = new ToolbarItem ("?", null, () => {
					var todos = App.Database.GetItemsNotDone();
					var tospeak = "";
					foreach (var t in todos)
						tospeak += t.Name + " ";
					if (tospeak == "") tospeak = "there are no tasks to do";

					DependencyService.Get<ITextToSpeech>().Speak(tospeak);
				}, 0, 0);
				ToolbarItems.Add (tbi2);
			}
			#endregion
		}
        public TodoListPage()
        {
            Title = "Todo";

            listView = new ListView {
                StyleId = "TodoList"
            };
            listView.ItemTemplate = new DataTemplate(typeof(TodoItemCell));

            listView.ItemSelected += async(sender, e) => {
                if (e.SelectedItem == null)
                {
                    return;                     // ensures we ignore this handler when the selection is just being cleared
                }
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                await Navigation.PushAsync(todoPage);

                ((ListView)sender).SelectedItem = null;                 // clears the 'selected' background
            };

            // make floating (+) image at bottom of screen
            var tap = new TapGestureRecognizer(async(View obj) => {
                var todoItem            = new TodoItem();
                var todoPage            = new TodoItemPage();
                todoPage.BindingContext = todoItem;

                var b = newImage.Bounds;
                b.Y   = b.Y - 50;

                await newImage.LayoutTo(b, 250, Easing.SinIn);
                b.Y = b.Y + 50;
                await newImage.LayoutTo(b, 250, Easing.SinOut);

                await Navigation.PushAsync(todoPage);
            });

            newImage = new Image {
                Source       = "newitem.png",
                WidthRequest = 40,
                Opacity      = 0.8f,
                StyleId      = "TodoAdd"
            };
            newImage.GestureRecognizers.Add(tap);

            AccessibilityEffect.SetAccessibilityTraits(newImage, AccessibilityTrait.Button);
            AccessibilityEffect.SetAccessibilityLabel(newImage, "Add new item");


            layout = new RelativeLayout();
            layout.Children.Add(listView,
                                xConstraint: Constraint.Constant(0),
                                yConstraint: Constraint.Constant(0),
                                widthConstraint: Constraint.RelativeToParent((parent) => { return(parent.Width); }),
                                heightConstraint: Constraint.RelativeToParent((parent) => { return(parent.Height); }));
            layout.Children.Add(newImage,
                                xConstraint: Constraint.RelativeToParent((parent) =>
            {
                return((parent.Width / 2) - 20);                                // center of image (which is 40 wide)
            }),
                                yConstraint: Constraint.RelativeToParent((parent) =>
            {
                return(parent.Height - 60);
            }));
            Content = layout;


            #region toolbar
            var tbiAdd = new ToolbarItem("+", "plus.png", () => {
                var todoItem            = new TodoItem();
                var todoPage            = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            }, 0, 0);
            tbiAdd.StyleId = "ToolbarAdd";
            //tbiAdd.Order = ToolbarItemOrder.Secondary;
            ToolbarItems.Add(tbiAdd);

            var tbiSpeak = new ToolbarItem("?", "chat.png", () => {
                var todos   = App.Database.GetItemsNotDone();
                var tospeak = "";
                foreach (var t in todos)
                {
                    tospeak += t.Name + " ";
                }
                if (tospeak == "")
                {
                    tospeak = "there are no tasks to do";
                }

                DependencyService.Get <ITextToSpeech>().Speak("Hello from Xamarin Forms");
            }, 0, 0);
            tbiSpeak.StyleId = "ToolbarSpeak";
            // demonstrate toolbar/optionmenu
            //tbiSpeak.Order = ToolbarItemOrder.Secondary;
            ToolbarItems.Add(tbiSpeak);

            #endregion
        }
        public TodoListPage()
        {
            Title = "Todo";

            NavigationPage.SetHasNavigationBar(this, true);

            listView = new ListView
            {
                RowHeight = 40
            };
            listView.ItemTemplate = new DataTemplate(typeof(TodoItemCell));

            // These commented-out lines were used to test the ListView prior to integrating the database
            //			listView.ItemSource = new string [] { "Buy pears", "Buy oranges", "Buy mangos", "Buy apples", "Buy bananas" };
            //			listView.ItemSource = new TodoItem [] { 
            //				new TodoItem {Name = "Buy pears`"}, 
            //				new TodoItem {Name = "Buy oranges`", Done=true},
            //				new TodoItem {Name = "Buy mangos`"}, 
            //				new TodoItem {Name = "Buy apples`", Done=true},
            //				new TodoItem {Name = "Buy bananas`", Done=true}
            //			};

            // HACK: workaround issue #894 for now
            if (Device.OS == TargetPlatform.iOS)
                listView.ItemsSource = new string[1] { "" };

            listView.ItemSelected += (sender, e) =>
            {
                var todoItem = (TodoItem)e.SelectedItem;
                var todoPage = new TodoItemPage();
                todoPage.BindingContext = todoItem;
                Navigation.PushAsync(todoPage);
            };

            var layout = new StackLayout();
            if (Device.OS == TargetPlatform.WinPhone)
            { // WinPhone doesn't have the title showing
                layout.Children.Add(new Label { Text = "Todo", Font = Font.BoldSystemFontOfSize(NamedSize.Large) });
            }
            layout.Children.Add(listView);
            layout.VerticalOptions = LayoutOptions.FillAndExpand;
            Content = layout;


            ToolbarItem tbi = null;
            if (Device.OS == TargetPlatform.iOS)
            {
                tbi = new ToolbarItem("+", null, () =>
                    {
                        var todoItem = new TodoItem();
                        var todoPage = new TodoItemPage();
                        todoPage.BindingContext = todoItem;
                        Navigation.PushAsync(todoPage);
                    }, 0, 0);
            }
            if (Device.OS == TargetPlatform.Android)
            { // BUG: Android doesn't support the icon being null
                tbi = new ToolbarItem("+", "plus", () =>
                {
                    var todoItem = new TodoItem();
                    var todoPage = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (Device.OS == TargetPlatform.WinPhone)
            {
                tbi = new ToolbarItem("Add", "add.png", () =>
                    {
                        var todoItem = new TodoItem();
                        var todoPage = new TodoItemPage();
                        todoPage.BindingContext = todoItem;
                        Navigation.PushAsync(todoPage);
                    }, 0, 0);
            }
                // WINRT
            if (Device.OS == TargetPlatform.Other)
            {
                tbi = new ToolbarItem("Add", "ms-appx:///add.png", () =>
                {
                    var todoItem = new TodoItem();
                    var todoPage = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
            }
            if (tbi != null)
                ToolbarItems.Add(tbi);

            if (Device.OS == TargetPlatform.iOS)
            {
                var tbi2 = new ToolbarItem("?", null, () =>
                {
                    var todos = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                        tospeak += t.Name + " ";
                    if (tospeak == "") tospeak = "there are no tasks to do";

                    DependencyService.Get<ITextToSpeech>().Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
            }

        }
		public TodoListPage ()
		{
			Title = "Todo";
			BackgroundColor = Constants.Yellow;
			NavigationPage.SetHasNavigationBar (this, true);
            int listY = 0;

			listView = new NotesListView ();
			listView.ItemTemplate = new DataTemplate (typeof (TodoItemCell));
			listView.BackgroundColor = Constants.Yellow;

			listView.ItemSelected += (sender, e) => {
				if (e.SelectedItem == null) {
					return; // ensures we ignore this handler when the selection is just being cleared
				}
				var todoItem = (TodoItem)e.SelectedItem;
				var todoPage = new TodoItemPage();
				todoPage.BindingContext = todoItem;
				Navigation.PushAsync(todoPage);
				((ListView)sender).SelectedItem = null; // clears the 'selected' background
			};

            layout = new RelativeLayout();

            if (Device.OS == TargetPlatform.WinPhone)
            {
                listY = 60;
                layout.Children.Add(new BoxView { BackgroundColor = Constants.Brown },
                    xConstraint: Constraint.Constant(0),
                    yConstraint: Constraint.Constant(0),
                    widthConstraint: Constraint.RelativeToParent((parent) => { return parent.Width; }),
                    heightConstraint: Constraint.Constant(listY)
                );
                layout.Children.Add(new Label { Text = "Todo", Font= Font.SystemFontOfSize(36), XAlign = TextAlignment.Center },
                    xConstraint: Constraint.Constant(0),
                    yConstraint: Constraint.Constant(10),
                    widthConstraint: Constraint.RelativeToParent((parent) => { return parent.Width; }),
                    heightConstraint: Constraint.Constant(listY - 10)
                );
            }

                

            layout.Children.Add(listView,
                xConstraint: Constraint.Constant(0),
                yConstraint: Constraint.Constant(listY),
                widthConstraint: Constraint.RelativeToParent((parent) => { return parent.Width; }),
                heightConstraint: Constraint.RelativeToParent((parent) => { return parent.Height; })
            );

            #region floating Add button for iOS and Android
            if (Device.OS != TargetPlatform.WinPhone)
            {
                // make floating (+) image at bottom of screen
                var tap = new TapGestureRecognizer(async (View obj) =>
                {
                    var todoItem = new TodoItem();
                    var todoPage = new TodoItemPage();
                    todoPage.BindingContext = todoItem;

                    var b = newImage.Bounds;
                    b.X = b.X + 5;
					b.Y = b.Y + 5;

                    await newImage.LayoutTo(b, 100);
                    b.X = b.X - 5;
					b.Y = b.Y - 5;
                    await newImage.LayoutTo(b, 100);

                    Navigation.PushAsync(todoPage);
                });
                newImage = new Image
                {
                    Source = "newitem.png",
                    WidthRequest = 40,
                    Opacity = 0.8f
                };
                newImage.GestureRecognizers.Add(tap);

                layout.Children.Add(newImage,
                xConstraint: Constraint.RelativeToParent((parent) =>
                {
                    return (parent.Width / 2) - 20; // center of image (which is 40 wide)
                }),
                yConstraint: Constraint.RelativeToParent((parent) =>
                {
                    return parent.Height - 60;
                }));
            }
            #endregion

			Content = layout;


			#region toolbar for WinPhone (only)
            if (Device.OS == TargetPlatform.WinPhone)
            {
                var tbi = new ToolbarItem("add", "add.png", () =>
                {
                    var todoItem = new TodoItem();
                    var todoPage = new TodoItemPage();
                    todoPage.BindingContext = todoItem;
                    Navigation.PushAsync(todoPage);
                }, 0, 0);
                ToolbarItems.Add(tbi);
			
                var tbi2 = new ToolbarItem("speak", "transport.play.png", () =>
                {
                    var todos = App.Database.GetItemsNotDone();
                    var tospeak = "";
                    foreach (var t in todos)
                        tospeak += t.Name + " ";
                    if (tospeak == "") tospeak = "there are no tasks to do";
                    App.Speech.Speak(tospeak);
                }, 0, 0);
                ToolbarItems.Add(tbi2);
			} else {
				var tbi2 = new ToolbarItem("read", "chat.png", () =>
					{
						var todos = App.Database.GetItemsNotDone();
						var tospeak = "";
						foreach (var t in todos)
							tospeak += t.Name + " ";
						if (tospeak == "") tospeak = "there are no tasks to do";
						App.Speech.Speak(tospeak);
					}, 0, 0);
				ToolbarItems.Add(tbi2);
			}
			#endregion
		}