private void Repeater_ElementPrepared(ItemsRepeater sender, ItemsRepeaterElementPreparedEventArgs args)
 {
     if (args.Element is TreeViewItem)
     {
         (args.Element as TreeViewItem).RepeatedIndex = args.Index;
     }
 }
示例#2
0
 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
            {
            }
        }
示例#4
0
        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;
        }
示例#6
0
        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);
        }
示例#8
0
        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;
            }
        }
示例#10
0
        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;
        }
示例#11
0
        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;
        }
示例#12
0
        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;
        }
示例#13
0
        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;
        }
示例#14
0
        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;
                }
            }
        }
示例#15
0
        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;
        }
示例#16
0
        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;
        }