1 package com.hughes.android.dictionary;
3 import android.app.AlertDialog;
4 import android.app.ListActivity;
5 import android.content.Context;
6 import android.content.DialogInterface;
7 import android.content.Intent;
8 import android.content.SharedPreferences;
9 import android.os.Bundle;
10 import android.preference.PreferenceManager;
11 import android.util.Log;
12 import android.view.ContextMenu;
13 import android.view.Menu;
14 import android.view.MenuItem;
15 import android.view.View;
16 import android.view.ViewGroup;
17 import android.view.ContextMenu.ContextMenuInfo;
18 import android.view.MenuItem.OnMenuItemClickListener;
19 import android.webkit.WebView;
20 import android.widget.AdapterView;
21 import android.widget.BaseAdapter;
22 import android.widget.TableLayout;
23 import android.widget.TextView;
24 import android.widget.AdapterView.AdapterContextMenuInfo;
25 import android.widget.AdapterView.OnItemClickListener;
27 import com.hughes.android.util.PersistentObjectCache;
29 public class DictionaryListActivity extends ListActivity {
31 static final String LOG = "QuickDic";
33 QuickDicConfig quickDicConfig = new QuickDicConfig();
36 public void onCreate(Bundle savedInstanceState) {
37 ((DictionaryApplication)getApplication()).applyTheme(this);
39 super.onCreate(savedInstanceState);
40 Log.d(LOG, "onCreate:" + this);
43 setContentView(R.layout.list_activity);
45 getListView().setOnItemClickListener(new OnItemClickListener() {
47 public void onItemClick(AdapterView<?> arg0, View arg1, int index,
54 registerForContextMenu(getListView());
56 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
57 final int introMessageId = -1;
58 if (prefs.getInt(C.INTRO_MESSAGE_SHOWN, 0) < introMessageId) {
59 final AlertDialog.Builder builder = new AlertDialog.Builder(this);
60 builder.setCancelable(false);
61 final WebView webView = new WebView(getApplicationContext());
62 webView.loadData(getString(R.string.thanksForUpdating), "text/html", "utf-8");
63 builder.setView(webView);
64 builder.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
65 public void onClick(DialogInterface dialog, int id) {
69 final AlertDialog alert = builder.create();
71 prefs.edit().putInt(C.INTRO_MESSAGE_SHOWN, introMessageId).commit();
75 private void onClick(int dictIndex) {
76 final Intent intent = DictionaryActivity.getIntent(this, dictIndex, 0, "");
77 startActivity(intent);
81 protected void onResume() {
84 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
85 if (prefs.contains(C.DICT_INDEX) && prefs.contains(C.INDEX_INDEX)) {
86 Log.d(LOG, "Skipping Dictionary List, going straight to dictionary.");
87 startActivity(DictionaryActivity.getIntent(this, prefs.getInt(C.DICT_INDEX, 0), prefs.getInt(C.INDEX_INDEX, 0), prefs.getString(C.SEARCH_TOKEN, "")));
92 quickDicConfig = PersistentObjectCache.init(this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
93 if (quickDicConfig == null) {
94 quickDicConfig = new QuickDicConfig();
95 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
97 if (quickDicConfig.currentVersion < QuickDicConfig.LATEST_VERSION) {
98 Log.d(LOG, "Dictionary list is old, updating it.");
99 quickDicConfig.addDefaultDictionaries();
100 quickDicConfig.currentVersion = QuickDicConfig.LATEST_VERSION;
103 setListAdapter(new Adapter());
107 public boolean onCreateOptionsMenu(final Menu menu) {
108 final MenuItem newDictionaryMenuItem = menu.add(R.string.addDictionary);
109 newDictionaryMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
110 public boolean onMenuItemClick(final MenuItem menuItem) {
111 final DictionaryConfig dictionaryConfig = new DictionaryConfig();
112 dictionaryConfig.name = getString(R.string.newDictionary);
113 quickDicConfig.dictionaryConfigs.add(0, dictionaryConfig);
114 dictionaryConfigsChanged();
119 final MenuItem addDefaultDictionariesMenuItem = menu.add(R.string.addDefaultDictionaries);
120 addDefaultDictionariesMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
121 public boolean onMenuItemClick(final MenuItem menuItem) {
122 quickDicConfig.addDefaultDictionaries();
123 dictionaryConfigsChanged();
128 final MenuItem about = menu.add(getString(R.string.about));
129 about.setOnMenuItemClickListener(new OnMenuItemClickListener() {
130 public boolean onMenuItemClick(final MenuItem menuItem) {
131 final Intent intent = new Intent().setClassName(AboutActivity.class
132 .getPackage().getName(), AboutActivity.class.getCanonicalName());
133 startActivity(intent);
138 final MenuItem preferences = menu.add(getString(R.string.preferences));
139 preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {
140 public boolean onMenuItemClick(final MenuItem menuItem) {
141 startActivity(new Intent(DictionaryListActivity.this,
142 PreferenceActivity.class));
152 public void onCreateContextMenu(final ContextMenu menu, final View view,
153 final ContextMenuInfo menuInfo) {
154 super.onCreateContextMenu(menu, view, menuInfo);
156 final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
158 final MenuItem editMenuItem = menu.add(R.string.editDictionary);
159 editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
161 public boolean onMenuItemClick(MenuItem item) {
162 startActivity(DictionaryEditActivity.getIntent(adapterContextMenuInfo.position));
167 if (adapterContextMenuInfo.position > 0) {
168 final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
169 moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
171 public boolean onMenuItemClick(MenuItem item) {
172 final DictionaryConfig dictionaryConfig = quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
173 quickDicConfig.dictionaryConfigs.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
174 dictionaryConfigsChanged();
180 final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
181 deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
183 public boolean onMenuItemClick(MenuItem item) {
184 quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
185 dictionaryConfigsChanged();
192 private void dictionaryConfigsChanged() {
193 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
194 setListAdapter(getListAdapter());
197 class Adapter extends BaseAdapter {
200 public int getCount() {
201 return quickDicConfig.dictionaryConfigs.size();
205 public DictionaryConfig getItem(int position) {
206 return quickDicConfig.dictionaryConfigs.get(position);
210 public long getItemId(int position) {
215 public View getView(int position, View convertView, ViewGroup parent) {
216 final DictionaryConfig dictionaryConfig = getItem(position);
217 final TableLayout tableLayout = new TableLayout(parent.getContext());
218 final TextView view = new TextView(parent.getContext());
220 view.setText(dictionaryConfig.name);
221 view.setTextSize(20);
222 tableLayout.addView(view);
229 public static Intent getIntent(final Context context) {
230 DictionaryActivity.clearDictionaryPrefs(context);
231 final Intent intent = new Intent();
232 intent.setClassName(DictionaryListActivity.class.getPackage().getName(),
233 DictionaryListActivity.class.getName());