From fe58b534f6a1bf63dadb18dae13c59ed8a014eec Mon Sep 17 00:00:00 2001 From: Martijn Coenen Date: Tue, 21 Apr 2015 13:47:55 +0200 Subject: [PATCH] New Tap & Pay UX. Change-Id: Icbffe0f58d2c37d5691357c13a14ab9a40e53249 --- res/drawable-mdpi/tapandpay_emptystate.png | Bin 0 -> 8462 bytes res/drawable-xhdpi/tapandpay_emptystate.png | Bin 0 -> 20791 bytes res/drawable-xxhdpi/tapandpay_emptystate.png | Bin 0 -> 34918 bytes res/drawable-xxxhdpi/tapandpay_emptystate.png | Bin 0 -> 51173 bytes res/layout/nfc_payment.xml | 105 +++++---- res/layout/nfc_payment_empty.xml | 37 +++ res/layout/nfc_payment_option.xml | 40 ++-- res/layout/preference_widget_settings.xml | 33 +++ res/values/strings.xml | 35 ++- .../settings/nfc/NfcForegroundPreference.java | 68 ++++++ .../settings/nfc/NfcPaymentPreference.java | 211 ++++++++++++++++++ .../android/settings/nfc/PaymentBackend.java | 196 ++++++++++++++-- .../settings/nfc/PaymentDefaultDialog.java | 6 +- .../android/settings/nfc/PaymentSettings.java | 193 ++-------------- 14 files changed, 646 insertions(+), 278 deletions(-) create mode 100644 res/drawable-mdpi/tapandpay_emptystate.png create mode 100644 res/drawable-xhdpi/tapandpay_emptystate.png create mode 100644 res/drawable-xxhdpi/tapandpay_emptystate.png create mode 100644 res/drawable-xxxhdpi/tapandpay_emptystate.png create mode 100644 res/layout/nfc_payment_empty.xml create mode 100644 res/layout/preference_widget_settings.xml create mode 100644 src/com/android/settings/nfc/NfcForegroundPreference.java create mode 100644 src/com/android/settings/nfc/NfcPaymentPreference.java diff --git a/res/drawable-mdpi/tapandpay_emptystate.png b/res/drawable-mdpi/tapandpay_emptystate.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0eb7612e780b6124443ba1f399c1c44b2b548c GIT binary patch literal 8462 zcmbtaWmgZK!Q8Lf&>W`g1ZC@?t!~` z?>YAm+z)f6rl-4ls;c|+Q}s-=rn&+a1~~>25)zh@qO3L&5`Y$Qy#S*kTC9&9#}PL& zFF6A*9amc~UkeW#Bx!3`OB-4xXNz|>+BO!}{_Z0-Vn|4|pOs{#A%2TTrYfF
3_ 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

NkgKe(70rxnF0fx~RL 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 A<^TWy literal 0 HcmV?d00001 diff --git a/res/layout/nfc_payment.xml b/res/layout/nfc_payment.xml index d6f9fa44f99..f56d2a450d0 100644 --- a/res/layout/nfc_payment.xml +++ b/res/layout/nfc_payment.xml @@ -1,45 +1,62 @@ - - - - - - - + + + + + + + + + + + + + + diff --git a/res/layout/nfc_payment_empty.xml b/res/layout/nfc_payment_empty.xml new file mode 100644 index 00000000000..42e2fa90a94 --- /dev/null +++ b/res/layout/nfc_payment_empty.xml @@ -0,0 +1,37 @@ + + + + + + + + diff --git a/res/layout/nfc_payment_option.xml b/res/layout/nfc_payment_option.xml index 76fea4fb5de..90ba2792a63 100644 --- a/res/layout/nfc_payment_option.xml +++ b/res/layout/nfc_payment_option.xml @@ -13,40 +13,28 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - - - + - + /> + diff --git a/res/layout/preference_widget_settings.xml b/res/layout/preference_widget_settings.xml new file mode 100644 index 00000000000..6d9ac2fe051 --- /dev/null +++ b/res/layout/preference_widget_settings.xml @@ -0,0 +1,33 @@ + + + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 0b9842856aa..c1f7dc3319e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5501,24 +5501,35 @@ Tap & pay - - Google Wallet + + How it works - Pay with just a tap - - Favor foreground app - - Learn more + Use Tap & pay to make in-store purchases + + Payment default + + Not set + + %1$s - %2$s + + If open app supports Tap & pay + + Use that app instead of %1$s + + Use that app instead + + Still use %1$s + + Still use default + + At a Tap & pay terminal, pay with: More... - Find apps Set as your preference? - Always use %1$s when you tap & pay? - Always use %1$s instead of %2$s when you tap & pay? + Always use %1$s when you Tap & pay? + Always use %1$s instead of %2$s when you Tap & pay? diff --git a/src/com/android/settings/nfc/NfcForegroundPreference.java b/src/com/android/settings/nfc/NfcForegroundPreference.java new file mode 100644 index 00000000000..4f4398f3f18 --- /dev/null +++ b/src/com/android/settings/nfc/NfcForegroundPreference.java @@ -0,0 +1,68 @@ +/* + * Copyright (C) 2015 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.settings.nfc; + +import android.content.Context; +import com.android.settings.DropDownPreference; +import com.android.settings.R; + +public class NfcForegroundPreference extends DropDownPreference implements + DropDownPreference.Callback, PaymentBackend.Callback { + + private final PaymentBackend mPaymentBackend; + public NfcForegroundPreference(Context context, PaymentBackend backend) { + super(context); + mPaymentBackend = backend; + mPaymentBackend.registerCallback(this); + setCallback(this); + refresh(); + } + + @Override + public void onPaymentAppsChanged() { + refresh(); + } + + void refresh() { + PaymentBackend.PaymentAppInfo defaultApp = mPaymentBackend.getDefaultApp(); + boolean foregroundMode = mPaymentBackend.isForegroundMode(); + setPersistent(false); + setTitle(getContext().getString(R.string.nfc_payment_open_app)); + CharSequence favorOpen; + CharSequence favorDefault; + clearItems(); + if (defaultApp == null) { + favorOpen = getContext().getString(R.string.nfc_payment_favor_open_default_unknown); + favorDefault = getContext().getString(R.string.nfc_payment_favor_default_default_unknown); + } else { + favorOpen = getContext().getString(R.string.nfc_payment_favor_open, defaultApp.label); + favorDefault = getContext().getString(R.string.nfc_payment_favor_default, defaultApp.label); + } + addItem(favorOpen.toString(), true); + addItem(favorDefault.toString(), false); + if (foregroundMode) { + setSelectedValue(true); + } else { + setSelectedValue(false); + } + } + + @Override + public boolean onItemSelected(int pos, Object value) { + mPaymentBackend.setForegroundMode((Boolean) value); + return true; + } +} diff --git a/src/com/android/settings/nfc/NfcPaymentPreference.java b/src/com/android/settings/nfc/NfcPaymentPreference.java new file mode 100644 index 00000000000..e24a651c251 --- /dev/null +++ b/src/com/android/settings/nfc/NfcPaymentPreference.java @@ -0,0 +1,211 @@ +/* + * Copyright (C) 2015 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.settings.nfc; + +import android.app.AlertDialog; +import android.content.ActivityNotFoundException; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.preference.DialogPreference; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.BaseAdapter; +import android.widget.CompoundButton; +import android.widget.ImageView; +import android.widget.RadioButton; +import com.android.settings.R; +import com.android.settings.nfc.PaymentBackend.PaymentAppInfo; + +import java.util.List; + +public class NfcPaymentPreference extends DialogPreference implements + DialogInterface.OnClickListener, PaymentBackend.Callback, View.OnClickListener { + + private static final String TAG = "NfcPaymentPreference"; + + private final NfcPaymentAdapter mAdapter; + private final Context mContext; + private final LayoutInflater mLayoutInflater; + private final PaymentBackend mPaymentBackend; + + // Fields below only modified on UI thread + private ImageView mSettingsButtonView; + + public NfcPaymentPreference(Context context, PaymentBackend backend) { + super(context, null); + mPaymentBackend = backend; + mContext = context; + backend.registerCallback(this); + mAdapter = new NfcPaymentAdapter(); + setDialogTitle(context.getString(R.string.nfc_payment_pay_with)); + mLayoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + setWidgetLayoutResource(R.layout.preference_widget_settings); + + refresh(); + } + + @Override + protected void onBindView(View view) { + super.onBindView(view); + + mSettingsButtonView = (ImageView) view.findViewById(R.id.settings_button); + mSettingsButtonView.setOnClickListener(this); + + updateSettingsVisibility(); + } + + /** + * MUST be called on UI thread. + */ + public void refresh() { + List appInfos = mPaymentBackend.getPaymentAppInfos(); + PaymentAppInfo defaultApp = mPaymentBackend.getDefaultApp(); + if (appInfos != null) { + PaymentAppInfo[] apps = appInfos.toArray(new PaymentAppInfo[appInfos.size()]); + mAdapter.updateApps(apps, defaultApp); + } + setTitle(R.string.nfc_payment_default); + if (defaultApp != null) { + setSummary(mContext.getString(R.string.nfc_payment_app_and_desc, + defaultApp.label, defaultApp.description)); + } else { + setSummary(mContext.getString(R.string.nfc_payment_default_not_set)); + } + updateSettingsVisibility(); + } + + @Override + protected void onPrepareDialogBuilder(AlertDialog.Builder builder) { + super.onPrepareDialogBuilder(builder); + + builder.setSingleChoiceItems(mAdapter, 0, this); + } + + @Override + public void onPaymentAppsChanged() { + refresh(); + } + + @Override + public void onClick(View view) { + PaymentAppInfo defaultAppInfo = mPaymentBackend.getDefaultApp(); + if (defaultAppInfo != null && defaultAppInfo.settingsComponent != null) { + Intent settingsIntent = new Intent(Intent.ACTION_MAIN); + settingsIntent.setComponent(defaultAppInfo.settingsComponent); + settingsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + try { + mContext.startActivity(settingsIntent); + } catch (ActivityNotFoundException e) { + Log.e(TAG, "Settings activity not found."); + } + } + } + + void updateSettingsVisibility() { + if (mSettingsButtonView != null) { + PaymentAppInfo defaultApp = mPaymentBackend.getDefaultApp(); + if (defaultApp == null || defaultApp.settingsComponent == null) { + mSettingsButtonView.setVisibility(View.GONE); + } else { + mSettingsButtonView.setVisibility(View.VISIBLE); + + } + } + } + + class NfcPaymentAdapter extends BaseAdapter implements CompoundButton.OnCheckedChangeListener, + View.OnClickListener { + // Only modified on UI thread + private PaymentAppInfo[] appInfos; + + public NfcPaymentAdapter() { + } + + public void updateApps(PaymentAppInfo[] appInfos, PaymentAppInfo currentDefault) { + // Clone app infos, only add those with a banner + this.appInfos = appInfos; + notifyDataSetChanged(); + } + + @Override + public int getCount() { + return appInfos.length; + } + + @Override + public PaymentAppInfo getItem(int i) { + return appInfos[i]; + } + + @Override + public long getItemId(int i) { + return appInfos[i].componentName.hashCode(); + } + + @Override + public View getView(int position, View convertView, ViewGroup parent) { + ViewHolder holder; + PaymentAppInfo appInfo = appInfos[position]; + if (convertView == null) { + convertView = mLayoutInflater.inflate( + R.layout.nfc_payment_option, parent, false); + holder = new ViewHolder(); + holder.imageView = (ImageView) convertView.findViewById(R.id.banner); + holder.radioButton = (RadioButton) convertView.findViewById(R.id.button); + convertView.setTag(holder); + } else { + holder = (ViewHolder) convertView.getTag(); + } + holder.imageView.setImageDrawable(appInfo.banner); + holder.imageView.setTag(appInfo); + holder.imageView.setOnClickListener(this); + + // Prevent checked callback getting called on recycled views + holder.radioButton.setOnCheckedChangeListener(null); + holder.radioButton.setChecked(appInfo.isDefault); + holder.radioButton.setOnCheckedChangeListener(this); + holder.radioButton.setTag(appInfo); + return convertView; + } + + public class ViewHolder { + public ImageView imageView; + public RadioButton radioButton; + } + + @Override + public void onCheckedChanged(CompoundButton compoundButton, boolean b) { + PaymentAppInfo appInfo = (PaymentAppInfo) compoundButton.getTag(); + makeDefault(appInfo); + } + + @Override + public void onClick(View view) { + PaymentAppInfo appInfo = (PaymentAppInfo) view.getTag(); + makeDefault(appInfo); + } + + void makeDefault(PaymentAppInfo appInfo) { + if (!appInfo.isDefault) { + mPaymentBackend.setDefaultPaymentApp(appInfo.componentName); + } + getDialog().dismiss(); + } + } +} diff --git a/src/com/android/settings/nfc/PaymentBackend.java b/src/com/android/settings/nfc/PaymentBackend.java index 25572a72af9..52e3f7e12a2 100644 --- a/src/com/android/settings/nfc/PaymentBackend.java +++ b/src/com/android/settings/nfc/PaymentBackend.java @@ -16,15 +16,22 @@ package com.android.settings.nfc; -import android.content.ComponentName; -import android.content.Context; +import android.app.Activity; +import android.content.*; import android.content.pm.PackageManager; +import android.content.res.Resources; import android.graphics.drawable.Drawable; import android.nfc.NfcAdapter; import android.nfc.cardemulation.ApduServiceInfo; import android.nfc.cardemulation.CardEmulation; +import android.os.Bundle; +import android.os.Handler; +import android.os.Message; +import android.os.UserHandle; import android.provider.Settings; import android.provider.Settings.SettingNotFoundException; +import android.util.Log; +import com.android.internal.content.PackageMonitor; import java.util.ArrayList; import java.util.List; @@ -32,47 +39,135 @@ import java.util.List; public class PaymentBackend { public static final String TAG = "Settings.PaymentBackend"; + public interface Callback { + void onPaymentAppsChanged(); + } + public static class PaymentAppInfo { - CharSequence caption; + CharSequence label; + CharSequence description; Drawable banner; boolean isDefault; public ComponentName componentName; + public ComponentName settingsComponent; } private final Context mContext; private final NfcAdapter mAdapter; private final CardEmulation mCardEmuManager; + private final PackageMonitor mSettingsPackageMonitor = new SettingsPackageMonitor(); + // Fields below only modified on UI thread + private ArrayList mAppInfos; + private PaymentAppInfo mDefaultAppInfo; + private ArrayList mCallbacks = new ArrayList(); public PaymentBackend(Context context) { mContext = context; mAdapter = NfcAdapter.getDefaultAdapter(context); mCardEmuManager = CardEmulation.getInstance(mAdapter); + refresh(); } - public List getPaymentAppInfos() { + public void onPause() { + mSettingsPackageMonitor.unregister(); + mContext.unregisterReceiver(mReceiver); + } + + public void onResume() { + mSettingsPackageMonitor.register(mContext, mContext.getMainLooper(), false); + // Register broadcast receiver for dynamic resource updates + IntentFilter filter = new IntentFilter(CardEmulation.ACTION_REQUEST_SERVICE_RESOURCES); + mContext.registerReceiver(mReceiver, filter); + } + + public void refresh() { PackageManager pm = mContext.getPackageManager(); List serviceInfos = mCardEmuManager.getServices(CardEmulation.CATEGORY_PAYMENT); - List appInfos = new ArrayList(); + ArrayList appInfos = new ArrayList(); - if (serviceInfos == null) return appInfos; - - ComponentName defaultApp = getDefaultPaymentApp(); - - for (ApduServiceInfo service : serviceInfos) { - PaymentAppInfo appInfo = new PaymentAppInfo(); - appInfo.banner = service.loadBanner(pm); - appInfo.caption = service.getDescription(); - if (appInfo.caption == null) { - appInfo.caption = service.loadLabel(pm); - } - appInfo.isDefault = service.getComponent().equals(defaultApp); - appInfo.componentName = service.getComponent(); - appInfos.add(appInfo); + if (serviceInfos == null) { + makeCallbacks(); + return; } - return appInfos; + ComponentName defaultAppName = getDefaultPaymentApp(); + PaymentAppInfo foundDefaultApp = null; + for (ApduServiceInfo service : serviceInfos) { + PaymentAppInfo appInfo = new PaymentAppInfo(); + appInfo.label = service.loadLabel(pm); + if (appInfo.label == null) { + appInfo.label = service.loadAppLabel(pm); + } + appInfo.isDefault = service.getComponent().equals(defaultAppName); + if (appInfo.isDefault) { + foundDefaultApp = appInfo; + } + appInfo.componentName = service.getComponent(); + String settingsActivity = service.getSettingsActivityName(); + if (settingsActivity != null) { + appInfo.settingsComponent = new ComponentName(appInfo.componentName.getPackageName(), + settingsActivity); + } else { + appInfo.settingsComponent = null; + } + if (service.hasDynamicResources()) { + appInfo.description = ""; + appInfo.banner = null; + sendBroadcastForResources(appInfo); + } else { + appInfo.description = service.getDescription(); + appInfo.banner = service.loadBanner(pm); + } + appInfos.add(appInfo); + } + mAppInfos = appInfos; + mDefaultAppInfo = foundDefaultApp; + makeCallbacks(); + } + + public void registerCallback(Callback callback) { + mCallbacks.add(callback); + } + + public void unregisterCallback(Callback callback) { + mCallbacks.remove(callback); + } + + public List getPaymentAppInfos() { + return mAppInfos; + } + + public PaymentAppInfo getDefaultApp() { + return mDefaultAppInfo; + } + + void makeCallbacks() { + for (Callback callback : mCallbacks) { + callback.onPaymentAppsChanged(); + } + } + + Drawable loadDrawableForPackage(String pkgName, int drawableResId) { + PackageManager pm = mContext.getPackageManager(); + try { + Resources res = pm.getResourcesForApplication(pkgName); + Drawable banner = res.getDrawable(drawableResId); + return banner; + } catch (Resources.NotFoundException e) { + return null; + } catch (PackageManager.NameNotFoundException e) { + return null; + } + } + + void sendBroadcastForResources(PaymentAppInfo appInfo) { + Intent broadcastIntent = new Intent(CardEmulation.ACTION_REQUEST_SERVICE_RESOURCES); + broadcastIntent.setPackage(appInfo.componentName.getPackageName()); + broadcastIntent.putExtra(CardEmulation.EXTRA_SERVICE_COMPONENT, appInfo.componentName); + mContext.sendOrderedBroadcastAsUser(broadcastIntent, UserHandle.CURRENT, + null, mReceiver, null, Activity.RESULT_OK, null, null); } boolean isForegroundMode() { @@ -103,5 +198,66 @@ public class PaymentBackend { Settings.Secure.putString(mContext.getContentResolver(), Settings.Secure.NFC_PAYMENT_DEFAULT_COMPONENT, app != null ? app.flattenToString() : null); + refresh(); + } + + private final BroadcastReceiver mReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + Bundle results = getResultExtras(false); + if (results != null) { + String desc = results.getString(CardEmulation.EXTRA_DESCRIPTION); + int resId = results.getInt(CardEmulation.EXTRA_BANNER_RES_ID, -1); + // Find corresponding component + PaymentAppInfo matchingAppInfo = null; + for (PaymentAppInfo appInfo : mAppInfos) { + if (appInfo.componentName.equals( + intent.getParcelableExtra(CardEmulation.EXTRA_SERVICE_COMPONENT))) { + matchingAppInfo = appInfo; + } + } + if (matchingAppInfo != null && (desc != null || resId != -1)) { + if (desc != null) { + matchingAppInfo.description = desc; + } + if (resId != -1) { + matchingAppInfo.banner = loadDrawableForPackage( + matchingAppInfo.componentName.getPackageName(), resId); + } + makeCallbacks(); + } + } else { + Log.e(TAG, "Didn't find results extra."); + } + + } + }; + private final Handler mHandler = new Handler() { + @Override + public void dispatchMessage(Message msg) { + refresh(); + } + }; + + private class SettingsPackageMonitor extends PackageMonitor { + @Override + public void onPackageAdded(String packageName, int uid) { + mHandler.obtainMessage().sendToTarget(); + } + + @Override + public void onPackageAppeared(String packageName, int reason) { + mHandler.obtainMessage().sendToTarget(); + } + + @Override + public void onPackageDisappeared(String packageName, int reason) { + mHandler.obtainMessage().sendToTarget(); + } + + @Override + public void onPackageRemoved(String packageName, int uid) { + mHandler.obtainMessage().sendToTarget(); + } } } \ No newline at end of file diff --git a/src/com/android/settings/nfc/PaymentDefaultDialog.java b/src/com/android/settings/nfc/PaymentDefaultDialog.java index 33ac94743c1..949f87d8b7d 100644 --- a/src/com/android/settings/nfc/PaymentDefaultDialog.java +++ b/src/com/android/settings/nfc/PaymentDefaultDialog.java @@ -111,13 +111,13 @@ public final class PaymentDefaultDialog extends AlertActivity implements if (defaultPaymentApp == null) { String formatString = getString(R.string.nfc_payment_set_default); String msg = String.format(formatString, - sanitizePaymentAppCaption(requestedPaymentApp.caption.toString())); + sanitizePaymentAppCaption(requestedPaymentApp.label.toString())); p.mMessage = msg; } else { String formatString = getString(R.string.nfc_payment_set_default_instead_of); String msg = String.format(formatString, - sanitizePaymentAppCaption(requestedPaymentApp.caption.toString()), - sanitizePaymentAppCaption(defaultPaymentApp.caption.toString())); + sanitizePaymentAppCaption(requestedPaymentApp.label.toString()), + sanitizePaymentAppCaption(defaultPaymentApp.label.toString())); p.mMessage = msg; } p.mPositiveButtonText = getString(R.string.yes); diff --git a/src/com/android/settings/nfc/PaymentSettings.java b/src/com/android/settings/nfc/PaymentSettings.java index 4f04d73a626..ca38d92068b 100644 --- a/src/com/android/settings/nfc/PaymentSettings.java +++ b/src/com/android/settings/nfc/PaymentSettings.java @@ -16,47 +16,24 @@ package com.android.settings.nfc; -import android.content.Context; -import android.content.Intent; -import android.net.Uri; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; -import android.preference.Preference; -import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceManager; import android.preference.PreferenceScreen; -import android.preference.SwitchPreference; -import android.provider.Settings; -import android.text.TextUtils; -import android.util.Log; -import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; -import android.view.View.OnClickListener; import android.view.ViewGroup; -import android.widget.ImageView; -import android.widget.RadioButton; -import android.widget.TextView; - -import com.android.internal.content.PackageMonitor; import com.android.internal.logging.MetricsLogger; -import com.android.settings.HelpUtils; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.nfc.PaymentBackend.PaymentAppInfo; import java.util.List; -public class PaymentSettings extends SettingsPreferenceFragment implements - OnClickListener, OnPreferenceChangeListener { +public class PaymentSettings extends SettingsPreferenceFragment { public static final String TAG = "PaymentSettings"; - private LayoutInflater mInflater; private PaymentBackend mPaymentBackend; - private final PackageMonitor mSettingsPackageMonitor = new SettingsPackageMonitor(); - @Override protected int getMetricsCategory() { @@ -68,180 +45,50 @@ public class PaymentSettings extends SettingsPreferenceFragment implements super.onCreate(icicle); mPaymentBackend = new PaymentBackend(getActivity()); - mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); setHasOptionsMenu(true); } - public void refresh() { + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + ViewGroup contentRoot = (ViewGroup) getListView().getParent(); + View emptyView = getActivity().getLayoutInflater().inflate( + R.layout.nfc_payment_empty, contentRoot, false); + contentRoot.addView(emptyView); + getListView().setEmptyView(emptyView); + PreferenceManager manager = getPreferenceManager(); PreferenceScreen screen = manager.createPreferenceScreen(getActivity()); - // Get all payment services List appInfos = mPaymentBackend.getPaymentAppInfos(); if (appInfos != null && appInfos.size() > 0) { - // Add all payment apps - for (PaymentAppInfo appInfo : appInfos) { - PaymentAppPreference preference = - new PaymentAppPreference(getActivity(), appInfo, this); - preference.setTitle(appInfo.caption); - if (appInfo.banner != null) { - screen.addPreference(preference); - } else { - // Ignore, no banner - Log.e(TAG, "Couldn't load banner drawable of service " + appInfo.componentName); - } - } - } - TextView emptyText = (TextView) getView().findViewById(R.id.nfc_payment_empty_text); - TextView learnMore = (TextView) getView().findViewById(R.id.nfc_payment_learn_more); - ImageView emptyImage = (ImageView) getView().findViewById(R.id.nfc_payment_tap_image); - if (screen.getPreferenceCount() == 0) { - emptyText.setVisibility(View.VISIBLE); - learnMore.setVisibility(View.VISIBLE); - emptyImage.setVisibility(View.VISIBLE); - getListView().setVisibility(View.GONE); - } else { - SwitchPreference foreground = new SwitchPreference(getActivity()); - boolean foregroundMode = mPaymentBackend.isForegroundMode(); - foreground.setPersistent(false); - foreground.setTitle(getString(R.string.nfc_payment_favor_foreground)); - foreground.setChecked(foregroundMode); - foreground.setOnPreferenceChangeListener(this); + NfcPaymentPreference preference = + new NfcPaymentPreference(getActivity(), mPaymentBackend); + screen.addPreference(preference); + NfcForegroundPreference foreground = new NfcForegroundPreference(getActivity(), + mPaymentBackend); screen.addPreference(foreground); - emptyText.setVisibility(View.GONE); - learnMore.setVisibility(View.GONE); - emptyImage.setVisibility(View.GONE); - getListView().setVisibility(View.VISIBLE); } setPreferenceScreen(screen); } - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - super.onCreateView(inflater, container, savedInstanceState); - View v = mInflater.inflate(R.layout.nfc_payment, container, false); - TextView learnMore = (TextView) v.findViewById(R.id.nfc_payment_learn_more); - learnMore.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - String helpUrl; - if (!TextUtils.isEmpty(helpUrl = getResources().getString( - R.string.help_url_nfc_payment))) { - final Uri fullUri = HelpUtils.uriWithAddedParameters( - PaymentSettings.this.getActivity(), Uri.parse(helpUrl)); - Intent intent = new Intent(Intent.ACTION_VIEW, fullUri); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK - | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS); - startActivity(intent); - } else { - Log.e(TAG, "Help url not set."); - } - } - }); - return v; - } - - @Override - public void onClick(View v) { - if (v.getTag() instanceof PaymentAppInfo) { - PaymentAppInfo appInfo = (PaymentAppInfo) v.getTag(); - if (appInfo.componentName != null) { - mPaymentBackend.setDefaultPaymentApp(appInfo.componentName); - } - refresh(); - } - } - @Override public void onResume() { super.onResume(); - mSettingsPackageMonitor.register(getActivity(), getActivity().getMainLooper(), false); - refresh(); + mPaymentBackend.onResume(); } @Override public void onPause() { - mSettingsPackageMonitor.unregister(); super.onPause(); + mPaymentBackend.onPause(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); - String searchUri = Settings.Secure.getString(getContentResolver(), - Settings.Secure.PAYMENT_SERVICE_SEARCH_URI); - if (!TextUtils.isEmpty(searchUri)) { - MenuItem menuItem = menu.add(R.string.nfc_payment_menu_item_add_service); - menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM); - menuItem.setIntent(new Intent(Intent.ACTION_VIEW,Uri.parse(searchUri))); - } - } - - private final Handler mHandler = new Handler() { - @Override - public void dispatchMessage(Message msg) { - refresh(); - } - }; - - private class SettingsPackageMonitor extends PackageMonitor { - @Override - public void onPackageAdded(String packageName, int uid) { - mHandler.obtainMessage().sendToTarget(); - } - - @Override - public void onPackageAppeared(String packageName, int reason) { - mHandler.obtainMessage().sendToTarget(); - } - - @Override - public void onPackageDisappeared(String packageName, int reason) { - mHandler.obtainMessage().sendToTarget(); - } - - @Override - public void onPackageRemoved(String packageName, int uid) { - mHandler.obtainMessage().sendToTarget(); - } - } - - public static class PaymentAppPreference extends Preference { - private final OnClickListener listener; - private final PaymentAppInfo appInfo; - - public PaymentAppPreference(Context context, PaymentAppInfo appInfo, - OnClickListener listener) { - super(context); - setLayoutResource(R.layout.nfc_payment_option); - this.appInfo = appInfo; - this.listener = listener; - } - - @Override - protected void onBindView(View view) { - super.onBindView(view); - - RadioButton radioButton = (RadioButton) view.findViewById(android.R.id.button1); - radioButton.setChecked(appInfo.isDefault); - radioButton.setOnClickListener(listener); - radioButton.setTag(appInfo); - - ImageView banner = (ImageView) view.findViewById(R.id.banner); - banner.setImageDrawable(appInfo.banner); - banner.setOnClickListener(listener); - banner.setTag(appInfo); - } - } - - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - if (preference instanceof SwitchPreference) { - mPaymentBackend.setForegroundMode(((Boolean) newValue).booleanValue()); - return true; - } else { - return false; - } + MenuItem menuItem = menu.add(R.string.nfc_payment_how_it_works); + menuItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS); + // TODO link to tutorial screen } }