]> 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 1e3615607d7ca27105f04d6cc0c2f96bbc948c4b..9a450eef5444d6e7cbec90bf27b6178cc1a4cbf1 100644 (file)
@@ -8,11 +8,17 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
+import android.os.Handler;
 import android.text.Editable;
 import android.text.TextWatcher;
+import android.util.Log;
+import android.view.KeyEvent;
 import android.view.Menu;
 import android.view.MenuItem;
+import android.view.View;
 import android.view.MenuItem.OnMenuItemClickListener;
+import android.view.View.OnClickListener;
+import android.widget.Button;
 import android.widget.EditText;
 import android.widget.TextView;
 
@@ -22,13 +28,17 @@ import com.hughes.android.util.PersistentObjectCache;
 
 public class DictionaryEditActivity extends Activity {
 
+  static final String LOG = "QuickDic";
+
   QuickDicConfig quickDicConfig;
   private DictionaryConfig dictionaryConfig;
-
   
+  final Handler uiHandler = new Handler();
+
   public static Intent getIntent(final int dictIndex) {
     final Intent intent = new Intent();
-    intent.setClassName(DictionaryEditActivity.class.getPackage().getName(), DictionaryEditActivity.class.getName());
+    intent.setClassName(DictionaryEditActivity.class.getPackage().getName(),
+        DictionaryEditActivity.class.getName());
     intent.putExtra(C.DICT_INDEX, dictIndex);
     return intent;
   }
@@ -36,99 +46,181 @@ public class DictionaryEditActivity extends Activity {
   /** Called when the activity is first created. */
   @Override
   public void onCreate(final Bundle savedInstanceState) {
+    ((DictionaryApplication)getApplication()).applyTheme(this);
+
     super.onCreate(savedInstanceState);
     setContentView(R.layout.edit_activity);
 
-    PersistentObjectCache.init(this);
-    quickDicConfig = PersistentObjectCache.init(
-        this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
-
     final Intent intent = getIntent();
-    dictionaryConfig = quickDicConfig.dictionaryConfigs.get(intent.getIntExtra(C.DICT_INDEX, 0));
 
-    // Write stuff from object into fields.
-    
-    ((EditText) findViewById(R.id.dictionaryName)).setText(dictionaryConfig.name);
-    ((EditText) findViewById(R.id.localFile)).setText(dictionaryConfig.localFile);
-    ((EditText) findViewById(R.id.wordListFile)).setText(dictionaryConfig.wordList);
-    ((EditText) findViewById(R.id.downloadUrl)).setText(dictionaryConfig.downloadUrl);
+    final int dictIndex = intent.getIntExtra(C.DICT_INDEX, 0);
+      
+    PersistentObjectCache.init(this);
+    try {
+      quickDicConfig = PersistentObjectCache.init(this).read(
+          C.DICTIONARY_CONFIGS, QuickDicConfig.class);
+      dictionaryConfig = quickDicConfig.dictionaryConfigs.get(dictIndex);
+    } catch (Exception e) {
+      Log.e(LOG, "Failed to read QuickDicConfig.", e);
+      quickDicConfig = new QuickDicConfig();
+      dictionaryConfig = quickDicConfig.dictionaryConfigs.get(0);
+    }
     
-    updateDictInfo();
-    ((EditText) findViewById(R.id.localFile)).addTextChangedListener(new TextWatcher() {
+    // Write stuff from object into fields.
+
+    ((EditText) findViewById(R.id.dictionaryName))
+        .setText(dictionaryConfig.name);
+    ((EditText) findViewById(R.id.localFile))
+        .setText(dictionaryConfig.localFile);
+
+    final TextWatcher textWatcher = new TextWatcher() {
       @Override
-      public void onTextChanged(CharSequence s, int start, int before, int count) {
+      public void onTextChanged(CharSequence s, int start, int before,
+          int count) {
       }
-      
+
       @Override
-      public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+      public void beforeTextChanged(CharSequence s, int start, int count,
+          int after) {
       }
-      
+
       @Override
       public void afterTextChanged(Editable s) {
         updateDictInfo();
       }
+    };
+
+    ((EditText) findViewById(R.id.localFile)).addTextChangedListener(textWatcher);
+
+    final EditText downloadUrl = (EditText) findViewById(R.id.downloadUrl);
+    downloadUrl.setText(dictionaryConfig.downloadUrl);
+    downloadUrl.addTextChangedListener(textWatcher);
+    
+    final Button downloadButton = (Button) findViewById(R.id.downloadButton);
+    downloadButton.setOnClickListener(new OnClickListener() {
+      @Override
+      public void onClick(View v) {
+        startDownloadDictActivity(DictionaryEditActivity.this,
+            dictionaryConfig);
+      }
+    });
+
+    final Button openButton = (Button) findViewById(R.id.openButton);
+    openButton.setOnClickListener(new OnClickListener() {
+      @Override
+      public void onClick(View v) {
+        final Intent intent = DictionaryActivity.getIntent(DictionaryEditActivity.this, dictIndex, 0, "");
+        startActivity(intent);
+      }
     });
+
+  }
+  
+  protected void onResume() {
+    super.onResume();
     
+    updateDictInfo();
   }
 
   @Override
   protected void onPause() {
     super.onPause();
-    
+
     // Read stuff from fields into object.
-    dictionaryConfig.name = ((EditText) findViewById(R.id.dictionaryName)).getText().toString();
-    dictionaryConfig.localFile = ((EditText) findViewById(R.id.localFile)).getText().toString();
-    dictionaryConfig.wordList = ((EditText) findViewById(R.id.wordListFile)).getText().toString();
-    dictionaryConfig.downloadUrl = ((EditText) findViewById(R.id.downloadUrl)).getText().toString();
-    
-    PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
+    dictionaryConfig.name = ((EditText) findViewById(R.id.dictionaryName))
+        .getText().toString();
+    dictionaryConfig.localFile = ((EditText) findViewById(R.id.localFile))
+        .getText().toString();
+    dictionaryConfig.downloadUrl = ((EditText) findViewById(R.id.downloadUrl))
+        .getText().toString();
+
+    PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS,
+        quickDicConfig);
   }
-  
+
   public boolean onCreateOptionsMenu(final Menu menu) {
-    final MenuItem newDictionaryMenuItem = menu.add(R.string.downloadDictionary);
+    final MenuItem newDictionaryMenuItem = menu
+        .add(R.string.downloadDictionary);
     newDictionaryMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
           public boolean onMenuItemClick(final MenuItem menuItem) {
-            startDownloadDictActivity(DictionaryEditActivity.this, dictionaryConfig);
+            startDownloadDictActivity(DictionaryEditActivity.this,
+                dictionaryConfig);
             return false;
           }
         });
     
+    final MenuItem dictionaryList = menu.add(getString(R.string.dictionaryList));
+    dictionaryList.setOnMenuItemClickListener(new OnMenuItemClickListener() {
+      public boolean onMenuItemClick(final MenuItem menuItem) {
+        startActivity(DictionaryListActivity.getIntent(DictionaryEditActivity.this));
+        return false;
+      }
+    });
+
+
     return true;
   }
-  
+
   void updateDictInfo() {
+    final String downloadUrl = ((EditText) findViewById(R.id.downloadUrl))
+        .getText().toString();
+    final String localFile = ((EditText) findViewById(R.id.localFile))
+        .getText().toString();
+
+    final Button downloadButton = (Button) findViewById(R.id.downloadButton);
+    downloadButton.setEnabled(downloadUrl.length() > 0 && localFile.length() > 0);
+
+    final Button openButton = (Button) findViewById(R.id.openButton);
+    openButton.setEnabled(false);
+
     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");
+      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");
+        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());
+      openButton.setEnabled(true);
+      
     } catch (IOException e) {
-      dictInfo.setText(getString(R.string.invalidDictionary, localFile, e.toString()));
+      dictInfo.setText(getString(R.string.invalidDictionary, localFile, e
+          .toString()));
     }
   }
 
-  static void startDownloadDictActivity(final Context context, final DictionaryConfig dictionaryConfig) {
+  static void startDownloadDictActivity(final Context context,
+      final DictionaryConfig dictionaryConfig) {
     final Intent intent = new Intent(context, DownloadActivity.class);
     intent.putExtra(DownloadActivity.SOURCE, dictionaryConfig.downloadUrl);
-    intent.putExtra(DownloadActivity.DEST, dictionaryConfig.localFile);
+    intent.putExtra(DownloadActivity.DEST, dictionaryConfig.localFile + ".zip");
     context.startActivity(intent);
   }
+  
+  @Override
+  public boolean onKeyDown(final int keyCode, final KeyEvent event) {
+    if (keyCode == KeyEvent.KEYCODE_BACK) {
+      Log.d(LOG, "Clearing dictionary prefs.");
+      DictionaryActivity.clearDictionaryPrefs(this);
+    }
+    return super.onKeyDown(keyCode, event);
+  }
 
 }