1 // Copyright 2011 Google Inc. All Rights Reserved.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 package com.hughes.android.dictionary;
17 import android.app.AlertDialog;
18 import android.app.ListActivity;
19 import android.content.Context;
20 import android.content.DialogInterface;
21 import android.content.Intent;
22 import android.content.SharedPreferences;
23 import android.os.Bundle;
24 import android.preference.PreferenceManager;
25 import android.util.Log;
26 import android.view.ContextMenu;
27 import android.view.Menu;
28 import android.view.MenuItem;
29 import android.view.View;
30 import android.view.ViewGroup;
31 import android.view.ContextMenu.ContextMenuInfo;
32 import android.view.MenuItem.OnMenuItemClickListener;
33 import android.webkit.WebView;
34 import android.widget.AdapterView;
35 import android.widget.BaseAdapter;
36 import android.widget.TableLayout;
37 import android.widget.TextView;
38 import android.widget.AdapterView.AdapterContextMenuInfo;
39 import android.widget.AdapterView.OnItemClickListener;
41 import com.hughes.android.util.PersistentObjectCache;
43 public class DictionaryListActivity extends ListActivity {
45 static final String LOG = "QuickDic";
47 QuickDicConfig quickDicConfig = new QuickDicConfig();
50 public void onCreate(Bundle savedInstanceState) {
51 ((DictionaryApplication)getApplication()).applyTheme(this);
53 super.onCreate(savedInstanceState);
54 Log.d(LOG, "onCreate:" + this);
57 setContentView(R.layout.list_activity);
59 getListView().setOnItemClickListener(new OnItemClickListener() {
61 public void onItemClick(AdapterView<?> arg0, View arg1, int index,
68 registerForContextMenu(getListView());
70 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
71 final int introMessageId = -1;
72 if (prefs.getInt(C.INTRO_MESSAGE_SHOWN, 0) < introMessageId) {
73 final AlertDialog.Builder builder = new AlertDialog.Builder(this);
74 builder.setCancelable(false);
75 final WebView webView = new WebView(getApplicationContext());
76 webView.loadData(getString(R.string.thanksForUpdating), "text/html", "utf-8");
77 builder.setView(webView);
78 builder.setNegativeButton(android.R.string.ok, new DialogInterface.OnClickListener() {
79 public void onClick(DialogInterface dialog, int id) {
83 final AlertDialog alert = builder.create();
85 prefs.edit().putInt(C.INTRO_MESSAGE_SHOWN, introMessageId).commit();
89 private void onClick(int dictIndex) {
90 final Intent intent = DictionaryActivity.getIntent(this, dictIndex, 0, "");
91 startActivity(intent);
95 protected void onResume() {
98 final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
99 if (prefs.contains(C.DICT_INDEX) && prefs.contains(C.INDEX_INDEX)) {
100 Log.d(LOG, "Skipping Dictionary List, going straight to dictionary.");
101 startActivity(DictionaryActivity.getIntent(this, prefs.getInt(C.DICT_INDEX, 0), prefs.getInt(C.INDEX_INDEX, 0), prefs.getString(C.SEARCH_TOKEN, "")));
106 quickDicConfig = PersistentObjectCache.init(this).read(C.DICTIONARY_CONFIGS, QuickDicConfig.class);
107 if (quickDicConfig == null) {
108 quickDicConfig = new QuickDicConfig();
109 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
111 if (quickDicConfig.currentVersion < QuickDicConfig.LATEST_VERSION) {
112 Log.d(LOG, "Dictionary list is old, updating it.");
113 quickDicConfig.addDefaultDictionaries();
114 quickDicConfig.currentVersion = QuickDicConfig.LATEST_VERSION;
117 setListAdapter(new Adapter());
121 public boolean onCreateOptionsMenu(final Menu menu) {
122 final MenuItem newDictionaryMenuItem = menu.add(R.string.addDictionary);
123 newDictionaryMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
124 public boolean onMenuItemClick(final MenuItem menuItem) {
125 final DictionaryConfig dictionaryConfig = new DictionaryConfig();
126 dictionaryConfig.name = getString(R.string.newDictionary);
127 quickDicConfig.dictionaryConfigs.add(0, dictionaryConfig);
128 dictionaryConfigsChanged();
133 final MenuItem addDefaultDictionariesMenuItem = menu.add(R.string.addDefaultDictionaries);
134 addDefaultDictionariesMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
135 public boolean onMenuItemClick(final MenuItem menuItem) {
136 quickDicConfig.addDefaultDictionaries();
137 dictionaryConfigsChanged();
142 final MenuItem about = menu.add(getString(R.string.about));
143 about.setOnMenuItemClickListener(new OnMenuItemClickListener() {
144 public boolean onMenuItemClick(final MenuItem menuItem) {
145 final Intent intent = new Intent().setClassName(AboutActivity.class
146 .getPackage().getName(), AboutActivity.class.getCanonicalName());
147 startActivity(intent);
152 final MenuItem preferences = menu.add(getString(R.string.preferences));
153 preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {
154 public boolean onMenuItemClick(final MenuItem menuItem) {
155 startActivity(new Intent(DictionaryListActivity.this,
156 PreferenceActivity.class));
166 public void onCreateContextMenu(final ContextMenu menu, final View view,
167 final ContextMenuInfo menuInfo) {
168 super.onCreateContextMenu(menu, view, menuInfo);
170 final AdapterContextMenuInfo adapterContextMenuInfo = (AdapterContextMenuInfo) menuInfo;
172 final MenuItem editMenuItem = menu.add(R.string.editDictionary);
173 editMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
175 public boolean onMenuItemClick(MenuItem item) {
176 startActivity(DictionaryEditActivity.getIntent(adapterContextMenuInfo.position));
181 if (adapterContextMenuInfo.position > 0) {
182 final MenuItem moveUpMenuItem = menu.add(R.string.moveUp);
183 moveUpMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
185 public boolean onMenuItemClick(MenuItem item) {
186 final DictionaryConfig dictionaryConfig = quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
187 quickDicConfig.dictionaryConfigs.add(adapterContextMenuInfo.position - 1, dictionaryConfig);
188 dictionaryConfigsChanged();
194 final MenuItem deleteMenuItem = menu.add(R.string.deleteDictionary);
195 deleteMenuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {
197 public boolean onMenuItemClick(MenuItem item) {
198 quickDicConfig.dictionaryConfigs.remove(adapterContextMenuInfo.position);
199 dictionaryConfigsChanged();
206 private void dictionaryConfigsChanged() {
207 PersistentObjectCache.getInstance().write(C.DICTIONARY_CONFIGS, quickDicConfig);
208 setListAdapter(getListAdapter());
211 class Adapter extends BaseAdapter {
214 public int getCount() {
215 return quickDicConfig.dictionaryConfigs.size();
219 public DictionaryConfig getItem(int position) {
220 return quickDicConfig.dictionaryConfigs.get(position);
224 public long getItemId(int position) {
229 public View getView(int position, View convertView, ViewGroup parent) {
230 final DictionaryConfig dictionaryConfig = getItem(position);
231 final TableLayout tableLayout = new TableLayout(parent.getContext());
232 final TextView view = new TextView(parent.getContext());
234 view.setText(dictionaryConfig.name);
235 view.setTextSize(20);
236 tableLayout.addView(view);
243 public static Intent getIntent(final Context context) {
244 DictionaryActivity.clearDictionaryPrefs(context);
245 final Intent intent = new Intent();
246 intent.setClassName(DictionaryListActivity.class.getPackage().getName(),
247 DictionaryListActivity.class.getName());