Пример #1
0
        //private bool? _liveLocation;
        //public bool? LiveLocation
        //{
        //    get
        //    {
        //        return _liveLocation;
        //    }
        //    set
        //    {
        //        _liveLocation = value;

        //        LiveLocationButton.Visibility = value.HasValue ? Visibility.Visible : Visibility.Collapsed;
        //        LiveLocationLabel.Text = value == true ? Strings.Resources.SendLiveLocation : Strings.Resources.StopLiveLocation;

        //        LiveLocationButton.Visibility = Visibility.Collapsed;
        //    }
        //}

        public SendLocationPopup()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <SendLocationViewModel>();

            //PrimaryButtonText = Strings.Resources.Send;
            //SecondaryButtonText = Strings.Resources.Cancel;

            Loaded += OnLoaded;

            var debouncer = new EventDebouncer <object>(500, handler => mMap.CenterChanged += new TypedEventHandler <MapControl, object>(handler));

            debouncer.Invoked += async(s, args) =>
            {
                await UpdateLocationAsync(mMap.Center);
            };

            var debouncer1 = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => SearchField.TextChanged += new TextChangedEventHandler(handler));

            debouncer1.Invoked += (s, args) =>
            {
                if (string.IsNullOrWhiteSpace(SearchField.Text))
                {
                    ViewModel.Search = null;
                }
                else
                {
                    ViewModel.Find(SearchField.Text);
                }
            };
        }
Пример #2
0
        public AnimationDrawer()
        {
            InitializeComponent();

            _handler = new AnimatedListHandler(List);

            _zoomer              = new ZoomableListHandler(List);
            _zoomer.Opening      = _handler.UnloadVisibleItems;
            _zoomer.Closing      = _handler.ThrottleVisibleItems;
            _zoomer.DownloadFile = fileId => ViewModel.ProtoService.DownloadFile(fileId, 32);
            _zoomer.SessionId    = () => ViewModel.ProtoService.SessionId;

            ElementCompositionPreview.GetElementVisual(this).Clip = Window.Current.Compositor.CreateInsetClip();

            var header = DropShadowEx.Attach(Separator);

            header.Clip = header.Compositor.CreateInsetClip(0, 48, 0, -48);

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => FieldAnimations.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                ViewModel.Search(FieldAnimations.Text);
            };
        }
Пример #3
0
        private SharePopup()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <ShareViewModel>();

            //Title = Strings.Resources.ShareSendTo;
            PrimaryButtonText   = Strings.Resources.Send;
            SecondaryButtonText = Strings.Resources.Close;

            EmojiPanel.DataContext   = EmojiDrawerViewModel.GetForCurrentView(ViewModel.SessionId);
            CaptionInput.CustomEmoji = CustomEmoji;

            ViewModel.PropertyChanged += OnPropertyChanged;

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => SearchField.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += async(s, args) =>
            {
                var items = ViewModel.Search;
                if (items != null && string.Equals(SearchField.Text, items.Query))
                {
                    await items.LoadMoreItemsAsync(2);

                    await items.LoadMoreItemsAsync(3);
                }
            };
        }
Пример #4
0
        public SupergroupEditStickerSetPage()
        {
            InitializeComponent();
            Title = Strings.Resources.GroupStickers;

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => ShortName.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                ViewModel.CheckAvailability(ShortName.Value);
            };
        }
Пример #5
0
        public SupergroupEditStickerSetPage()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <SupergroupEditStickerSetViewModel>();

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => ShortName.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                ViewModel.CheckAvailability(ShortName.Value);
            };
        }
Пример #6
0
        public ChatSearchBar()
        {
            InitializeComponent();

            _debouncer          = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => Field.TextChanged += new TextChangedEventHandler(handler));
            _debouncer.Invoked += (s, args) =>
            {
                if (Field.State != ChatSearchState.Members)
                {
                    ViewModel?.Search(Field.Text, Field.From, Field.Filter?.Filter);
                }
            };
        }
Пример #7
0
        public ChannelCreateStep2Page()
        {
            InitializeComponent();
            Title = Strings.Resources.ChannelSettings;

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => Username.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                if (ViewModel.UpdateIsValid(Username.Value))
                {
                    ViewModel.CheckAvailability(Username.Value);
                }
            };
        }
        public SettingsUsernamePage()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <SettingsUsernameViewModel>();

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => Username.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                if (ViewModel.UpdateIsValid(Username.Text))
                {
                    ViewModel.CheckAvailability(Username.Text);
                }
            };
        }
Пример #9
0
        public ChannelCreateStep2Page()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <ChannelCreateStep2ViewModel, ISupergroupEditDelegate>(this);

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => Username.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                if (ViewModel.UpdateIsValid(Username.Value))
                {
                    ViewModel.CheckAvailability(Username.Value);
                }
            };
        }
Пример #10
0
        public SettingsUsernamePopup()
        {
            InitializeComponent();

            Title               = Strings.Resources.Username;
            PrimaryButtonText   = Strings.Resources.Done;
            SecondaryButtonText = Strings.Resources.Cancel;

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => Username.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                if (ViewModel.UpdateIsValid(Username.Text))
                {
                    ViewModel.CheckAvailability(Username.Text);
                }
            };
        }
        public SupergroupMembersView()
        {
            InitializeComponent();

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => SearchField.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                if (string.IsNullOrWhiteSpace(SearchField.Text))
                {
                    ViewModel.Search?.Clear();
                }
                else
                {
                    ViewModel.Find(SearchField.Text);
                }
            };
        }
Пример #12
0
        public SupergroupBannedPage()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <SupergroupBannedViewModel, ISupergroupDelegate>(this);

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => SearchField.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += (s, args) =>
            {
                if (string.IsNullOrWhiteSpace(SearchField.Text))
                {
                    ViewModel.Search?.Clear();
                }
                else
                {
                    ViewModel.Find(SearchField.Text);
                }
            };
        }
Пример #13
0
        public StickerDrawer()
        {
            InitializeComponent();

            ElementCompositionPreview.GetElementVisual(this).Clip = Window.Current.Compositor.CreateInsetClip();

            _handler        = new AnimatedListHandler(List);
            _toolbarHandler = new AnimatedListHandler(Toolbar);

            _zoomer              = new ZoomableListHandler(List);
            _zoomer.Opening      = _handler.UnloadVisibleItems;
            _zoomer.Closing      = _handler.ThrottleVisibleItems;
            _zoomer.DownloadFile = fileId => ViewModel.ProtoService.DownloadFile(fileId, 32);
            _zoomer.SessionId    = () => ViewModel.ProtoService.SessionId;

            _typeToItemHashSetMapping.Add("AnimatedItemTemplate", new HashSet <SelectorItem>());
            _typeToItemHashSetMapping.Add("VideoItemTemplate", new HashSet <SelectorItem>());
            _typeToItemHashSetMapping.Add("ItemTemplate", new HashSet <SelectorItem>());

            _typeToTemplateMapping.Add("AnimatedItemTemplate", Resources["AnimatedItemTemplate"] as DataTemplate);
            _typeToTemplateMapping.Add("VideoItemTemplate", Resources["VideoItemTemplate"] as DataTemplate);
            _typeToTemplateMapping.Add("ItemTemplate", Resources["ItemTemplate"] as DataTemplate);

            //_toolbarHandler = new AnimatedStickerHandler<StickerSetViewModel>(Toolbar);

            var header = DropShadowEx.Attach(Separator);

            header.Clip = header.Compositor.CreateInsetClip(0, 48, 0, -48);

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => FieldStickers.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += async(s, args) =>
            {
                var items = ViewModel.SearchStickers;
                if (items != null && string.Equals(FieldStickers.Text, items.Query))
                {
                    await items.LoadMoreItemsAsync(1);

                    await items.LoadMoreItemsAsync(2);
                }
            };
        }
Пример #14
0
        public NetworkService(IProtoService protoService, ISettingsService settingsService, IEventAggregator aggregator)
        {
            _protoService    = protoService;
            _settingsService = settingsService;
            _aggregator      = aggregator;

            _watcher   = HttpProxyWatcher.Current;
            _debouncer = new EventDebouncer <bool>(Constants.HoldingThrottle,
                                                   handler => _watcher.Changed += new TypedEventHandler <HttpProxyWatcher, bool>(handler),
                                                   handler => _watcher.Changed -= new TypedEventHandler <HttpProxyWatcher, bool>(handler), true);

            NetworkInformation.NetworkStatusChanged += OnNetworkStatusChanged;

            try
            {
                Update(NetworkInformation.GetInternetConnectionProfile());
            }
            catch { }

            Initialize();
        }
        public SupergroupAddRestrictedPage()
        {
            InitializeComponent();
            DataContext = TLContainer.Current.Resolve <SupergroupAddRestrictedViewModel>();

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => SearchField.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += async(s, args) =>
            {
                var items = ViewModel.Search;
                if (items != null && string.Equals(SearchField.Text, items.Query))
                {
                    await items.LoadMoreItemsAsync(0);

                    await items.LoadMoreItemsAsync(1);

                    await items.LoadMoreItemsAsync(2);

                    await items.LoadMoreItemsAsync(3);
                }
            };
        }
Пример #16
0
        public SupergroupAddRestrictedPage()
        {
            InitializeComponent();
            Title = Strings.Resources.ChannelBlockUser;

            var debouncer = new EventDebouncer <TextChangedEventArgs>(Constants.TypingTimeout, handler => SearchField.TextChanged += new TextChangedEventHandler(handler));

            debouncer.Invoked += async(s, args) =>
            {
                var items = ViewModel.Search;
                if (items != null && string.Equals(SearchField.Text, items.Query))
                {
                    await items.LoadMoreItemsAsync(0);

                    await items.LoadMoreItemsAsync(1);

                    await items.LoadMoreItemsAsync(2);

                    await items.LoadMoreItemsAsync(3);
                }
            };
        }