private void TreeViewItem_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var option = new FlyoutShowOptions(); if (args.TryGetPosition(sender, out Point p)) { option.Position = p; } if (((sender as FrameworkElement)?.DataContext as winui.TreeViewNode)?.Content is ViewModels.FileItemViewModel vm) { var menu = new MenuFlyout(); foreach (var item in Models.MenuCommand.GetMenuFlyoutItems(vm.MenuCommands)) { menu.Items.Add(item); } { var item = new MenuFlyoutItem() { Text = Application.ResourceLoader.Loader.GetString("Command/Property") }; item.DataContext = vm; item.Click += MenuFlyoutItem_Click_Property; menu.Items.Add(item); } menu.ShowAt(sender, option); } args.Handled = true; }
public static void ShowAt(this ContextRequestedEventArgs args, MenuFlyout flyout, FrameworkElement element) { if (flyout.Items.Count > 0 && args.TryGetPosition(element, out Point point)) { if (point.X < 0 || point.Y < 0) { point = new Point(Math.Max(point.X, 0), Math.Max(point.Y, 0)); } try { flyout.ShowAt(element, point); } catch { } } else if (flyout.Items.Count > 0) { try { flyout.ShowAt(element); } catch { } } args.Handled = true; }
private void AudioButton_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var b = sender as Button; LoadMediaFromTag(b); Debug.WriteLine(_fileLoaded); }
private void Proxy_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var proxy = element.DataContext as ProxyViewModel; if (proxy.Type is ProxyTypeMtproto || proxy.Type is ProxyTypeSocks5) { CreateFlyoutItem(ref flyout, ViewModel.ShareCommand, proxy, Strings.Resources.ShareFile); } CreateFlyoutItem(ref flyout, ViewModel.EditCommand, proxy, Strings.Resources.Edit); CreateFlyoutItem(ref flyout, ViewModel.RemoveCommand, proxy, Strings.Resources.Delete); if (flyout.Items.Count > 0 && args.TryGetPosition(sender, out Point point)) { if (point.X < 0 || point.Y < 0) { point = new Point(Math.Max(point.X, 0), Math.Max(point.Y, 0)); } flyout.ShowAt(sender, point); } }
private void Rate_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var rates = new double[] { 0.25, 0.5, 0.75, 1, 1.25, 1.50, 1.75, 2 }; for (int i = 0; i < rates.Length; i++) { var rate = rates[i]; var toggle = new ToggleMenuFlyoutItem { Text = $"{rate}", IsChecked = _playbackService.PlaybackRate == rate, CommandParameter = rate, Command = new RelayCommand <double>(x => { _playbackService.PlaybackRate = rate; RateButton.IsChecked = rate != 1; }) }; flyout.Items.Add(toggle); } flyout.ShowAt(RateButton, new FlyoutShowOptions { Placement = FlyoutPlacementMode.BottomEdgeAlignedRight }); }
private void ListView_ContextRequested(UIElement sender, ContextRequestedEventArgs e) { // Walk up the tree to find the ListViewItem. // There may not be one if the click wasn't on an item. var requestedElement = (FrameworkElement)e.OriginalSource; while ((requestedElement != sender) && !(requestedElement is ListViewItem)) { requestedElement = (FrameworkElement)VisualTreeHelper.GetParent(requestedElement); } if (requestedElement != sender) { // The context menu request was indeed for a ListViewItem. var model = (SampleDataModel)ItemListView.ItemFromContainer(requestedElement); Point point; if (e.TryGetPosition(requestedElement, out point)) { rootPage.NotifyUser($"Showing flyout for {model.Title} at {point}", NotifyType.StatusMessage); sharedFlyout.ShowAt(requestedElement, point); } else { // Not invoked via pointer, so let XAML choose a default location. rootPage.NotifyUser($"Showing flyout for {model.Title} at default location", NotifyType.StatusMessage); sharedFlyout.ShowAt(requestedElement); } e.Handled = true; } }
private void Message_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var message = element.Tag as Message; flyout.CreateFlyoutItem(MessageView_Loaded, ViewModel.MessageViewCommand, message, Strings.Resources.ShowInChat, new FontIcon { Glyph = Icons.Message }); flyout.CreateFlyoutItem(MessageDelete_Loaded, ViewModel.MessageDeleteCommand, message, Strings.Resources.Delete, new FontIcon { Glyph = Icons.Delete }); flyout.CreateFlyoutItem(MessageForward_Loaded, ViewModel.MessageForwardCommand, message, Strings.Resources.Forward, new FontIcon { Glyph = Icons.Forward }); flyout.CreateFlyoutItem(MessageSelect_Loaded, ViewModel.MessageSelectCommand, message, Strings.Additional.Select, new FontIcon { Glyph = Icons.Select }); flyout.CreateFlyoutItem(MessageSave_Loaded, ViewModel.MessageSaveCommand, message, Strings.Additional.SaveAs, new FontIcon { Glyph = Icons.SaveAs }); args.ShowAt(flyout, element); }
private void ImageView_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var item = element.Tag as GalleryItem; if (item == null) { return; } CreateFlyoutItem(ref flyout, item.CanView, ViewModel.ViewCommand, item, Strings.Resources.ShowInChat); CreateFlyoutItem(ref flyout, ViewModel.CanSave, ViewModel.SaveCommand, item, Strings.Additional.SaveAs); CreateFlyoutItem(ref flyout, ViewModel.CanOpenWith, ViewModel.OpenWithCommand, item, Strings.Resources.OpenInExternalApp); CreateFlyoutItem(ref flyout, ViewModel.CanDelete, ViewModel.DeleteCommand, item, Strings.Resources.Delete); if (flyout.Items.Count > 0 && args.TryGetPosition(sender, out Point point)) { if (point.X < 0 || point.Y < 0) { point = new Point(Math.Max(point.X, 0), Math.Max(point.Y, 0)); } flyout.ShowAt(sender, point); } }
private void TreeView_ContextRequested(UIElement sender, ContextRequestedEventArgs e) { var datacontext = (e.OriginalSource as FrameworkElement)?.DataContext; if (datacontext != null && (sender as FrameworkElement).DataContext != datacontext) { var args = new ContextMenuRequestedEventArgs(datacontext); ContextMenuRequested?.Invoke(this, args); if (args.MenuItems != null && args.MenuItems.Count > 0) { var menu = new MenuFlyout(); foreach (var item in args.MenuItems) { menu.Items.Add(item); } if (e.TryGetPosition(e.OriginalSource as UIElement, out Point p)) { menu.ShowAt(e.OriginalSource as UIElement, p); } else { menu.ShowAt(e.OriginalSource as UIElement, new FlyoutShowOptions() { Placement = FlyoutPlacementMode.Auto }); } e.Handled = true; } } }
private void StickerSet_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var stickerSet = element.Tag as StickerSetInfo; if (stickerSet == null || stickerSet.Id == 0) { return; } if (stickerSet.IsOfficial) { flyout.CreateFlyoutItem(ViewModel.StickerSetHideCommand, stickerSet, Strings.Resources.StickersHide, new FontIcon { Glyph = Icons.Archive }); } else { flyout.CreateFlyoutItem(ViewModel.StickerSetHideCommand, stickerSet, Strings.Resources.StickersHide, new FontIcon { Glyph = Icons.Archive }); flyout.CreateFlyoutItem(ViewModel.StickerSetRemoveCommand, stickerSet, Strings.Resources.StickersRemove, new FontIcon { Glyph = Icons.Delete }); //CreateFlyoutItem(ref flyout, ViewModel.StickerSetShareCommand, stickerSet, Strings.Resources.StickersShare); //CreateFlyoutItem(ref flyout, ViewModel.StickerSetCopyCommand, stickerSet, Strings.Resources.StickersCopy); } args.ShowAt(flyout, element); }
private async void Chat_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var viewModel = ViewModel; if (viewModel == null) { return; } var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var chat = element.Tag as Chat; var position = chat.GetPosition(ViewModel.Items.ChatList); if (position == null) { return; } var muted = ViewModel.CacheService.GetNotificationSettingsMuteFor(chat) > 0; flyout.CreateFlyoutItem(DialogArchive_Loaded, viewModel.ChatArchiveCommand, chat, chat.Positions.Any(x => x.List is ChatListArchive) ? Strings.Resources.Unarchive : Strings.Resources.Archive, new FontIcon { Glyph = Icons.Archive }); flyout.CreateFlyoutItem(DialogPin_Loaded, viewModel.ChatPinCommand, chat, position.IsPinned ? Strings.Resources.UnpinFromTop : Strings.Resources.PinToTop, new FontIcon { Glyph = position.IsPinned ? Icons.Unpin : Icons.Pin }); if (viewModel.Items.ChatList is ChatListFilter chatListFilter) { flyout.CreateFlyoutItem(viewModel.FolderRemoveCommand, (chatListFilter.ChatFilterId, chat), Strings.Resources.FilterRemoveFrom, new FontIcon { Glyph = "\uE92B", FontFamily = App.Current.Resources["TelegramThemeFontFamily"] as FontFamily }); } else { var response = await ViewModel.ProtoService.SendAsync(new GetChatListsToAddChat(chat.Id)) as ChatLists; if (response != null && response.ChatListsValue.Count > 0) { var filters = ViewModel.CacheService.ChatFilters; var item = new MenuFlyoutSubItem(); item.Text = Strings.Resources.FilterAddTo; item.Icon = new FontIcon { Glyph = "\uE929", FontFamily = App.Current.Resources["TelegramThemeFontFamily"] as FontFamily }; foreach (var chatList in response.ChatListsValue.OfType <ChatListFilter>()) { var filter = filters.FirstOrDefault(x => x.Id == chatList.ChatFilterId); if (filter != null) { item.Items.Add(new MenuFlyoutItem { Command = ViewModel.FolderAddCommand, CommandParameter = (filter.Id, chat), Text = filter.Title, Icon = new FontIcon { Glyph = Icons.FromFilter(Icons.ParseFilter(filter.IconName)), FontFamily = App.Current.Resources["TelegramThemeFontFamily"] as FontFamily } });
private void SubscriptionVideoList_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { if (sender == args.OriginalSource) { return; } if (sender is ListViewBase listViewBase) { if (args.OriginalSource is SelectorItem selectorItem) { selectorItem.DataContext = selectorItem.Content; } var subscVM = (listViewBase.DataContext as SubscriptionViewModel); var flyout = new VideoItemFlyout() { SourceVideoItems = subscVM.Videos, AllowSelection = false, }; flyout.ShowAt(args.OriginalSource as FrameworkElement); args.Handled = true; } }
private void Theme_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var element = sender as FrameworkElement; var theme = element.Tag as ThemeInfoBase; if (theme is ThemeSystemInfo) { return; } var flyout = new MenuFlyout(); flyout.CreateFlyoutItem(ViewModel.ThemeCreateCommand, theme, Strings.Resources.CreateNewThemeMenu, new FontIcon { Glyph = Icons.Theme }); if (!theme.IsOfficial) { flyout.CreateFlyoutSeparator(); flyout.CreateFlyoutItem(ViewModel.ThemeShareCommand, theme, Strings.Resources.ShareFile, new FontIcon { Glyph = Icons.Share }); flyout.CreateFlyoutItem(ViewModel.ThemeEditCommand, theme, Strings.Resources.Edit, new FontIcon { Glyph = Icons.Edit }); flyout.CreateFlyoutItem(ViewModel.ThemeDeleteCommand, theme, Strings.Resources.Delete, new FontIcon { Glyph = Icons.Delete }); } args.ShowAt(flyout, element); }
private void Proxy_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var proxy = List.ItemFromContainer(element) as ProxyViewModel; if (proxy is null or SystemProxyViewModel) { return; } if (proxy.Type is ProxyTypeMtproto or ProxyTypeSocks5) { flyout.CreateFlyoutItem(ViewModel.ShareCommand, proxy, Strings.Resources.ShareFile, new FontIcon { Glyph = Icons.Share }); } flyout.CreateFlyoutItem(ViewModel.EditCommand, proxy, Strings.Resources.Edit, new FontIcon { Glyph = Icons.Edit }); flyout.CreateFlyoutItem(ViewModel.RemoveCommand, proxy, Strings.Resources.Delete, new FontIcon { Glyph = Icons.Delete }); args.ShowAt(flyout, element); }
private void RootCanas_ContextRuested(Windows.UI.Xaml.UIElement sender, ContextRequestedEventArgs args) { if (args.TryGetPosition(RootCanvas, out Point p)) { args.Handled = true; PostEvent(DrawEvent.ContextMenu); } }
private void Message_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var message = element.Tag as MessageWithOwner; var selected = ViewModel.SelectedItems; if (selected.Count > 0) { if (selected.Contains(message)) { flyout.CreateFlyoutItem(ViewModel.MessagesForwardCommand, "Forward Selected", new FontIcon { Glyph = Icons.Share }); //if (chat.CanBeReported) //{ // flyout.CreateFlyoutItem(ViewModel.MessagesReportCommand, "Report Selected", new FontIcon { Glyph = Icons.ShieldError }); //} flyout.CreateFlyoutItem(ViewModel.MessagesDeleteCommand, "Delete Selected", new FontIcon { Glyph = Icons.Delete }); flyout.CreateFlyoutItem(ViewModel.MessagesUnselectCommand, "Clear Selection"); //flyout.CreateFlyoutSeparator(); //flyout.CreateFlyoutItem(ViewModel.MessagesCopyCommand, "Copy Selected as Text", new FontIcon { Glyph = Icons.DocumentCopy }); } else { flyout.CreateFlyoutItem(MessageSelect_Loaded, ViewModel.MessageSelectCommand, message, Strings.Resources.lng_context_select_msg, new FontIcon { Glyph = Icons.CheckmarkCircle }); } } else { flyout.CreateFlyoutItem(MessageView_Loaded, ViewModel.MessageViewCommand, message, Strings.Resources.ShowInChat, new FontIcon { Glyph = Icons.Comment }); flyout.CreateFlyoutItem(MessageDelete_Loaded, ViewModel.MessageDeleteCommand, message, Strings.Resources.Delete, new FontIcon { Glyph = Icons.Delete }); flyout.CreateFlyoutItem(MessageForward_Loaded, ViewModel.MessageForwardCommand, message, Strings.Resources.Forward, new FontIcon { Glyph = Icons.Share }); flyout.CreateFlyoutItem(MessageSelect_Loaded, ViewModel.MessageSelectCommand, message, Strings.Resources.lng_context_select_msg, new FontIcon { Glyph = Icons.CheckmarkCircle }); flyout.CreateFlyoutItem(MessageSave_Loaded, ViewModel.MessageSaveCommand, message, Strings.Resources.lng_mediaview_save_as, new FontIcon { Glyph = Icons.SaveAs }); } args.ShowAt(flyout, element); }
private void Sticker_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var element = sender as FrameworkElement; var sticker = element.Tag as StickerViewModel; if (sticker.StickerValue is File file && // Download for preview !file.Local.IsDownloadingCompleted && file.Local.CanBeDownloaded && !file.Local.IsDownloadingActive) { _stickers[file.Id].Add(sticker); sticker.ProtoService.DownloadFile(file.Id, 1); } var flyout = new MenuFlyout(); _previewFlyout = new Controls.MenuFlyoutMediaItem(sticker); flyout.Items.Add(_previewFlyout); flyout.CreateFlyoutSeparator(); flyout.CreateFlyoutItem(ViewModel.StickerViewCommand, (Sticker)sticker, Strings.Resources.ViewPackPreview, new FontIcon { Glyph = Icons.Stickers, FontFamily = Constants.SymbolThemeFontFamily }); if (ViewModel.ProtoService.IsStickerFavorite(sticker.StickerValue.Id)) { flyout.CreateFlyoutItem(ViewModel.StickerUnfaveCommand, (Sticker)sticker, Strings.Resources.DeleteFromFavorites, new FontIcon { Glyph = Icons.Unfavorite }); } else { flyout.CreateFlyoutItem(ViewModel.StickerFaveCommand, (Sticker)sticker, Strings.Resources.AddToFavorites, new FontIcon { Glyph = Icons.Favorite }); } if (ViewModel.Type == ViewModels.DialogType.History) { var chat = ViewModel.Chat; if (chat == null) { return; } var self = ViewModel.CacheService.IsSavedMessages(chat); flyout.CreateFlyoutSeparator(); flyout.CreateFlyoutItem(new RelayCommand <Sticker>(anim => ViewModel.StickerSendExecute(anim, null, true)), (Sticker)sticker, Strings.Resources.SendWithoutSound, new FontIcon { Glyph = Icons.Mute }); //flyout.CreateFlyoutItem(new RelayCommand<Sticker>(anim => ViewModel.StickerSendExecute(anim, true, null)), sticker.Get(), self ? Strings.Resources.SetReminder : Strings.Resources.ScheduleMessage, new FontIcon { Glyph = Icons.Schedule }); flyout.CreateFlyoutItem(new RelayCommand <Sticker>(anim => ViewModel.StickerSendExecute(anim)), (Sticker)sticker, Strings.Resources.Send, new FontIcon { Glyph = Icons.Send, FontFamily = Constants.TelegramThemeFontFamily }); } args.ShowAt(flyout, element); }
// This is not even remotely good MVVM but is the least-bad option given the way MenuFlyout and MenuFlyoutSubItem works public void Device_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { Windows.Foundation.Point clickPoint; if (!args.TryGetPosition(sender, out clickPoint)) { return; } _contextActionProvider.HandleDeviceContextRequested(this, sender, clickPoint); }
public void CustomContextRequested(object?sender, ContextRequestedEventArgs e) { if (sender is Border border && border.Child is TextBlock textBlock) { textBlock.Text = e.TryGetPosition(border, out var point) ? $"Context was requested with pointer at: {point.X:N0}, {point.Y:N0}" : "Context was requested without pointer"; e.Handled = true; } }
public void CustomContextRequested(object sender, ContextRequestedEventArgs e) { var border = (Border)sender; var textBlock = (TextBlock)border.Child; textBlock.Text = e.TryGetPosition(border, out var point) ? $"Context was requested with pointer at: {point.X:N0}, {point.Y:N0}" : "Context was requested without pointer"; e.Handled = true; }
private void Member_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var member = element.Tag as ChatMember; flyout.CreateFlyoutItem(ViewModel.MemberUnbanCommand, member, Strings.Resources.Unban); args.ShowAt(flyout, element); }
private void OnContextRequested(UIElement sender, ContextRequestedEventArgs args) { var animation = List.ItemFromContainer(sender) as Animation; if (animation == null) { return; } ItemContextRequested?.Invoke(sender, new ItemContextRequestedEventArgs <Animation>(animation, args)); }
private void Grid_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var requestedElement = sender as FrameworkElement; if (args.TryGetPosition(requestedElement, out Point point)) { sharedFlyout.ShowAt(requestedElement, point); } else { sharedFlyout.ShowAt(requestedElement); } }
private void Item_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var chat = element.DataContext as ChatFilterInfo; flyout.CreateFlyoutItem(ViewModel.DeleteCommand, chat, Strings.Resources.FilterDeleteItem, new FontIcon { Glyph = Icons.Delete }); args.ShowAt(flyout, element); }
private void flipView_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var option = new FlyoutShowOptions(); if (args.TryGetPosition(this, out Point p)) { option.Position = p; } if (sender is FrameworkElement fe && fe.Resources["ContextFlyout"] is MenuFlyout menuFlyout) { menuFlyout.ShowAt(this, option); } args.Handled = true; }
private void Member_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var member = element.Tag as ChatMember; var chat = ViewModel.Chat; if (chat == null) { return; } ChatMemberStatus status = null; if (chat.Type is ChatTypeBasicGroup basic) { status = ViewModel.ProtoService.GetBasicGroup(basic.BasicGroupId)?.Status; } else if (chat.Type is ChatTypeSupergroup super) { status = ViewModel.ProtoService.GetSupergroup(super.SupergroupId)?.Status; } if (status == null) { return; } CreateFlyoutItem(ref flyout, MemberPromote_Loaded, ViewModel.MemberPromoteCommand, status, member, Strings.Resources.SetAsAdmin); if (chat.Type is ChatTypeSupergroup) { CreateFlyoutItem(ref flyout, MemberRestrict_Loaded, ViewModel.MemberRestrictCommand, status, member, Strings.Resources.KickFromSupergroup); } CreateFlyoutItem(ref flyout, MemberRemove_Loaded, ViewModel.MemberRemoveCommand, status, member, Strings.Resources.KickFromGroup); if (flyout.Items.Count > 0 && args.TryGetPosition(sender, out Point point)) { if (point.X < 0 || point.Y < 0) { point = new Point(Math.Max(point.X, 0), Math.Max(point.Y, 0)); } flyout.ShowAt(sender, point); } }
private void Sticker_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var element = sender as FrameworkElement; var sticker = element.Tag as StickerViewModel; if (sticker == null) { return; } var flyout = new MenuFlyout(); flyout.CreateFlyoutItem(ViewModel.StickerViewCommand, (Sticker)sticker, Strings.Resources.ViewPackPreview, new FontIcon { Glyph = Icons.Stickers }); if (ViewModel.ProtoService.IsStickerFavorite(sticker.StickerValue.Id)) { flyout.CreateFlyoutItem(ViewModel.StickerUnfaveCommand, (Sticker)sticker, Strings.Resources.DeleteFromFavorites, new FontIcon { Glyph = Icons.Unfavorite }); } else { flyout.CreateFlyoutItem(ViewModel.StickerFaveCommand, (Sticker)sticker, Strings.Resources.AddToFavorites, new FontIcon { Glyph = Icons.Favorite }); } if (ViewModel.Type == ViewModels.DialogType.History) { var chat = ViewModel.Chat; if (chat == null) { return; } var self = ViewModel.CacheService.IsSavedMessages(chat); flyout.CreateFlyoutSeparator(); flyout.CreateFlyoutItem(new RelayCommand <Sticker>(anim => ViewModel.StickerSendExecute(anim, null, true)), (Sticker)sticker, Strings.Resources.SendWithoutSound, new FontIcon { Glyph = Icons.Mute }); //flyout.CreateFlyoutItem(new RelayCommand<Sticker>(anim => ViewModel.StickerSendExecute(anim, true, null)), sticker.Get(), self ? Strings.Resources.SetReminder : Strings.Resources.ScheduleMessage, new FontIcon { Glyph = Icons.Schedule }); } args.ShowAt(flyout, element); }
private void Member_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var member = element.Tag as ChatMember; var chat = ViewModel.Chat; if (chat == null || member == null) { return; } ChatMemberStatus status = null; if (chat.Type is ChatTypeBasicGroup basic) { status = ViewModel.ProtoService.GetBasicGroup(basic.BasicGroupId)?.Status; } else if (chat.Type is ChatTypeSupergroup super) { status = ViewModel.ProtoService.GetSupergroup(super.SupergroupId)?.Status; } if (status == null) { return; } if (chat.Type is ChatTypeSupergroup) { flyout.CreateFlyoutItem(MemberPromote_Loaded, ViewModel.MemberPromoteCommand, chat.Type, status, member, Strings.Resources.SetAsAdmin, new FontIcon { Glyph = Icons.Star }); flyout.CreateFlyoutItem(MemberRestrict_Loaded, ViewModel.MemberRestrictCommand, chat.Type, status, member, Strings.Resources.KickFromSupergroup, new FontIcon { Glyph = Icons.LockClosed }); } flyout.CreateFlyoutItem(MemberRemove_Loaded, ViewModel.MemberRemoveCommand, chat.Type, status, member, Strings.Resources.KickFromGroup, new FontIcon { Glyph = Icons.Block }); args.ShowAt(flyout, element); }
private async void ContactGrid_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { _pinnedContactManager = PinnedContactManager.GetDefault(); if (PinnedContactManager.IsSupported() && _pinnedContactManager.IsPinSurfaceSupported(PinnedContactSurface.Taskbar)) { Grid grid = sender as Grid; AppContact appContact = grid.DataContext as AppContact; if (appContact != null) { MenuFlyout menuFlyout = new MenuFlyout(); menuFlyout.Closed += MenuFlyout_Closed; string menuText = $"{Constants.CONTACT_CONTEXT_MENU_TEXT_PIN} {appContact.FirstName}"; string menuTag = Constants.CONTACT_CONTEXT_MENU_TAG_PIN; Contact contactToPinUnpin = await GetAggregateContactFromAppContactAsync(appContact); if (_pinnedContactManager.IsContactPinned(contactToPinUnpin, PinnedContactSurface.Taskbar)) { menuText = $"{Constants.CONTACT_CONTEXT_MENU_TEXT_UNPIN} {appContact.FirstName}"; menuTag = Constants.CONTACT_CONTEXT_MENU_TAG_UNPIN; } var menuFlyoutItem = new MenuFlyoutItem { Text = menuText, Tag = menuTag }; menuFlyoutItem.Click += MenuFlyoutItem_Click; menuFlyout.Items.Add(menuFlyoutItem); grid.ContextFlyout = menuFlyout; Point point; bool succeeded = args.TryGetPosition(grid, out point); if (succeeded) { menuFlyout.ShowAt(grid, point); } } } }
private void Chat_ContextRequested(UIElement sender, ContextRequestedEventArgs args) { var viewModel = ViewModel; if (viewModel == null) { return; } var flyout = new MenuFlyout(); var element = sender as FrameworkElement; var chat = element.Tag as Chat; var muted = ViewModel.CacheService.GetNotificationSettingsMuteFor(chat) > 0; flyout.CreateFlyoutItem(DialogPin_Loaded, viewModel.ChatPinCommand, chat, chat.IsPinned ? Strings.Resources.UnpinFromTop : Strings.Resources.PinToTop, new FontIcon { Glyph = chat.IsPinned ? Icons.Unpin : Icons.Pin }); flyout.CreateFlyoutItem(DialogArchive_Loaded, viewModel.ChatArchiveCommand, chat, chat.ChatList is ChatListArchive ? Strings.Resources.Unarchive : Strings.Resources.Archive, new FontIcon { Glyph = Icons.Archive }); flyout.CreateFlyoutItem(DialogNotify_Loaded, viewModel.ChatNotifyCommand, chat, muted ? Strings.Resources.UnmuteNotifications : Strings.Resources.MuteNotifications, new FontIcon { Glyph = muted ? Icons.Unmute : Icons.Mute }); flyout.CreateFlyoutItem(DialogMark_Loaded, viewModel.ChatMarkCommand, chat, chat.IsUnread() ? Strings.Resources.MarkAsRead : Strings.Resources.MarkAsUnread, new FontIcon { Glyph = chat.IsUnread() ? Icons.MarkAsRead : Icons.MarkAsUnread, FontFamily = App.Current.Resources["TelegramThemeFontFamily"] as FontFamily }); flyout.CreateFlyoutItem(DialogClear_Loaded, viewModel.ChatClearCommand, chat, Strings.Resources.ClearHistory, new FontIcon { Glyph = Icons.Clear }); flyout.CreateFlyoutItem(DialogDelete_Loaded, viewModel.ChatDeleteCommand, chat, DialogDelete_Text(chat), new FontIcon { Glyph = Icons.Delete }); if (AllowSelection && viewModel.SelectionMode != ListViewSelectionMode.Multiple) { flyout.CreateFlyoutSeparator(); flyout.CreateFlyoutItem(viewModel.ChatSelectCommand, chat, Strings.Additional.Select, new FontIcon { Glyph = Icons.Select }); } args.ShowAt(flyout, element); }