import android.view.KeyEvent;\r
import android.view.Menu;\r
import android.view.MenuItem;\r
-import android.view.WindowManager;\r
import android.view.MenuItem.OnMenuItemClickListener;\r
import android.view.MotionEvent;\r
import android.view.View;\r
import android.view.View.OnClickListener;\r
import android.view.View.OnLongClickListener;\r
import android.view.ViewGroup;\r
+import android.view.WindowManager;\r
import android.view.inputmethod.InputMethodManager;\r
import android.widget.AdapterView;\r
import android.widget.AdapterView.AdapterContextMenuInfo;\r
\r
import com.hughes.android.dictionary.DictionaryInfo.IndexInfo;\r
import com.hughes.android.dictionary.engine.Dictionary;\r
+import com.hughes.android.dictionary.engine.EntrySource;\r
import com.hughes.android.dictionary.engine.Index;\r
import com.hughes.android.dictionary.engine.PairEntry;\r
+import com.hughes.android.dictionary.engine.Index.IndexEntry;\r
import com.hughes.android.dictionary.engine.PairEntry.Pair;\r
import com.hughes.android.dictionary.engine.RowBase;\r
import com.hughes.android.dictionary.engine.TokenRow;\r
public class DictionaryActivity extends ListActivity {\r
\r
static final String LOG = "QuickDic";\r
- \r
+\r
+ private String initialSearchText;\r
+\r
DictionaryApplication application;\r
File dictFile = null;\r
RandomAccessFile dictRaf = null;\r
\r
final SearchTextWatcher searchTextWatcher = new SearchTextWatcher();\r
\r
+\r
public DictionaryActivity() {\r
}\r
\r
@Override\r
protected void onSaveInstanceState(final Bundle outState) {\r
super.onSaveInstanceState(outState);\r
+ Log.d(LOG, "onSaveInstanceState: " + searchText.getText().toString());\r
outState.putString(C.SEARCH_TOKEN, searchText.getText().toString());\r
}\r
\r
@Override\r
protected void onRestoreInstanceState(final Bundle outState) {\r
super.onRestoreInstanceState(outState);\r
- setSearchText(outState.getString(C.SEARCH_TOKEN));\r
+ Log.d(LOG, "onRestoreInstanceState: " + outState.getString(C.SEARCH_TOKEN));\r
+ initialSearchText = outState.getString(C.SEARCH_TOKEN);\r
}\r
\r
@Override\r
- public void onCreate(Bundle savedInstanceState) { \r
+ public void onCreate(Bundle savedInstanceState) { \r
+ setTheme(((DictionaryApplication)getApplication()).getSelectedTheme().themeId);\r
+\r
Log.d(LOG, "onCreate:" + this);\r
super.onCreate(savedInstanceState);\r
\r
finish();\r
startActivity(getIntent());\r
}\r
+ if (initialSearchText != null) {\r
+ setSearchText(initialSearchText);\r
+ }\r
}\r
\r
@Override\r
}\r
\r
void updateLangButton() {\r
- langButton.setText(index.shortName);\r
+// final LanguageResources languageResources = Language.isoCodeToResources.get(index.shortName);\r
+// if (languageResources != null && languageResources.flagId != 0) {\r
+// langButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, languageResources.flagId, 0);\r
+// } else {\r
+// langButton.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);\r
+ langButton.setText(index.shortName);\r
+// }\r
}\r
\r
void onLanguageButton() {\r
public View getView(int position, View convertView, ViewGroup parent) {\r
final LinearLayout result = new LinearLayout(parent.getContext());\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
+ final String name = application.getDictionaryName(dictionaryInfo.uncompressedFilename);\r
button.setText(name);\r
- final IntentLauncher intentLauncher = new IntentLauncher(parent.getContext(), getLaunchIntent(application.getPath(dictionaryInfo.uncompressedFilename), i, "")) {\r
+ final IntentLauncher intentLauncher = new IntentLauncher(parent.getContext(), getLaunchIntent(application.getPath(dictionaryInfo.uncompressedFilename), 0, "")) {\r
@Override\r
protected void onGo() {\r
dialog.dismiss();\r
button.setLayoutParams(layoutParams);\r
\r
result.addView(button);\r
- }\r
return result;\r
}\r
\r
dialog.setTitle(name);\r
\r
final StringBuilder builder = new StringBuilder();\r
- final DictionaryInfo dictionaryInfo = Dictionary.getDictionaryInfo(dictFile);\r
+ final DictionaryInfo dictionaryInfo = dictionary.getDictionaryInfo();\r
+ dictionaryInfo.uncompressedBytes = dictFile.length();\r
if (dictionaryInfo != null) {\r
builder.append(dictionaryInfo.dictInfo).append("\n\n");\r
builder.append(getString(R.string.dictionaryPath, dictFile.getPath())).append("\n");\r
builder.append(getString(R.string.indexName, indexInfo.shortName)).append("\n");\r
builder.append(getString(R.string.mainTokenCount, indexInfo.mainTokenCount)).append("\n");\r
}\r
+ builder.append("\n");\r
+ builder.append(getString(R.string.sources)).append("\n");\r
+ for (final EntrySource source : dictionary.sources) {\r
+ builder.append(getString(R.string.sourceInfo, source.getName(), source.getNumEntries())).append("\n");\r
+ }\r
} else {\r
builder.append(getString(R.string.invalidDictionary));\r
}\r
final MenuItem searchForSelection = menu.add(getString(R.string.searchForSelection, selectedSpannableText));\r
searchForSelection.setOnMenuItemClickListener(new OnMenuItemClickListener() {\r
public boolean onMenuItemClick(MenuItem item) {\r
- if (indexIndex != selectedSpannableIndex) {\r
- changeIndex(selectedSpannableIndex);\r
+ int indexToUse = -1;\r
+ for (int i = 0; i < dictionary.indices.size(); ++i) {\r
+ final Index index = dictionary.indices.get(i);\r
+ final IndexEntry indexEntry = index.findExact(selectedText); \r
+ final TokenRow tokenRow = index.rows.get(indexEntry.startRow).getTokenRow(false);\r
+ if (tokenRow != null && tokenRow.hasMainEntry) {\r
+ indexToUse = i;\r
+ break;\r
+ }\r
+ }\r
+ if (indexToUse == -1) {\r
+ indexToUse = selectedSpannableIndex;\r
+ }\r
+ if (indexIndex != indexToUse) {\r
+ changeIndex(indexToUse);\r
}\r
setSearchText(selectedText);\r
return false;\r
searchText.setText(text);\r
searchText.requestFocus();\r
onSearchTextChange(searchText.getText().toString());\r
- Selection.moveToRightEdge(searchText.getText(), searchText.getLayout());\r
+ if (searchText.getLayout() != null) {\r
+ // Surprising, but this can crash when you rotate...\r
+ Selection.moveToRightEdge(searchText.getText(), searchText.getLayout());\r
+ }\r
}\r
\r
\r