]> 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 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;
26
27 import com.hughes.android.util.PersistentObjectCache;
28
29 public class DictionaryListActivity extends ListActivity {
30
31   static final String LOG = "QuickDic";
32   
33   QuickDicConfig quickDicConfig = new QuickDicConfig();
34   
35   
36   public void onCreate(Bundle savedInstanceState) {
37     ((DictionaryApplication)getApplication()).applyTheme(this);
38
39     super.onCreate(savedInstanceState);
40     Log.d(LOG, "onCreate:" + this);
41
42     // UI init.
43     setContentView(R.layout.list_activity);
44
45     getListView().setOnItemClickListener(new OnItemClickListener() {
46       @Override
47       public void onItemClick(AdapterView<?> arg0, View arg1, int index,
48           long id) {
49         onClick(index);
50       }
51     });
52
53     // ContextMenu.
54     registerForContextMenu(getListView());
55
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) {
66                dialog.cancel();
67           }
68       });
69       final AlertDialog alert = builder.create();
70       alert.show();
71       prefs.edit().putInt(C.INTRO_MESSAGE_SHOWN, introMessageId).commit();
72     }
73   }
74   
75   private void onClick(int dictIndex) {
76     final Intent intent = DictionaryActivity.getIntent(this, dictIndex, 0, "");
77     startActivity(intent);
78   }
79   
80   @Override
81   protected void onResume() {
82     super.onResume();
83     
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, "")));
88       //finish();
89       return;
90     }
91
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);
96     }
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;
101     }
102
103     setListAdapter(new Adapter());
104     
105   }
106
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();
115             return false;
116           }
117         });
118
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();
124             return false;
125           }
126         });
127
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);
134         return false;
135       }
136     });
137     
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));
143         return false;
144       }
145     });
146     
147     return true;
148   }
149   
150
151   @Override
152   public void onCreateContextMenu(final ContextMenu menu, final View view,
153       final ContextMenuInfo menuInfo) {
154     super.onCreateContextMenu(menu, view, menuInfo);
155     
156     final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
157     
158     final MenuItem editMenuItem = menu.add(R.string.editDictionary);
159     editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
160       @Override
161       public boolean onMenuItemClick(MenuItem item) {
162         startActivity(DictionaryEditActivity.getIntent(adapterContextMenuInfo.position));
163         return true;
164       }
165     });
166
167     if (adapterContextMenuInfo.position > 0) {
168       final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
169       moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
170         @Override
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();
175           return true;
176         }
177       });
178     }
179
180     final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
181     deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
182       @Override
183       public boolean onMenuItemClick(MenuItem item) {
184         quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
185         dictionaryConfigsChanged();
186         return true;
187       }
188     });
189
190   }
191
192   private void dictionaryConfigsChanged() {
193     PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
194     setListAdapter(getListAdapter());
195   }
196
197   class Adapter extends BaseAdapter {
198
199     @Override
200     public int getCount() {
201       return quickDicConfig.dictionaryConfigs.size();
202     }
203
204     @Override
205     public DictionaryConfig getItem(int position) {
206       return quickDicConfig.dictionaryConfigs.get(position);
207     }
208
209     @Override
210     public long getItemId(int position) {
211       return position;
212     }
213     
214     @Override
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());
219
220       view.setText(dictionaryConfig.name);
221       view.setTextSize(20);
222       tableLayout.addView(view);
223
224       return tableLayout;
225     }
226     
227   }
228
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());
234     return intent;
235   }
236
237 }