]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/DictionaryListActivity.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / DictionaryListActivity.java
1 package com.hughes.android.dictionary;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
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;
25
26 import com.hughes.android.util.PersistentObjectCache;
27
28 public class DictionaryListActivity extends ListActivity {
29
30   static final String LOG = "QuickDic";
31   
32   static final String DICTIONARY_CONFIGS = "dictionaryConfigs";
33   
34   List<DictionaryConfig> dictionaries = new ArrayList<DictionaryConfig>();
35   
36   public void onCreate(Bundle savedInstanceState) {
37     super.onCreate(savedInstanceState);
38     Log.d(LOG, "onCreate:" + this);
39
40     // UI init.
41     setContentView(R.layout.list_activity);
42     
43     getListView().setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
44       public boolean onItemLongClick(AdapterView<?> arg0, View arg1, int row,
45           long arg3) {
46         return false;
47       }
48     });
49     
50     // ContextMenu.
51     registerForContextMenu(getListView());
52     
53     getListView().setItemsCanFocus(true);
54   }
55   
56   @SuppressWarnings("unchecked")
57   @Override
58   protected void onResume() {
59     super.onResume();
60
61     dictionaries = (List<DictionaryConfig>) PersistentObjectCache.init(this).read(DICTIONARY_CONFIGS);
62     if (dictionaries == null) {
63       dictionaries = new ArrayList<DictionaryConfig>();
64     }
65     if (dictionaries.size() == 0) {
66       final DictionaryConfig dictionaryConfig = DictionaryConfig.defaultConfig();
67       dictionaries.add(dictionaryConfig);
68       PersistentObjectCache.getInstance().write(DICTIONARY_CONFIGS, dictionaries);
69     }
70
71     setListAdapter(new Adapter());
72   }
73
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();
82             return false;
83           }
84         });
85     
86     return true;
87   }
88   
89
90   @Override
91   public void onCreateContextMenu(final ContextMenu menu, final View view,
92       final ContextMenuInfo menuInfo) {
93     super.onCreateContextMenu(menu, view, menuInfo);
94     
95     final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
96     
97     final MenuItem editMenuItem = menu.add(R.string.editDictionary);
98     editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
99       @Override
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);
104         return true;
105       }
106     });
107
108     if (adapterContextMenuInfo.position > 0) {
109       final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
110       moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
111         @Override
112         public boolean onMenuItemClick(MenuItem item) {
113           final DictionaryConfig dictionaryConfig = dictionaries.remove(adapterContextMenuInfo.position);
114           dictionaries.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
115           dictionaryConfigsChanged();
116           return true;
117         }
118       });
119     }
120
121     final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
122     deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
123       @Override
124       public boolean onMenuItemClick(MenuItem item) {
125         dictionaries.remove(adapterContextMenuInfo.position);
126         dictionaryConfigsChanged();
127         return true;
128       }
129     });
130
131   }
132
133   private void dictionaryConfigsChanged() {
134     PersistentObjectCache.getInstance().write(DICTIONARY_CONFIGS, dictionaries);
135     setListAdapter(getListAdapter());
136   }
137
138   static final OnFocusChangeListener focusListener = new OnFocusChangeListener() {
139     @Override
140     public void onFocusChange(View v, boolean hasFocus) {
141       final TextView textView = (TextView) v;
142       if (hasFocus) {
143         textView.setTextAppearance(v.getContext(), R.style.Theme_QuickDic);
144       } else {
145         //textView.setTextAppearance(v.getContext(), android.R.style.TextAppearance_Medium);
146       }
147     }
148   };
149
150
151   class Adapter extends BaseAdapter {
152
153     @Override
154     public int getCount() {
155       return dictionaries.size();
156     }
157
158     @Override
159     public DictionaryConfig getItem(int position) {
160       return dictionaries.get(position);
161     }
162
163     @Override
164     public long getItemId(int position) {
165       return position;
166     }
167     
168     @Override
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());
173
174       view.setText(dictionaryConfig.name);
175       view.setTextSize(20);
176       view.setFocusable(true);
177       view.setOnFocusChangeListener(focusListener);
178       tableLayout.addView(view);
179
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);
185
186       return tableLayout;
187     }
188     
189   }
190
191
192 }