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