import android.net.Uri;
import android.preference.PreferenceManager;
import android.util.Log;
+import android.util.TypedValue;
import android.view.View;
import android.view.View.OnClickListener;
+import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView.ScaleType;
+import android.widget.LinearLayout;
import com.actionbarsherlock.view.Menu;
import com.actionbarsherlock.view.MenuItem;
final Map<String, DictionaryInfo> uncompressedFilenameToDictionaryInfo = new LinkedHashMap<String, DictionaryInfo>();
}
DictionaryConfig dictionaryConfig = null;
+
+
+ int languageButtonPixels = 22;
// static final class DictionaryHistory implements Serializable {
// private static final long serialVersionUID = -4842995032541390284L;
TransliteratorManager.init(null);
staticInit(getApplicationContext());
+ languageButtonPixels = (int) TypedValue.applyDimension(
+ TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics());
+
+
// Load the dictionaries we know about.
dictionaryConfig = PersistentObjectCache.init(getApplicationContext()).read(
C.DICTIONARY_CONFIGS, DictionaryConfig.class);
final IndexInfo indexInfo) {
LanguageResources languageResources = Language.isoCodeToResources.get(indexInfo.shortName);
View result;
+
if (languageResources == null || languageResources.flagId <= 0) {
Button button = new Button(context);
button.setText(indexInfo.shortName);
button.setScaleType(ScaleType.FIT_CENTER);
result = button;
}
- result.setOnClickListener(
- new IntentLauncher(context,
- DictionaryActivity.getLaunchIntent(getPath(dictionaryInfo.uncompressedFilename), indexInfo.shortName, "")));
+ result.setMinimumWidth(languageButtonPixels);
+ result.setMinimumHeight(languageButtonPixels * 2 / 3);
+// result.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
return result;
}
}
}}).start();
}
+
+ public boolean matchesFilters(final DictionaryInfo dictionaryInfo, final String[] filters) {
+ if (filters == null) {
+ return true;
+ }
+ for (final String filter : filters) {
+ if (!getDictionaryName(dictionaryInfo.uncompressedFilename).toLowerCase().contains(filter)) {
+ return false;
+ }
+ }
+ return true;
+ }
- public synchronized List<DictionaryInfo> getDictionariesOnDevice() {
+ public synchronized List<DictionaryInfo> getDictionariesOnDevice(String[] filters) {
final List<DictionaryInfo> result = new ArrayList<DictionaryInfo>(dictionaryConfig.dictionaryFilesOrdered.size());
for (final String uncompressedFilename : dictionaryConfig.dictionaryFilesOrdered) {
final DictionaryInfo dictionaryInfo = dictionaryConfig.uncompressedFilenameToDictionaryInfo.get(uncompressedFilename);
- if (dictionaryInfo != null) {
+ if (dictionaryInfo != null && matchesFilters(dictionaryInfo, filters)) {
result.add(dictionaryInfo);
}
}
return result;
}
- public synchronized List<DictionaryInfo> getAllDictionaries() {
- final List<DictionaryInfo> result = getDictionariesOnDevice();
-
- // The downloadable ones.
- final Map<String,DictionaryInfo> remaining = new LinkedHashMap<String, DictionaryInfo>(DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO);
- remaining.keySet().removeAll(dictionaryConfig.dictionaryFilesOrdered);
- final List<DictionaryInfo> toAddSorted = new ArrayList<DictionaryInfo>(remaining.values());
- Collections.sort(toAddSorted, dictionaryInfoComparator);
- result.addAll(toAddSorted);
-
- return result;
+ public List<DictionaryInfo> getDownloadableDictionaries(String[] filters) {
+ final List<DictionaryInfo> result = new ArrayList<DictionaryInfo>(dictionaryConfig.dictionaryFilesOrdered.size());
+
+ final Map<String, DictionaryInfo> remaining = new LinkedHashMap<String, DictionaryInfo>(DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO);
+ remaining.keySet().removeAll(dictionaryConfig.dictionaryFilesOrdered);
+ for (final DictionaryInfo dictionaryInfo : remaining.values()) {
+ if (matchesFilters(dictionaryInfo, filters)) {
+ result.add(dictionaryInfo);
+ }
+ }
+ Collections.sort(result, dictionaryInfoComparator);
+ return result;
}
-
+
public synchronized boolean isDictionaryOnDevice(String uncompressedFilename) {
return dictionaryConfig.uncompressedFilenameToDictionaryInfo.get(uncompressedFilename) != null;
}
public boolean updateAvailable(final DictionaryInfo dictionaryInfo) {
- final DictionaryInfo downloadable = DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO.get(dictionaryInfo.uncompressedFilename);
- return downloadable != null && downloadable.creationMillis > dictionaryInfo.creationMillis;
+ final DictionaryInfo downloadable =
+ DOWNLOADABLE_UNCOMPRESSED_FILENAME_NAME_TO_DICTIONARY_INFO.get(
+ dictionaryInfo.uncompressedFilename);
+ return downloadable != null &&
+ downloadable.creationMillis > dictionaryInfo.creationMillis;
}
public DictionaryInfo getDownloadable(final String uncompressedFilename) {