From 0d8a49fa15872cd41a12b067cc2e6e01cffe3061 Mon Sep 17 00:00:00 2001 From: "dswitkin@google.com" Date: Wed, 8 Jun 2011 18:23:35 +0000 Subject: [PATCH] Added better Google Book Search URL detection and centralized it. git-svn-id: https://zxing.googlecode.com/svn/trunk@1815 59b500cc-1b3d-0410-9834-0bbf25fbcc57 --- .../google/zxing/client/android/LocaleManager.java | 9 +++++++++ .../android/book/SearchBookContentsActivity.java | 5 ++--- .../zxing/client/android/result/URIResultHandler.java | 11 +++++------ 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/android/src/com/google/zxing/client/android/LocaleManager.java b/android/src/com/google/zxing/client/android/LocaleManager.java index ea2b1f2bd..53f92f9fc 100644 --- a/android/src/com/google/zxing/client/android/LocaleManager.java +++ b/android/src/com/google/zxing/client/android/LocaleManager.java @@ -110,6 +110,15 @@ public final class LocaleManager { return doGetTLD(GOOGLE_BOOK_SEARCH_COUNTRY_TLD); } + /** + * Does a given URL point to Google Book Search, regardless of domain. + * + * @param url The address to check. + * @return True if this is a Book Search URL. + */ + public static boolean isBookSearchUrl(String url) { + return url.startsWith("http://google.com/books") || url.startsWith("http://books.google."); + } private static String doGetTLD(Map map) { Locale locale = Locale.getDefault(); diff --git a/android/src/com/google/zxing/client/android/book/SearchBookContentsActivity.java b/android/src/com/google/zxing/client/android/book/SearchBookContentsActivity.java index 9704e5dd1..4e70efbb6 100644 --- a/android/src/com/google/zxing/client/android/book/SearchBookContentsActivity.java +++ b/android/src/com/google/zxing/client/android/book/SearchBookContentsActivity.java @@ -48,6 +48,7 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; +import com.google.zxing.client.android.LocaleManager; import com.google.zxing.client.android.R; import com.google.zxing.client.android.Intents; import com.google.zxing.client.android.AndroidHttpClient; @@ -58,7 +59,6 @@ import com.google.zxing.client.android.AndroidHttpClient; * @author dswitkin@google.com (Daniel Switkin) */ public final class SearchBookContentsActivity extends Activity { - private static final String TAG = SearchBookContentsActivity.class.getSimpleName(); private static final String USER_AGENT = "ZXing (Android)"; @@ -126,8 +126,7 @@ public final class SearchBookContentsActivity extends Activity { } isbn = intent.getStringExtra(Intents.SearchBookContents.ISBN); - // FIXME(dswitkin): Should not hardcode Books URL. Also does not handle books.google.ca etc. - if (isbn.startsWith("http://google.com/books?id=")) { + if (LocaleManager.isBookSearchUrl(isbn)) { setTitle(getString(R.string.sbc_name)); } else { setTitle(getString(R.string.sbc_name) + ": ISBN " + isbn); diff --git a/android/src/com/google/zxing/client/android/result/URIResultHandler.java b/android/src/com/google/zxing/client/android/result/URIResultHandler.java index e26fcf3af..1df944aed 100644 --- a/android/src/com/google/zxing/client/android/result/URIResultHandler.java +++ b/android/src/com/google/zxing/client/android/result/URIResultHandler.java @@ -16,6 +16,7 @@ package com.google.zxing.client.android.result; +import com.google.zxing.client.android.LocaleManager; import com.google.zxing.client.android.R; import com.google.zxing.client.result.ParsedResult; import com.google.zxing.client.result.URIParsedResult; @@ -47,7 +48,10 @@ public final class URIResultHandler extends ResultHandler { @Override public int getButtonCount() { - return isGoogleBooksURI() ? buttons.length : buttons.length - 1; + if (LocaleManager.isBookSearchUrl(((URIParsedResult) getResult()).getURI())) { + return buttons.length; + } + return buttons.length - 1; } @Override @@ -91,9 +95,4 @@ public final class URIResultHandler extends ResultHandler { } return false; } - - private boolean isGoogleBooksURI() { - // FIXME(dswitkin): Should not hardcode Books URL. Also does not handle books.google.ca etc. - return ((URIParsedResult) getResult()).getURI().startsWith("http://google.com/books?id="); - } }