1 package com.hughes.android.dictionary;
4 import java.io.IOException;
5 import java.io.RandomAccessFile;
7 import android.app.Activity;
8 import android.content.Context;
9 import android.content.Intent;
10 import android.os.Bundle;
11 import android.text.Editable;
12 import android.text.TextWatcher;
13 import android.view.Menu;
14 import android.view.MenuItem;
15 import android.view.MenuItem.OnMenuItemClickListener;
16 import android.widget.EditText;
17 import android.widget.TextView;
19 import com.hughes.android.dictionary.engine.Dictionary;
20 import com.hughes.android.dictionary.engine.Index;
21 import com.hughes.android.util.PersistentObjectCache;
23 public class DictionaryEditActivity extends Activity {
25 QuickDicConfig quickDicConfig;
26 private DictionaryConfig dictionaryConfig;
29 public static Intent getIntent(final int dictIndex) {
30 final Intent intent = new Intent();
31 intent.setClassName(DictionaryEditActivity.class.getPackage().getName(), DictionaryEditActivity.class.getName());
32 intent.putExtra(C.DICT_INDEX, dictIndex);
36 /** Called when the activity is first created. */
38 public void onCreate(final Bundle savedInstanceState) {
39 super.onCreate(savedInstanceState);
40 setContentView(R.layout.edit_activity);
42 PersistentObjectCache.init(this);
43 quickDicConfig = PersistentObjectCache.init(
44 this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
46 final Intent intent = getIntent();
47 dictionaryConfig = quickDicConfig.dictionaryConfigs.get(intent.getIntExtra(C.DICT_INDEX, 0));
49 // Write stuff from object into fields.
51 ((EditText) findViewById(R.id.dictionaryName)).setText(dictionaryConfig.name);
52 ((EditText) findViewById(R.id.localFile)).setText(dictionaryConfig.localFile);
53 ((EditText) findViewById(R.id.wordListFile)).setText(dictionaryConfig.wordList);
54 ((EditText) findViewById(R.id.downloadUrl)).setText(dictionaryConfig.downloadUrl);
57 ((EditText) findViewById(R.id.localFile)).addTextChangedListener(new TextWatcher() {
59 public void onTextChanged(CharSequence s, int start, int before, int count) {
63 public void beforeTextChanged(CharSequence s, int start, int count, int after) {
67 public void afterTextChanged(Editable s) {
75 protected void onPause() {
78 // Read stuff from fields into object.
79 dictionaryConfig.name = ((EditText) findViewById(R.id.dictionaryName)).getText().toString();
80 dictionaryConfig.localFile = ((EditText) findViewById(R.id.localFile)).getText().toString();
81 dictionaryConfig.wordList = ((EditText) findViewById(R.id.wordListFile)).getText().toString();
82 dictionaryConfig.downloadUrl = ((EditText) findViewById(R.id.downloadUrl)).getText().toString();
84 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
87 public boolean onCreateOptionsMenu(final Menu menu) {
88 final MenuItem newDictionaryMenuItem = menu.add(R.string.downloadDictionary);
89 newDictionaryMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
90 public boolean onMenuItemClick(final MenuItem menuItem) {
91 startDownloadDictActivity(DictionaryEditActivity.this, dictionaryConfig);
99 void updateDictInfo() {
100 final TextView dictInfo = (TextView) findViewById(R.id.dictionaryInfo);
101 final String localFile = ((EditText) findViewById(R.id.localFile)).getText().toString();
103 if (!new File(localFile).canRead()) {
104 dictInfo.setText(getString(R.string.fileNotFound, localFile));
109 final RandomAccessFile raf = new RandomAccessFile(localFile, "r");
110 final Dictionary dict = new Dictionary(raf);
111 final StringBuilder builder = new StringBuilder();
112 builder.append(dict.dictInfo).append("\n");
113 builder.append(getString(R.string.numPairEntries, dict.pairEntries.size())).append("\n");
114 for (final Index index : dict.indices) {
115 builder.append("\n");
116 builder.append(index.longName).append("\n");
117 builder.append(" ").append(getString(R.string.numTokens, index.sortedIndexEntries.size())).append("\n");
118 builder.append(" ").append(getString(R.string.numRows, index.rows.size())).append("\n");
121 dictInfo.setText(builder.toString());
122 } catch (IOException e) {
123 dictInfo.setText(getString(R.string.invalidDictionary, localFile, e.toString()));
127 static void startDownloadDictActivity(final Context context, final DictionaryConfig dictionaryConfig) {
128 final Intent intent = new Intent(context, DownloadActivity.class);
129 intent.putExtra(DownloadActivity.SOURCE, dictionaryConfig.downloadUrl);
130 intent.putExtra(DownloadActivity.DEST, dictionaryConfig.localFile);
131 context.startActivity(intent);