diff options
author | Ray Chen <raychen@google.com> | 2012-05-17 16:37:13 +0800 |
---|---|---|
committer | Ray Chen <raychen@google.com> | 2012-05-17 17:11:38 +0800 |
commit | daf88feb0aab5806723b850d22a372cafe758239 (patch) | |
tree | e6423810bacaa9218f594d48a647ecdfe19400e4 | |
parent | bcfa1b79930e567c6a52235445c759d37041ed0c (diff) | |
download | android_packages_apps_Gallery2-daf88feb0aab5806723b850d22a372cafe758239.tar.gz android_packages_apps_Gallery2-daf88feb0aab5806723b850d22a372cafe758239.tar.bz2 android_packages_apps_Gallery2-daf88feb0aab5806723b850d22a372cafe758239.zip |
Fix 6213053 Add Help entry point to Gallery (targeted for J release)
b: 6213053
Change-Id: Ib94a8bbdb3114a198b775025c5864a3d83cdd5ad
-rw-r--r-- | res/menu/albumset.xml | 1 | ||||
-rw-r--r-- | res/values/strings.xml | 2 | ||||
-rw-r--r-- | src/com/android/gallery3d/app/AlbumSetPage.java | 9 | ||||
-rw-r--r-- | src/com/android/gallery3d/util/GalleryUtils.java | 13 | ||||
-rw-r--r-- | src/com/android/gallery3d/util/HelpUtils.java | 141 |
5 files changed, 147 insertions, 19 deletions
diff --git a/res/menu/albumset.xml b/res/menu/albumset.xml index 749b7f961..8ac8cbbd2 100644 --- a/res/menu/albumset.xml +++ b/res/menu/albumset.xml @@ -32,5 +32,6 @@ android:showAsAction="never" /> <item android:id="@+id/action_general_help" android:title="@string/help" + android:visible="false" android:showAsAction="never" /> </menu> diff --git a/res/values/strings.xml b/res/values/strings.xml index 4d23b0f10..1474004bd 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -438,5 +438,5 @@ <string name="help">Help</string> <!-- Web address for gallery help. DO NOT TRANSLATE --> - <string name="general_help_link" translatable="false">http://support.google.com/mobile/?p=gallery_top</string> + <string name="help_url_gallery_main" translatable="false"></string> </resources> diff --git a/src/com/android/gallery3d/app/AlbumSetPage.java b/src/com/android/gallery3d/app/AlbumSetPage.java index ec0fd0cbb..0a0b35402 100644 --- a/src/com/android/gallery3d/app/AlbumSetPage.java +++ b/src/com/android/gallery3d/app/AlbumSetPage.java @@ -54,6 +54,7 @@ import com.android.gallery3d.ui.SlotView; import com.android.gallery3d.ui.SynchronizedHandler; import com.android.gallery3d.util.Future; import com.android.gallery3d.util.GalleryUtils; +import com.android.gallery3d.util.HelpUtils; public class AlbumSetPage extends ActivityState implements SelectionManager.SelectionListener, GalleryActionBar.ClusterRunner, @@ -446,6 +447,9 @@ public class AlbumSetPage extends ActivityState implements if (switchCamera != null) { switchCamera.setVisible(GalleryUtils.isCameraAvailable(activity)); } + final MenuItem helpMenu = menu.findItem(R.id.action_general_help); + HelpUtils.prepareHelpMenuItem(mActivity.getAndroidContext(), + helpMenu, R.string.help_url_gallery_main); mActionBar.setTitle(mTitle); mActionBar.setSubtitle(mSubtitle); @@ -498,11 +502,6 @@ public class AlbumSetPage extends ActivityState implements activity.startActivity(new Intent(activity, GallerySettings.class)); return true; } - case R.id.action_general_help: { - activity.startActivity( - GalleryUtils.getHelpIntent(R.string.general_help_link, activity)); - return true; - } default: return false; } diff --git a/src/com/android/gallery3d/util/GalleryUtils.java b/src/com/android/gallery3d/util/GalleryUtils.java index 0406517d8..a4584eb37 100644 --- a/src/com/android/gallery3d/util/GalleryUtils.java +++ b/src/com/android/gallery3d/util/GalleryUtils.java @@ -329,17 +329,4 @@ public class GalleryUtils { int h = item.getHeight(); return (h > 0 && w / h >= 2); } - - public static Intent getHelpIntent(int helpUrlResId, Context context) { - Resources res = context.getResources(); - String url = res.getString(helpUrlResId) - + "&hl=" + res.getConfiguration().locale.getLanguage(); - - Intent i = new Intent(Intent.ACTION_VIEW); - i.setData(Uri.parse(url)); - i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); - i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET); - return i; - } } diff --git a/src/com/android/gallery3d/util/HelpUtils.java b/src/com/android/gallery3d/util/HelpUtils.java new file mode 100644 index 000000000..2f02642fa --- /dev/null +++ b/src/com/android/gallery3d/util/HelpUtils.java @@ -0,0 +1,141 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * 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.android.gallery3d.util; + +import android.content.Context; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager.NameNotFoundException; +import android.net.Uri; +import android.text.TextUtils; +import android.util.Log; +import android.view.MenuItem; + +import java.util.Locale; + +/** + * Functions to easily prepare contextual help menu option items with an intent that opens up the + * browser to a particular URL, while taking into account the preferred language and app version. + */ +public class HelpUtils { + private final static String TAG = HelpUtils.class.getName(); + + /** + * Help URL query parameter key for the preferred language. + */ + private final static String PARAM_LANGUAGE_CODE = "hl"; + + /** + * Help URL query parameter key for the app version. + */ + private final static String PARAM_VERSION = "version"; + + /** + * Cached version code to prevent repeated calls to the package manager. + */ + private static String sCachedVersionCode = null; + + /** Static helper that is not instantiable*/ + private HelpUtils() { } + + /** + * Prepares the help menu item by doing the following. + * - If the string corresponding to the helpUrlResourceId is empty or null, then the help menu + * item is made invisible. + * - Otherwise, this makes the help menu item visible and sets the intent for the help menu + * item to view the URL. + * + * @return returns whether the help menu item has been made visible. + */ + public static boolean prepareHelpMenuItem(Context context, MenuItem helpMenuItem, + int helpUrlResourceId) { + String helpUrlString = context.getResources().getString(helpUrlResourceId); + return prepareHelpMenuItem(context, helpMenuItem, helpUrlString); + } + + /** + * Prepares the help menu item by doing the following. + * - If the helpUrlString is empty or null, the help menu item is made invisible. + * - Otherwise, this makes the help menu item visible and sets the intent for the help menu + * item to view the URL. + * + * @return returns whether the help menu item has been made visible. + */ + public static boolean prepareHelpMenuItem(Context context, MenuItem helpMenuItem, + String helpUrlString) { + if (TextUtils.isEmpty(helpUrlString)) { + // The help url string is empty or null, so set the help menu item to be invisible. + helpMenuItem.setVisible(false); + + // return that the help menu item is not visible (i.e. false) + return false; + } else { + // The help url string exists, so first add in some extra query parameters. + final Uri fullUri = uriWithAddedParameters(context, Uri.parse(helpUrlString)); + + // Then, create an intent that will be fired when the user + // selects this help menu item. + Intent intent = new Intent(Intent.ACTION_VIEW, fullUri); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); + + // Set the intent to the help menu item, show the help menu item in the overflow + // menu, and make it visible. + helpMenuItem.setIntent(intent); + helpMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); + helpMenuItem.setVisible(true); + + // return that the help menu item is visible (i.e., true) + return true; + } + } + + /** + * Adds two query parameters into the Uri, namely the language code and the version code + * of the app's package as gotten via the context. + * @return the uri with added query parameters + */ + private static Uri uriWithAddedParameters(Context context, Uri baseUri) { + Uri.Builder builder = baseUri.buildUpon(); + + // Add in the preferred language + builder.appendQueryParameter(PARAM_LANGUAGE_CODE, Locale.getDefault().toString()); + + // Add in the package version code + if (sCachedVersionCode == null) { + // There is no cached version code, so try to get it from the package manager. + try { + // cache the version code + PackageInfo info = context.getPackageManager().getPackageInfo( + context.getPackageName(), 0); + sCachedVersionCode = Integer.toString(info.versionCode); + + // append the version code to the uri + builder.appendQueryParameter(PARAM_VERSION, sCachedVersionCode); + } catch (NameNotFoundException e) { + // Cannot find the package name, so don't add in the version parameter + // This shouldn't happen. + Log.wtf(TAG, "Invalid package name for context", e); + } + } else { + builder.appendQueryParameter(PARAM_VERSION, sCachedVersionCode); + } + + // Build the full uri and return it + return builder.build(); + } +} |