private void PopupMenu_MenuItemClick(object sender, PopupMenu.MenuItemClickEventArgs e) { popupMenu.Dismiss(); switch (e.Item.ItemId) { case Resource.Id.edit: var intent = new Intent(ItemView.Context, typeof(EditOutcomeActivity)); var content = JsonConvert.SerializeObject(outcomeModel); intent.PutExtra("OutcomeDetail", content); ItemView.Context.StartActivity(intent); break; case Resource.Id.delete: ((Activity)ItemView.Context).RunOnUiThread(() => { ItemView.Context.ShowConfirmDialog(Resource.String.confirm, Resource.String.delete_outcome, () => { var dialog = ItemView.Context.CreateDialog(Resource.String.deleting_outcome, Resource.String.wait); dialog.Show(); ((Activity)ItemView.Context).DoRequest(OutComesController.Instance.Delete(OutcomeModel), () => { dialog.Dismiss(); DeleteClick?.Invoke(OutcomeModel, e); ItemView.Context.ShowMessage(Resource.String.delete_outcome_success); }); }, () => { }).Show(); }); break; } }
private void PopupMenu_MenuItemClick(object sender, PopupMenu.MenuItemClickEventArgs e) { popupMenu.Dismiss(); switch (e.Item.ItemId) { case Resource.Id.edit: var intent = new Intent(ItemView.Context, typeof(EditFeeActivity)); var content = JsonConvert.SerializeObject(moneyState.MoneyModel); intent.PutExtra("MoneyDetail", content); ItemView.Context.StartActivity(intent); break; case Resource.Id.delete: ((Activity)ItemView.Context).RunOnUiThread(() => { ItemView.Context.ShowConfirmDialog(Resource.String.delete_fee, Resource.String.confirm_delete, () => { var dialog = ItemView.Context.CreateDialog("Deleting fee", "Please wait"); dialog.Show(); // delete ((Activity)ItemView.Context).DoRequest(Task.Run(async() => { await MoneysController.Instance.Delete(moneyState.MoneyModel); foreach (var userMoneyModel in UserMoneysController.Instance.Values.Where(x => x.MoneyId == moneyState.MoneyModel.Id)) { await UserMoneysController.Instance.Delete(userMoneyModel); } }), () => { DeleteClick?.Invoke("Success", null); dialog.Dismiss(); }); }, () => { }).Show(); }); break; } }
protected override void OnAttached() { Effect = (CustomControl.PopupMenuControl.PopupMenu.InternalPopupEffect)Element.Effects.FirstOrDefault(e => e is CustomControl.PopupMenuControl.PopupMenu.InternalPopupEffect); if (Effect != null) { Effect.Parent.OnPopupRequest += OnPopupRequest; } MessagingCenter.Unsubscribe <string, string>("CustomControl", "ClosePopup"); if (Control != null || Container != null) { ToggleMenu = new Android.Widget.PopupMenu(Forms.Context, Control == null ? Container : Control); ToggleMenu.MenuItemClick += MenuItemClick; MessagingCenter.Subscribe <string, string>("CustomControl", "ClosePopup", (sender, args) => { Xamarin.Forms.Application.Current.Dispatcher.BeginInvokeOnMainThread(() => { ToggleMenu.Dismiss(); }); }); } }