1 package com.hughes.android.dictionary;
3 import java.util.ArrayList;
6 import android.app.ListActivity;
7 import android.content.Intent;
8 import android.os.Bundle;
9 import android.util.Log;
10 import android.view.ContextMenu;
11 import android.view.Menu;
12 import android.view.MenuItem;
13 import android.view.View;
14 import android.view.ViewGroup;
15 import android.view.ContextMenu.ContextMenuInfo;
16 import android.view.MenuItem.OnMenuItemClickListener;
17 import android.view.View.OnFocusChangeListener;
18 import android.widget.AdapterView;
19 import android.widget.BaseAdapter;
20 import android.widget.EditText;
21 import android.widget.ListView;
22 import android.widget.TableLayout;
23 import android.widget.TextView;
24 import android.widget.AdapterView.AdapterContextMenuInfo;
26 import com.hughes.android.util.PersistentObjectCache;
28 public class DictionaryListActivity extends ListActivity {
30 static final String LOG = "QuickDic";
32 static final String DICTIONARY_CONFIGS = "dictionaryConfigs";
34 List<DictionaryConfig> dictionaries = new ArrayList<DictionaryConfig>();
36 public void onCreate(Bundle savedInstanceState) {
37 super.onCreate(savedInstanceState);
38 Log.d(LOG, "onCreate:" + this);
41 setContentView(R.layout.list_activity);
43 getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
44 public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int row,
51 registerForContextMenu(getListView());
53 getListView().setItemsCanFocus(true);
56 @SuppressWarnings("unchecked")
58 protected void onResume() {
61 dictionaries = (List<DictionaryConfig>) PersistentObjectCache.init(this).read(DICTIONARY_CONFIGS);
62 if (dictionaries == null) {
63 dictionaries = new ArrayList<DictionaryConfig>();
65 if (dictionaries.size() == 0) {
66 final DictionaryConfig dictionaryConfig = DictionaryConfig.defaultConfig();
67 dictionaries.add(dictionaryConfig);
68 PersistentObjectCache.getInstance().write(DICTIONARY_CONFIGS, dictionaries);
71 setListAdapter(new Adapter());
74 public boolean onCreateOptionsMenu(final Menu menu) {
75 final MenuItem newDictionaryMenuItem = menu.add(R.string.addDictionary);
76 newDictionaryMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
77 public boolean onMenuItemClick(final MenuItem menuItem) {
78 final DictionaryConfig dictionaryConfig = new DictionaryConfig();
79 dictionaryConfig.name = getString(R.string.newDictionary);
80 dictionaries.add(0, dictionaryConfig);
81 dictionaryConfigsChanged();
91 public void onCreateContextMenu(final ContextMenu menu, final View view,
92 final ContextMenuInfo menuInfo) {
93 super.onCreateContextMenu(menu, view, menuInfo);
95 final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
97 final MenuItem editMenuItem = menu.add(R.string.editDictionary);
98 editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
100 public boolean onMenuItemClick(MenuItem item) {
101 final Intent intent = new Intent(DictionaryListActivity.this, DictionaryEditActivity.class);
102 intent.putExtra(DictionaryEditActivity.DICT_INDEX, adapterContextMenuInfo.position);
103 startActivity(intent);
108 if (adapterContextMenuInfo.position > 0) {
109 final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
110 moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
112 public boolean onMenuItemClick(MenuItem item) {
113 final DictionaryConfig dictionaryConfig = dictionaries.remove(adapterContextMenuInfo.position);
114 dictionaries.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
115 dictionaryConfigsChanged();
121 final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
122 deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
124 public boolean onMenuItemClick(MenuItem item) {
125 dictionaries.remove(adapterContextMenuInfo.position);
126 dictionaryConfigsChanged();
133 private void dictionaryConfigsChanged() {
134 PersistentObjectCache.getInstance().write(DICTIONARY_CONFIGS, dictionaries);
135 setListAdapter(getListAdapter());
138 static final OnFocusChangeListener focusListener = new OnFocusChangeListener() {
140 public void onFocusChange(View v, boolean hasFocus) {
141 final TextView textView = (TextView) v;
143 textView.setTextAppearance(v.getContext(), R.style.Theme_QuickDic);
145 //textView.setTextAppearance(v.getContext(), android.R.style.TextAppearance_Medium);
151 class Adapter extends BaseAdapter {
154 public int getCount() {
155 return dictionaries.size();
159 public DictionaryConfig getItem(int position) {
160 return dictionaries.get(position);
164 public long getItemId(int position) {
169 public View getView(int position, View convertView, ViewGroup parent) {
170 final DictionaryConfig dictionaryConfig = getItem(position);
171 final TableLayout tableLayout = new TableLayout(parent.getContext());
172 final TextView view = new TextView(parent.getContext());
174 view.setText(dictionaryConfig.name);
175 view.setTextSize(20);
176 view.setFocusable(true);
177 view.setOnFocusChangeListener(focusListener);
178 tableLayout.addView(view);
180 final EditText view2 = new EditText(parent.getContext());
181 view2.setText(dictionaryConfig.name + "2");
182 view2.setFocusable(true);
183 view2.setOnFocusChangeListener(focusListener);
184 tableLayout.addView(view2);