]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/QuickDicConfig.java
Theme, different color rows, dictionary_info, long click begin.
[Dictionary.git] / src / com / hughes / android / dictionary / QuickDicConfig.java
index 414ae2ddf88667f04b5ce57f9be8c20965ccf40f..0ad8b38bb01890c7e9291f7001cc16912ccd72d7 100644 (file)
 
 package com.hughes.android.dictionary;
 
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
 import java.io.Serializable;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
+import java.util.Map;
 
+import android.content.Context;
 import android.os.Environment;
 
 import com.hughes.android.dictionary.engine.Language;
@@ -25,50 +31,64 @@ import com.hughes.android.dictionary.engine.Language;
 public final class QuickDicConfig implements Serializable {
   
   private static final long serialVersionUID = 6711617368780900979L;
+
+  final List<DictionaryInfo> dictionaryInfos = new ArrayList<DictionaryInfo>();
   
-  // Just increment this to have them all update...
-  static final int LATEST_VERSION = 6;
-  
-  final List<DictionaryInfo> dictionaryConfigs = new ArrayList<DictionaryInfo>();
-  int currentVersion = LATEST_VERSION;
-  
-  public QuickDicConfig() {
-    addDefaultDictionaries();
+  public QuickDicConfig(final Context context) {
+    addDefaultDictionaries(context);
   }
   
-  static final String BASE_URL = "http://quickdic-dictionary.googlecode.com/files/";
-
-  // TODO: read this from a resource file....
+  public void addDefaultDictionaries(final Context context) {
+    for (final DictionaryInfo dictionaryInfo : getDefaultDictionaries(context).values()) {
+      addOrReplace(dictionaryInfo);
+    }
+  }
   
-  public void addDefaultDictionaries() {
-    {
-      final DictionaryInfo config = new DictionaryInfo();
-      config.name = "German-English";
-      config.downloadUrl = String.format("%sDE-EN_chemnitz_enwiktionary.quickdic.%s.zip", BASE_URL, VERSION_SUFFIX);
-      config.localFile = String.format("%s/quickDic/DE-EN_chemnitz_enwiktionary.quickdic", Environment.getExternalStorageDirectory());
-      addOrReplace(config);
+  private static Map<String,DictionaryInfo> defaultDictionaries = null;
+  public synchronized static Map<String,DictionaryInfo> getDefaultDictionaries(final Context context) {
+    if (defaultDictionaries != null) {
+      return defaultDictionaries;
     }
     
-    for (final String iso : Language.isoCodeToResourceName.keySet()) {
-      if (iso.equals("EN") || iso.equals("DE")) {
-        continue;
+    defaultDictionaries = new LinkedHashMap<String, DictionaryInfo>();
+    
+    final BufferedReader reader = new BufferedReader(new InputStreamReader(context.getResources().openRawResource(R.raw.dictionary_info)));
+    String line;
+    String name = "";
+    try {
+      while ((line = reader.readLine()) != null) {
+        if (line.startsWith("#") || line.length() == 0) {
+          continue;
+        }
+        final DictionaryInfo dictionaryInfo = new DictionaryInfo(line);
+        for (int i = 0; i < dictionaryInfo.langIsos.length; ++i) {
+          final Integer langCode = Language.isoCodeToResourceId.get(dictionaryInfo.langIsos[i]);
+          final String lang = langCode != null ? context.getString(langCode) : dictionaryInfo.langIsos[i];
+          if (i > 0) {
+            name += "-";
+          }
+          name += lang;
+        }
+        dictionaryInfo.name = name;
+        dictionaryInfo.localFile = Environment.getExternalStorageDirectory().getName() + "/quickdic/" + dictionaryInfo.uncompressedFilename; 
+        defaultDictionaries.put(dictionaryInfo.localFile, dictionaryInfo);
       }
-      final DictionaryInfo config = new DictionaryInfo();
-      config.name = String.format("English-%s", Language.isoCodeToWikiName.get(iso));
-      config.downloadUrl = String.format("%sEN-%s_enwiktionary.quickdic.%s.zip", BASE_URL, iso, VERSION_SUFFIX);
-      config.localFile = String.format("%s/quickDic/EN-%s_enwiktionary.quickdic", Environment.getExternalStorageDirectory(), iso);
-      addOrReplace(config);
+    } catch (IOException e) {
+      defaultDictionaries = null;
+      return new LinkedHashMap<String, DictionaryInfo>();
     }
+    
+    return defaultDictionaries;
   }
 
   private void addOrReplace(final DictionaryInfo dictionaryConfig) {
-    for (int i = 0; i < dictionaryConfigs.size(); ++i) {
-      if (dictionaryConfigs.get(i).name.equals(dictionaryConfig.name)) {
-        dictionaryConfigs.set(i, dictionaryConfig);
+    for (int i = 0; i < dictionaryInfos.size(); ++i) {
+      if (dictionaryInfos.get(i).uncompressedFilename.equals(dictionaryConfig.uncompressedFilename)) {
+        dictionaryInfos.set(i, dictionaryConfig);
         return;
       }
     }
-    dictionaryConfigs.add(dictionaryConfig);
+    dictionaryInfos.add(dictionaryConfig);
   }
 
 }