private void Repeater_ElementPrepared(ItemsRepeater sender, ItemsRepeaterElementPreparedEventArgs args) { if (args.Element is TreeViewItem) { (args.Element as TreeViewItem).RepeatedIndex = args.Index; } }
private void groupRepeater_ElementPrepared(ItemsRepeater sender, ItemsRepeaterElementPreparedEventArgs args) { if (args.Element is GroupedRepeaterItem) { (args.Element as GroupedRepeaterItem).RepeatedIndex = args.Index; } }
private void Repeater_ElementPrepared(ItemsRepeater sender, ItemsRepeaterElementPreparedEventArgs args) { try { Border b = args.Element as Border; b.Name = "B" + args.Index; TextBox txt = b.Child as TextBox; txt.Name = txt.Text; if (args.Index == 7) { b.Visibility = Visibility.Collapsed; } } catch { } }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var content = button.Content as Grid; var nearby = button.DataContext as ChatNearby; var chat = ViewModel.CacheService.GetChat(nearby.ChatId); if (chat == null) { return; } var title = content.Children[1] as TextBlock; title.Text = ViewModel.ProtoService.GetTitle(chat); if (ViewModel.CacheService.TryGetSupergroup(chat, out Supergroup supergroup)) { var subtitle = content.Children[2] as TextBlock; subtitle.Text = string.Format("{0}, {1}", Converter.Distance(nearby.Distance), Locale.Declension("Members", supergroup.MemberCount)); } else { var subtitle = content.Children[2] as TextBlock; subtitle.Text = Converter.Distance(nearby.Distance); } var photo = content.Children[0] as ProfilePicture; photo.Source = PlaceholderHelper.GetChat(ViewModel.ProtoService, chat, 36); button.Command = ViewModel.OpenChatCommand; button.CommandParameter = nearby; }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var content = button.Content as Grid; var chat = button.DataContext as Chat; var title = content.Children[1] as TextBlock; title.Text = ViewModel.ProtoService.GetTitle(chat); //if (ViewModel.CacheService.TryGetSupergroup(chat, out Supergroup supergroup)) //{ // var subtitle = content.Children[2] as TextBlock; // subtitle.Text = string.Format("{0}, {1}", BindConvert.Distance(nearby.Distance), Locale.Declension("Members", supergroup.MemberCount)); //} //else //{ // var subtitle = content.Children[2] as TextBlock; // subtitle.Text = BindConvert.Distance(nearby.Distance); //} var photo = content.Children[0] as ProfilePicture; photo.SetChat(ViewModel.ProtoService, chat, 36); //button.Command = ViewModel.OpenChatCommand; //button.CommandParameter = nearby; }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var content = button.Content as Grid; var chat = sender.ItemsSourceView.GetAt(args.Index) as Chat; var title = content.Children[1] as TextBlock; title.Text = ViewModel.ProtoService.GetTitle(chat); if (ViewModel.CacheService.TryGetSupergroup(chat, out Supergroup supergroup)) { var subtitle = content.Children[2] as TextBlock; if (string.IsNullOrEmpty(supergroup.Username)) { subtitle.Text = Locale.Declension(supergroup.IsChannel ? "Subscribers" : "Members", supergroup.MemberCount); } else { subtitle.Text = $"@{supergroup.Username}"; } } var photo = content.Children[0] as ProfilePicture; photo.Source = PlaceholderHelper.GetChat(ViewModel.ProtoService, chat, 36); button.Command = ViewModel.LinkCommand; button.CommandParameter = chat; }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var item = ElementCompositionPreview.GetElementVisual(args.Element); var svVisual = ElementCompositionPreview.GetElementVisual(sv); var scrollProperties = ElementCompositionPreview.GetScrollViewerManipulationPropertySet(sv); var scaleExpresion = scrollProperties.Compositor.CreateExpressionAnimation(); scaleExpresion.SetReferenceParameter("svVisual", svVisual); scaleExpresion.SetReferenceParameter("scrollProperties", scrollProperties); scaleExpresion.SetReferenceParameter("item", item); // scale the item based on the distance of the item relative to the center of the viewport. scaleExpresion.Expression = "1 - abs((svVisual.Size.Y/2 - scrollProperties.Translation.Y) - (item.Offset.Y + item.Size.Y/2))*(.25/(svVisual.Size.Y/2))"; item.StartAnimation("Scale.X", scaleExpresion); item.StartAnimation("Scale.Y", scaleExpresion); var centerPointExpression = scrollProperties.Compositor.CreateExpressionAnimation(); centerPointExpression.SetReferenceParameter("item", item); centerPointExpression.Expression = "Vector3(item.Size.X/2, item.Size.Y/2, 0)"; item.StartAnimation("CenterPoint", centerPointExpression); }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var item = sender.ItemsSourceView.GetAt(args.Index); if (item is User user) { var button = args.Element as Button; var content = button.Content as Grid; var title = content.Children[1] as TextBlock; title.Text = user.GetFullName(); var photo = content.Children[0] as ProfilePicture; photo.Source = PlaceholderHelper.GetUser(_protoService, user, 36); button.Click += User_Click; } else if (item is PollResultViewModel option) { var headered = args.Element as HeaderedControl; headered.Header = $"{option.Text} — {option.VotePercentage}%"; headered.Footer = Locale.Declension(option.Type is PollTypeQuiz ? "Answer" : "Vote", option.VoterCount); headered.Visibility = option.VoterCount > 0 ? Visibility.Visible : Visibility.Collapsed; } }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var content = button.Content as Grid; var title = content.Children[1] as TextBlock; var subtitle = content.Children[2] as TextBlock; var photo = content.Children[0] as ProfilePicture; if (button.DataContext is ChatStatisticsMessageSenderInfo senderInfo) { var user = ViewModel.CacheService.GetUser(senderInfo.UserId); if (user == null) { return; } var stringBuilder = new StringBuilder(); if (senderInfo.SentMessageCount > 0) { stringBuilder.Append(Locale.Declension("messages", senderInfo.SentMessageCount)); } if (senderInfo.AverageCharacterCount > 0) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.AppendFormat(Strings.Resources.CharactersPerMessage, Locale.Declension("Characters", senderInfo.AverageCharacterCount)); } title.Text = user.GetFullName(); subtitle.Text = stringBuilder.ToString(); photo.Source = PlaceholderHelper.GetUser(ViewModel.ProtoService, user, 36); button.Command = ViewModel.OpenProfileCommand; button.CommandParameter = senderInfo.UserId; } else if (button.DataContext is ChatStatisticsAdministratorActionsInfo adminInfo) { var user = ViewModel.CacheService.GetUser(adminInfo.UserId); if (user == null) { return; } var stringBuilder = new StringBuilder(); if (adminInfo.DeletedMessageCount > 0) { stringBuilder.Append(Locale.Declension("Deletions", adminInfo.DeletedMessageCount)); } if (adminInfo.BannedUserCount > 0) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.Append(Locale.Declension("Bans", adminInfo.BannedUserCount)); } if (adminInfo.RestrictedUserCount > 0) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.Append(Locale.Declension("Restrictions", adminInfo.RestrictedUserCount)); } title.Text = user.GetFullName(); subtitle.Text = stringBuilder.ToString(); photo.Source = PlaceholderHelper.GetUser(ViewModel.ProtoService, user, 36); button.Command = ViewModel.OpenProfileCommand; button.CommandParameter = adminInfo.UserId; } else if (button.DataContext is ChatStatisticsInviterInfo inviterInfo) { var user = ViewModel.CacheService.GetUser(inviterInfo.UserId); if (user == null) { return; } if (inviterInfo.AddedMemberCount > 0) { subtitle.Text = Locale.Declension("Invitations", inviterInfo.AddedMemberCount); } else { subtitle.Text = string.Empty; } title.Text = user.GetFullName(); photo.Source = PlaceholderHelper.GetUser(ViewModel.ProtoService, user, 36); button.Command = ViewModel.OpenProfileCommand; button.CommandParameter = inviterInfo.UserId; } }
private void Recommended_ElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var content = args.Element as Grid; var filter = content.DataContext as RecommendedChatFilter; var button = content.Children[0] as BadgeButton; var add = content.Children[1] as Button; button.Content = filter.Filter.Title; button.Badge = filter.Description; add.Command = ViewModel.RecommendCommand; add.CommandParameter = filter; }
private void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var content = button.Content as Grid; var element = button.DataContext as ChatFilterElement; var title = content.Children[1] as TextBlock; var photo = content.Children[0] as ProfilePicture; if (element is FilterChat chat) { title.Text = ViewModel.ProtoService.GetTitle(chat.Chat); photo.Source = PlaceholderHelper.GetChat(ViewModel.ProtoService, chat.Chat, 36); } else if (element is FilterFlag flag) { switch (flag.Flag) { case ChatListFilterFlags.IncludeContacts: title.Text = Strings.Resources.FilterContacts; break; case ChatListFilterFlags.IncludeNonContacts: title.Text = Strings.Resources.FilterNonContacts; break; case ChatListFilterFlags.IncludeGroups: title.Text = Strings.Resources.FilterGroups; break; case ChatListFilterFlags.IncludeChannels: title.Text = Strings.Resources.FilterChannels; break; case ChatListFilterFlags.IncludeBots: title.Text = Strings.Resources.FilterBots; break; case ChatListFilterFlags.ExcludeMuted: title.Text = Strings.Resources.FilterMuted; break; case ChatListFilterFlags.ExcludeRead: title.Text = Strings.Resources.FilterRead; break; case ChatListFilterFlags.ExcludeArchived: title.Text = Strings.Resources.FilterArchived; break; } photo.Source = PlaceholderHelper.GetGlyph(MainPage.GetFilterIcon(flag.Flag), (int)flag.Flag, 36); } //button.Command = ViewModel.OpenChatCommand; //button.CommandParameter = nearby; }
private void Items_ElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var filter = button.DataContext as ChatFilterInfo; button.Content = filter.Title; button.Command = ViewModel.EditCommand; button.CommandParameter = filter; }
private void ItemsRepeater_ElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var repeaterDataContext = sender.DataContext; Image MyImage = args.Element as Image; MyImage.DataContext = repeaterDataContext; }
private async void OnElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as Button; var content = button.Content as Grid; var title = content.Children[1] as TextBlock; var subtitle = content.Children[2] as TextBlock; if (button.DataContext is MessageInteractionCounters counters) { var photo = content.Children[0] as Image; var views = content.Children[3] as TextBlock; var shares = content.Children[4] as TextBlock; var caption = counters.Message.GetCaption(); if (string.IsNullOrEmpty(caption?.Text)) { var message = counters.Message; if (message.Content is MessageVoiceNote) { title.Text = Strings.Resources.AttachAudio; } else if (message.Content is MessageVideo) { title.Text = Strings.Resources.AttachVideo; } else if (message.Content is MessageAnimation) { title.Text = Strings.Resources.AttachGif; } else if (message.Content is MessageAudio audio) { var performer = string.IsNullOrEmpty(audio.Audio.Performer) ? null : audio.Audio.Performer; var titloe = string.IsNullOrEmpty(audio.Audio.Title) ? null : audio.Audio.Title; if (performer == null || titloe == null) { title.Text = Strings.Resources.AttachMusic; } else { title.Text = $"\uD83C\uDFB5 {performer} - {titloe}"; } } else if (message.Content is MessageDocument document) { if (string.IsNullOrEmpty(document.Document.FileName)) { title.Text = Strings.Resources.AttachDocument; } else { title.Text = document.Document.FileName; } } else if (message.Content is MessageInvoice invoice) { title.Text = invoice.Title; } else if (message.Content is MessageContact) { title.Text = Strings.Resources.AttachContact; } else if (message.Content is MessageAnimatedEmoji animatedEmoji) { title.Text = animatedEmoji.Emoji; } else if (message.Content is MessageLocation location) { title.Text = location.LivePeriod > 0 ? Strings.Resources.AttachLiveLocation : Strings.Resources.AttachLocation; } else if (message.Content is MessageVenue) { title.Text = Strings.Resources.AttachLocation; } else if (message.Content is MessagePhoto) { title.Text = Strings.Resources.AttachPhoto; } else if (message.Content is MessagePoll poll) { title.Text = "\uD83D\uDCCA " + poll.Poll.Question; } else if (message.Content is MessageCall call) { title.Text = call.ToOutcomeText(message.IsOutgoing); } else if (message.Content is MessageUnsupported) { title.Text = Strings.Resources.UnsupportedAttachment; } } else { title.Text = caption.Text.Replace('\n', ' '); } subtitle.Text = Converter.DateAt(counters.Message.Date); views.Text = Locale.Declension("Views", counters.ViewCount); shares.Text = Locale.Declension("Shares", counters.ForwardCount); var thumbnail = counters.Message.GetMinithumbnail(); if (thumbnail != null) { double ratioX = (double)36 / thumbnail.Width; double ratioY = (double)36 / thumbnail.Height; double ratio = Math.Max(ratioX, ratioY); var width = (int)(thumbnail.Width * ratio); var height = (int)(thumbnail.Height * ratio); var bitmap = new BitmapImage { DecodePixelWidth = width, DecodePixelHeight = height, DecodePixelType = DecodePixelType.Logical }; var bytes = thumbnail.Data.ToArray(); using (var stream = new System.IO.MemoryStream(bytes)) { var random = System.IO.WindowsRuntimeStreamExtensions.AsRandomAccessStream(stream); await bitmap.SetSourceAsync(random); } photo.Source = bitmap; photo.Visibility = Visibility.Visible; } else { photo.Visibility = Visibility.Collapsed; photo.Source = null; } button.CommandParameter = counters.Message; button.Command = ViewModel.OpenPostCommand; } else { var photo = content.Children[0] as ProfilePicture; if (button.DataContext is ChatStatisticsMessageSenderInfo senderInfo) { var user = ViewModel.CacheService.GetUser(senderInfo.UserId); if (user == null) { return; } var stringBuilder = new StringBuilder(); if (senderInfo.SentMessageCount > 0) { stringBuilder.Append(Locale.Declension("messages", senderInfo.SentMessageCount)); } if (senderInfo.AverageCharacterCount > 0) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.AppendFormat(Strings.Resources.CharactersPerMessage, Locale.Declension("Characters", senderInfo.AverageCharacterCount)); } title.Text = user.GetFullName(); subtitle.Text = stringBuilder.ToString(); photo.SetUser(ViewModel.ProtoService, user, 36); button.CommandParameter = senderInfo.UserId; button.Command = ViewModel.OpenProfileCommand; } else if (button.DataContext is ChatStatisticsAdministratorActionsInfo adminInfo) { var user = ViewModel.CacheService.GetUser(adminInfo.UserId); if (user == null) { return; } var stringBuilder = new StringBuilder(); if (adminInfo.DeletedMessageCount > 0) { stringBuilder.Append(Locale.Declension("Deletions", adminInfo.DeletedMessageCount)); } if (adminInfo.BannedUserCount > 0) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.Append(Locale.Declension("Bans", adminInfo.BannedUserCount)); } if (adminInfo.RestrictedUserCount > 0) { if (stringBuilder.Length > 0) { stringBuilder.Append(", "); } stringBuilder.Append(Locale.Declension("Restrictions", adminInfo.RestrictedUserCount)); } title.Text = user.GetFullName(); subtitle.Text = stringBuilder.ToString(); photo.SetUser(ViewModel.ProtoService, user, 36); button.CommandParameter = adminInfo.UserId; button.Command = ViewModel.OpenProfileCommand; } else if (button.DataContext is ChatStatisticsInviterInfo inviterInfo) { var user = ViewModel.CacheService.GetUser(inviterInfo.UserId); if (user == null) { return; } if (inviterInfo.AddedMemberCount > 0) { subtitle.Text = Locale.Declension("Invitations", inviterInfo.AddedMemberCount); } else { subtitle.Text = string.Empty; } title.Text = user.GetFullName(); photo.SetUser(ViewModel.ProtoService, user, 36); button.CommandParameter = inviterInfo.UserId; button.Command = ViewModel.OpenProfileCommand; } } }
private void Recommended_ElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var content = args.Element as StackPanel; var filter = content.DataContext as RecommendedChatFilter; var grid = content.Children[0] as Grid; var button = grid.Children[0] as BadgeButton; var add = grid.Children[1] as Button; var separator = content.Children[1]; var icon = Icons.ParseFilter(filter.Filter); button.Glyph = Icons.FilterToGlyph(icon).Item1; button.Content = filter.Filter.Title; button.Badge = filter.Description; add.Command = ViewModel.RecommendCommand; add.CommandParameter = filter; separator.Visibility = args.Index < sender.ItemsSourceView.Count - 1 ? Visibility.Visible : Visibility.Collapsed; }
private void Items_ElementPrepared(Microsoft.UI.Xaml.Controls.ItemsRepeater sender, Microsoft.UI.Xaml.Controls.ItemsRepeaterElementPreparedEventArgs args) { var button = args.Element as BadgeButton; var filter = button.DataContext as ChatFilterInfo; var icon = Icons.ParseFilter(filter.IconName); button.Glyph = Icons.FilterToGlyph(icon).Item1; button.Content = filter.Title; button.Command = ViewModel.EditCommand; button.CommandParameter = filter; button.ChevronGlyph = args.Index < ViewModel.CacheService.Options.ChatFilterCountMax ? Icons.ChevronRight : Icons.LockClosed; }