Пример #1
0
        private void RegisterSetPasswordScope()
        {
            _revealButton = this.GetTemplateChild(RevealButtonPartName) as Button;

            if (_revealButton != null)
            {
                var beginReveal = new PointerEventHandler(BeginReveal);
                var endReveal   = new PointerEventHandler(EndReveal);

                // Button will handle Pressed and Released, so we have subscribe to handled events too
                _revealButton.AddHandler(PointerPressedEvent, beginReveal, handledEventsToo: true);
                _revealButton.AddHandler(PointerReleasedEvent, endReveal, handledEventsToo: true);
                _revealButton.AddHandler(PointerExitedEvent, endReveal, handledEventsToo: true);
                _revealButton.AddHandler(PointerCanceledEvent, endReveal, handledEventsToo: true);

                _revealButtonSubscription.Disposable = Disposable.Create(() =>
                {
                    _revealButton.RemoveHandler(PointerPressedEvent, beginReveal);
                    _revealButton.RemoveHandler(PointerReleasedEvent, endReveal);
                    _revealButton.RemoveHandler(PointerExitedEvent, endReveal);
                    _revealButton.RemoveHandler(PointerCanceledEvent, endReveal);
                });
            }

            SetPasswordScope(true);
        }
Пример #2
0
        /// <summary>Load a specific keyboard from its definition file.</summary>
        /// <param name="uri">The location of the keyboard definition file.</param>
        /// <param name="style">The style to use for a keyboard key.</param>
        /// <returns>An async task,</returns>
        private async Task LoadKeyboard(Uri uri, Style style)
        {
            var file = await StorageFile.GetFileFromApplicationUriAsync(uri);
            using (var stream = await file.OpenStreamForReadAsync())
            {
                var textReader = (TextReader)new StreamReader(stream);
                string line;
                Dictionary<int, KeyInfo> allkeys = new Dictionary<int, KeyInfo>();
                var hasAltGrKey = false;
                var readKeys = false;
                var readDeadKeys = false;
                while (null != (line = await textReader.ReadLineAsync()))
                {
                    if (string.IsNullOrWhiteSpace(line) ||
                        line.StartsWith("#"))
                    {
                        continue;
                    }

                    if (line == "[Keys]")
                    {
                        readKeys = true;
                        readDeadKeys = false;
                    }
                    else if (line == "[DeadKeys]")
                    {
                        readKeys = false;
                        readDeadKeys = true;
                    }
                    else if (readKeys)
                    {
                        int row, col, span;
                        var info = this.ReadKeyDefinition(line, out row, out col, out span);
                        if (info == null)
                        {
                            continue;
                        }

                        hasAltGrKey |= info.HasAltGrCode;
                        allkeys[info.Scancode] = info;

                        this.Invoke(() =>
                        {
                            var button = new Button();
                            button.Content = info[SymbolIndex.Normal].Label;
                            Grid.SetColumn(button, col);
                            Grid.SetRow(button, row);
                            Grid.SetColumnSpan(button, span);
                            button.Style = style;
                            button.Tag = info;
                            button.IsTabStop = false;

                            button.AddHandler(UIElement.PointerPressedEvent, (PointerEventHandler)this.ButtonPressed, true);
                            button.AddHandler(UIElement.PointerReleasedEvent, (PointerEventHandler)this.ButtonReleased, true);
                            button.AddHandler(UIElement.PointerExitedEvent, (PointerEventHandler)this.ButtonReleased, true);

                            this.MainGrid.Children.Add(button);
                        });
                    }
                    else if (readDeadKeys)
                    {
                        this.ReadDeadKeyDefinition(line, allkeys);
                    }
                }

                this.allKeys = allkeys;
                this.usesAltGr = hasAltGrKey;
            }
        }