]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Merge pull request #26 from Kteby/master
authorReimar Döffinger <rdoeffinger@users.noreply.github.com>
Sat, 30 Jan 2016 09:36:22 +0000 (10:36 +0100)
committerReimar Döffinger <rdoeffinger@users.noreply.github.com>
Sat, 30 Jan 2016 09:36:22 +0000 (10:36 +0100)
Hide virtual keyboard if searchView text was changed programatically.

1  2 
src/com/hughes/android/dictionary/DictionaryActivity.java

index e0290b065eb1e8cc057e5091c6cdc170494df368,c8d99e4f60328e4b440b1c9d280b08b9828b91b7..f8cca586e94f6e6cb7cb27a01a184a7570a84bb4
@@@ -129,8 -129,6 +129,8 @@@ public class DictionaryActivity extend
  
      List<RowBase> rowsToShow = null; // if not null, just show these rows.
  
 +    final Random rand = new Random();
 +
      final Handler uiHandler = new Handler();
  
      private final Executor searchExecutor = Executors.newSingleThreadExecutor(new ThreadFactory() {
      ImageButton languageButton;
      SearchView.OnQueryTextListener onQueryTextListener;
  
 -    MenuItem nextWordMenuItem, previousWordMenuItem;
 +    MenuItem nextWordMenuItem, previousWordMenuItem, randomWordMenuItem;
  
      // Never null.
      private File wordList = null;
          }
      }
  
+     private void hideKeyboard() {
+         Log.d(LOG, "Hide soft keyboard.");
+         searchView.clearFocus();
+         InputMethodManager manager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
+         manager.hideSoftInputFromWindow(searchView.getWindowToken(), 0);
+     }
      void updateLangButton() {
          final LanguageResources languageResources =
                  DictionaryApplication.isoCodeToResources.get(index.shortName);
              }
          } else {
              // Down
 -            destIndexEntry = Math.min(tokenRow.referenceIndex + 1, index.sortedIndexEntries.size());
 +            destIndexEntry = Math.min(tokenRow.referenceIndex + 1, index.sortedIndexEntries.size() - 1);
          }
          final Index.IndexEntry dest = index.sortedIndexEntries.get(destIndexEntry);
          Log.d(LOG, "onUpDownButton, destIndexEntry=" + dest.token);
          defocusSearchText();
      }
  
 +    void onRandomWordButton() {
 +        int destIndexEntry = rand.nextInt(index.sortedIndexEntries.size());
 +        final Index.IndexEntry dest = index.sortedIndexEntries.get(destIndexEntry);
 +        setSearchText(dest.token, false);
 +        jumpToRow(index.sortedIndexEntries.get(destIndexEntry).startRow);
 +        defocusSearchText();
 +    }
 +
      // --------------------------------------------------------------------------
      // Options Menu
      // --------------------------------------------------------------------------
              });
          }
  
 +        randomWordMenuItem = menu.add(getString(R.string.randomWord));
 +        randomWordMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
 +            @Override
 +            public boolean onMenuItemClick(MenuItem item) {
 +                onRandomWordButton();
 +                return true;
 +            }
 +        });
 +
          application.onCreateGlobalOptionsMenu(this, menu);
  
          {
          getListView().requestFocus();
  
          // Visual indication that a new keystroke will clear the search text.
-         // Doesn't seem to work unless earchText has focus.
+         // Doesn't seem to work unless searchText has focus.
          // searchView.selectAll();
      }
  
          searchView.setIconifiedByDefault(text.length() > 0);
          searchView.setIconified(false);
  
+         // We don't want to show virtual keyboard when we're changing searchView text programatically:
+         hideKeyboard();
          if (triggerSearch) {
              onQueryTextListener.onQueryTextChange(text);
          }