]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryActivity.java
Long-press on lang button shows list.
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryActivity.java
index 6c69e9b5be350ebd98a2e182e1aee69a20b1af71..428f3a0dad20fed329e131a4e51e94aa925fde90 100644 (file)
@@ -73,6 +73,7 @@ import android.widget.TableRow;
 import android.widget.TextView;\r
 import android.widget.Toast;\r
 \r
+import com.hughes.android.dictionary.DictionaryInfo.IndexInfo;\r
 import com.hughes.android.dictionary.engine.Dictionary;\r
 import com.hughes.android.dictionary.engine.Index;\r
 import com.hughes.android.dictionary.engine.PairEntry;\r
@@ -80,12 +81,14 @@ import com.hughes.android.dictionary.engine.PairEntry.Pair;
 import com.hughes.android.dictionary.engine.RowBase;\r
 import com.hughes.android.dictionary.engine.TokenRow;\r
 import com.hughes.android.dictionary.engine.TransliteratorManager;\r
+import com.hughes.android.util.IntentLauncher;\r
 \r
 public class DictionaryActivity extends ListActivity {\r
 \r
   static final String LOG = "QuickDic";\r
   \r
-  String dictFile = null;\r
+  DictionaryApplication application;\r
+  File dictFile = null;\r
   RandomAccessFile dictRaf = null;\r
   Dictionary dictionary = null;\r
   int indexIndex = 0;\r
@@ -116,15 +119,13 @@ public class DictionaryActivity extends ListActivity {
   \r
   final SearchTextWatcher searchTextWatcher = new SearchTextWatcher();\r
 \r
-  //private Vibrator vibrator = null;\r
-  \r
   public DictionaryActivity() {\r
   }\r
   \r
-  public static Intent getLaunchIntent(final String dictFile, final int indexIndex, final String searchToken) {\r
+  public static Intent getLaunchIntent(final File dictFile, final int indexIndex, final String searchToken) {\r
     final Intent intent = new Intent();\r
     intent.setClassName(DictionaryActivity.class.getPackage().getName(), DictionaryActivity.class.getName());\r
-    intent.putExtra(C.DICT_FILE, dictFile);\r
+    intent.putExtra(C.DICT_FILE, dictFile.getPath());\r
     intent.putExtra(C.INDEX_INDEX, indexIndex);\r
     intent.putExtra(C.SEARCH_TOKEN, searchToken);\r
     return intent;\r
@@ -142,24 +143,23 @@ public class DictionaryActivity extends ListActivity {
     setSearchText(outState.getString(C.SEARCH_TOKEN));\r
   }\r
 \r
-  public DictionaryApplication getDictionaryApplication() {\r
-    return (DictionaryApplication) super.getApplication();\r
-  }\r
-  \r
   @Override\r
-  public void onCreate(Bundle savedInstanceState) {\r
+  public void onCreate(Bundle savedInstanceState) {    \r
+    Log.d(LOG, "onCreate:" + this);\r
+    super.onCreate(savedInstanceState);\r
+\r
+    application = (DictionaryApplication) getApplication();\r
+    theme = application.getSelectedTheme();\r
+\r
     // Clear them so that if something goes wrong, we won't relaunch.\r
     clearDictionaryPrefs(this);\r
     \r
-    Log.d(LOG, "onCreate:" + this);\r
-    theme = ((DictionaryApplication)getApplication()).getSelectedTheme();\r
-    super.onCreate(savedInstanceState);\r
     \r
     final Intent intent = getIntent();\r
-    dictFile = intent.getStringExtra(C.DICT_FILE);\r
+    dictFile = new File(intent.getStringExtra(C.DICT_FILE));\r
 \r
     try {\r
-      final String name = getDictionaryApplication().getDictionaryName(dictFile);\r
+      final String name = application.getDictionaryName(dictFile.getName());\r
       this.setTitle("QuickDic: " + name);\r
       dictRaf = new RandomAccessFile(dictFile, "r");\r
       dictionary = new Dictionary(dictRaf); \r
@@ -256,7 +256,7 @@ public class DictionaryActivity extends ListActivity {
     langButton.setOnLongClickListener(new OnLongClickListener() {\r
       @Override\r
       public boolean onLongClick(View v) {\r
-        onLanguageButtonLongClick();\r
+        onLanguageButtonLongClick(v.getContext());\r
         return true;\r
       }\r
     });\r
@@ -325,9 +325,9 @@ public class DictionaryActivity extends ListActivity {
   }\r
   \r
   private static void setDictionaryPrefs(final Context context,\r
-      final String dictFile, final int indexIndex, final String searchToken) {\r
+      final File dictFile, final int indexIndex, final String searchToken) {\r
     final SharedPreferences.Editor prefs = PreferenceManager.getDefaultSharedPreferences(context).edit();\r
-    prefs.putString(C.DICT_FILE, dictFile);\r
+    prefs.putString(C.DICT_FILE, dictFile.getPath());\r
     prefs.putInt(C.INDEX_INDEX, indexIndex);\r
     prefs.putString(C.SEARCH_TOKEN, searchToken);\r
     prefs.commit();\r
@@ -403,14 +403,12 @@ public class DictionaryActivity extends ListActivity {
   static class OpenIndexButton extends Button implements OnClickListener {\r
 \r
     final Activity activity;\r
-    final String dictFile;\r
-    final int indexIndex;\r
+    final Intent intent;\r
 \r
-    public OpenIndexButton(final Context context, final Activity activity, final String text, final String dictFile, final int indexIndex) {\r
+    public OpenIndexButton(final Context context, final Activity activity, final String text, final Intent intent) {\r
       super(context);\r
       this.activity = activity;\r
-      this.dictFile = dictFile;\r
-      this.indexIndex = indexIndex;\r
+      this.intent = intent;\r
       setOnClickListener(this);\r
       setText(text, BufferType.NORMAL);\r
     }\r
@@ -418,29 +416,47 @@ public class DictionaryActivity extends ListActivity {
     @Override\r
     public void onClick(View v) {\r
       activity.finish();\r
-      getContext().startActivity(DictionaryActivity.getLaunchIntent(dictFile, indexIndex, ""));\r
+      getContext().startActivity(intent);\r
     }\r
     \r
   }\r
 \r
-  void onLanguageButtonLongClick() {\r
-    Context mContext = getApplicationContext();\r
-    Dialog dialog = new Dialog(mContext);\r
-    \r
+  void onLanguageButtonLongClick(final Context context) {\r
+    final Dialog dialog = new Dialog(context);\r
     dialog.setContentView(R.layout.select_dictionary_dialog);\r
-    dialog.setTitle(R.string.selectADictionary);\r
+    dialog.setTitle(R.string.selectDictionary);\r
 \r
-    ListView listView = (ListView) dialog.findViewById(android.R.id.list);\r
-    \r
     final List<DictionaryInfo> installedDicts = ((DictionaryApplication)getApplication()).getUsableDicts();\r
-\r
+    ListView listView = (ListView) dialog.findViewById(android.R.id.list);\r
     listView.setAdapter(new BaseAdapter() {\r
-      \r
       @Override\r
       public View getView(int position, View convertView, ViewGroup parent) {\r
         final LinearLayout result = new LinearLayout(parent.getContext());\r
-        //result.addView(new Butt)\r
-        // TODO: me\r
+        final DictionaryInfo dictionaryInfo = getItem(position);\r
+        for (int i = 0; i < dictionaryInfo.indexInfos.size(); ++i) {\r
+          final IndexInfo indexInfo = dictionaryInfo.indexInfos.get(i);\r
+          final Button button = new Button(parent.getContext());\r
+          String name = application.getLanguageName(indexInfo.shortName);\r
+          if (name == null) {\r
+            name = indexInfo.shortName;\r
+          }\r
+          button.setText(name);\r
+          final IntentLauncher intentLauncher = new IntentLauncher(parent.getContext(), getLaunchIntent(application.getPath(dictionaryInfo.uncompressedFilename), i, "")) {\r
+            @Override\r
+            protected void onGo() {\r
+              dialog.dismiss();\r
+              DictionaryActivity.this.finish();\r
+            };\r
+          };\r
+          button.setOnClickListener(intentLauncher);\r
+          \r
+          final LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);\r
+          layoutParams.width = 0;\r
+          layoutParams.weight = 1.0f;\r
+          button.setLayoutParams(layoutParams);\r
+\r
+          result.addView(button);\r
+        }\r
         return result;\r
       }\r
       \r
@@ -459,6 +475,8 @@ public class DictionaryActivity extends ListActivity {
         return installedDicts.size();\r
       }\r
     });\r
+    \r
+    dialog.show();\r
   }\r
 \r
 \r