package com.hughes.android.dictionary;
-import java.util.ArrayList;
-import java.util.List;
-
+import android.app.AlertDialog;
import android.app.ListActivity;
+import android.content.Context;
+import android.content.DialogInterface;
import android.content.Intent;
+import android.content.SharedPreferences;
import android.os.Bundle;
+import android.preference.PreferenceManager;
import android.util.Log;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.ViewGroup;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem.OnMenuItemClickListener;
-import android.view.View.OnFocusChangeListener;
+import android.webkit.WebView;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
-import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TextView;
import android.widget.AdapterView.AdapterContextMenuInfo;
+import android.widget.AdapterView.OnItemClickListener;
import com.hughes.android.util.PersistentObjectCache;
static final String LOG = "QuickDic";
- static final String DICTIONARY_CONFIGS = "dictionaryConfigs";
+ QuickDicConfig quickDicConfig = new QuickDicConfig();
- List<DictionaryConfig> dictionaries = new ArrayList<DictionaryConfig>();
public void onCreate(Bundle savedInstanceState) {
+ ((DictionaryApplication)getApplication()).applyTheme(this);
+
super.onCreate(savedInstanceState);
Log.d(LOG, "onCreate:" + this);
// UI init.
setContentView(R.layout.list_activity);
-
- getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
- public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int row,
- long arg3) {
- return false;
+
+ getListView().setOnItemClickListener(new OnItemClickListener() {
+ @Override
+ public void onItemClick(AdapterView<?> arg0, View arg1, int index,
+ long id) {
+ onClick(index);
}
});
-
+
// ContextMenu.
registerForContextMenu(getListView());
-
- getListView().setItemsCanFocus(true);
+
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ final int introMessageId = -1;
+ if (prefs.getInt(C.INTRO_MESSAGE_SHOWN, 0) < introMessageId) {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setCancelable(false);
+ final WebView webView = new WebView(getApplicationContext());
+ webView.loadData(getString(R.string.thanksForUpdating), "text/html", "utf-8");
+ builder.setView(webView);
+ builder.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ dialog.cancel();
+ }
+ });
+ final AlertDialog alert = builder.create();
+ alert.show();
+ prefs.edit().putInt(C.INTRO_MESSAGE_SHOWN, introMessageId).commit();
+ }
+ }
+
+ private void onClick(int dictIndex) {
+ final Intent intent = DictionaryActivity.getIntent(this, dictIndex, 0, "");
+ startActivity(intent);
}
- @SuppressWarnings("unchecked")
@Override
protected void onResume() {
super.onResume();
+
+ final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
+ if (prefs.contains(C.DICT_INDEX) && prefs.contains(C.INDEX_INDEX)) {
+ Log.d(LOG, "Skipping Dictionary List, going straight to dictionary.");
+ startActivity(DictionaryActivity.getIntent(this, prefs.getInt(C.DICT_INDEX, 0), prefs.getInt(C.INDEX_INDEX, 0), prefs.getString(C.SEARCH_TOKEN, "")));
+ //finish();
+ return;
+ }
- dictionaries = (List<DictionaryConfig>) PersistentObjectCache.init(this).read(DICTIONARY_CONFIGS);
- if (dictionaries == null) {
- dictionaries = new ArrayList<DictionaryConfig>();
+ quickDicConfig = PersistentObjectCache.init(this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
+ if (quickDicConfig == null) {
+ quickDicConfig = new QuickDicConfig();
+ PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
}
- if (dictionaries.size() == 0) {
- final DictionaryConfig dictionaryConfig = DictionaryConfig.defaultConfig();
- dictionaries.add(dictionaryConfig);
- PersistentObjectCache.getInstance().write(DICTIONARY_CONFIGS, dictionaries);
+ if (quickDicConfig.currentVersion < QuickDicConfig.LATEST_VERSION) {
+ Log.d(LOG, "Dictionary list is old, updating it.");
+ quickDicConfig.addDefaultDictionaries();
+ quickDicConfig.currentVersion = QuickDicConfig.LATEST_VERSION;
}
setListAdapter(new Adapter());
+
}
public boolean onCreateOptionsMenu(final Menu menu) {
public boolean onMenuItemClick(final MenuItem menuItem) {
final DictionaryConfig dictionaryConfig = new DictionaryConfig();
dictionaryConfig.name = getString(R.string.newDictionary);
- dictionaries.add(0, dictionaryConfig);
+ quickDicConfig.dictionaryConfigs.add(0, dictionaryConfig);
dictionaryConfigsChanged();
return false;
}
});
+
+ final MenuItem addDefaultDictionariesMenuItem = menu.add(R.string.addDefaultDictionaries);
+ addDefaultDictionariesMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
+ public boolean onMenuItemClick(final MenuItem menuItem) {
+ quickDicConfig.addDefaultDictionaries();
+ dictionaryConfigsChanged();
+ return false;
+ }
+ });
+
+ final MenuItem about = menu.add(getString(R.string.about));
+ about.setOnMenuItemClickListener(new OnMenuItemClickListener() {
+ public boolean onMenuItemClick(final MenuItem menuItem) {
+ final Intent intent = new Intent().setClassName(AboutActivity.class
+ .getPackage().getName(), AboutActivity.class.getCanonicalName());
+ startActivity(intent);
+ return false;
+ }
+ });
+
+ final MenuItem preferences = menu.add(getString(R.string.preferences));
+ preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {
+ public boolean onMenuItemClick(final MenuItem menuItem) {
+ startActivity(new Intent(DictionaryListActivity.this,
+ PreferenceActivity.class));
+ return false;
+ }
+ });
return true;
}
editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- final Intent intent = new Intent(DictionaryListActivity.this, DictionaryEditActivity.class);
- intent.putExtra(DictionaryEditActivity.DICT_INDEX, adapterContextMenuInfo.position);
- startActivity(intent);
+ startActivity(DictionaryEditActivity.getIntent(adapterContextMenuInfo.position));
return true;
}
});
moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- final DictionaryConfig dictionaryConfig = dictionaries.remove(adapterContextMenuInfo.position);
- dictionaries.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
+ final DictionaryConfig dictionaryConfig = quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
+ quickDicConfig.dictionaryConfigs.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
dictionaryConfigsChanged();
return true;
}
deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
- dictionaries.remove(adapterContextMenuInfo.position);
+ quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
dictionaryConfigsChanged();
return true;
}
}
private void dictionaryConfigsChanged() {
- PersistentObjectCache.getInstance().write(DICTIONARY_CONFIGS, dictionaries);
+ PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
setListAdapter(getListAdapter());
}
- static final OnFocusChangeListener focusListener = new OnFocusChangeListener() {
- @Override
- public void onFocusChange(View v, boolean hasFocus) {
- final TextView textView = (TextView) v;
- if (hasFocus) {
- textView.setTextAppearance(v.getContext(), R.style.Theme_QuickDic);
- } else {
- //textView.setTextAppearance(v.getContext(), android.R.style.TextAppearance_Medium);
- }
- }
- };
-
-
class Adapter extends BaseAdapter {
@Override
public int getCount() {
- return dictionaries.size();
+ return quickDicConfig.dictionaryConfigs.size();
}
@Override
public DictionaryConfig getItem(int position) {
- return dictionaries.get(position);
+ return quickDicConfig.dictionaryConfigs.get(position);
}
@Override
view.setText(dictionaryConfig.name);
view.setTextSize(20);
- view.setFocusable(true);
- view.setOnFocusChangeListener(focusListener);
tableLayout.addView(view);
- final EditText view2 = new EditText(parent.getContext());
- view2.setText(dictionaryConfig.name + "2");
- view2.setFocusable(true);
- view2.setOnFocusChangeListener(focusListener);
- tableLayout.addView(view2);
-
return tableLayout;
}
}
+ public static Intent getIntent(final Context context) {
+ DictionaryActivity.clearDictionaryPrefs(context);
+ final Intent intent = new Intent();
+ intent.setClassName(DictionaryListActivity.class.getPackage().getName(),
+ DictionaryListActivity.class.getName());
+ return intent;
+ }
}