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; } } } } }
/// <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)); }