Rest of cosmetic changes -- simpler, black theme with easier-to-touch buttons and...
[zxing.git] / android / src / com / google / zxing / client / android / LocaleManager.java
index c504be7..ece8174 100644 (file)
@@ -22,13 +22,14 @@ import java.util.HashMap;
 
 /**
  * Handles any locale-specific logic for the client.
+ *
+ * @author Sean Owen
  */
 public final class LocaleManager {
-
   private static final String DEFAULT_TLD = "com";
   private static final Map<Locale,String> GOOGLE_COUNTRY_TLD;
   static {
-    GOOGLE_COUNTRY_TLD = new HashMap<Locale,String>(13);
+    GOOGLE_COUNTRY_TLD = new HashMap<Locale,String>();
     GOOGLE_COUNTRY_TLD.put(Locale.CANADA, "ca");
     GOOGLE_COUNTRY_TLD.put(Locale.CHINA, "cn");
     GOOGLE_COUNTRY_TLD.put(Locale.FRANCE, "fr");
@@ -40,6 +41,21 @@ public final class LocaleManager {
     GOOGLE_COUNTRY_TLD.put(Locale.UK, "co.uk");
   }
 
+  // Google Product Search for mobile is available in fewer countries than web search.
+  private static final Map<Locale,String> GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD;
+  static {
+    GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>();
+    GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.UK, "co.uk");
+    GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD.put(Locale.GERMANY, "de");
+  }
+
+  private static final Map<Locale,String> GOOGLE_BOOK_SEARCH_COUNTRY_TLD;
+  static {
+    GOOGLE_BOOK_SEARCH_COUNTRY_TLD = new HashMap<Locale,String>();
+    GOOGLE_BOOK_SEARCH_COUNTRY_TLD.putAll(GOOGLE_COUNTRY_TLD);
+    GOOGLE_BOOK_SEARCH_COUNTRY_TLD.remove(Locale.CHINA);
+  }
+
   private LocaleManager() {}
 
   /**
@@ -47,15 +63,35 @@ public final class LocaleManager {
    *  (e.g. "co.uk" for the United Kingdom)
    */
   public static String getCountryTLD() {
+    return doGetTLD(GOOGLE_COUNTRY_TLD);
+  }
+
+  /**
+   * The same as above, but specifically for Google Product Search.
+   * @return The top-level domain to use.
+   */
+  public static String getProductSearchCountryTLD() {
+    return doGetTLD(GOOGLE_PRODUCT_SEARCH_COUNTRY_TLD);
+  }
+
+  /**
+   * The same as above, but specifically for Google Book Search.
+   * @return The top-level domain to use.
+   */
+  public static String getBookSearchCountryTLD() {
+    return doGetTLD(GOOGLE_BOOK_SEARCH_COUNTRY_TLD);
+  }
+
+
+  private static String doGetTLD(Map<Locale,String> map) {
     Locale locale = Locale.getDefault();
     if (locale == null) {
       return DEFAULT_TLD;
     }
-    String tld = GOOGLE_COUNTRY_TLD.get(locale);
+    String tld = map.get(locale);
     if (tld == null) {
       return DEFAULT_TLD;
     }
     return tld;
   }
-
 }