示例#1
0
        private void SearchCurrentView()
        {
            int totalCount = 0;

            if (_state != CocoJumperState.Searching)
            {
                throw new InvalidStateException($"{nameof(SearchCurrentView)} - wrong state");
            }

            _searchResults.Clear();
            if (!_isWordSearch &&
                string.IsNullOrEmpty(_searchString))
            {
                return;
            }

            using (IEnumerator <string> keyboardKeys =
                       KeyboardLayoutHelper
                       .GetKeysNotNull(_isWordSearch ? 'l' : _searchString[_searchString.Length - 1])
                       .GetEnumerator())
            {
                foreach (LineData item in _viewProvider.GetCurrentRenderedText())
                {
                    if (_isWordSearch)
                    {
                        PerformWordSearching(item, keyboardKeys);
                        continue;
                    }

                    int n = 0;
                    while ((n = item.Data.IndexOf(_searchString, n, StringComparison.InvariantCulture)) != -1)
                    {
                        keyboardKeys.MoveNext();

                        _searchResults.Add(new SearchResult
                        {
                            Length   = _searchString.Length,
                            Position = n + item.Start,
                            Key      = keyboardKeys.Current
                        });

                        n += _searchString.Length;

                        if (_searchLimit != 0 && ++totalCount > _searchLimit)
                        {
                            return;
                        }
                    }
                }
            }
        }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="KPDOnScreenKeyboardViewModel"/> class.
 /// </summary>
 /// <param name="kpdFileLocation">The KPD file location.</param>
 public KPDOnScreenKeyboardViewModel(string kpdFileLocation)
 {
     BuildKeyboardLayout(KeyboardLayoutHelper.GetLayout(kpdFileLocation));
 }