]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/DictionaryListActivity.java
29ec4b88f94475bfd8095f9c9ac44dd847deb676
[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     super.onCreate(savedInstanceState);
38     Log.d(LOG, "onCreate:" + this);
39
40     // UI init.
41     setContentView(R.layout.list_activity);
42
43     getListView().setOnItemClickListener(new OnItemClickListener() {
44       @Override
45       public void onItemClick(AdapterView<?> arg0, View arg1, int index,
46           long id) {
47         onClick(index);
48       }
49     });
50
51     // ContextMenu.
52     registerForContextMenu(getListView());
53
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) {
64                dialog.cancel();
65           }
66       });
67       final AlertDialog alert = builder.create();
68       alert.show();
69       prefs.edit().putInt(C.INTRO_MESSAGE_SHOWN, introMessageId).commit();
70     }
71   }
72   
73   private void onClick(int dictIndex) {
74     final Intent intent = DictionaryActivity.getIntent(this, dictIndex, 0, "");
75     startActivity(intent);
76   }
77   
78   @Override
79   protected void onResume() {
80     super.onResume();
81     
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, "")));
85       finish();
86       return;
87     }
88
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);
93     }
94
95     setListAdapter(new Adapter());
96     
97   }
98
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();
107             return false;
108           }
109         });
110     
111     return true;
112   }
113   
114
115   @Override
116   public void onCreateContextMenu(final ContextMenu menu, final View view,
117       final ContextMenuInfo menuInfo) {
118     super.onCreateContextMenu(menu, view, menuInfo);
119     
120     final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
121     
122     final MenuItem editMenuItem = menu.add(R.string.editDictionary);
123     editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
124       @Override
125       public boolean onMenuItemClick(MenuItem item) {
126         startActivity(DictionaryEditActivity.getIntent(adapterContextMenuInfo.position));
127         return true;
128       }
129     });
130
131     if (adapterContextMenuInfo.position > 0) {
132       final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
133       moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
134         @Override
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();
139           return true;
140         }
141       });
142     }
143
144     final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
145     deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
146       @Override
147       public boolean onMenuItemClick(MenuItem item) {
148         quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
149         dictionaryConfigsChanged();
150         return true;
151       }
152     });
153
154   }
155
156   private void dictionaryConfigsChanged() {
157     PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
158     setListAdapter(getListAdapter());
159   }
160
161   class Adapter extends BaseAdapter {
162
163     @Override
164     public int getCount() {
165       return quickDicConfig.dictionaryConfigs.size();
166     }
167
168     @Override
169     public DictionaryConfig getItem(int position) {
170       return quickDicConfig.dictionaryConfigs.get(position);
171     }
172
173     @Override
174     public long getItemId(int position) {
175       return position;
176     }
177     
178     @Override
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());
183
184       view.setText(dictionaryConfig.name);
185       view.setTextSize(20);
186       tableLayout.addView(view);
187
188       return tableLayout;
189     }
190     
191   }
192
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());
198     return intent;
199   }
200
201 }