diff options
Diffstat (limited to 'src/com/android/settings/nfc/PaymentSettings.java')
-rw-r--r-- | src/com/android/settings/nfc/PaymentSettings.java | 193 |
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 } } |