X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryActivity.java;h=bb749f82fc333ba587d07a9ce7cc2f226c343cbf;hb=cc5c3a2407180de0569c2536a2fa37ce782dd55c;hp=2a37b6e369f249d9694ee407d5ab2ac08e81229f;hpb=d796911d56711009b9d5b735971da518a3617c2d;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryActivity.java b/src/com/hughes/android/dictionary/DictionaryActivity.java index 2a37b6e..bb749f8 100644 --- a/src/com/hughes/android/dictionary/DictionaryActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryActivity.java @@ -33,6 +33,7 @@ import android.support.v7.app.ActionBar; import android.support.v7.app.ActionBarActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView.OnQueryTextListener; +import android.support.v7.widget.Toolbar; import android.text.ClipboardManager; import android.text.Spannable; import android.text.method.LinkMovementMethod; @@ -128,6 +129,8 @@ public class DictionaryActivity extends ActionBarActivity { List 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() { @@ -167,7 +170,7 @@ public class DictionaryActivity extends ActionBarActivity { ImageButton languageButton; SearchView.OnQueryTextListener onQueryTextListener; - MenuItem nextWordMenuItem, previousWordMenuItem; + MenuItem nextWordMenuItem, previousWordMenuItem, randomWordMenuItem; // Never null. private File wordList = null; @@ -204,13 +207,6 @@ public class DictionaryActivity extends ActionBarActivity { outState.putString(C.SEARCH_TOKEN, searchView.getQuery().toString()); } - @Override - protected void onRestoreInstanceState(final Bundle savedInstanceState) { - super.onRestoreInstanceState(savedInstanceState); - Log.d(LOG, "onRestoreInstanceState: " + savedInstanceState.getString(C.SEARCH_TOKEN)); - onCreate(savedInstanceState); - } - @Override public void onCreate(Bundle savedInstanceState) { // This needs to be before super.onCreate, otherwise ActionbarSherlock @@ -375,6 +371,7 @@ public class DictionaryActivity extends ActionBarActivity { // Pre-load the collators. new Thread(new Runnable() { public void run() { + android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND); final long startMillis = System.currentTimeMillis(); try { TransliteratorManager.init(new TransliteratorManager.Callback() { @@ -405,7 +402,7 @@ public class DictionaryActivity extends ActionBarActivity { } }).start(); - String fontName = prefs.getString(getString(R.string.fontKey), "FreeSerif.ttf.jpg"); + String fontName = prefs.getString(getString(R.string.fontKey), "FreeSerif.otf.jpg"); if ("SYSTEM".equals(fontName)) { typeface = Typeface.DEFAULT; } else if ("SERIF".equals(fontName)) { @@ -415,6 +412,9 @@ public class DictionaryActivity extends ActionBarActivity { } else if ("MONOSPACE".equals(fontName)) { typeface = Typeface.MONOSPACE; } else { + if ("FreeSerif.ttf.jpg".equals(fontName)) { + fontName = "FreeSerif.otf.jpg"; + } try { typeface = Typeface.createFromAsset(getAssets(), fontName); } catch (Exception e) { @@ -478,7 +478,7 @@ public class DictionaryActivity extends ActionBarActivity { final int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300, getResources().getDisplayMetrics()); final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams( - width, ViewGroup.LayoutParams.WRAP_CONTENT); + ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); customSearchView.setLayoutParams(layoutParams); listView.setOnItemClickListener(new OnItemClickListener() { @@ -489,8 +489,6 @@ public class DictionaryActivity extends ActionBarActivity { }); languageButton = new ImageButton(customSearchView.getContext()); - languageButton.setMinimumWidth(application.languageButtonPixels); - languageButton.setMinimumHeight(application.languageButtonPixels * 2 / 3); languageButton.setScaleType(ScaleType.FIT_CENTER); languageButton.setOnClickListener(new OnClickListener() { @Override @@ -505,7 +503,9 @@ public class DictionaryActivity extends ActionBarActivity { return true; } }); - customSearchView.addView(languageButton); + languageButton.setAdjustViewBounds(true); + LinearLayout.LayoutParams lpb = new LinearLayout.LayoutParams(application.languageButtonPixels, LinearLayout.LayoutParams.MATCH_PARENT); + customSearchView.addView(languageButton, lpb); searchView = new SearchView(getSupportActionBar().getThemedContext()); searchView.setIconifiedByDefault(false); @@ -513,10 +513,6 @@ public class DictionaryActivity extends ActionBarActivity { // wrong place. searchView.setQueryHint(getString(R.string.searchText)); searchView.setSubmitButtonEnabled(false); - LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, - FrameLayout.LayoutParams.WRAP_CONTENT); - lp.weight = 1; - searchView.setLayoutParams(lp); searchView.setImeOptions( EditorInfo.IME_ACTION_SEARCH | EditorInfo.IME_FLAG_NO_EXTRACT_UI | @@ -541,10 +537,16 @@ public class DictionaryActivity extends ActionBarActivity { }; searchView.setOnQueryTextListener(onQueryTextListener); searchView.setFocusable(true); - customSearchView.addView(searchView); + LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(0, + FrameLayout.LayoutParams.WRAP_CONTENT, 1); + customSearchView.addView(searchView, lp); actionBar.setCustomView(customSearchView); actionBar.setDisplayShowCustomEnabled(true); + + // Avoid wasting space on large left inset + Toolbar tb = (Toolbar)customSearchView.getParent(); + tb.setContentInsetsRelative(0, 0); } @Override @@ -784,6 +786,14 @@ public class DictionaryActivity extends ActionBarActivity { 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 // -------------------------------------------------------------------------- @@ -820,6 +830,15 @@ public class DictionaryActivity extends ActionBarActivity { }); } + randomWordMenuItem = menu.add(getString(R.string.randomWord)); + randomWordMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + onRandomWordButton(); + return true; + } + }); + application.onCreateGlobalOptionsMenu(this, menu); { @@ -1104,6 +1123,11 @@ public class DictionaryActivity extends ActionBarActivity { searchView.setQuery(text, false); moveCursorToRight(); searchView.setOnQueryTextListener(onQueryTextListener); + + // Hide search icon once text is entered + searchView.setIconifiedByDefault(text.length() > 0); + searchView.setIconified(false); + if (triggerSearch) { onQueryTextListener.onQueryTextChange(text); } @@ -1579,6 +1603,11 @@ public class DictionaryActivity extends ActionBarActivity { Log.d(LOG, "searchText changed during shutdown, doing nothing."); return; } + + // Hide search icon once text is entered + searchView.setIconifiedByDefault(text.length() > 0); + searchView.setIconified(false); + // if (!searchView.hasFocus()) { // Log.d(LOG, "searchText changed without focus, doing nothing."); // return;