prefs.remove(C.INDEX_INDEX);\r
prefs.remove(C.SEARCH_TOKEN);\r
prefs.commit();\r
+ Log.d(LOG, "Removed default dictionary prefs.");\r
}\r
\r
@Override\r
public void onCreate(Bundle savedInstanceState) {\r
+ ((DictionaryApplication)getApplication()).applyTheme(this);\r
+ \r
super.onCreate(savedInstanceState);\r
Log.d(LOG, "onCreate:" + this);\r
\r
\r
searchText.requestFocus();\r
searchText.addTextChangedListener(searchTextWatcher);\r
- searchText.setText(prefs.getString(C.SEARCH_TOKEN, ""));\r
- Log.d(LOG, "Trying to restore searchText=" + searchText.getText());\r
+ final String search = prefs.getString(C.SEARCH_TOKEN, "");\r
+ searchText.setText(search);\r
+ searchText.setSelection(0, search.length());\r
+ Log.d(LOG, "Trying to restore searchText=" + search);\r
\r
final Button clearSearchTextButton = (Button) findViewById(R.id.ClearSearchTextButton);\r
clearSearchTextButton.setOnClickListener(new OnClickListener() {\r
wordList = new File(prefs.getString(getString(R.string.wordListFileKey),\r
getString(R.string.wordListFileDefault)));\r
saveOnlyFirstSubentry = prefs.getBoolean(getString(R.string.saveOnlyFirstSubentryKey), false);\r
- if (prefs.getBoolean(getString(R.string.vibrateOnFailedSearchKey), true)) {\r
+ //if (prefs.getBoolean(getString(R.string.vibrateOnFailedSearchKey), true)) {\r
// vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);\r
- }\r
+ //}\r
Log.d(LOG, "wordList=" + wordList + ", saveOnlyFirstSubentry=" + saveOnlyFirstSubentry);\r
}\r
\r
- \r
@Override\r
protected void onResume() {\r
super.onResume();\r
}\r
-\r
+ \r
@Override\r
protected void onPause() {\r
super.onPause();\r
return;\r
}\r
setDictionaryPrefs(this, dictIndex, indexIndex, searchText.getText().toString());\r
+ \r
+ // Before we close the RAF, we have to wind the current search down.\r
+ if (currentSearchOperation != null) {\r
+ Log.d(LOG, "Interrupting search to shut down.");\r
+ final SearchOperation searchOperation = currentSearchOperation;\r
+ currentSearchOperation = null;\r
+ searchOperation.interrupted.set(true);\r
+ synchronized (searchOperation) {\r
+ while (!searchOperation.done) {\r
+ try {\r
+ searchOperation.wait();\r
+ } catch (InterruptedException e) {\r
+ Log.d(LOG, "Interrupted.", e);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ \r
try {\r
+ Log.d(LOG, "Closing RAF.");\r
dictRaf.close();\r
} catch (IOException e) {\r
Log.e(LOG, "Failed to close dictionary", e);\r
}\r
+ dictRaf = null;\r
}\r
\r
// --------------------------------------------------------------------------\r
public boolean onCreateOptionsMenu(final Menu menu) {\r
\r
{\r
- final MenuItem preferences = menu.add(getString(R.string.preferences));\r
- preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
- public boolean onMenuItemClick(final MenuItem menuItem) {\r
- startActivity(new Intent(DictionaryActivity.this,\r
- PreferenceActivity.class));\r
- return false;\r
- }\r
- });\r
+ final MenuItem preferences = menu.add(getString(R.string.preferences));\r
+ preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(final MenuItem menuItem) {\r
+ startActivity(new Intent(DictionaryActivity.this,\r
+ PreferenceActivity.class));\r
+ return false;\r
+ }\r
+ });\r
}\r
\r
{\r
- final MenuItem dictionaryList = menu.add(getString(R.string.dictionaryList));\r
- dictionaryList.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
- public boolean onMenuItemClick(final MenuItem menuItem) {\r
- startActivity(DictionaryListActivity.getIntent(DictionaryActivity.this));\r
- startActivity(DictionaryListActivity.getIntent(DictionaryActivity.this));\r
- return false;\r
- }\r
- });\r
+ final MenuItem dictionaryList = menu.add(getString(R.string.dictionaryList));\r
+ dictionaryList.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ public boolean onMenuItemClick(final MenuItem menuItem) {\r
+ startActivity(DictionaryListActivity.getIntent(DictionaryActivity.this));\r
+ finish();\r
+ return false;\r
+ }\r
+ });\r
}\r
\r
{\r
- final MenuItem dictionaryList = menu.add(getString(R.string.editDictionary));\r
- dictionaryList.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
+ final MenuItem dictionaryEdit = menu.add(getString(R.string.editDictionary));\r
+ dictionaryEdit.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
public boolean onMenuItemClick(final MenuItem menuItem) {\r
final Intent intent = DictionaryEditActivity.getIntent(dictIndex);\r
startActivity(intent);\r
return false;\r
}\r
});\r
- }\r
+ }\r
\r
return true;\r
}\r
}\r
return true;\r
}\r
+ if (keyCode == KeyEvent.KEYCODE_BACK) {\r
+ Log.d(LOG, "Clearing dictionary prefs.");\r
+ DictionaryActivity.clearDictionaryPrefs(this);\r
+ }\r
return super.onKeyDown(keyCode, event);\r
}\r
\r
\r
Index.IndexEntry searchResult;\r
\r
+ boolean done = false;\r
+ \r
SearchOperation(final String searchText, final Index index) {\r
this.searchText = searchText.trim();\r
this.index = index;\r
\r
@Override\r
public void run() {\r
- searchStartMillis = System.currentTimeMillis();\r
- searchResult = index.findInsertionPoint(searchText, interrupted);\r
- Log.d(LOG, "searchText=" + searchText + ", searchDuration="\r
- + (System.currentTimeMillis() - searchStartMillis) + ", interrupted="\r
- + interrupted.get());\r
- if (!interrupted.get()) {\r
- uiHandler.post(new Runnable() {\r
- @Override\r
- public void run() { \r
- searchFinished(SearchOperation.this);\r
- }\r
- });\r
+ try {\r
+ searchStartMillis = System.currentTimeMillis();\r
+ searchResult = index.findInsertionPoint(searchText, interrupted);\r
+ Log.d(LOG, "searchText=" + searchText + ", searchDuration="\r
+ + (System.currentTimeMillis() - searchStartMillis) + ", interrupted="\r
+ + interrupted.get());\r
+ if (!interrupted.get()) {\r
+ uiHandler.post(new Runnable() {\r
+ @Override\r
+ public void run() { \r
+ searchFinished(SearchOperation.this);\r
+ }\r
+ });\r
+ }\r
+ } finally {\r
+ synchronized (this) {\r
+ done = true;\r
+ this.notifyAll();\r
+ }\r
}\r
}\r
}\r
// --------------------------------------------------------------------------\r
\r
void onSearchTextChange(final String text) {\r
+ if (dictRaf == null) {\r
+ Log.d(LOG, "searchText changed during shutdown, doing nothing.");\r
+ return;\r
+ }\r
if (!searchText.isFocused()) {\r
Log.d(LOG, "searchText changed without focus, doing nothing.");\r
return;\r