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.util.Log;
14 import android.view.Menu;
15 import android.view.MenuItem;
16 import android.view.MenuItem.OnMenuItemClickListener;
17 import android.widget.EditText;
18 import android.widget.TextView;
20 import com.hughes.android.dictionary.engine.Dictionary;
21 import com.hughes.android.dictionary.engine.Index;
22 import com.hughes.android.util.PersistentObjectCache;
24 public class DictionaryEditActivity extends Activity {
26 static final String LOG = "QuickDic";
28 QuickDicConfig quickDicConfig;
29 private DictionaryConfig dictionaryConfig;
31 public static Intent getIntent(final int dictIndex) {
32 final Intent intent = new Intent();
33 intent.setClassName(DictionaryEditActivity.class.getPackage().getName(),
34 DictionaryEditActivity.class.getName());
35 intent.putExtra(C.DICT_INDEX, dictIndex);
39 /** Called when the activity is first created. */
41 public void onCreate(final Bundle savedInstanceState) {
42 super.onCreate(savedInstanceState);
43 setContentView(R.layout.edit_activity);
45 final Intent intent = getIntent();
47 PersistentObjectCache.init(this);
49 quickDicConfig = PersistentObjectCache.init(this).read(
50 C.DICTIONARY_CONFIGS, QuickDicConfig.class);
51 dictionaryConfig = quickDicConfig.dictionaryConfigs.get(intent
52 .getIntExtra(C.DICT_INDEX, 0));
53 } catch (Exception e) {
54 Log.e(LOG, "Failed to read QuickDicConfig.", e);
55 quickDicConfig = new QuickDicConfig();
56 dictionaryConfig = quickDicConfig.dictionaryConfigs.get(0);
59 // Write stuff from object into fields.
61 ((EditText) findViewById(R.id.dictionaryName))
62 .setText(dictionaryConfig.name);
63 ((EditText) findViewById(R.id.localFile))
64 .setText(dictionaryConfig.localFile);
65 ((EditText) findViewById(R.id.downloadUrl))
66 .setText(dictionaryConfig.downloadUrl);
69 ((EditText) findViewById(R.id.localFile))
70 .addTextChangedListener(new TextWatcher() {
72 public void onTextChanged(CharSequence s, int start, int before,
77 public void beforeTextChanged(CharSequence s, int start, int count,
82 public void afterTextChanged(Editable s) {
90 protected void onPause() {
93 // Read stuff from fields into object.
94 dictionaryConfig.name = ((EditText) findViewById(R.id.dictionaryName))
95 .getText().toString();
96 dictionaryConfig.localFile = ((EditText) findViewById(R.id.localFile))
97 .getText().toString();
98 dictionaryConfig.downloadUrl = ((EditText) findViewById(R.id.downloadUrl))
99 .getText().toString();
101 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS,
105 public boolean onCreateOptionsMenu(final Menu menu) {
106 final MenuItem newDictionaryMenuItem = menu
107 .add(R.string.downloadDictionary);
108 newDictionaryMenuItem
109 .setOnMenuItemClickListener(new OnMenuItemClickListener() {
110 public boolean onMenuItemClick(final MenuItem menuItem) {
111 startDownloadDictActivity(DictionaryEditActivity.this,
120 void updateDictInfo() {
121 final TextView dictInfo = (TextView) findViewById(R.id.dictionaryInfo);
122 final String localFile = ((EditText) findViewById(R.id.localFile))
123 .getText().toString();
125 if (!new File(localFile).canRead()) {
126 dictInfo.setText(getString(R.string.fileNotFound, localFile));
131 final RandomAccessFile raf = new RandomAccessFile(localFile, "r");
132 final Dictionary dict = new Dictionary(raf);
133 final StringBuilder builder = new StringBuilder();
134 builder.append(dict.dictInfo).append("\n");
136 getString(R.string.numPairEntries, dict.pairEntries.size())).append(
138 for (final Index index : dict.indices) {
139 builder.append("\n");
140 builder.append(index.longName).append("\n");
141 builder.append(" ").append(
142 getString(R.string.numTokens, index.sortedIndexEntries.size()))
144 builder.append(" ").append(
145 getString(R.string.numRows, index.rows.size())).append("\n");
148 dictInfo.setText(builder.toString());
149 } catch (IOException e) {
150 dictInfo.setText(getString(R.string.invalidDictionary, localFile, e
155 static void startDownloadDictActivity(final Context context,
156 final DictionaryConfig dictionaryConfig) {
157 final Intent intent = new Intent(context, DownloadActivity.class);
158 intent.putExtra(DownloadActivity.SOURCE, dictionaryConfig.downloadUrl);
159 intent.putExtra(DownloadActivity.DEST, dictionaryConfig.localFile);
160 context.startActivity(intent);