summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/nfc/PaymentSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/nfc/PaymentSettings.java')
-rw-r--r--src/com/android/settings/nfc/PaymentSettings.java193
1 files changed, 20 insertions, 173 deletions
diff --git a/src/com/android/settings/nfc/PaymentSettings.java b/src/com/android/settings/nfc/PaymentSettings.java
index 4f04d73a6..ca38d9206 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<PaymentAppInfo> 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
}
}