Ejemplo n.º 1
0
		public override void ActionSheet(ActionSheetConfig config)
		{
			var array = config
				.Options
				.Select(x => x.Text)
				.ToArray();
			var dlg = new AlertDialog
				.Builder(this.getTopActivity())
				.SetCancelable(false)
				.SetTitle(config.Title);
			dlg.SetItems(array, (sender, args) => config.Options[args.Which].Action.TryExecute());
			if (config.Destructive != null)
				dlg.SetNegativeButton(config.Destructive.Text, (sender, e) => config.Destructive.Action.TryExecute());
			if (config.Cancel != null)
				dlg.SetNeutralButton(config.Cancel.Text, (sender, e) => config.Cancel.Action.TryExecute());
			Utils.RequestMainThread(() => dlg.Show());
		}
Ejemplo n.º 2
0
		public override void ActionSheet(ActionSheetConfig config)
		{
			if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
			{
				var sheet = UIAlertController.Create(config.Title ?? String.Empty, String.Empty, UIAlertControllerStyle.ActionSheet);
				config
					.Options
					.ToList()
					.ForEach(x => this.AddActionSheetOption(x, sheet, UIAlertActionStyle.Default));
				if (config.Destructive != null)
					this.AddActionSheetOption(config.Destructive, sheet, UIAlertActionStyle.Destructive);
				if (config.Cancel != null)
					this.AddActionSheetOption(config.Cancel, sheet, UIAlertActionStyle.Cancel);
				this.Present(sheet);
			}
			else
			{
				var view = this.GetTopView();
				var action = new UIActionSheet(config.Title);
				config.Options.ToList().ForEach(x => action.AddButton(x.Text));
				var count = config.Options.Count;
				if (config.Destructive != null)
				{
					action.AddButton(config.Destructive.Text);
					action.DestructiveButtonIndex = count++;
				}
				if (config.Cancel != null)
				{
					action.AddButton(config.Cancel.Text);
					action.CancelButtonIndex = count++;
				}
				action.Dismissed += (sender, btn) =>
				{
					if (btn.ButtonIndex == action.DestructiveButtonIndex)
						config.Destructive.TryExecute();
					else if (btn.ButtonIndex == action.CancelButtonIndex)
						config.Cancel.TryExecute();
					else if (btn.ButtonIndex > -1)
						config.Options[(int)btn.ButtonIndex].TryExecute();
				};
				action.ShowInView(view);
			}
		}
Ejemplo n.º 3
0
		/// <summary>
		/// Initializes a new instance of the <see cref="WF.Player.CartridgeListPage"/> class.
		/// </summary>
		/// <param name="cartridges">Cartridges to show.</param>
		public CartridgeListPage(CartridgeStore store)
		{
			this.cartridges = store;

			this.cartridges.CollectionChanged += HandleCartridgesCollectionChanged;

			// If the store is empty, than update it
			if (this.cartridges.Count == 0)
			{
				UpdateCartridges();
			}

			this.BindingContext = this;

			Title = Catalog.GetString("Cartridges");

			NavigationPage.SetTitleIcon(this, "HomeIcon.png");
			NavigationPage.SetBackButtonTitle(this, string.Empty);

			// Only show settings, if device is Android
			#if __ANDROID__

			this.ToolbarItems.Add(new ToolbarItem(Catalog.GetString("Settings"), null, () =>
				{
					App.Navigation.Popped += HandleSettingsClosed;
					App.Navigation.Navigation.PushAsync(new SettingsPage.SettingsPage());
				}, ToolbarItemOrder.Secondary));
			this.ToolbarItems.Add(new ToolbarItem(Catalog.GetString("Feedback"), null, () =>
				HockeyApp.FeedbackManager.ShowFeedbackActivity(Forms.Context), 
				ToolbarItemOrder.Secondary));
			this.ToolbarItems.Add(new ToolbarItem(Catalog.GetString("About"), null, () =>
				{
					App.Navigation.Navigation.PushAsync(new SettingsPage.AboutPage());
				}, ToolbarItemOrder.Secondary));
			this.ToolbarItems.Add(new ToolbarItem(Catalog.GetString("Quit"), null, () =>
				{
					DependencyService.Get<IExit>().ExitApp(0);
				}, ToolbarItemOrder.Secondary));

			#endif

			#if __IOS__

			var toolbarMenu = new ToolbarItem(Catalog.GetString("Menu"), null, () => { //"IconMenu.png", () => {
				App.Click();
				App.Navigation.Popped += HandleSettingsClosed;
				var cfg = new WF.Player.Services.UserDialogs.ActionSheetConfig().SetTitle(Catalog.GetString("Main Menu"));
				cfg.Add(Catalog.GetString("Settings"), () => App.Navigation.Navigation.PushAsync(new SettingsPage.SettingsPage()));
				cfg.Add(Catalog.GetString("Feedback"), () => HockeyApp.BITHockeyManager.SharedHockeyManager.FeedbackManager.ShowFeedbackListView());
				cfg.Add(Catalog.GetString("About"), () => App.Navigation.Navigation.PushAsync(new SettingsPage.AboutPage()));
				cfg.Cancel = new WF.Player.Services.UserDialogs.ActionSheetOption(Catalog.GetString("Cancel"), App.Click);
				UserDialogs.Instance.ActionSheet(cfg);
			});
			this.ToolbarItems.Add (toolbarMenu);

			#endif

			layout = new StackLayout() 
				{
					BackgroundColor = App.Colors.Background,
					VerticalOptions = LayoutOptions.FillAndExpand,
				};

			var listCellHeight = (int)(((DependencyService.Get<IScreen>().Width * 0.25) - 20) * 1.25 + 30);

			list = new ListView() 
				{
					BackgroundColor = App.Colors.Background,
					RowHeight = Device.OnPlatform<int>(110, 120, 120),
					HasUnevenRows = false,
					SeparatorColor = App.Colors.SeparatorLine,
					ItemsSource = cartridges,
					ItemTemplate = new DataTemplate(typeof(CartridgeListCell)),
					IsPullToRefreshEnabled = true,
					RefreshCommand = this.RefreshCommand,
			};

//			list.SetBinding<CartridgeListPage> (ListView.IsRefreshingProperty, vm => vm.IsBusy);
			list.ItemSelected += async (sender, e) =>
			{
				if (e.SelectedItem == null)
				{
					return;
				}

				App.Click();

				var cartridgeTag = (CartridgeTag)e.SelectedItem;
				var cartridgeDetailPage = new CartridgeDetailPage(new CartridgeDetailViewModel(cartridgeTag));

				await App.Navigation.PushAsync(cartridgeDetailPage, true);

				// Clear selection, so it is possible later select the same item
				list.SelectedItem = null;
			};

			layout.Children.Add(list);

			Content = layout;
		}
Ejemplo n.º 4
0
		private void ButtonTypePressed(object o)
		{
			App.Click();

			var cfg = new ActionSheetConfig();
			cfg.SetTitle(Vernacular.Catalog.GetString("Maptype"));
			cfg.Add(Vernacular.Catalog.GetString("Street"), () => HandleMapTypeSelection(MapType.Street));
			cfg.Add(Vernacular.Catalog.GetString("Satellite"), () => HandleMapTypeSelection(MapType.Satellite));
			cfg.Add(Vernacular.Catalog.GetString("Hybrid"), () => HandleMapTypeSelection(MapType.Hybrid));
			cfg.Cancel = new ActionSheetOption(Vernacular.Catalog.GetString("Cancel"), App.Click);

			UserDialogs.Instance.ActionSheet(cfg);
		}
Ejemplo n.º 5
0
		private void ButtonCenterPressed(object o)
		{
			App.Click();

			var cfg = new WF.Player.Services.UserDialogs.ActionSheetConfig().SetTitle(Catalog.GetString("Focus on"));

			if (App.Game != null)
			{
				// Center menu for inside of game
				cfg.Add(Catalog.GetString("Current Location"), () => HandleCenterLocation());
				cfg.Add(Catalog.GetString("Gamefield"), () => HandleCenterGamefield());
				cfg.Add(Catalog.GetString("Both"), () => HandleCenterBoth());
			}
			else
			{
				if (StartingLocation != null)
				{
					// Show in case we have a StartingLocation the center menu for outside of game
					cfg.Add(Catalog.GetString("Current Location"), () => HandleCenterLocation());
					cfg.Add(Catalog.GetString("Starting Location"), () => HandleCenterGamefield());
					cfg.Add(Catalog.GetString("Both"), () => HandleCenterBoth());
				}
				else
				{
					HandleCenterLocation();

					return;
				}
			}

			cfg.Cancel = new WF.Player.Services.UserDialogs.ActionSheetOption(Catalog.GetString("Cancel"), App.Click);

			UserDialogs.Instance.ActionSheet(cfg);
		}
Ejemplo n.º 6
0
		/// <summary>
		/// Executes the selected command.
		/// </summary>
		/// <param name="command">Command to execute.</param>
		private async void ExecuteCommand(WF.Player.Core.Command command)
		{
			if (command == null)
			{
				return;
			}

			// Notify user
			App.Click();

			if (command.CmdWith) 
			{
				if (command.TargetObjects.Count > 0) 
				{
					// There are one or more targets for this command
					var cfg = new ActionSheetConfig().SetTitle(command.Text);

					foreach (Thing t in command.TargetObjects)
					{
						cfg.Add(
							t.Name, 
							() => 
							{
								App.Click();
								command.Execute(t);
							});
					}

					cfg.Cancel = new ActionSheetOption(Catalog.GetString("Cancel"), App.Click);

					UserDialogs.Instance.ActionSheet(cfg);
				} 
				else 
				{
					// There are no target for this command
					await UserDialogs.Instance.AlertAsync(command.EmptyTargetListText, command.Text, Catalog.GetString("Ok"));
					App.Click();
				}
			} 
			else 
			{
				command.Execute();
			}
		}
Ejemplo n.º 7
0
		/// <summary>
		/// Handles the click of toolbar button, if there are more than one command active.
		/// </summary>
		/// <param name="obj">Object, which is clicked.</param>
		private void HandleCommandsClicked(object obj)
		{
			// Now show a list with all active commands
			var cfg = new ActionSheetConfig().SetTitle(Catalog.GetString("Actions"));

			foreach (WF.Player.Core.Command c in ((Thing)this.activeObject).ActiveCommands)
			{
				cfg.Add(
					c.Text, 
					() => 
					{
						ExecuteCommand(c);
					});
			}

			cfg.Cancel = new ActionSheetOption(Catalog.GetString("Cancel"), App.Click);

			UserDialogs.Instance.ActionSheet(cfg);
		}
Ejemplo n.º 8
0
		/// <summary>
		/// Handles the click of the button.
		/// </summary>
		/// <param name="sender">Sender of event.</param>
		private void HandleButtonClicked(object sender)
		{
			// Get active view
			var view = (GameInputView)App.GameNavigation.CurrentPage;

			if (this.input.InputType == WF.Player.Core.InputType.Unknown)
			{
				App.Game.ShowScreen(ScreenType.Last, null);
				this.input.GiveResult(null);
			}

			if (this.input.InputType == WF.Player.Core.InputType.Text)
			{
				// Click for button
				App.Click();

				// Remove the input screen
				App.Game.ShowScreen(ScreenType.Last, null);

				// Handle input of dialog
				this.input.GiveResult(inputText);
			}

			if (this.input.InputType == WF.Player.Core.InputType.MultipleChoice)
			{
				var cfg = new ActionSheetConfig().SetTitle(Catalog.GetString("Choose"));

				foreach (var c in this.input.Choices)
				{
					cfg.Add(
						c, 
						() =>
						{
							MultipleChoiceSelected(c);
						});
				}

				cfg.Cancel = new ActionSheetOption(Catalog.GetString("Cancel"), App.Click);

				UserDialogs.Instance.ActionSheet(cfg);
			}
		}
Ejemplo n.º 9
0
		/// <summary>
		/// Clicked on button.
		/// </summary>
		/// <param name="command">Command to execute.</param>
		/// <param name="parameter">Parameter for command.</param>
		private void HandleOverflowMenuClick(object parameter)
		{
			// Play any sound, if allowed
			App.Click();

			// Create overflow menu
			// Now show a list with all active commands
			var cfg = new ActionSheetConfig().SetTitle(OverflowMenuText);

			foreach (var b in buttons)
			{
				cfg.Add(b.Button.Text, () => KeyClick(b.Command, b.Button.Text));
			}

			cfg.Cancel = new ActionSheetOption(Catalog.GetString("Cancel"), App.Click);

			UserDialogs.Instance.ActionSheet(cfg);
		}
Ejemplo n.º 10
0
		public abstract void ActionSheet(ActionSheetConfig config);