]> gitweb.fperrin.net Git - Dictionary.git/commitdiff
Mostly work on Link spans, and upgrade the manfiest to 4.0.
authorThad Hughes <thadh@google.com>
Sat, 15 Dec 2012 23:33:22 +0000 (15:33 -0800)
committerThad Hughes <thadh@google.com>
Sat, 15 Dec 2012 23:33:22 +0000 (15:33 -0800)
AndroidManifest.xml
res/raw/help.html
res/raw/whats_new.html
res/values-de/strings.xml
res/values-it/strings.xml
res/values-v11/themes.xml
res/values/strings.xml
src/com/hughes/android/dictionary/DictionaryActivity.java
src/com/hughes/android/dictionary/HtmlDisplayActivity.java
src/com/hughes/android/dictionary/engine/HtmlEntry.java
src/com/hughes/android/util/NonLinkClickableSpan.java

index 17ccec84d5ffd7b88d236d1f5e644e8c5d008995..74fbac2c57b47dc15210c95f2835ff5b126852b2 100644 (file)
@@ -2,8 +2,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.hughes.android.dictionary"
     android:installLocation="auto"
-    android:versionCode="21"
-    android:versionName="3.3" >
+    android:versionCode="22"
+    android:versionName="4.0" >
 
     <uses-sdk
         android:minSdkVersion="4"
index 4f016bac115f19dd640b5f8d7e9fe48376144c6d..a6cbb0a4907aef64ec8475eabd3ba0d418e54b84 100644 (file)
@@ -10,9 +10,8 @@
 <body>
 <!-- Don't use links in the text below, it crashes the app. -->
 <h2>Dictionary data</h2>
-Most dictionary data comes from http://wiktionary.org (mostly from
-en.wiktionary.org). If you want to add or fix an entry, please do
-it there.
+Most dictionary data comes from http://wiktionary.org.
+If you want to add or fix an entry, please do it there.
 <h2>Important notes</h2>
 <ul>
 <li>If QuickDic seems to crash when opening a dictionary
@@ -36,7 +35,7 @@ multiple places, under all the relevant words.
 <ul>
 <li>Type a single word to search for it. QuickDic searches as you
 type, jumping to the relevant position in the list.</li>
-<li>(NEW) Type multiple words separated by spaces. QuickDic finds
+<li>Type multiple words separated by spaces. QuickDic finds
 all the rows containing all of the words and displays them.</li>
 <li>QuickDic tries to sort words using a romanized transliteration,
 so you can try searching for non-Latin words using the Latin
@@ -48,7 +47,7 @@ its contents will be replaced.</li>
 <ul>
 <li>Click the button to the right of the search box to switch
 dictionary directions: EN-&gt;DE to DE-&gt;EN.</li>
-<li>(NEW) Long-click the button to the right of the search box to
+<li>Long-click the button to the right of the search box to
 pick a new dictionary.</li>
 <li>Long-click any entry to bring up the context menu, from which
 you can:
index 615f32b20e6c162145697bca88caa018a582eabb..095cc22b151278259d16bfb34a913d0dd9f82a45 100644 (file)
 </head>
 <body>
 <!-- Don't use links in the text below,  it crashes the app. -->
-Thanks for updating to QuickDic 3.3.
+Thanks for updating to QuickDic 4.0.
 <p>New features:</p>
 <ul>
 <li>If QuickDic crashes on your device (especially Sony Ericsson 
 devices), try using QuickDic's preferences to change to the "System 
 default" font.</li>
-<li>Updated all dictionaries with new enwiktionary data.</li>
-<li>Several non-English dictionaries available for download 
-(probably lower quality but perhaps useful, in beta):
-<ul>
-<li>Arabic-Chinese|Mandarin|Cantonese</li>
-<li>Arabic-French</li>
-<li>Arabic-German</li>
-<li>Arabic-Hebrew</li>
-<li>Arabic-Italian</li>
-<li>Arabic-Japanese</li>
-<li>Arabic-Russian</li>
-<li>Arabic-Spanish</li>
-<li>Bulgarian-French</li>
-<li>Catalan-German</li>
-<li>Czech-French</li>
-<li>Czech-German</li>
-<li>English-Afrikaans</li>
-<li>English-Albanian</li>
-<li>English-Arabic</li>
-<li>English-Armenian</li>
-<li>English-Azeri</li>
-<li>English-Basque</li>
-<li>English-Belarusian</li>
-<li>English-Bengali</li>
-<li>English-Bosnian</li>
-<li>English-Breton</li>
-<li>English-Bulgarian</li>
-<li>English-Burmese</li>
-<li>English-Catalan</li>
-<li>English-Chinese|Mandarin|Cantonese</li>
-<li>English-Croatian</li>
-<li>English-Czech</li>
-<li>English-Danish</li>
-<li>English-Dutch</li>
-<li>English-Esperanto</li>
-<li>English-Estonian</li>
-<li>English-Faroese</li>
-<li>English-Finnish</li>
-<li>English-French</li>
-<li>English-Gaelic</li>
-<li>English-Galician</li>
-<li>English-Georgian</li>
-<li>English-Greek</li>
-<li>English-Haitian Creole</li>
-<li>English-Hawaiian</li>
-<li>English-Hebrew</li>
-<li>English-Hindi</li>
-<li>English-Hungarian</li>
-<li>English-Icelandic</li>
-<li>English-Indonesian</li>
-<li>English-Irish</li>
-<li>English-Italian</li>
-<li>English-Japanese</li>
-<li>English-Korean</li>
-<li>English-Kurdish</li>
-<li>English-Latin</li>
-<li>English-Latvian</li>
-<li>English-Lithuanian</li>
-<li>English-Luxembourgish</li>
-<li>English-Macedonian</li>
-<li>English-Malay</li>
-<li>English-Maori</li>
-<li>English-Mongolian</li>
-<li>English-Nepali</li>
-<li>English-Norwegian</li>
-<li>English-Persian</li>
-<li>English-Polish</li>
-<li>English-Portuguese</li>
-<li>English-Punjabi</li>
-<li>English-Romanian</li>
-<li>English-Russian</li>
-<li>English-Sanskrit</li>
-<li>English-Serbian</li>
-<li>English-Slovak</li>
-<li>English-Somali</li>
-<li>English-Spanish</li>
-<li>English-Swahili</li>
-<li>English-Swedish</li>
-<li>English-Tagalog</li>
-<li>English-Tajik</li>
-<li>English-Thai</li>
-<li>English-Tibetan</li>
-<li>English-Turkish</li>
-<li>English-Ukrainian</li>
-<li>English-Urdu</li>
-<li>English-Vietnamese</li>
-<li>English-Welsh</li>
-<li>English-Yiddish</li>
-<li>English-Zulu</li>
-<li>Finnish-Norwegian</li>
-<li>Finnish-Swedish</li>
-<li>French-Chinese|Mandarin|Cantonese</li>
-<li>French-Dutch</li>
-<li>French-Italian</li>
-<li>French-Japanese</li>
-<li>French-Latin</li>
-<li>French-Russian</li>
-<li>German-Chinese|Mandarin|Cantonese</li>
-<li>German-English</li>
-<li>German-Esperanto</li>
-<li>German-French</li>
-<li>German-Hungarian</li>
-<li>German-Italian</li>
-<li>German-Japanese</li>
-<li>German-Latin</li>
-<li>German-Polish</li>
-<li>German-Russian</li>
-<li>German-Spanish</li>
-<li>German-Swedish</li>
-<li>Greek-Italian</li>
-<li>Hungarian-Italian</li>
-<li>Italian-Chinese|Mandarin|Cantonese</li>
-<li>Italian-Dutch</li>
-<li>Italian-Japanese</li>
-<li>Italian-Latin</li>
-<li>Italian-Latvian</li>
-<li>Italian-Polish</li>
-<li>Italian-Russian</li>
-<li>Italian-Swedish</li>
-<li>Japanese-Chinese|Mandarin|Cantonese</li>
-<li>Korean-Chinese|Mandarin|Cantonese</li>
-<li>Norwegian-Swedish</li>
-<li>Spanish-Chinese|Mandarin|Cantonese</li>
-<li>Spanish-French</li>
-<li>Spanish-Italian</li>
+<li>(BETA) Single-language dictionaries for English, German, Italian, and French (French is ALPHA quality).</li>
+<li>Detail pages showing more Wiktionary information about the word, including Italian verb conjugations.</li>
+<li>Started parsing Wiktionary data from de.wiktionary.org and it.wiktionary.org for better coverage of those languages.</li>
+<li>Updated all dictionaries with latest Wiktionary data.</li>
+<li>Simple text-to-speech pronunciations for main rows.</li>
+<li>Several new dictionaries, by request.</li>
 </ul>
 </li>
 </ul>
index e89e4f470a933aad1ba97b0525789e0f33a08a93..edec006c73d2bbe8e94815737d99720a223f6db1 100644 (file)
@@ -3,7 +3,7 @@
 
        <string name="app_name">QuickDic</string>
 
-       <string name="titleWithVersion">QuickDic 3.3</string>
+       <string name="titleWithVersion">QuickDic 4.0</string>
        
   <!-- Global. -->
   <string name="about">Über QuickDic…</string>
@@ -24,7 +24,7 @@
   <string name="managerFilterText">Filter</string>
   <string name="managerFilterCheckbox">Nur SD-Karte</string>
   
-  <string name="thanksForUpdatingVersion">3.3_de_a</string>
+  <string name="thanksForUpdatingVersion">4.0_de_a</string>
 
   <!-- DictionaryActivity -->
   <string name="searchText">Suchtext</string>
index 137b4cb34e5a182659142c5d0088e307f7dc9490..3f16ab8e22b17018406c9c2a870b67f80e0d4540 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
 <string name="app_name">QuickDic</string>
-<string name="titleWithVersion">QuickDic 3.3</string>
+<string name="titleWithVersion">QuickDic 4.0</string>
 <!-- Global. -->
 <string name="about">About QuickDic…</string>
 <string name="preferences">Preferenze…</string>
index 9be50db56dba5ae828368c1ce23e193579e421fe..b2f04eafb98410062b4c9e2acad6fdc11f90ea00 100644 (file)
@@ -4,14 +4,14 @@
   <!-- Default: dark theme -->
     
   <style name="Theme.Default" parent="@android:style/Theme.Holo">
-      <item name="android:textColorLink">#FFFFFF</item>
+      <item name="android:textColorLink">#0000FF</item>
   </style>
   
   
   <!-- ****************************************************************** -->
 
   <style name="Theme.Light" parent="@android:style/Theme.Holo.Light">
-      <item name="android:textColorLink">#000000</item>
+      <item name="android:textColorLink">#0000FF</item>
   </style>
   
 
index 9cb903f2d5309237823b8732c4f782ed50f26146..467cbf6e798996b6cd773921ca4cd2f9ab54a475 100644 (file)
@@ -3,7 +3,7 @@
 
   <string name="app_name">QuickDic</string>
 
-  <string name="titleWithVersion">QuickDic 3.3</string>
+  <string name="titleWithVersion">QuickDic 4.0</string>
   
   <!-- Global. -->
   <string name="about">About QuickDic…</string> 
@@ -25,7 +25,7 @@
   <string name="managerFilterCheckbox">Local only</string>
   
 
-  <string name="thanksForUpdatingVersion">3.3_en_e</string>
+  <string name="thanksForUpdatingVersion">4.0_en_a</string>
 
   <!-- DictionaryActivity -->
   <string name="searchText">Search Text</string>
index 34ea4f646a00a5fd6a436682f36890b383b79daf..96f385e9c048ac78c6cfe2469d6748e85521ae9b 100644 (file)
@@ -32,6 +32,7 @@ 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;
 import android.util.Log;
 import android.util.TypedValue;
@@ -1261,6 +1262,7 @@ public class DictionaryActivity extends ListActivity {
             final TextViewLongClickListener textViewLongClickListenerIndex0 = new TextViewLongClickListener(
                     0);
             textView.setOnLongClickListener(textViewLongClickListenerIndex0);
+            result.setLongClickable(true);
             
             // Doesn't work:
             // textView.setTextColor(android.R.color.secondary_text_light);
@@ -1278,9 +1280,16 @@ public class DictionaryActivity extends ListActivity {
             tableRow.addView(textView);
 
             if (!htmlEntries.isEmpty()) {
-                final ImageButton button = new ImageButton(context);
-                button.setImageResource(R.drawable.ic_menu_forward);
-                button.setOnClickListener(new OnClickListener() {
+                final ClickableSpan clickableSpan = new ClickableSpan() {
+                    @Override
+                    public void onClick(View widget) {
+                    }
+                };
+                ((Spannable) textView.getText()).setSpan(clickableSpan, 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE);
+                result.setClickable(true);
+                textView.setClickable(true);
+                textView.setMovementMethod(LinkMovementMethod.getInstance());
+                textView.setOnClickListener(new OnClickListener() {
                     @Override
                     public void onClick(View v) {
                         final String html = HtmlEntry.htmlBody(htmlEntries, index.shortName);
@@ -1291,14 +1300,7 @@ public class DictionaryActivity extends ListActivity {
                                 0);
                     }
                 });
-                tableRow.addView(button);
-                lp = new TableRow.LayoutParams(1);
-                lp.weight = 0.0f;
-                button.setLayoutParams(lp);
-                // result.setColumnStretchable(0, true);
-                // result.setColumnStretchable(1, false);
             }
-            result.setLongClickable(true);
             return result;
         }
 
index 80ea18f0be5b64ddd1d72e1c6ec89de919c89f9d..9ed14543b7c6cd57dd463a1746aefa8e0e4fcb20 100644 (file)
@@ -20,7 +20,6 @@ import android.os.Bundle;
 import android.util.Log;\r
 import android.view.View;\r
 import android.view.View.OnClickListener;\r
-import android.webkit.WebView;\r
 import android.widget.Button;\r
 \r
 import com.hughes.util.StringUtil;\r
index 86ebca228756400f055722c289b9544c667ce2f2..4143fd34477221bd543f5438d6951492f3f0d62c 100644 (file)
@@ -1,6 +1,7 @@
 package com.hughes.android.dictionary.engine;
 
 import android.content.Intent;
+import android.net.Uri;
 
 import com.hughes.android.dictionary.C;
 import com.hughes.util.StringUtil;
@@ -11,6 +12,10 @@ import com.ibm.icu.text.Transliterator;
 import java.io.IOException;
 import java.io.PrintStream;
 import java.io.RandomAccessFile;
+import java.io.UnsupportedEncodingException;
+import java.net.URI;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
 import java.util.List;
 import java.util.regex.Pattern;
 
@@ -165,7 +170,11 @@ public class HtmlEntry extends AbstractEntry implements RAFSerializable<HtmlEntr
     public static String formatQuickdicUrl(final String indexShortName, final String text) {
         assert !indexShortName.contains(":");
         assert text.length() > 0;
-        return String.format("qd:%s:%s", indexShortName, text);
+        try {
+            return String.format("qd:%s:%s", indexShortName, URLEncoder.encode(text, "UTF-8"));
+        } catch (UnsupportedEncodingException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     public static boolean isQuickdicUrl(String url) {
@@ -177,7 +186,7 @@ public class HtmlEntry extends AbstractEntry implements RAFSerializable<HtmlEntr
         if (firstColon == -1) return;
         int secondColon = url.indexOf(":", firstColon + 1);
         if (secondColon == -1) return;
-        intent.putExtra(C.SEARCH_TOKEN, url.substring(secondColon + 1));
+        intent.putExtra(C.SEARCH_TOKEN, Uri.decode(url.substring(secondColon + 1)));
     }
 
 }
index 014413aca6a7d02ab9784ed2ddf3b2b9103e7c20..075cc59ef58020d53657131a1a561dd293e14c20 100644 (file)
@@ -20,7 +20,7 @@ import android.view.View;
 
 public class NonLinkClickableSpan extends ClickableSpan {
   
-  static NonLinkClickableSpan instance = new NonLinkClickableSpan();
+  public static final NonLinkClickableSpan instance = new NonLinkClickableSpan();
 
   // Won't see these on a long-click.
   @Override