X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Fcom%2Fhughes%2Fandroid%2Fdictionary%2FDictionaryActivity.java;h=6e4bb9106cf6b4ae014a55c109edc83af6cfd1b8;hb=c625416a33f9da39bb8ec6a2c9a67a7d47e477d8;hp=57a49e587b7ca99776473de3e40fe7e6788f3fea;hpb=14504fe036ef1463cc7b6adb1f08fc465af42843;p=Dictionary.git diff --git a/src/com/hughes/android/dictionary/DictionaryActivity.java b/src/com/hughes/android/dictionary/DictionaryActivity.java index 57a49e5..6e4bb91 100644 --- a/src/com/hughes/android/dictionary/DictionaryActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryActivity.java @@ -1,5 +1,5 @@ // Copyright 2011 Google Inc. All Rights Reserved. -// +// Some Parts Copyright 2013 Dominik Köppl // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at @@ -16,6 +16,7 @@ package com.hughes.android.dictionary; import android.annotation.SuppressLint; import android.app.Dialog; +import android.app.SearchManager; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; @@ -28,10 +29,7 @@ import android.preference.PreferenceManager; import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech.OnInitListener; import android.text.ClipboardManager; -import android.text.Editable; -import android.text.Selection; import android.text.Spannable; -import android.text.TextWatcher; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.StyleSpan; @@ -40,11 +38,9 @@ import android.util.TypedValue; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.KeyEvent; -import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; -import android.view.View.OnFocusChangeListener; import android.view.View.OnLongClickListener; import android.view.ViewGroup; import android.view.WindowManager; @@ -53,9 +49,7 @@ import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.BaseAdapter; import android.widget.Button; -import android.widget.EditText; import android.widget.FrameLayout; -import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListAdapter; @@ -215,15 +209,101 @@ public class DictionaryActivity extends SherlockListActivity { theme = application.getSelectedTheme(); textColorFg = getResources().getColor(theme.tokenRowFgColor); + + final Intent intent = getIntent(); - dictFile = new File(intent.getStringExtra(C.DICT_FILE)); + String intentAction = intent.getAction(); + /** + * @author Dominik Köppl + * Querying the Intent + * com.hughes.action.ACTION_SEARCH_DICT is the advanced query + * Arguments: + * SearchManager.QUERY -> the phrase to search + * from -> language in which the phrase is written + * to -> to which language shall be translated + */ + if(intentAction != null && intentAction.equals("com.hughes.action.ACTION_SEARCH_DICT")) + { + String query = intent.getStringExtra(SearchManager.QUERY); + String from = intent.getStringExtra("from"); + if(from != null) from = from.toLowerCase(Locale.US); + String to = intent.getStringExtra("to"); + if(to != null) to = to.toLowerCase(Locale.US); + if(query != null) + { + getIntent().putExtra(C.SEARCH_TOKEN, query); + } + if(intent.getStringExtra(C.DICT_FILE) == null && (from != null || to != null)) + { + Log.d(LOG, "DictSearch: from: " + from + " to " + to); + List dicts = application.getUsableDicts(); + for(DictionaryInfo info : dicts) + { + boolean hasFrom = from == null; + boolean hasTo = to == null; + for(IndexInfo index : info.indexInfos) + { + if(!hasFrom && index.shortName.toLowerCase(Locale.US).equals(from)) hasFrom = true; + if(!hasTo && index.shortName.toLowerCase(Locale.US).equals(to)) hasTo = true; + } + if(hasFrom && hasTo) + { + if(from != null) + { + int which_index = 0; + for(;which_index < info.indexInfos.size(); ++which_index) + { + if(info.indexInfos.get(which_index).shortName.toLowerCase(Locale.US).equals(from)) + break; + } + intent.putExtra(C.INDEX_INDEX, which_index); + + } + intent.putExtra(C.DICT_FILE, application.getPath(info.uncompressedFilename).toString()); + break; + } + } + + } + } + /** + * @author Dominik Köppl + * Querying the Intent + * Intent.ACTION_SEARCH is a simple query + * Arguments follow from android standard (see documentation) + */ + if (intentAction != null && intentAction.equals(Intent.ACTION_SEARCH)) + { + String query = intent.getStringExtra(SearchManager.QUERY); + if(query != null) getIntent().putExtra(C.SEARCH_TOKEN,query); + } + /** + * @author Dominik Köppl + * If no dictionary is chosen, use the default dictionary specified in the preferences + * If this step does fail (no default directory specified), show a toast and abort. + */ + if(intent.getStringExtra(C.DICT_FILE) == null) + { + String dictfile = prefs.getString(getString(R.string.defaultDicKey), null); + if(dictfile != null) intent.putExtra(C.DICT_FILE, application.getPath(dictfile).toString()); + } + String dictFilename = intent.getStringExtra(C.DICT_FILE); + + if(dictFilename == null) + { + Toast.makeText(this, getString(R.string.no_dict_file), Toast.LENGTH_LONG).show(); + startActivity(DictionaryManagerActivity.getLaunchIntent()); + finish(); + return; + } + if(dictFilename != null) dictFile = new File(dictFilename); ttsReady = false; textToSpeech = new TextToSpeech(getApplicationContext(), new OnInitListener() { @Override public void onInit(int status) { ttsReady = true; - updateTTSLanuage(); + updateTTSLanguage(); } }); @@ -406,8 +486,8 @@ public class DictionaryActivity extends SherlockListActivity { protected void onResume() { Log.d(LOG, "onResume"); super.onResume(); - if (SettingsActivity.settingsMightHaveChanged) { - SettingsActivity.settingsMightHaveChanged = false; + if (PreferenceActivity.prefsMightHaveChanged) { + PreferenceActivity.prefsMightHaveChanged = false; finish(); startActivity(getIntent()); } @@ -499,10 +579,10 @@ public class DictionaryActivity extends SherlockListActivity { searchHintIcon.setImageResource(android.R.drawable.ic_media_previous); } } - updateTTSLanuage(); + updateTTSLanguage(); } - private void updateTTSLanuage() { + private void updateTTSLanguage() { if (!ttsReady || index == null || textToSpeech == null) { Log.d(LOG, "Can't updateTTSLanguage."); return;