]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/DictionaryEditActivity.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryEditActivity.java
1 package com.hughes.android.dictionary;
2
3 import java.io.File;
4 import java.io.IOException;
5 import java.io.RandomAccessFile;
6
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;
18
19 import com.hughes.android.dictionary.engine.Dictionary;
20 import com.hughes.android.dictionary.engine.Index;
21 import com.hughes.android.util.PersistentObjectCache;
22
23 public class DictionaryEditActivity extends Activity {
24
25   QuickDicConfig quickDicConfig;
26   private DictionaryConfig dictionaryConfig;
27
28   
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);
33     return intent;
34   }
35
36   /** Called when the activity is first created. */
37   @Override
38   public void onCreate(final Bundle savedInstanceState) {
39     super.onCreate(savedInstanceState);
40     setContentView(R.layout.edit_activity);
41
42     PersistentObjectCache.init(this);
43     quickDicConfig = PersistentObjectCache.init(
44         this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
45
46     final Intent intent = getIntent();
47     dictionaryConfig = quickDicConfig.dictionaryConfigs.get(intent.getIntExtra(C.DICT_INDEX, 0));
48
49     // Write stuff from object into fields.
50     
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);
55     
56     updateDictInfo();
57     ((EditText) findViewById(R.id.localFile)).addTextChangedListener(new TextWatcher() {
58       @Override
59       public void onTextChanged(CharSequence s, int start, int before, int count) {
60       }
61       
62       @Override
63       public void beforeTextChanged(CharSequence s, int start, int count, int after) {
64       }
65       
66       @Override
67       public void afterTextChanged(Editable s) {
68         updateDictInfo();
69       }
70     });
71     
72   }
73
74   @Override
75   protected void onPause() {
76     super.onPause();
77     
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();
83     
84     PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
85   }
86   
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);
92             return false;
93           }
94         });
95     
96     return true;
97   }
98   
99   void updateDictInfo() {
100     final TextView dictInfo = (TextView) findViewById(R.id.dictionaryInfo);
101     final String localFile = ((EditText) findViewById(R.id.localFile)).getText().toString();
102     
103     if (!new File(localFile).canRead()) {
104       dictInfo.setText(getString(R.string.fileNotFound, localFile));
105       return;
106     }
107     
108     try {
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");
119       }
120       raf.close();
121       dictInfo.setText(builder.toString());
122     } catch (IOException e) {
123       dictInfo.setText(getString(R.string.invalidDictionary, localFile, e.toString()));
124     }
125   }
126
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);
132   }
133
134 }