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 super.onCreate(savedInstanceState);
38 Log.d(LOG, "onCreate:" + this);
41 setContentView(R.layout.list_activity);
43 getListView().setOnItemClickListener(new OnItemClickListener() {
45 public void onItemClick(AdapterView<?> arg0, View arg1, int index,
52 registerForContextMenu(getListView());
54 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
55 final int introMessageId = 0;
56 if (prefs.getInt(C.INTRO_MESSAGE_SHOWN, 0) < introMessageId) {
57 final AlertDialog.Builder builder = new AlertDialog.Builder(this);
58 builder.setCancelable(false);
59 final WebView webView = new WebView(getApplicationContext());
60 webView.loadData(getString(R.string.thanksForUpdating), "text/html", "utf-8");
61 builder.setView(webView);
62 builder.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
63 public void onClick(DialogInterface dialog, int id) {
67 final AlertDialog alert = builder.create();
69 prefs.edit().putInt(C.INTRO_MESSAGE_SHOWN, introMessageId).commit();
73 private void onClick(int dictIndex) {
74 final Intent intent = DictionaryActivity.getIntent(this, dictIndex, 0, "");
75 startActivity(intent);
79 protected void onResume() {
82 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
83 if (prefs.contains(C.DICT_INDEX) && prefs.contains(C.INDEX_INDEX)) {
84 startActivity(DictionaryActivity.getIntent(this, prefs.getInt(C.DICT_INDEX, 0), prefs.getInt(C.INDEX_INDEX, 0), prefs.getString(C.SEARCH_TOKEN, "")));
89 quickDicConfig = PersistentObjectCache.init(this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
90 if (quickDicConfig == null) {
91 quickDicConfig = new QuickDicConfig();
92 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
95 setListAdapter(new Adapter());
99 public boolean onCreateOptionsMenu(final Menu menu) {
100 final MenuItem newDictionaryMenuItem = menu.add(R.string.addDictionary);
101 newDictionaryMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
102 public boolean onMenuItemClick(final MenuItem menuItem) {
103 final DictionaryConfig dictionaryConfig = new DictionaryConfig();
104 dictionaryConfig.name = getString(R.string.newDictionary);
105 quickDicConfig.dictionaryConfigs.add(0, dictionaryConfig);
106 dictionaryConfigsChanged();
116 public void onCreateContextMenu(final ContextMenu menu, final View view,
117 final ContextMenuInfo menuInfo) {
118 super.onCreateContextMenu(menu, view, menuInfo);
120 final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
122 final MenuItem editMenuItem = menu.add(R.string.editDictionary);
123 editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
125 public boolean onMenuItemClick(MenuItem item) {
126 startActivity(DictionaryEditActivity.getIntent(adapterContextMenuInfo.position));
131 if (adapterContextMenuInfo.position > 0) {
132 final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
133 moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
135 public boolean onMenuItemClick(MenuItem item) {
136 final DictionaryConfig dictionaryConfig = quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
137 quickDicConfig.dictionaryConfigs.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
138 dictionaryConfigsChanged();
144 final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
145 deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
147 public boolean onMenuItemClick(MenuItem item) {
148 quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
149 dictionaryConfigsChanged();
156 private void dictionaryConfigsChanged() {
157 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
158 setListAdapter(getListAdapter());
161 class Adapter extends BaseAdapter {
164 public int getCount() {
165 return quickDicConfig.dictionaryConfigs.size();
169 public DictionaryConfig getItem(int position) {
170 return quickDicConfig.dictionaryConfigs.get(position);
174 public long getItemId(int position) {
179 public View getView(int position, View convertView, ViewGroup parent) {
180 final DictionaryConfig dictionaryConfig = getItem(position);
181 final TableLayout tableLayout = new TableLayout(parent.getContext());
182 final TextView view = new TextView(parent.getContext());
184 view.setText(dictionaryConfig.name);
185 view.setTextSize(20);
186 tableLayout.addView(view);
193 public static Intent getIntent(final Context context) {
194 DictionaryActivity.clearDictionaryPrefs(context);
195 final Intent intent = new Intent();
196 intent.setClassName(DictionaryListActivity.class.getPackage().getName(),
197 DictionaryListActivity.class.getName());