X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryManagerActivity.java;h=af728ce72127fb796cf714d7e788a51fd3489b05;hb=83d9dc7cd871082a82c2dd0dbb7a0ceabd7c83a0;hp=694f8da0ebc4ed6b8c105441bc6efb5443df921e;hpb=410c02edf6fc556e906428da40ea13f3b0f30a81;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java index 694f8da..af728ce 100644 --- a/src/com/hughes/android/dictionary/DictionaryManagerActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryManagerActivity.java @@ -19,7 +19,6 @@ import android.app.AlertDialog; import android.app.DownloadManager; import android.app.DownloadManager.Request; import android.content.BroadcastReceiver; -import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; @@ -33,17 +32,17 @@ import android.os.Environment; import android.os.Handler; import android.preference.PreferenceManager; import android.provider.Settings; +import android.support.annotation.NonNull; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.ActionBar; -import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.SearchView.OnQueryTextListener; import android.support.v7.widget.Toolbar; import android.text.InputType; import android.util.Log; -import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.LayoutInflater; @@ -53,7 +52,6 @@ import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.view.inputmethod.EditorInfo; -import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.BaseAdapter; import android.widget.Button; @@ -77,7 +75,6 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; -import java.io.OutputStream; import java.net.MalformedURLException; import java.net.URL; import java.nio.ByteBuffer; @@ -87,16 +84,15 @@ import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.zip.ZipEntry; -import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; // Right-click: // Delete, move to top. -public class DictionaryManagerActivity extends ActionBarActivity { +public class DictionaryManagerActivity extends AppCompatActivity { - static final String LOG = "QuickDic"; - static boolean blockAutoLaunch = false; + private static final String LOG = "QuickDic"; + private static boolean blockAutoLaunch = false; private ListView listView; private ListView getListView() { @@ -113,19 +109,19 @@ public class DictionaryManagerActivity extends ActionBarActivity { } // For DownloadManager bug workaround - private Set finishedDownloadIds = new HashSet(); + private final Set finishedDownloadIds = new HashSet<>(); - DictionaryApplication application; + private DictionaryApplication application; - SearchView filterSearchView; - ToggleButton showDownloadable; + private SearchView filterSearchView; + private ToggleButton showDownloadable; - LinearLayout dictionariesOnDeviceHeaderRow; - LinearLayout downloadableDictionariesHeaderRow; + private LinearLayout dictionariesOnDeviceHeaderRow; + private LinearLayout downloadableDictionariesHeaderRow; - Handler uiHandler; + private Handler uiHandler; - Runnable dictionaryUpdater = new Runnable() { + private final Runnable dictionaryUpdater = new Runnable() { @Override public void run() { if (uiHandler == null) { @@ -134,13 +130,13 @@ public class DictionaryManagerActivity extends ActionBarActivity { uiHandler.post(new Runnable() { @Override public void run() { - setMyListAdapater(); + setMyListAdapter(); } }); } }; - final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { + private final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public synchronized void onReceive(Context context, Intent intent) { final String action = intent.getAction(); @@ -186,8 +182,9 @@ public class DictionaryManagerActivity extends ActionBarActivity { } Log.w(LOG, "Download finished: " + dest + " Id: " + downloadId); - Toast.makeText(context, getString(R.string.unzippingDictionary, dest), - Toast.LENGTH_LONG).show(); + if (!isFinishing()) + Toast.makeText(context, getString(R.string.unzippingDictionary, dest), + Toast.LENGTH_LONG).show(); if (unzipInstall(context, Uri.parse(dest), dest, true)) { finishedDownloadIds.add(downloadId); @@ -233,13 +230,14 @@ public class DictionaryManagerActivity extends ActionBarActivity { zipOut = new FileOutputStream(targetFile); copyStream(zipFile, zipOut); application.backgroundUpdateDictionaries(dictionaryUpdater); - Toast.makeText(context, getString(R.string.installationFinished, dest), - Toast.LENGTH_LONG).show(); + if (!isFinishing()) + Toast.makeText(context, getString(R.string.installationFinished, dest), + Toast.LENGTH_LONG).show(); result = true; } catch (Exception e) { String msg = getString(R.string.unzippingFailed, dest + ": " + e.getMessage()); File dir = application.getDictDir(); - if (!dir.canWrite() || !application.checkFileCreate(dir)) { + if (!dir.canWrite() || !DictionaryApplication.checkFileCreate(dir)) { msg = getString(R.string.notWritable, dir.getAbsolutePath()); } new AlertDialog.Builder(context).setTitle(getString(R.string.error)).setMessage(msg).setNeutralButton("Close", null).show(); @@ -265,7 +263,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { return intent; } - public void readableCheckAndError(boolean requestPermission) { + private void readableCheckAndError(boolean requestPermission) { final File dictDir = application.getDictDir(); if (dictDir.canRead() && dictDir.canExecute()) return; blockAutoLaunch = true; @@ -290,12 +288,12 @@ public class DictionaryManagerActivity extends ActionBarActivity { } @Override - public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { + public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[], @NonNull int[] grantResults) { readableCheckAndError(false); application.backgroundUpdateDictionaries(dictionaryUpdater); - setMyListAdapater(); + setMyListAdapter(); } @Override @@ -324,7 +322,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { getListView().getContext()).inflate( R.layout.dictionary_manager_header_row_downloadable, getListView(), false); - showDownloadable = (ToggleButton) downloadableDictionariesHeaderRow + showDownloadable = downloadableDictionariesHeaderRow .findViewById(R.id.hideDownloadable); showDownloadable.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override @@ -346,7 +344,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { registerReceiver(broadcastReceiver, new IntentFilter( DownloadManager.ACTION_DOWNLOAD_COMPLETE)); - setMyListAdapater(); + setMyListAdapter(); registerForContextMenu(getListView()); getListView().setItemsCanFocus(true); @@ -396,7 +394,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { @Override public boolean onQueryTextChange(String filterText) { - setMyListAdapater(); + setMyListAdapter(); return true; } }); @@ -480,7 +478,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { application.backgroundUpdateDictionaries(dictionaryUpdater); - setMyListAdapater(); + setMyListAdapter(); } @Override @@ -494,12 +492,24 @@ public class DictionaryManagerActivity extends ActionBarActivity { sort.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { public boolean onMenuItemClick(final MenuItem menuItem) { application.sortDictionaries(); - setMyListAdapater(); + setMyListAdapter(); return true; } }); - application.onCreateGlobalOptionsMenu(this, menu); + final MenuItem browserDownload = menu.add(getString(R.string.browserDownload)); + MenuItemCompat.setShowAsAction(browserDownload, MenuItem.SHOW_AS_ACTION_NEVER); + browserDownload.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { + public boolean onMenuItemClick(final MenuItem menuItem) { + final Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri + .parse("https://github.com/rdoeffinger/Dictionary/releases/v0.2-dictionaries")); + startActivity(intent); + return false; + } + }); + + DictionaryApplication.onCreateGlobalOptionsMenu(this, menu); return true; } @@ -526,7 +536,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { @Override public boolean onMenuItemClick(android.view.MenuItem item) { application.moveDictionaryToTop(row.dictionaryInfo); - setMyListAdapater(); + setMyListAdapter(); return true; } }); @@ -539,7 +549,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { @Override public boolean onMenuItemClick(android.view.MenuItem item) { application.deleteDictionary(row.dictionaryInfo); - setMyListAdapater(); + setMyListAdapter(); return true; } }); @@ -547,7 +557,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { } private void onShowDownloadableChanged() { - setMyListAdapater(); + setMyListAdapter(); Editor prefs = PreferenceManager.getDefaultSharedPreferences(this).edit(); prefs.putBoolean(C.SHOW_DOWNLOADABLE, showDownloadable.isChecked()); prefs.commit(); @@ -555,12 +565,12 @@ public class DictionaryManagerActivity extends ActionBarActivity { class MyListAdapter extends BaseAdapter { - List dictionariesOnDevice; - List downloadableDictionaries; + final List dictionariesOnDevice; + final List downloadableDictionaries; class Row { - DictionaryInfo dictionaryInfo; - boolean onDevice; + final DictionaryInfo dictionaryInfo; + final boolean onDevice; private Row(DictionaryInfo dictionaryInfo, boolean onDevice) { this.dictionaryInfo = dictionaryInfo; @@ -641,7 +651,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { } - private void setMyListAdapater() { + private void setMyListAdapter() { final String filter = filterSearchView == null ? "" : filterSearchView.getQuery() .toString(); final String[] filters = filter.trim().toLowerCase().split("(\\s|-)+"); @@ -655,12 +665,12 @@ public class DictionaryManagerActivity extends ActionBarActivity { row = LayoutInflater.from(parent.getContext()).inflate( R.layout.dictionary_manager_row, parent, false); } - final TextView name = (TextView) row.findViewById(R.id.dictionaryName); - final TextView details = (TextView) row.findViewById(R.id.dictionaryDetails); + final TextView name = row.findViewById(R.id.dictionaryName); + final TextView details = row.findViewById(R.id.dictionaryDetails); name.setText(application.getDictionaryName(dictionaryInfo.uncompressedFilename)); final boolean updateAvailable = application.updateAvailable(dictionaryInfo); - final Button downloadButton = (Button) row.findViewById(R.id.downloadButton); + final Button downloadButton = row.findViewById(R.id.downloadButton); final DictionaryInfo downloadable = application.getDownloadable(dictionaryInfo.uncompressedFilename); boolean broken = false; if (!dictionaryInfo.isValid()) { @@ -684,7 +694,7 @@ public class DictionaryManagerActivity extends ActionBarActivity { downloadButton.setVisibility(View.GONE); } - LinearLayout buttons = (LinearLayout) row.findViewById(R.id.dictionaryLauncherButtons); + LinearLayout buttons = row.findViewById(R.id.dictionaryLauncherButtons); final List sortedIndexInfos = application .sortedIndexInfos(dictionaryInfo.indexInfos); @@ -702,8 +712,8 @@ public class DictionaryManagerActivity extends ActionBarActivity { continue; } final IndexInfo indexInfo = sortedIndexInfos.get(i); - final View button = IsoUtils.INSTANCE.setupButton(textButton, imageButton, dictionaryInfo, - indexInfo, application.languageButtonPixels); + final View button = IsoUtils.INSTANCE.setupButton(textButton, imageButton, + indexInfo); if (canLaunch) { button.setOnClickListener(