X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryActivity.java;h=008b57de6c1ef6869612267e22177b1e79829a63;hb=cfcbcbe64802d0df9b4cb64500283959e2ec12de;hp=42012d3ec7e4e333428de50ae20fccd1ae13886c;hpb=331e211b4a25f5593403358f8ea7968a5be026ac;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryActivity.java b/src/com/hughes/android/dictionary/DictionaryActivity.java index 42012d3..008b57d 100644 --- a/src/com/hughes/android/dictionary/DictionaryActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryActivity.java @@ -42,6 +42,7 @@ import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.StyleSpan; +import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; @@ -225,10 +226,12 @@ public class DictionaryActivity extends ActionBarActivity { @Override public void onCreate(Bundle savedInstanceState) { + DictionaryApplication.INSTANCE.init(getApplicationContext()); + application = DictionaryApplication.INSTANCE; // This needs to be before super.onCreate, otherwise ActionbarSherlock // doesn't makes the background of the actionbar white when you're // in the dark theme. - setTheme(((DictionaryApplication) getApplication()).getSelectedTheme().themeId); + setTheme(application.getSelectedTheme().themeId); Log.d(LOG, "onCreate:" + this); super.onCreate(savedInstanceState); @@ -240,7 +243,6 @@ public class DictionaryActivity extends ActionBarActivity { setContentView(R.layout.dictionary_activity); - application = (DictionaryApplication) getApplication(); theme = application.getSelectedTheme(); textColorFg = getResources().getColor(theme.tokenRowFgColor); @@ -432,24 +434,25 @@ public class DictionaryActivity extends ActionBarActivity { setListAdapter(new IndexAdapter(index)); + // Pre-load the Transliterator (will spawn its own thread) + TransliteratorManager.init(new TransliteratorManager.Callback() { + @Override + public void onTransliteratorReady() { + uiHandler.post(new Runnable() { + @Override + public void run() { + onSearchTextChange(searchView.getQuery().toString()); + } + }); + } + }, DictionaryApplication.threadBackground); + // Pre-load the collators. new Thread(new Runnable() { public void run() { - android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_BACKGROUND); + android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_LESS_FAVORABLE); final long startMillis = System.currentTimeMillis(); try { - TransliteratorManager.init(new TransliteratorManager.Callback() { - @Override - public void onTransliteratorReady() { - uiHandler.post(new Runnable() { - @Override - public void run() { - onSearchTextChange(searchView.getQuery().toString()); - } - }); - } - }); - for (final Index index : dictionary.indices) { final String searchToken = index.sortedIndexEntries.get(0).token; final IndexEntry entry = index.findExact(searchToken); @@ -717,10 +720,9 @@ public class DictionaryActivity extends ActionBarActivity { } void updateLangButton() { - final LanguageResources languageResources = - DictionaryApplication.isoCodeToResources.get(index.shortName); - if (languageResources != null && languageResources.flagId != 0) { - languageButton.setImageResource(languageResources.flagId); + final int flagId = IsoUtils.INSTANCE.getFlagIdForIsoCode(index.shortName); + if (flagId != 0) { + languageButton.setImageResource(flagId); } else { if (indexIndex % 2 == 0) { languageButton.setImageResource(android.R.drawable.ic_media_next); @@ -805,8 +807,8 @@ public class DictionaryActivity extends ActionBarActivity { for (int i = 0; i < dictionaryInfo.indexInfos.size(); ++i) { final IndexInfo indexInfo = dictionaryInfo.indexInfos.get(i); - final View button = application.createButton(parent.getContext(), - dictionaryInfo, indexInfo); + final View button = IsoUtils.INSTANCE.createButton(parent.getContext(), + dictionaryInfo, indexInfo, application.languageButtonPixels); final IntentLauncher intentLauncher = new IntentLauncher(parent.getContext(), getLaunchIntent(getApplicationContext(), application.getPath(dictionaryInfo.uncompressedFilename), @@ -1429,7 +1431,7 @@ public class DictionaryActivity extends ActionBarActivity { // Log.d(LOG, "html=" + html); startActivityForResult( HtmlDisplayActivity.getHtmlIntent(getApplicationContext(), String.format( - "%s", html), + "%s", html), htmlTextToHighlight, false), 0); } @@ -1472,7 +1474,12 @@ public class DictionaryActivity extends ActionBarActivity { private void getMetrics() { // Get the screen's density scale - final float scale = getResources().getDisplayMetrics().density; + // The previous method getResources().getDisplayMetrics() + // used to occasionally trigger a null pointer exception, + // so try this instead. + DisplayMetrics dm = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(dm); + final float scale = dm.density; // Convert the dps to pixels, based on density scale mPaddingDefault = (int) (PADDING_DEFAULT_DP * scale + 0.5f); mPaddingLarge = (int) (PADDING_LARGE_DP * scale + 0.5f);