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;
public final class QuickDicConfig implements Serializable {
private static final long serialVersionUID = 6711617368780900979L;
+
+ final List<DictionaryInfo> dictionaryInfos = new ArrayList<DictionaryInfo>();
- static final int LATEST_VERSION = 1;
-
- final List<DictionaryConfig> dictionaryConfigs = new ArrayList<DictionaryConfig>();
- int currentVersion = LATEST_VERSION;
+ public QuickDicConfig(final Context context) {
+ addDefaultDictionaries(context);
+ }
- public QuickDicConfig() {
- addDefaultDictionaries();
+ public void addDefaultDictionaries(final Context context) {
+ for (final DictionaryInfo dictionaryInfo : getDefaultDictionaries(context).values()) {
+ addOrReplace(dictionaryInfo);
+ }
}
-
- public void addDefaultDictionaries() {
- {
- final DictionaryConfig de_en_chemnitz = new DictionaryConfig();
- de_en_chemnitz.name = "DE<->EN (Chemnitz)";
- de_en_chemnitz.downloadUrl = "https://sites.google.com/site/quickdic/dictionaries-1/DE-EN_chemnitz.quickdic.zip?attredirects=0&d=1";
- de_en_chemnitz.localFile = "/sdcard/quickDic/DE-EN_chemnitz.quickdic";
- addOrReplace(de_en_chemnitz);
+
+ private static Map<String,DictionaryInfo> defaultDictionaries = null;
+ public synchronized static Map<String,DictionaryInfo> getDefaultDictionaries(final Context context) {
+ if (defaultDictionaries != null) {
+ return defaultDictionaries;
}
-
- {
- final DictionaryConfig en_it_wiktionary = new DictionaryConfig();
- en_it_wiktionary.name = "EN<->IT (EN Wiktionary)";
- en_it_wiktionary.downloadUrl = "https://sites.google.com/site/quickdic/dictionaries-1/EN-IT_enwiktionary.quickdic.zip?attredirects=0&d=1";
- en_it_wiktionary.localFile = "/sdcard/quickDic/EN-IT_enwiktionary.quickdic";
- addOrReplace(en_it_wiktionary);
+
+ 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);
+ }
+ } catch (IOException e) {
+ defaultDictionaries = null;
+ return new LinkedHashMap<String, DictionaryInfo>();
}
+
+ return defaultDictionaries;
}
- private void addOrReplace(final DictionaryConfig dictionaryConfig) {
- for (int i = 0; i < dictionaryConfigs.size(); ++i) {
- if (dictionaryConfigs.get(i).name.equals(dictionaryConfig.name)) {
- dictionaryConfigs.set(i, dictionaryConfig);
+ private void addOrReplace(final DictionaryInfo 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);
}
}