From cbb75615068501e0ebae62fac1cab58d36260541 Mon Sep 17 00:00:00 2001 From: Clam Date: Sat, 1 Mar 2014 23:57:05 +1100 Subject: [PATCH] Cleaned up some code, attempted fix for UI staying * Also changed manifest to filter non hardware keyboard devices. --- AndroidManifest.xml | 6 + .../android/traditionalt9/AbsSymDialog.java | 17 +- .../android/traditionalt9/AddWordAct.java | 7 - .../android/traditionalt9/CandidateView.java | 7 +- .../nyanya/android/traditionalt9/CharMap.java | 4 +- .../android/traditionalt9/DBException.java | 13 +- .../traditionalt9/InterfaceHandler.java | 18 +- .../android/traditionalt9/LangHelper.java | 22 +++ .../nyanya/android/traditionalt9/T9DB.java | 40 ++-- .../android/traditionalt9/TraditionalT9.java | 52 ++---- .../traditionalt9/TraditionalT9Settings.java | 176 +++++++----------- .../nyanya/android/traditionalt9/Utils.java | 3 +- 12 files changed, 149 insertions(+), 216 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 34221227..a3808d01 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -11,6 +11,12 @@ + mSuggestions; protected int mSelectedIndex; @@ -179,7 +176,7 @@ public class CandidateView extends View { invalidate(); } - public void setSuggestions(List suggestions, int initialSel) { + protected void setSuggestions(List suggestions, int initialSel) { clear(); if (suggestions != null) { mSuggestions = suggestions; @@ -193,7 +190,7 @@ public class CandidateView extends View { requestLayout(); } - public void clear() { + protected void clear() { mSuggestions = EMPTY_LIST; mSelectedIndex = -1; invalidate(); diff --git a/src/org/nyanya/android/traditionalt9/CharMap.java b/src/org/nyanya/android/traditionalt9/CharMap.java index e24e89cd..3497eb0d 100644 --- a/src/org/nyanya/android/traditionalt9/CharMap.java +++ b/src/org/nyanya/android/traditionalt9/CharMap.java @@ -1,15 +1,15 @@ package org.nyanya.android.traditionalt9; +import java.util.AbstractList; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; -import java.util.Locale; import java.util.Map; import android.util.Log; public class CharMap { - protected static final ArrayList> CHARTABLE = new ArrayList>(2); + protected static final AbstractList> CHARTABLE = new ArrayList>(2); static { Map enMap = new HashMap(); enMap.put('.', 1); enMap.put(',', 1); enMap.put('!', 1); enMap.put('?', 1); diff --git a/src/org/nyanya/android/traditionalt9/DBException.java b/src/org/nyanya/android/traditionalt9/DBException.java index cdae4274..add1e97b 100644 --- a/src/org/nyanya/android/traditionalt9/DBException.java +++ b/src/org/nyanya/android/traditionalt9/DBException.java @@ -3,19 +3,8 @@ package org.nyanya.android.traditionalt9; public class DBException extends Exception { private static final long serialVersionUID = 376752656441823823L; - public DBException() { - super(); - } - - public DBException(String message) { + protected DBException(String message) { super(message); } - public DBException(String message, Throwable cause) { - super(message, cause); - } - - public DBException(Throwable cause) { - super(cause); - } } diff --git a/src/org/nyanya/android/traditionalt9/InterfaceHandler.java b/src/org/nyanya/android/traditionalt9/InterfaceHandler.java index d0e1fae4..d52e65fd 100644 --- a/src/org/nyanya/android/traditionalt9/InterfaceHandler.java +++ b/src/org/nyanya/android/traditionalt9/InterfaceHandler.java @@ -24,18 +24,12 @@ public class InterfaceHandler implements View.OnClickListener, View.OnLongClickL return mainview; } - protected void clearParent() { - ViewGroup vg = ((ViewGroup) mainview.getParent()); - if (vg != null) { - vg.removeView(mainview); - } - } protected void changeView(View v) { this.mainview = v; View button; - for (int x = 0; x < buttons.length; x++) { - button = v.findViewById(buttons[x]); + for (int buttid : buttons) { + button = v.findViewById(buttid); button.setOnClickListener(this); if (!parent.mAddingWord) { button.setOnLongClickListener(this); @@ -81,9 +75,9 @@ public class InterfaceHandler implements View.OnClickListener, View.OnLongClickL protected void midButtonUpdate(boolean composing) { if (composing) { - ((Button) mainview.findViewById(R.id.main_mid)).setText(R.string.main_mid_commit); + ((TextView) mainview.findViewById(R.id.main_mid)).setText(R.string.main_mid_commit); } else { - ((Button) mainview.findViewById(R.id.main_mid)).setText(R.string.main_mid); + ((TextView) mainview.findViewById(R.id.main_mid)).setText(R.string.main_mid); } } @@ -133,4 +127,8 @@ public class InterfaceHandler implements View.OnClickListener, View.OnLongClickL } return true; } + + protected void hideView() { + mainview.setVisibility(View.GONE); + } } diff --git a/src/org/nyanya/android/traditionalt9/LangHelper.java b/src/org/nyanya/android/traditionalt9/LangHelper.java index fef38d33..6200b611 100644 --- a/src/org/nyanya/android/traditionalt9/LangHelper.java +++ b/src/org/nyanya/android/traditionalt9/LangHelper.java @@ -2,6 +2,8 @@ package org.nyanya.android.traditionalt9; import java.util.Locale; +import pl.wavesoftware.widget.MultiSelectListPreference; + public class LangHelper { protected static final Locale RUSSIAN = new Locale("ru","RU"); protected static final int EN = 0; @@ -31,4 +33,24 @@ public class LangHelper { {R.drawable.ime_number}, //NUM } }; + + protected static int[] buildLangs(CharSequence s) { + int[] ia = MultiSelectListPreference.defaultunpack2Int(s); + int num = 0; + //calc size of filtered array + for (int i : ia) { + if (i >= 0 && i < LangHelper.NLANGS) { + num++; + } + } + int[] ian = new int[num]; + int iansize = 0; + for (int i : ia) { + if (i >= 0 && i < LangHelper.NLANGS) { + ian[iansize] = i; + iansize++; + } + } + return ian; + } } diff --git a/src/org/nyanya/android/traditionalt9/T9DB.java b/src/org/nyanya/android/traditionalt9/T9DB.java index f8bec301..59373245 100644 --- a/src/org/nyanya/android/traditionalt9/T9DB.java +++ b/src/org/nyanya/android/traditionalt9/T9DB.java @@ -1,13 +1,10 @@ package org.nyanya.android.traditionalt9; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.AbstractList; +import java.util.Collection; import java.util.Iterator; -import java.util.Locale; +import java.util.List; -import android.app.Notification; -import android.app.PendingIntent; -import android.app.Service; import android.content.ContentValues; import android.content.Context; import android.content.Intent; @@ -62,7 +59,7 @@ public class T9DB { mOpenHelper = new DatabaseHelper(caller); } - public static T9DB getInstance(Context caller) { + protected static T9DB getInstance(Context caller) { if (instance == null) { synchronized (T9DB.class){ if (instance == null) { @@ -74,7 +71,7 @@ public class T9DB { return instance; } - public static SQLiteDatabase getSQLDB(Context caller) { + protected static SQLiteDatabase getSQLDB(Context caller) { T9DB t9dbhelper = getInstance(caller); //Log.d("T9DB.getSQLDB", "db:" + t9dbhelper.db.isOpen()); return t9dbhelper.db; @@ -88,7 +85,7 @@ public class T9DB { if (db != null) { try { db.close(); - } catch (NullPointerException e) { } + } catch (NullPointerException ignored) { } db = null; } Intent intent = new Intent(mContext, DBUpdateService.class); @@ -122,13 +119,13 @@ public class T9DB { } } - public void close() { + protected void close() { try { db.close(); } - catch (NullPointerException e) { } + catch (NullPointerException ignored) { } db = null; } - public void nuke() { + protected void nuke() { Log.i("T9DB.nuke", "Deleting database..."); synchronized (T9DB.class){ if (db != null) { @@ -147,7 +144,7 @@ public class T9DB { Log.i("T9DB.nuke", "Done..."); } - public void addWord(String iword, int lang) throws DBException { + protected void addWord(String iword, int lang) throws DBException { Resources r = mContext.getResources(); if (iword.equals("")) { throw new DBException(r.getString(R.string.add_word_blank)); @@ -180,7 +177,7 @@ public class T9DB { } } - public void incrementWord(int id) { + protected void incrementWord(int id) { if (!checkReady()) { Log.e("T9DB.incrementWord", "not ready"); Toast.makeText(mContext, R.string.database_notready, Toast.LENGTH_SHORT).show(); @@ -234,7 +231,7 @@ public class T9DB { return result; } - public void updateWords(String is, ArrayList stringList, ArrayList intList, + protected void updateWords(String is, AbstractList stringList, List intList, int capsMode, int lang) { stringList.clear(); intList.clear(); @@ -333,11 +330,10 @@ public class T9DB { } } //Log.d("T9DB.updateWords", "i:" + is + " words:" + Arrays.toString(stringList.toArray())); - return; } - protected void updateWordsW(String is, ArrayList stringList, - ArrayList intList, ArrayList freq, int lang) { + protected void updateWordsW(String is, Collection stringList, + Collection intList, Collection freq, int lang) { stringList.clear(); intList.clear(); freq.clear(); @@ -386,7 +382,6 @@ public class T9DB { } cur.close(); } - return; } private static class DatabaseHelper extends SQLiteOpenHelper { @@ -405,12 +400,7 @@ public class T9DB { SQLiteDatabase db = mContext.openOrCreateDatabase(DATABASE_NAME, 0, null); int version = db.getVersion(); db.close(); - if (version < DATABASE_VERSION) { - return true; - } - else { - return false; - } + return version < DATABASE_VERSION; } else { return false; } diff --git a/src/org/nyanya/android/traditionalt9/TraditionalT9.java b/src/org/nyanya/android/traditionalt9/TraditionalT9.java index 52405e8b..78f11209 100644 --- a/src/org/nyanya/android/traditionalt9/TraditionalT9.java +++ b/src/org/nyanya/android/traditionalt9/TraditionalT9.java @@ -1,10 +1,10 @@ package org.nyanya.android.traditionalt9; +import java.util.AbstractList; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; @@ -17,11 +17,9 @@ import android.text.TextUtils; import android.util.Log; import android.view.KeyEvent; import android.view.View; -import android.view.WindowManager; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; -import android.view.inputmethod.InputMethodManager; import android.widget.Toast; import pl.wavesoftware.widget.MultiSelectListPreference; @@ -37,7 +35,7 @@ public class TraditionalT9 extends InputMethodService implements private ArrayList mSuggestionStrings = new ArrayList(10); private ArrayList mSuggestionInts = new ArrayList(10); - private ArrayList mSuggestionSym = new ArrayList(16); + private AbstractList mSuggestionSym = new ArrayList(16); private static final int NON_EDIT = 0; private static final int EDITING = 1; @@ -103,7 +101,7 @@ public class TraditionalT9 extends InputMethodService implements db = T9DB.getInstance(this); pref = PreferenceManager.getDefaultSharedPreferences(this); - buildLangs(); + mLangsAvailable = LangHelper.buildLangs(pref.getString("pref_lang_support", null)); if (interfacehandler == null) { interfacehandler = new InterfaceHandler(getLayoutInflater().inflate(R.layout.mainview, @@ -111,31 +109,6 @@ public class TraditionalT9 extends InputMethodService implements } } - //build and filter Langs - private void buildLangs() { - - int[] ia = MultiSelectListPreference.defaultunpack2Int(pref.getString("pref_lang_support", null)); - int num = 0; - int i; - //calc size of filtered array - for (int x=0; x= 0 && i < LangHelper.NLANGS) { - num++; - } - } - int[] ian = new int[num]; - int iansize = 0; - for (int x=0; x= 0 && i < LangHelper.NLANGS) { - ian[iansize] = i; - iansize++; - } - } - mLangsAvailable = ian; - } - @Override public boolean onEvaluateInputViewShown() { if (mEditing == EDITING_NOSHOW) { @@ -256,6 +229,9 @@ public class TraditionalT9 extends InputMethodService implements mEditing = NON_EDIT; requestHideSelf(0); hideStatusIcon(); + if (interfacehandler != null) { + interfacehandler.hideView(); + } return; } mFirstPress = true; @@ -265,7 +241,7 @@ public class TraditionalT9 extends InputMethodService implements // way. clearState(); - buildLangs(); + mLangsAvailable = LangHelper.buildLangs(pref.getString("pref_lang_support", null)); mLang = sanitizeLang(pref.getInt("last_lang", 0)); updateCandidates(); @@ -547,11 +523,7 @@ public class TraditionalT9 extends InputMethodService implements // but we will manage it ourselves because native Android handling // of the input view is ... flakey at best. // Log.d("onKeyDown", "back pres"); - if (isInputViewShown()) { - // Log.d("inKeyDown", "input shown"); - return true; - } - return false; + return isInputViewShown(); case KeyEvent.KEYCODE_ENTER: // Let the underlying text editor always handle these. @@ -817,7 +789,7 @@ public class TraditionalT9 extends InputMethodService implements // Log.d("updateShift", "CM start: " + mCapsMode); if (attr != null && mCapsMode != CAPS_ALL) { int caps = 0; - if (attr != null && attr.inputType != InputType.TYPE_NULL) { + if (attr.inputType != InputType.TYPE_NULL) { caps = getCurrentInputConnection().getCursorCapsMode(attr.inputType); } // mInputView.setShifted(mCapsLock || caps != 0); @@ -1011,8 +983,8 @@ public class TraditionalT9 extends InputMethodService implements if (mComposing.length() > 0) { mSuggestionStrings.clear(); char[] ca = CharMap.T9TABLE[mLang][mPrevious]; - for (int i = 0; i < ca.length; i++) { - mSuggestionStrings.add(String.valueOf(ca[i])); + for (char c : ca) { + mSuggestionStrings.add(String.valueOf(c)); } setSuggestions(mSuggestionStrings, mCharIndex); } else { @@ -1355,7 +1327,7 @@ public class TraditionalT9 extends InputMethodService implements pickSuggestionManually(-1, ic); } - public void pickSuggestionManually(int index, InputConnection ic) { + private void pickSuggestionManually(int index, InputConnection ic) { // Log.d("pickSuggestMan", "Doing"); if (mComposing.length() > 0 || mComposingI.length() > 0) { // If we were generating candidate suggestions for the current diff --git a/src/org/nyanya/android/traditionalt9/TraditionalT9Settings.java b/src/org/nyanya/android/traditionalt9/TraditionalT9Settings.java index f943bd12..335a8e7f 100644 --- a/src/org/nyanya/android/traditionalt9/TraditionalT9Settings.java +++ b/src/org/nyanya/android/traditionalt9/TraditionalT9Settings.java @@ -1,5 +1,10 @@ package org.nyanya.android.traditionalt9; +/* + Source for English dictionary: http://wordlist.sourceforge.net/ + Source for Russian dictionary: Various sources from Russian user + */ + import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.Closeable; @@ -13,8 +18,8 @@ import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; +import java.util.AbstractList; import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -22,6 +27,7 @@ import java.util.Locale; import java.util.Map; import java.util.Properties; +import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.Context; @@ -37,6 +43,7 @@ import android.os.AsyncTask; import android.os.Bundle; import android.os.Environment; import android.os.SystemClock; +import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceActivity; import android.preference.PreferenceManager; @@ -67,18 +74,6 @@ public class TraditionalT9Settings extends PreferenceActivity implements public LoadException() { super(); } - - public LoadException(String message) { - super(message); - } - - public LoadException(String message, Throwable cause) { - super(message, cause); - } - - public LoadException(Throwable cause) { - super(cause); - } } private class Reply { @@ -104,9 +99,7 @@ public class TraditionalT9Settings extends PreferenceActivity implements } private void finishAndShowError(ProgressDialog pd, Reply result, int title){ - if (pd == null) { - // Log.d("onPostExecute", "pd"); - } else { + if (pd != null) { // Log.d("onPostExecute", "pd"); if (pd.isShowing()) { pd.dismiss(); @@ -124,53 +117,6 @@ public class TraditionalT9Settings extends PreferenceActivity implements } } - private long getDictSizes(boolean internal, boolean restore, String[] dicts) { - if (internal) { - InputStream input; - Properties props = new Properties(); - try { - input = getAssets().open("dict.properties"); - props.load(input); - long total = 0; - for (int x=0; x= 0 && i < LangHelper.NLANGS) { - num++; - } - } - int[] ian = new int[num]; - int iansize = 0; - for (int x=0; x= 0 && i < LangHelper.NLANGS) { - ian[iansize] = i; - iansize++; - } - } - return ian; - } - private void openHelp() { Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(getString(R.string.help_url))); @@ -788,7 +755,7 @@ public class TraditionalT9Settings extends PreferenceActivity implements private void preloader(int msgid, boolean internal, boolean restorebackup) { task = new LoadDictTask(msgid, internal, restorebackup, - buildLangs(((MultiSelectListPreference) findPreference("pref_lang_support")).getValue())); + LangHelper.buildLangs(((ListPreference) findPreference("pref_lang_support")).getValue())); task.execute(); } @@ -797,18 +764,14 @@ public class TraditionalT9Settings extends PreferenceActivity implements task.execute(); } - private void prenuke(int msgid) { - task = new NukeDictTask(msgid); - task.execute(); - } - private void nukeDict() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage(R.string.pref_nuke_warn).setTitle(R.string.pref_nuke_title) .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int id) { - prenuke(R.string.pref_nukingdict); + task = new NukeDictTask(R.string.pref_nukingdict); + task.execute(); } }).setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override @@ -856,11 +819,11 @@ public class TraditionalT9Settings extends PreferenceActivity implements } } - private void showErrorDialog(String title, String msg) { + private void showErrorDialog(CharSequence title, CharSequence msg) { showErrorDialog(new AlertDialog.Builder(this), title, msg); } - private void showErrorDialog(AlertDialog.Builder builder, String title, String msg) { + private void showErrorDialog(AlertDialog.Builder builder, CharSequence title, CharSequence msg) { builder.setMessage(msg).setTitle(title) .setNeutralButton(R.string.ok, new DialogInterface.OnClickListener() { @Override @@ -923,8 +886,8 @@ public class TraditionalT9Settings extends PreferenceActivity implements @SuppressWarnings("unused") private void queryTestDebug() { long startnow, endnow; - ArrayList words = new ArrayList(); - ArrayList ids = new ArrayList(); + AbstractList words = new ArrayList(); + List ids = new ArrayList(); startnow = SystemClock.uptimeMillis(); @@ -968,10 +931,11 @@ public class TraditionalT9Settings extends PreferenceActivity implements Log.d("TIMING", "Execution time: " + (endnow - startnow) + " ms"); } + @SuppressWarnings("unused") private void queryTestSingle() { long startnow, endnow; int size; - ArrayList words = new ArrayList(8); + AbstractList words = new ArrayList(8); ArrayList ids = new ArrayList(8); startnow = SystemClock.uptimeMillis(); @@ -992,7 +956,7 @@ public class TraditionalT9Settings extends PreferenceActivity implements endnow = SystemClock.uptimeMillis(); Log.d("TIMING", "Execution time: " + (endnow - startnow) + " ms"); - ArrayList freqs = new ArrayList(8); + List freqs = new ArrayList(8); tdb.updateWordsW("222", words, ids, freqs, LangHelper.EN); Log.d("VALUES", "..."); size = freqs.size(); diff --git a/src/org/nyanya/android/traditionalt9/Utils.java b/src/org/nyanya/android/traditionalt9/Utils.java index 5bcca381..0ad01df6 100644 --- a/src/org/nyanya/android/traditionalt9/Utils.java +++ b/src/org/nyanya/android/traditionalt9/Utils.java @@ -3,7 +3,8 @@ package org.nyanya.android.traditionalt9; import android.text.InputType; import android.util.Log; -public class Utils { +@SuppressWarnings("unused") +class Utils { public static void printFlags(int inputType) { if ((inputType & InputType.TYPE_CLASS_DATETIME) == InputType.TYPE_CLASS_DATETIME)