]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Merged. Switched back to name "Preferences" instead of "Settings".
authorThad Hughes <thadh@google.com>
Tue, 3 Dec 2013 18:49:47 +0000 (10:49 -0800)
committerThad Hughes <thadh@google.com>
Tue, 3 Dec 2013 18:49:47 +0000 (10:49 -0800)
Merge branch 'master' of
https://code.google.com/p/quickdic-dictionary.dictionary

Conflicts:
res/xml/preferences.xml
src/com/hughes/android/dictionary/DictionaryActivity.java
src/com/hughes/android/dictionary/PreferenceActivity.java

AndroidManifest.xml
res/values-es/languages.xml
res/values/strings.xml
res/xml/preferences.xml [moved from res/xml/settings.xml with 88% similarity]
res/xml/searchable.xml [new file with mode: 0755]
src/com/hughes/android/dictionary/DictionaryActivity.java
src/com/hughes/android/dictionary/DictionaryApplication.java
src/com/hughes/android/dictionary/DictionaryManagerActivity.java
src/com/hughes/android/dictionary/PreferenceActivity.java [new file with mode: 0644]
src/com/hughes/android/dictionary/SettingsActivity.java [deleted file]

index bb3843c58655a4da9c9304529a209c41949c5824..bdcaa593070633e85ae1c0a9403b131f244d7a83 100644 (file)
 
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
+
+               <!--   
+            <intent-filter>
+                <action android:name="android.intent.action.SEND" />
+                <category android:name="android.intent.category.DEFAULT" />
+                <data android:mimeType="text/plain" />
+               </intent-filter>
+               <meta-data android:name="android.app.searchable" android:resource="@xml/searchable"/>
+                                               <intent-filter>
+               <action android:name="android.intent.action.SEARCH" />
+               </intent-filter>
+                  -->          
         </activity>
-        <activity android:name=".DictionaryActivity" />
+        
+        
+        <activity android:name=".DictionaryActivity"  android:label="@string/app_name">
+                <!-- @author Dominik Köppl
+                       Added two different intents to catch simple and advanced queries from other extern applications.
+                       -->
+           <intent-filter>
+             <action android:name="android.intent.action.SEARCH" />      
+                <category android:name="android.intent.category.DEFAULT" />
+               </intent-filter>
+       
+                        
+            <intent-filter>
+                <action android:name="com.hughes.action.ACTION_SEARCH_DICT" />
+                <category android:name="android.intent.category.DEFAULT" />
+               </intent-filter>
+       
+         </activity>
+            
+            
         <activity android:name=".DictionaryEditActivity" />
         <activity android:name=".AboutActivity" />
         <activity android:name=".HtmlDisplayActivity" />
-        <activity android:name=".SettingsActivity" />
+        <activity android:name=".PreferenceActivity" />
         <activity
             android:name=".DownloadActivity"
             android:configChanges="keyboardHidden|orientation" />
     </application>
 
+    
+        
+    
 </manifest>
\ No newline at end of file
index 191f37683dfef0b656f771c82226abc4c80fc475..027b68ed3c7e2e11430ffac119c10506ffb801fe 100644 (file)
@@ -12,7 +12,6 @@
   <string name="MY">Burmese</string>
   <string name="yue">Cantonés</string>
   <string name="CA">Catalán</string>
-  <string name="HR">Croata</string>
   <string name="CS">Checo</string>
   <string name="ZH">Chino (Mandarín)</string>
   <string name="DA">Danés</string>
index 8185bb1d3f8df7554b00473edf379300be8107b7..c925821ee1c5f6d4f4a14fd36f8b5cf5cc389617 100644 (file)
   <string name="clearSearchText">Clear search text</string>
   
   
+  <string name="no_dict_file">Please specify a default directory in the settings.</string>
+    
+  
+  
    <!-- DictionaryManagerActivity -->
   <string name="dictionaryManager">Dictionary manager</string>
   <string name="helpText">Long-press a dictionary for more options.</string>
   <string name="unzipping">Unzipping: %1$,d of %2$,d bytes.</string>
   <string name="downloadFinished">Finished: %,d bytes.</string>
   <string name="errorDownloadingFile">Error downloading file: \n%s</string>  
-
+  
+  
+  <string name="search_hint">An unknown word</string>  
+  
+  
 
        <!-- Preferences -->
 
+  <string name="defaultDicKey">defaultddic</string>
+  <string name="defaultDicTitle">Default Dic</string>
+  <string name="defaultDicSummary">The directory to fired up when nothing else mentioned.</string>
+
+
   <string name="quickdicDirectoryKey">quickdicDirectory</string>
   <string name="quickdicDirectoryTitle">QuickDic directory</string>
   <string name="quickdicDirectorySummary">The directory where QuickDic stores dictionaries.</string>
similarity index 88%
rename from res/xml/settings.xml
rename to res/xml/preferences.xml
index 1644b6116e2a64f9231c046993cc8ea962d74ddc..4b948a079f0f4618fc892d95b6a9ac4ca64b2dc0 100644 (file)
@@ -1,5 +1,12 @@
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">\r
 \r
+  <ListPreference \r
+    android:key="@string/defaultDicKey"\r
+    android:title="@string/defaultDicTitle"\r
+    android:summary="@string/defaultDicSummary"\r
+    android:persistent="true"\r
+  />\r
+\r
   <EditTextPreference\r
     android:key="@string/quickdicDirectoryKey"\r
     android:title="@string/quickdicDirectoryTitle" \r
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
new file mode 100755 (executable)
index 0000000..27879cc
--- /dev/null
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<searchable xmlns:android="http://schemas.android.com/apk/res/android"
+    android:label="@string/app_name"
+    android:hint="@string/search_hint" >
+</searchable>
\ No newline at end of file
index 57a49e587b7ca99776473de3e40fe7e6788f3fea..6e4bb9106cf6b4ae014a55c109edc83af6cfd1b8 100644 (file)
@@ -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<DictionaryInfo> 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;
index 09e7ba44e995d2ef7f425d799863aea400435e98..ca8d4ac0fb432a963eedaef5e19b3ad897cd4a7a 100644 (file)
@@ -147,9 +147,9 @@ public class DictionaryApplication extends Application {
     preferences.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
     preferences.setOnMenuItemClickListener(new OnMenuItemClickListener() {
       public boolean onMenuItemClick(final MenuItem menuItem) {
-        SettingsActivity.settingsMightHaveChanged = true;
-        final Intent intent = new Intent().setClassName(SettingsActivity.class
-            .getPackage().getName(), SettingsActivity.class.getCanonicalName());
+        PreferenceActivity.prefsMightHaveChanged = true;
+        final Intent intent = new Intent().setClassName(PreferenceActivity.class
+            .getPackage().getName(), PreferenceActivity.class.getCanonicalName());
         context.startActivity(intent);
         return false;
       }
index 74ac89500ce905f4a9eb14f652f15fe934d82c60..af50112dbc98f36ff15b0693e5ffd7b24cdf4bc3 100644 (file)
@@ -154,8 +154,8 @@ public class DictionaryManagerActivity extends SherlockListActivity {
   protected void onResume() {
     super.onResume();
     
-    if (SettingsActivity.settingsMightHaveChanged) {
-      SettingsActivity.settingsMightHaveChanged = false;
+    if (PreferenceActivity.prefsMightHaveChanged) {
+        PreferenceActivity.prefsMightHaveChanged = false;
       finish();
       startActivity(getIntent());
     }
diff --git a/src/com/hughes/android/dictionary/PreferenceActivity.java b/src/com/hughes/android/dictionary/PreferenceActivity.java
new file mode 100644 (file)
index 0000000..5e74a3c
--- /dev/null
@@ -0,0 +1,59 @@
+// Copyright 2011 Google Inc. All Rights Reserved.
+//
+// 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
+//
+//     http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package com.hughes.android.dictionary;
+
+import java.util.List;
+
+import android.os.Bundle;
+import android.preference.ListPreference;
+
+public class PreferenceActivity extends android.preference.PreferenceActivity {
+  
+  static boolean prefsMightHaveChanged = false;
+  
+  @SuppressWarnings("deprecation")
+  @Override
+  public void onCreate(Bundle savedInstanceState) {
+    setTheme(((DictionaryApplication)getApplication()).getSelectedTheme().themeId);
+
+    /**
+     * @author Dominik Köppl
+     * Preference: select default dictionary
+     * As this list is dynamically generated, we have to do it in this fashion
+     */
+    super.onCreate(savedInstanceState);
+    addPreferencesFromResource(R.xml.preferences);
+    ListPreference defaultDic = (ListPreference) findPreference(getResources().getString(R.string.defaultDicKey));
+    DictionaryApplication application = (DictionaryApplication) getApplication();
+    List<DictionaryInfo> dicts = application.getUsableDicts();
+    
+       final CharSequence[] entries = new CharSequence[dicts.size()];
+       final CharSequence[] entryvalues = new CharSequence[dicts.size()];
+
+       for(int i = 0; i < entries.length; ++i)
+       {
+               entries[i] = dicts.get(i).dictInfo;
+               entryvalues[i] = dicts.get(i).uncompressedFilename;
+       }
+       
+       defaultDic.setEntries(entries);
+       defaultDic.setEntryValues(entryvalues);
+  }
+
+  @Override
+  public void onContentChanged() {
+    super.onContentChanged();
+  }
+}
diff --git a/src/com/hughes/android/dictionary/SettingsActivity.java b/src/com/hughes/android/dictionary/SettingsActivity.java
deleted file mode 100644 (file)
index 761f1ee..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2011 Google Inc. All Rights Reserved.
-//
-// 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
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.hughes.android.dictionary;
-
-import android.os.Bundle;
-
-public class SettingsActivity extends android.preference.PreferenceActivity {
-  
-  static boolean settingsMightHaveChanged = false;
-  
-  @SuppressWarnings("deprecation")
-@Override
-  public void onCreate(Bundle savedInstanceState) {
-    setTheme(((DictionaryApplication)getApplication()).getSelectedTheme().themeId);
-
-    super.onCreate(savedInstanceState);
-    addPreferencesFromResource(R.xml.settings);
-  }
-
-  @Override
-  public void onContentChanged() {
-    super.onContentChanged();
-  }
-}