From: Thad Hughes Date: Fri, 27 Dec 2013 03:15:43 +0000 (-0800) Subject: Fixed crash after update. X-Git-Url: http://gitweb.fperrin.net/?p=Dictionary.git;a=commitdiff_plain;h=8921b3fa8419f957085ca738602f4b1e83ba4f91 Fixed crash after update. --- diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 245ba6f..fe91208 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="24" + android:versionName="5.0.0" > diff --git a/images/play_store/nexus_7/IT_sognare_wiktionary_detail.png b/images/play_store/nexus_7/IT_sognare_wiktionary_detail.png new file mode 100644 index 0000000..d013b2d Binary files /dev/null and b/images/play_store/nexus_7/IT_sognare_wiktionary_detail.png differ diff --git a/src/com/hughes/android/dictionary/DictionaryApplication.java b/src/com/hughes/android/dictionary/DictionaryApplication.java index 9dcbf21..ecc7856 100644 --- a/src/com/hughes/android/dictionary/DictionaryApplication.java +++ b/src/com/hughes/android/dictionary/DictionaryApplication.java @@ -25,12 +25,9 @@ import android.preference.PreferenceManager; import android.util.Log; import android.util.TypedValue; import android.view.View; -import android.view.View.OnClickListener; -import android.view.ViewGroup.LayoutParams; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView.ScaleType; -import android.widget.LinearLayout; import com.actionbarsherlock.view.Menu; import com.actionbarsherlock.view.MenuItem; @@ -38,9 +35,8 @@ import com.actionbarsherlock.view.MenuItem.OnMenuItemClickListener; import com.hughes.android.dictionary.DictionaryInfo.IndexInfo; import com.hughes.android.dictionary.engine.Dictionary; import com.hughes.android.dictionary.engine.Language; -import com.hughes.android.dictionary.engine.TransliteratorManager; import com.hughes.android.dictionary.engine.Language.LanguageResources; -import com.hughes.android.util.IntentLauncher; +import com.hughes.android.dictionary.engine.TransliteratorManager; import com.hughes.android.util.PersistentObjectCache; import com.hughes.util.ListUtil; import com.ibm.icu.text.Collator; @@ -73,21 +69,20 @@ public class DictionaryApplication extends Application { final List dictionaryFilesOrdered = new ArrayList(); final Map uncompressedFilenameToDictionaryInfo = new LinkedHashMap(); + + /** + * Sometimes a deserialized version of this datastructure isn't valid. + * @return + */ + boolean isValid() { + return uncompressedFilenameToDictionaryInfo != null && dictionaryFilesOrdered != null; + } } DictionaryConfig dictionaryConfig = null; int languageButtonPixels = -1; - // static final class DictionaryHistory implements Serializable { - // private static final long serialVersionUID = -4842995032541390284L; - // // User-ordered list, persisted, just the ones that are/have been - // present. - // final List dictionaryLinks = new - // ArrayList(); - // } - // DictionaryHistory dictionaryHistory = null; - static synchronized void staticInit(final Context context) { if (DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO != null) { return; @@ -129,6 +124,9 @@ public class DictionaryApplication extends Application { if (dictionaryConfig == null) { dictionaryConfig = new DictionaryConfig(); } + if (!dictionaryConfig.isValid()) { + dictionaryConfig = new DictionaryConfig(); + } // Theme stuff. setTheme(getSelectedTheme().themeId); diff --git a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java index 21bd766..c81269d 100644 --- a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java @@ -96,7 +96,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { uiHandler.post(new Runnable() { @Override public void run() { - setListAdapater(); + setMyListAdapater(); } }); } @@ -148,7 +148,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { final InputStream zipIn = zipFile.getInputStream(zipEntry); File targetFile = new File(application.getDictDir(), zipEntry.getName()); if (targetFile.exists()) { - targetFile.renameTo(new File(targetFile.getAbsolutePath().replace(".quickdic", "bak.quickdic"))); + targetFile.renameTo(new File(targetFile.getAbsolutePath().replace(".quickdic", ".bak.quickdic"))); targetFile = new File(application.getDictDir(), zipEntry.getName()); } final OutputStream zipOut = new FileOutputStream(targetFile); @@ -203,7 +203,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { showDownloadable.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - onShowLocalChanged(); + onShowDownloadableChanged(); } }); @@ -220,7 +220,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { registerReceiver(broadcastReceiver, new IntentFilter( DownloadManager.ACTION_DOWNLOAD_COMPLETE)); - setListAdapater(); + setMyListAdapater(); registerForContextMenu(getListView()); final File dictDir = application.getDictDir(); @@ -272,7 +272,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { @Override public boolean onQueryTextChange(String filterText) { - setListAdapater(); + setMyListAdapater(); return true; } }); @@ -323,7 +323,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { } final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); - showDownloadable.setChecked(prefs.getBoolean(C.SHOW_DOWNLOADABLE, false)); + showDownloadable.setChecked(prefs.getBoolean(C.SHOW_DOWNLOADABLE, true)); if (!blockAutoLaunch && getIntent().getBooleanExtra(C.CAN_AUTO_LAUNCH_DICT, true) && @@ -348,7 +348,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { application.backgroundUpdateDictionaries(dictionaryUpdater); - setListAdapater(); + setMyListAdapater(); } @Override @@ -380,7 +380,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { @Override public boolean onMenuItemClick(android.view.MenuItem item) { application.moveDictionaryToTop(row.dictionaryInfo); - setListAdapater(); + setMyListAdapater(); return true; } }); @@ -393,15 +393,15 @@ public class DictionaryManagerActivity extends SherlockListActivity { @Override public boolean onMenuItemClick(android.view.MenuItem item) { application.deleteDictionary(row.dictionaryInfo); - setListAdapater(); + setMyListAdapater(); return true; } }); } } - private void onShowLocalChanged() { - setListAdapater(); + private void onShowDownloadableChanged() { + setMyListAdapater(); Editor prefs = PreferenceManager.getDefaultSharedPreferences(this).edit(); prefs.putBoolean(C.SHOW_DOWNLOADABLE, showDownloadable.isChecked()); prefs.commit(); @@ -491,7 +491,7 @@ public class DictionaryManagerActivity extends SherlockListActivity { } - private void setListAdapater() { + private void setMyListAdapater() { final String filter = filterSearchView == null ? "" : filterSearchView.getQuery() .toString(); final String[] filters = filter.trim().toLowerCase().split("(\\s|-)+"); @@ -510,15 +510,16 @@ public class DictionaryManagerActivity extends SherlockListActivity { final boolean updateAvailable = application.updateAvailable(dictionaryInfo); final Button downloadButton = (Button) row.findViewById(R.id.downloadButton); if (!canLaunch || updateAvailable) { + final DictionaryInfo downloadable = application.getDownloadable(dictionaryInfo.uncompressedFilename); downloadButton .setText(getString( R.string.downloadButton, - application.getDownloadable(dictionaryInfo.uncompressedFilename).zipBytes / 1024.0 / 1024.0)); + downloadable.zipBytes / 1024.0 / 1024.0)); downloadButton.setMinWidth(application.languageButtonPixels * 3 / 2); downloadButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { - downloadDictionary(dictionaryInfo); + downloadDictionary(downloadable.downloadUrl); } }); } else { @@ -569,12 +570,12 @@ public class DictionaryManagerActivity extends SherlockListActivity { return row; } - private void downloadDictionary(final DictionaryInfo dictionaryInfo) { + private void downloadDictionary(final String downloadUrl) { DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); Request request = new Request( - Uri.parse(dictionaryInfo.downloadUrl)); + Uri.parse(downloadUrl)); try { - final String destFile = new File(new URL(dictionaryInfo.downloadUrl).getFile()) + final String destFile = new File(new URL(downloadUrl).getFile()) .getName(); Log.d(LOG, "Downloading to: " + destFile); diff --git a/src/com/hughes/android/dictionary/HtmlDisplayActivity.java b/src/com/hughes/android/dictionary/HtmlDisplayActivity.java index 7059356..6abb525 100644 --- a/src/com/hughes/android/dictionary/HtmlDisplayActivity.java +++ b/src/com/hughes/android/dictionary/HtmlDisplayActivity.java @@ -14,7 +14,6 @@ package com.hughes.android.dictionary; -import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; @@ -22,9 +21,11 @@ import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; +import com.actionbarsherlock.app.ActionBar; +import com.actionbarsherlock.app.SherlockActivity; import com.hughes.util.StringUtil; -public final class HtmlDisplayActivity extends Activity { +public final class HtmlDisplayActivity extends SherlockActivity { static final String LOG = "QuickDic"; @@ -67,6 +68,9 @@ public final class HtmlDisplayActivity extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.html_display_activity); + + ActionBar actionBar = getSupportActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); final int htmlRes = getIntent().getIntExtra(HTML_RES, -1); final String html;