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
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
\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
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
langButton.setOnLongClickListener(new OnLongClickListener() {\r
@Override\r
public boolean onLongClick(View v) {\r
- onLanguageButtonLongClick();\r
+ onLanguageButtonLongClick(v.getContext());\r
return true;\r
}\r
});\r
}\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
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
@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
return installedDicts.size();\r
}\r
});\r
+ \r
+ dialog.show();\r
}\r
\r
\r