]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/DictionaryEditActivity.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryEditActivity.java
index 3c2f5a0b8e8e8e8160286176491433fe5ada99a5..1e3615607d7ca27105f04d6cc0c2f96bbc948c4b 100644 (file)
@@ -1,38 +1,50 @@
 package com.hughes.android.dictionary;
 
-import java.util.List;
+import java.io.File;
+import java.io.IOException;
+import java.io.RandomAccessFile;
 
 import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.text.Editable;
+import android.text.TextWatcher;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.MenuItem.OnMenuItemClickListener;
 import android.widget.EditText;
+import android.widget.TextView;
 
+import com.hughes.android.dictionary.engine.Dictionary;
+import com.hughes.android.dictionary.engine.Index;
 import com.hughes.android.util.PersistentObjectCache;
 
 public class DictionaryEditActivity extends Activity {
 
-  List<DictionaryConfig> dictionaryConfigs;
+  QuickDicConfig quickDicConfig;
   private DictionaryConfig dictionaryConfig;
 
-  public static final String DICT_INDEX = "dictIndex";
+  
+  public static Intent getIntent(final int dictIndex) {
+    final Intent intent = new Intent();
+    intent.setClassName(DictionaryEditActivity.class.getPackage().getName(), DictionaryEditActivity.class.getName());
+    intent.putExtra(C.DICT_INDEX, dictIndex);
+    return intent;
+  }
 
   /** Called when the activity is first created. */
-  @SuppressWarnings("unchecked")
   @Override
   public void onCreate(final Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.edit_activity);
 
     PersistentObjectCache.init(this);
-    dictionaryConfigs = (List<DictionaryConfig>) PersistentObjectCache.init(
-        this).read(DictionaryListActivity.DICTIONARY_CONFIGS);
+    quickDicConfig = PersistentObjectCache.init(
+        this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
 
     final Intent intent = getIntent();
-    dictionaryConfig = dictionaryConfigs.get(intent.getIntExtra(DICT_INDEX, 0));
+    dictionaryConfig = quickDicConfig.dictionaryConfigs.get(intent.getIntExtra(C.DICT_INDEX, 0));
 
     // Write stuff from object into fields.
     
@@ -40,6 +52,23 @@ public class DictionaryEditActivity extends Activity {
     ((EditText) findViewById(R.id.localFile)).setText(dictionaryConfig.localFile);
     ((EditText) findViewById(R.id.wordListFile)).setText(dictionaryConfig.wordList);
     ((EditText) findViewById(R.id.downloadUrl)).setText(dictionaryConfig.downloadUrl);
+    
+    updateDictInfo();
+    ((EditText) findViewById(R.id.localFile)).addTextChangedListener(new TextWatcher() {
+      @Override
+      public void onTextChanged(CharSequence s, int start, int before, int count) {
+      }
+      
+      @Override
+      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+      }
+      
+      @Override
+      public void afterTextChanged(Editable s) {
+        updateDictInfo();
+      }
+    });
+    
   }
 
   @Override
@@ -52,8 +81,7 @@ public class DictionaryEditActivity extends Activity {
     dictionaryConfig.wordList = ((EditText) findViewById(R.id.wordListFile)).getText().toString();
     dictionaryConfig.downloadUrl = ((EditText) findViewById(R.id.downloadUrl)).getText().toString();
     
-    PersistentObjectCache.getInstance().write(
-        DictionaryListActivity.DICTIONARY_CONFIGS, dictionaryConfigs);
+    PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
   }
   
   public boolean onCreateOptionsMenu(final Menu menu) {
@@ -67,6 +95,34 @@ public class DictionaryEditActivity extends Activity {
     
     return true;
   }
+  
+  void updateDictInfo() {
+    final TextView dictInfo = (TextView) findViewById(R.id.dictionaryInfo);
+    final String localFile = ((EditText) findViewById(R.id.localFile)).getText().toString();
+    
+    if (!new File(localFile).canRead()) {
+      dictInfo.setText(getString(R.string.fileNotFound, localFile));
+      return;
+    }
+    
+    try {
+      final RandomAccessFile raf = new RandomAccessFile(localFile, "r");
+      final Dictionary dict = new Dictionary(raf);
+      final StringBuilder builder = new StringBuilder();
+      builder.append(dict.dictInfo).append("\n");
+      builder.append(getString(R.string.numPairEntries, dict.pairEntries.size())).append("\n");
+      for (final Index index : dict.indices) {
+        builder.append("\n");
+        builder.append(index.longName).append("\n");
+        builder.append("  ").append(getString(R.string.numTokens, index.sortedIndexEntries.size())).append("\n");
+        builder.append("  ").append(getString(R.string.numRows, index.rows.size())).append("\n");
+      }
+      raf.close();
+      dictInfo.setText(builder.toString());
+    } catch (IOException e) {
+      dictInfo.setText(getString(R.string.invalidDictionary, localFile, e.toString()));
+    }
+  }
 
   static void startDownloadDictActivity(final Context context, final DictionaryConfig dictionaryConfig) {
     final Intent intent = new Intent(context, DownloadActivity.class);
@@ -75,5 +131,4 @@ public class DictionaryEditActivity extends Activity {
     context.startActivity(intent);
   }
 
-
 }