1a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang/* 2a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Copyright (C) 2016 The Android Open Source Project 3a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * 4a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Licensed under the Apache License, Version 2.0 (the "License"); 5a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * you may not use this file except in compliance with the License. 6a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * You may obtain a copy of the License at 7a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * 8a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * http://www.apache.org/licenses/LICENSE-2.0 9a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * 10a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Unless required by applicable law or agreed to in writing, software 11a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * distributed under the License is distributed on an "AS IS" BASIS, 12a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * See the License for the specific language governing permissions and 14a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * limitations under the License. 15a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang */ 16a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangpackage com.android.settings.dashboard; 17a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 18a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.accounts.Account; 19a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.annotation.DrawableRes; 20a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.annotation.LayoutRes; 21a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.annotation.StringRes; 22a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.app.Activity; 23409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyuleiimport android.app.ActivityManager; 24a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhangimport android.app.DialogFragment; 250bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhangimport android.content.Context; 26a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.content.Intent; 270d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Lingimport android.content.pm.PackageManager; 28b0060dde637f583a048848b64157653a79ba097fFan Zhangimport android.os.Bundle; 29a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.support.v7.widget.RecyclerView; 300bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhangimport android.text.TextUtils; 31a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.view.LayoutInflater; 32a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.view.View; 33a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.view.ViewGroup; 34a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhangimport android.widget.AdapterView; 35a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhangimport android.widget.ArrayAdapter; 36a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.widget.ImageView; 37a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhangimport android.widget.Spinner; 38a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport android.widget.TextView; 39a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 40ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhangimport com.android.internal.logging.MetricsLogger; 41ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhangimport com.android.internal.logging.MetricsProto; 42a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport com.android.settings.R; 43a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport com.android.settings.overlay.SupportFeatureProvider; 44a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhangimport com.android.settings.support.SupportDisclaimerDialogFragment; 45a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhangimport com.android.settings.support.SupportPhone; 463737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhangimport com.android.settings.support.SupportPhoneDialogFragment; 47a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 48a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport java.util.ArrayList; 49a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport java.util.List; 509502163f9290896c3d40eef56deee4e3dde3f492Fan Zhangimport java.util.Objects; 51a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 52a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport static com.android.settings.overlay.SupportFeatureProvider.SupportType.CHAT; 53a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangimport static com.android.settings.overlay.SupportFeatureProvider.SupportType.PHONE; 54a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 55a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang/** 56a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Item adapter for support tiles. 57a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang */ 58a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhangpublic final class SupportItemAdapter extends RecyclerView.Adapter<SupportItemAdapter.ViewHolder> { 59a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 60b0060dde637f583a048848b64157653a79ba097fFan Zhang private static final String STATE_SELECTED_COUNTRY = "STATE_SELECTED_COUNTRY"; 61cd0915122414fc3e690480290f6527898b0459ceFan Zhang private static final int TYPE_ESCALATION_OPTIONS = R.layout.support_escalation_options; 62a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private static final int TYPE_ESCALATION_OPTIONS_OFFLINE = 63a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang R.layout.support_offline_escalation_options; 64a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang private static final int TYPE_SUPPORT_TILE = R.layout.support_tile; 6548aab452cb72a038948f664b329fae37201a1512Fan Zhang private static final int TYPE_SUPPORT_TILE_SPACER = R.layout.support_tile_spacer; 66a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang private static final int TYPE_SIGN_IN_BUTTON = R.layout.support_sign_in_button; 67a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 68a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang private final Activity mActivity; 69cd0915122414fc3e690480290f6527898b0459ceFan Zhang private final EscalationClickListener mEscalationClickListener; 70a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private final SpinnerItemSelectListener mSpinnerItemSelectListener; 71a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang private final SupportFeatureProvider mSupportFeatureProvider; 72a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang private final View.OnClickListener mItemClickListener; 73a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang private final List<SupportData> mSupportData; 74a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 75a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private String mSelectedCountry; 762ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang private boolean mHasInternet; 779502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang private Account mAccount; 782ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang 79b0060dde637f583a048848b64157653a79ba097fFan Zhang public SupportItemAdapter(Activity activity, Bundle savedInstanceState, 80b0060dde637f583a048848b64157653a79ba097fFan Zhang SupportFeatureProvider supportFeatureProvider, View.OnClickListener itemClickListener) { 81a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang mActivity = activity; 82a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang mSupportFeatureProvider = supportFeatureProvider; 83a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang mItemClickListener = itemClickListener; 84cd0915122414fc3e690480290f6527898b0459ceFan Zhang mEscalationClickListener = new EscalationClickListener(); 85a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mSpinnerItemSelectListener = new SpinnerItemSelectListener(); 86a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang mSupportData = new ArrayList<>(); 872ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang // Optimistically assume we have Internet access. It will be updated later to correct value. 882ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang mHasInternet = true; 89b0060dde637f583a048848b64157653a79ba097fFan Zhang if (savedInstanceState != null) { 90b0060dde637f583a048848b64157653a79ba097fFan Zhang mSelectedCountry = savedInstanceState.getString(STATE_SELECTED_COUNTRY); 91242a7ef1e80db2e2c04973883cc675f0e8a61741Fan Zhang } else { 92242a7ef1e80db2e2c04973883cc675f0e8a61741Fan Zhang mSelectedCountry = mSupportFeatureProvider.getCurrentCountryCodeIfHasConfig(PHONE); 93b0060dde637f583a048848b64157653a79ba097fFan Zhang } 94eadc7dc815522f69658982905239c734266fbcc2Fan Zhang mAccount = mSupportFeatureProvider.getSupportEligibleAccount(mActivity); 95a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang refreshData(); 96a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 97a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 98a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang @Override 99a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 100a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate( 101a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang viewType, parent, false)); 102a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 103a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 104a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang @Override 105a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang public void onBindViewHolder(ViewHolder holder, int position) { 106a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang final SupportData data = mSupportData.get(position); 107a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang switch (holder.getItemViewType()) { 108a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang case TYPE_SIGN_IN_BUTTON: 109016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang bindSignInPromoTile(holder, (EscalationData) data); 110a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang break; 111cd0915122414fc3e690480290f6527898b0459ceFan Zhang case TYPE_ESCALATION_OPTIONS: 112016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang bindEscalationOptions(holder, (EscalationData) data); 113cd0915122414fc3e690480290f6527898b0459ceFan Zhang break; 114a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang case TYPE_ESCALATION_OPTIONS_OFFLINE: 115016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang bindOfflineEscalationOptions(holder, (OfflineEscalationData) data); 116a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang break; 11748aab452cb72a038948f664b329fae37201a1512Fan Zhang case TYPE_SUPPORT_TILE_SPACER: 11848aab452cb72a038948f664b329fae37201a1512Fan Zhang break; 119a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang default: 120a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang bindSupportTile(holder, data); 121a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang break; 122a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 123a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 124a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 125a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang @Override 126a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang public int getItemViewType(int position) { 127a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang return mSupportData.get(position).type; 128a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 129a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 130a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang @Override 131a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang public int getItemCount() { 132a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang return mSupportData.size(); 133a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 134a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 135a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang /** 136a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Called when a support item is clicked. 137a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang */ 138a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang public void onItemClicked(int position) { 139a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang if (position >= 0 && position < mSupportData.size()) { 140a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang final SupportData data = mSupportData.get(position); 1410d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling if (data.intent != null && 1420d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling mActivity.getPackageManager().resolveActivity(data.intent, 0) != null) { 143ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang if (data.metricsEvent >= 0) { 144ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsLogger.action(mActivity, data.metricsEvent); 145ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang } 146a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang mActivity.startActivityForResult(data.intent, 0); 147a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 148a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 149a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 150a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 1512ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang public void setHasInternet(boolean hasInternet) { 1522ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang if (mHasInternet != hasInternet) { 1532ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang mHasInternet = hasInternet; 1545df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang refreshEscalationCards(); 1552ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang } 1562ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang } 1572ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang 1589502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang public void setAccount(Account account) { 1599502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang if (!Objects.equals(mAccount, account)) { 1609502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang mAccount = account; 161eadc7dc815522f69658982905239c734266fbcc2Fan Zhang mSupportFeatureProvider.refreshOperationRules(); 1625df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang refreshEscalationCards(); 1639502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang } 1649502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang } 1659502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang 166b0060dde637f583a048848b64157653a79ba097fFan Zhang public void onSaveInstanceState(Bundle outState) { 167b0060dde637f583a048848b64157653a79ba097fFan Zhang outState.putString(STATE_SELECTED_COUNTRY, mSelectedCountry); 168b0060dde637f583a048848b64157653a79ba097fFan Zhang } 169b0060dde637f583a048848b64157653a79ba097fFan Zhang 170a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang /** 171a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Create data for the adapter. If there is already data in the adapter, they will be 172a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * destroyed and recreated. 173a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang */ 1749502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang private void refreshData() { 175a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang mSupportData.clear(); 1765df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang addEscalationCards(); 1775df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang addMoreHelpItems(); 1785df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang notifyDataSetChanged(); 1795df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang } 1805df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang 1815df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang /** 1825df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang * Adds 1 escalation card. Based on current phone state, the escalation card can display 1835df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang * different content. 1845df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang */ 1855df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang private void addEscalationCards() { 1869502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang if (mAccount == null) { 187a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang addSignInPromo(); 188a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else if (mHasInternet) { 1895df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang addOnlineEscalationCards(); 190a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else { 191a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang addOfflineEscalationCards(); 192a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 193a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 194a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 1955df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang /** 1965df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang * Finds and refreshes escalation card data. 1975df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang */ 1985df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang private void refreshEscalationCards() { 1995df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang if (getItemCount() > 0) { 2005df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang final int itemType = getItemViewType(0 /* position */); 2015df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang if (itemType == TYPE_SIGN_IN_BUTTON 2025df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang || itemType == TYPE_ESCALATION_OPTIONS 2035df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang || itemType == TYPE_ESCALATION_OPTIONS_OFFLINE) { 2045df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang mSupportData.remove(0 /* position */); 2055df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang addEscalationCards(); 2065df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang notifyItemChanged(0 /* position */); 2075df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang } 2085df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang } 2095df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang } 2105df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang 2115df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang private void addOnlineEscalationCards() { 2122c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang final boolean hasPhoneOperation = 2132c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang mSupportFeatureProvider.isSupportTypeEnabled(mActivity, PHONE); 2142c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang final boolean hasChatOperation = 2152c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang mSupportFeatureProvider.isSupportTypeEnabled(mActivity, CHAT); 216016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final EscalationData.Builder builder = new EscalationData.Builder(mActivity); 2172c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang if (!hasPhoneOperation && !hasChatOperation) { 2182c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang // No support at all. 219016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang builder.setTileTitle(R.string.support_escalation_title) 220016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileSummary(R.string.support_escalation_unavailable_summary); 2212c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang } else if (mSupportFeatureProvider.isAlwaysOperating(PHONE, null /* countryCode */) 2222736ace057c043c3f24ef095c4d45095772d109aFan Zhang || mSupportFeatureProvider.isAlwaysOperating(CHAT, null /* countryCode */)) { 2232c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang // Support is available. 224016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang builder.setTileTitle(R.string.support_escalation_24_7_title) 2250bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang .setTileTitleDescription(R.string.support_escalation_24_7_content_description) 226016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileSummary(mActivity.getString(R.string.support_escalation_24_7_summary)); 227a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else if (mSupportFeatureProvider.isOperatingNow(PHONE) 228a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang || mSupportFeatureProvider.isOperatingNow(CHAT)) { 2292c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang // Support is available now. 230016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang builder.setTileTitle(R.string.support_escalation_title) 231016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileSummary(R.string.support_escalation_summary); 2322ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang } else { 2334178710f3d52162e7d7aa1114c521e627f21dc92Fan Zhang // Support is now temporarily unavailable. 234016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang builder.setTileTitle(R.string.support_escalation_title) 235016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileSummary( 2364178710f3d52162e7d7aa1114c521e627f21dc92Fan Zhang mSupportFeatureProvider.getOperationHours(mActivity, PHONE, null, 2374178710f3d52162e7d7aa1114c521e627f21dc92Fan Zhang true /* hasInternet */)); 2382ddde4a9282ea74f570e970a1a26252067032c58Fan Zhang } 2392c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang if (hasPhoneOperation) { 240016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang builder.setText1(R.string.support_escalation_by_phone) 241016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setSummary1(mSupportFeatureProvider.getEstimatedWaitTime(mActivity, PHONE)) 242016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setEnabled1(mSupportFeatureProvider.isOperatingNow(PHONE)); 243be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 2442c9f35e98d249d8d49a8020caebd422359462cfdFan Zhang if (hasChatOperation) { 245016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang builder.setText2(R.string.support_escalation_by_chat) 246016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setSummary2(mSupportFeatureProvider.getEstimatedWaitTime(mActivity, CHAT)) 247016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setEnabled2(mSupportFeatureProvider.isOperatingNow(CHAT)); 248be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 2495df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang mSupportData.add(0 /* index */, builder.build()); 250a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 251a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 252a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private void addOfflineEscalationCards() { 2532736ace057c043c3f24ef095c4d45095772d109aFan Zhang final CharSequence operatingHours; 25448aab452cb72a038948f664b329fae37201a1512Fan Zhang final boolean isPhoneSupportAlwaysOperating = 25548aab452cb72a038948f664b329fae37201a1512Fan Zhang mSupportFeatureProvider.isAlwaysOperating(PHONE, mSelectedCountry); 25648aab452cb72a038948f664b329fae37201a1512Fan Zhang if (isPhoneSupportAlwaysOperating) { 2572736ace057c043c3f24ef095c4d45095772d109aFan Zhang operatingHours = mActivity.getString(R.string.support_escalation_24_7_summary); 2582736ace057c043c3f24ef095c4d45095772d109aFan Zhang } else { 2592736ace057c043c3f24ef095c4d45095772d109aFan Zhang operatingHours = mSupportFeatureProvider.getOperationHours(mActivity, 2604178710f3d52162e7d7aa1114c521e627f21dc92Fan Zhang PHONE, mSelectedCountry, false /* hasInternet */); 2612736ace057c043c3f24ef095c4d45095772d109aFan Zhang } 2625df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang mSupportData.add(0 /* index */, new OfflineEscalationData.Builder(mActivity) 263016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setCountries(mSupportFeatureProvider.getPhoneSupportCountries()) 264a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang .setTollFreePhone(mSupportFeatureProvider.getSupportPhones( 265a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mSelectedCountry, true /* isTollFree */)) 266a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang .setTolledPhone(mSupportFeatureProvider.getSupportPhones( 267016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang mSelectedCountry, false /* isTollFree */)) 26848aab452cb72a038948f664b329fae37201a1512Fan Zhang .setTileTitle(isPhoneSupportAlwaysOperating 26948aab452cb72a038948f664b329fae37201a1512Fan Zhang ? R.string.support_escalation_24_7_title 27048aab452cb72a038948f664b329fae37201a1512Fan Zhang : R.string.support_escalation_title) 2710bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang .setTileTitleDescription(isPhoneSupportAlwaysOperating 2720bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang ? R.string.support_escalation_24_7_content_description 2730bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang : R.string.support_escalation_title) 274016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileSummary(operatingHours) 275016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .build()); 276a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 277a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 278a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang private void addSignInPromo() { 2795df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang mSupportData.add(0 /* index */, new EscalationData.Builder(mActivity, TYPE_SIGN_IN_BUTTON) 280be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang .setText1(R.string.support_sign_in_button_text) 281be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang .setText2(R.string.support_sign_in_required_help) 282016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileTitle(R.string.support_sign_in_required_title) 283016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang .setTileSummary(R.string.support_sign_in_required_summary) 284be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang .build()); 285a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 286a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang 287a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang private void addMoreHelpItems() { 28848aab452cb72a038948f664b329fae37201a1512Fan Zhang mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE_SPACER).build()); 2890d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling PackageManager packageManager = mActivity.getPackageManager(); 2900d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling Intent intent = mSupportFeatureProvider.getHelpIntent(mActivity); 2910d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling if (packageManager.resolveActivity(intent, 0) != null) { 2920d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE) 2930d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setIcon(R.drawable.ic_help_24dp) 2940d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setTileTitle(R.string.support_help_feedback_title) 2950d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setIntent(intent) 2960d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setMetricsEvent(MetricsProto.MetricsEvent.ACTION_SUPPORT_HELP_AND_FEEDBACK) 2970d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .build()); 2980d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling } 2990d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling intent = mSupportFeatureProvider.getTipsAndTricksIntent(mActivity); 3000d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling if (packageManager.resolveActivity(intent, 0) != null) { 3010d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling mSupportData.add(new SupportData.Builder(mActivity, TYPE_SUPPORT_TILE) 3020d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setIcon(R.drawable.ic_lightbulb_outline_24) 3030d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setTileTitle(R.string.support_tips_and_tricks_title) 3040d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setIntent(intent) 3050d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .setMetricsEvent(MetricsProto.MetricsEvent.ACTION_SUPPORT_TIPS_AND_TRICKS) 3060d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling .build()); 3070d4b8a3b1984bce718a94f4fe7b9e3bdc2322d21Doris Ling } 308a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 309a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 310016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private void bindEscalationOptions(ViewHolder holder, EscalationData data) { 311016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileTitleView.setText(data.tileTitle); 3120bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang holder.tileTitleView.setContentDescription(data.tileTitleDescription); 313016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileSummaryView.setText(data.tileSummary); 314cd0915122414fc3e690480290f6527898b0459ceFan Zhang if (data.text1 == 0) { 315cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text1View.setVisibility(View.GONE); 316cd0915122414fc3e690480290f6527898b0459ceFan Zhang } else { 317cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text1View.setText(data.text1); 318cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text1View.setOnClickListener(mEscalationClickListener); 319841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang holder.text1View.setEnabled(data.enabled1 && mHasInternet); 320cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text1View.setVisibility(View.VISIBLE); 321cd0915122414fc3e690480290f6527898b0459ceFan Zhang } 3220bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang if (TextUtils.isEmpty(data.text2)) { 323cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text2View.setVisibility(View.GONE); 324cd0915122414fc3e690480290f6527898b0459ceFan Zhang } else { 325cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text2View.setText(data.text2); 326cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text2View.setOnClickListener(mEscalationClickListener); 327841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang holder.text2View.setEnabled(data.enabled2 && mHasInternet); 328cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text2View.setVisibility(View.VISIBLE); 329cd0915122414fc3e690480290f6527898b0459ceFan Zhang } 330be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang if (holder.summary1View != null) { 331be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang holder.summary1View.setText(data.summary1); 33255c6ea25f4a1bdf456e3addd74ec8c596c57be00Fan Zhang holder.summary1View.setVisibility(mHasInternet && !TextUtils.isEmpty(data.summary1) 33355c6ea25f4a1bdf456e3addd74ec8c596c57be00Fan Zhang ? View.VISIBLE : View.GONE); 334be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 335be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang if (holder.summary2View != null) { 336be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang holder.summary2View.setText(data.summary2); 33755c6ea25f4a1bdf456e3addd74ec8c596c57be00Fan Zhang holder.summary2View.setVisibility(mHasInternet && !TextUtils.isEmpty(data.summary2) 33855c6ea25f4a1bdf456e3addd74ec8c596c57be00Fan Zhang ? View.VISIBLE : View.GONE); 339be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 340cd0915122414fc3e690480290f6527898b0459ceFan Zhang } 341cd0915122414fc3e690480290f6527898b0459ceFan Zhang 342016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private void bindOfflineEscalationOptions(ViewHolder holder, OfflineEscalationData data) { 343016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang // Bind Title 344016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileTitleView.setText(data.tileTitle); 3450bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang holder.tileTitleView.setContentDescription(data.tileTitleDescription); 346016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileSummaryView.setText(data.tileSummary); 347a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang // Bind spinner 348a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final Spinner spinner = (Spinner) holder.itemView.findViewById(R.id.spinner); 349a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final ArrayAdapter<String> adapter = new ArrayAdapter( 350a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mActivity, android.R.layout.simple_spinner_dropdown_item, data.countries); 351a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang spinner.setAdapter(adapter); 352a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final List<String> countryCodes = mSupportFeatureProvider.getPhoneSupportCountryCodes(); 353a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang for (int i = 0; i < countryCodes.size(); i++) { 354a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang if (TextUtils.equals(countryCodes.get(i), mSelectedCountry)) { 355a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang spinner.setSelection(i); 356a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang break; 357a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 358a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 359a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang spinner.setOnItemSelectedListener(mSpinnerItemSelectListener); 360a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang // Bind buttons 361a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang if (data.tollFreePhone != null) { 362a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text1View.setText(data.tollFreePhone.number); 363a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text1View.setVisibility(View.VISIBLE); 364a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text1View.setOnClickListener(mEscalationClickListener); 365a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else { 366a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text1View.setVisibility(View.GONE); 367a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 368a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang if (data.tolledPhone != null) { 369a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text2View.setText( 370a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mActivity.getString(R.string.support_international_phone_title)); 371a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text2View.setVisibility(View.VISIBLE); 372a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text2View.setOnClickListener(mEscalationClickListener); 373a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else { 374a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang holder.text2View.setVisibility(View.GONE); 375a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 376409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei 377409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei if (ActivityManager.isUserAMonkey()) { 378409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei holder.text1View.setVisibility(View.GONE); 379409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei holder.text2View.setVisibility(View.GONE); 380409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei spinner.setVisibility(View.GONE); 381409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei holder.itemView.findViewById(R.id.support_text).setVisibility(View.GONE); 382409c4708c162bf3ae95f9fe695516ecd33cd91bajackqdyulei } 383a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 384a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 385016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private void bindSignInPromoTile(ViewHolder holder, EscalationData data) { 386016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileTitleView.setText(data.tileTitle); 3870bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang holder.tileTitleView.setContentDescription(data.tileTitleDescription); 388016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileSummaryView.setText(data.tileSummary); 389a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang holder.text1View.setText(data.text1); 390a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang holder.text2View.setText(data.text2); 391cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text1View.setOnClickListener(mEscalationClickListener); 392cd0915122414fc3e690480290f6527898b0459ceFan Zhang holder.text2View.setOnClickListener(mEscalationClickListener); 393a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 394a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang 395a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang private void bindSupportTile(ViewHolder holder, SupportData data) { 396a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang if (holder.iconView != null) { 397a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang holder.iconView.setImageResource(data.icon); 398a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 399016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang if (holder.tileTitleView != null) { 400016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileTitleView.setText(data.tileTitle); 4010bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang holder.tileTitleView.setContentDescription(data.tileTitleDescription); 402a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 403016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang if (holder.tileSummaryView != null) { 404016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang holder.tileSummaryView.setText(data.tileSummary); 405a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 406a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang holder.itemView.setOnClickListener(mItemClickListener); 407a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 408a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang 409a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang /** 410a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang * Show a disclaimer dialog and start support action after disclaimer has been acknowledged. 411a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang */ 412a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang private void tryStartDisclaimerAndSupport(final @SupportFeatureProvider.SupportType int type) { 413a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang if (mSupportFeatureProvider.shouldShowDisclaimerDialog(mActivity)) { 414a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang DialogFragment fragment = SupportDisclaimerDialogFragment.newInstance(mAccount, type); 415a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang fragment.show(mActivity.getFragmentManager(), SupportDisclaimerDialogFragment.TAG); 416a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang return; 417a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang } 418a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang mSupportFeatureProvider.startSupport(mActivity, mAccount, type); 419a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang } 420a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang 421a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang /** 422cd0915122414fc3e690480290f6527898b0459ceFan Zhang * Click handler for starting escalation options. 423a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang */ 424cd0915122414fc3e690480290f6527898b0459ceFan Zhang private final class EscalationClickListener implements View.OnClickListener { 425a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang @Override 426a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang public void onClick(final View v) { 427a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang if (mAccount == null) { 428a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang switch (v.getId()) { 429a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang case android.R.id.text1: 430ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsLogger.action(mActivity, 431ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsProto.MetricsEvent.ACTION_SUPPORT_SIGN_IN); 432a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang mActivity.startActivityForResult( 433a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang mSupportFeatureProvider.getAccountLoginIntent(), 434a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang 0 /* requestCode */); 435a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang break; 436a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang case android.R.id.text2: 437a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang mActivity.startActivityForResult( 438a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang mSupportFeatureProvider.getSignInHelpIntent(mActivity), 439a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang 0 /* requestCode */); 440a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang break; 441cd0915122414fc3e690480290f6527898b0459ceFan Zhang } 442a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else if (mHasInternet) { 443a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang switch (v.getId()) { 444a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang case android.R.id.text1: 445ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsLogger.action(mActivity, 446ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsProto.MetricsEvent.ACTION_SUPPORT_PHONE); 447a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang tryStartDisclaimerAndSupport(PHONE); 448a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang break; 449a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang case android.R.id.text2: 450ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsLogger.action(mActivity, 451ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang MetricsProto.MetricsEvent.ACTION_SUPPORT_CHAT); 452a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang tryStartDisclaimerAndSupport(CHAT); 453a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang break; 454cd0915122414fc3e690480290f6527898b0459ceFan Zhang } 455a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } else { 456a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang switch (v.getId()) { 4573737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang case android.R.id.text1: { 458a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final SupportPhone phone = mSupportFeatureProvider 459a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang .getSupportPhones(mSelectedCountry, true /* isTollFree */); 460a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang if (phone != null) { 4616098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang final Intent intent = phone.getDialIntent(); 4626098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang final boolean canDial = !mActivity.getPackageManager() 4636098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang .queryIntentActivities(intent, 0) 4646098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang .isEmpty(); 4656098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang if (canDial) { 4666098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang MetricsLogger.action(mActivity, 4676098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang MetricsProto.MetricsEvent.ACTION_SUPPORT_DAIL_TOLLFREE); 4686098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang mActivity.startActivity(intent); 4696098913d4b17ecee3f44bc35adfda5f24d459e87Fan Zhang } 470a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 471a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang break; 4723737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang } 4733737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang case android.R.id.text2: { 4743737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang final SupportPhone phone = mSupportFeatureProvider 4753737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang .getSupportPhones(mSelectedCountry, false /* isTollFree */); 4763737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang final SupportPhoneDialogFragment fragment = 4773737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang SupportPhoneDialogFragment.newInstance(phone); 478a9f7016acd3cb6c480a13b00ea1144ef43cd0181Fan Zhang MetricsLogger.action(mActivity, 479a9f7016acd3cb6c480a13b00ea1144ef43cd0181Fan Zhang MetricsProto.MetricsEvent.ACTION_SUPPORT_VIEW_TRAVEL_ABROAD_DIALOG); 4803737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang fragment.show(mActivity.getFragmentManager(), 4813737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang SupportPhoneDialogFragment.TAG); 482a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang break; 4833737fabda48c5fefc0eb9758e73202dd9f4ebc57Fan Zhang } 484a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 485a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 486a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 487a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang } 488a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang 489a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private final class SpinnerItemSelectListener implements AdapterView.OnItemSelectedListener { 490a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 491a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang @Override 492a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 493a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final List<String> countryCodes = mSupportFeatureProvider.getPhoneSupportCountryCodes(); 494a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final String selectedCountry = countryCodes.get(position); 495a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang if (!TextUtils.equals(selectedCountry, mSelectedCountry)) { 496a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mSelectedCountry = selectedCountry; 4975df6364d89107d923bb937e8fc7be763cf4f6d8aFan Zhang refreshEscalationCards(); 498a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 499a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 500a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 501a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang @Override 502a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang public void onNothingSelected(AdapterView<?> parent) { 503a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang // Do nothing. 504a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 505a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 506a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 507a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang /** 508a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * {@link RecyclerView.ViewHolder} for support items. 509a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang */ 510a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang static final class ViewHolder extends RecyclerView.ViewHolder { 511a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 512a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang final ImageView iconView; 513016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final TextView tileTitleView; 514016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final TextView tileSummaryView; 515a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang final TextView text1View; 516a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang final TextView text2View; 517be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang final TextView summary1View; 518be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang final TextView summary2View; 519a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 520a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang ViewHolder(View itemView) { 521a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang super(itemView); 522a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang iconView = (ImageView) itemView.findViewById(android.R.id.icon); 523016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang tileTitleView = (TextView) itemView.findViewById(R.id.tile_title); 524016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang tileSummaryView = (TextView) itemView.findViewById(R.id.tile_summary); 525a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang text1View = (TextView) itemView.findViewById(android.R.id.text1); 526a6c862caf6b62a3af06795ff743473d38e56d85dFan Zhang text2View = (TextView) itemView.findViewById(android.R.id.text2); 527be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang summary1View = (TextView) itemView.findViewById(R.id.summary1); 528be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang summary2View = (TextView) itemView.findViewById(R.id.summary2); 529a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 530a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 531a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 532a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang /** 533a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang * Data for a single support item. 534a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang */ 535a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private static class SupportData { 536a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 537a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang final Intent intent; 538ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang final int metricsEvent; 5399502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang @LayoutRes 5409502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang final int type; 5419502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang @DrawableRes 5429502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang final int icon; 5439502163f9290896c3d40eef56deee4e3dde3f492Fan Zhang @StringRes 544016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final int tileTitle; 5450bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang final CharSequence tileTitleDescription; 546016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final CharSequence tileSummary; 547016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 548be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 549be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang private SupportData(Builder builder) { 550be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang this.type = builder.mType; 551be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang this.icon = builder.mIcon; 552016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.tileTitle = builder.mTileTitle; 5530bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang this.tileTitleDescription = builder.mTileTitleDescription; 554016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.tileSummary = builder.mTileSummary; 555be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang this.intent = builder.mIntent; 556ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang this.metricsEvent = builder.mMetricsEvent; 557be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 558be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 559a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang static class Builder { 5600bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang 561016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang protected final Context mContext; 562a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang @LayoutRes 563a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang private final int mType; 564a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang @DrawableRes 565a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang private int mIcon; 566a2bd32b397a751f7e1d7257d1051b88f7a443f12Fan Zhang @StringRes 567016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private int mTileTitle; 5680bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang private CharSequence mTileTitleDescription; 569016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private CharSequence mTileSummary; 570be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang private Intent mIntent; 571ab2e0390a09bd258b49eafeaf718ab3dd1b25a9fFan Zhang private int mMetricsEvent = -1; 572be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 5730bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang Builder(Context context, @LayoutRes int type) { 5740bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang mContext = context; 575be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang mType = type; 576be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 577be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 578be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang Builder setIcon(@DrawableRes int icon) { 579be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang mIcon = icon; 580be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang return this; 581be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 582a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang 583016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang Builder setTileTitle(@StringRes int title) { 584016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang mTileTitle = title; 585016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return this; 586016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 587016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 5880bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang Builder setTileTitleDescription(@StringRes int titleDescription) { 5890bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang mTileTitleDescription = mContext.getString(titleDescription); 5900bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang return this; 5910bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang } 5920bd87d71b8f787ed352fc5ce29e3049043b2b515Fan Zhang 593016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang Builder setTileSummary(@StringRes int summary) { 594016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang mTileSummary = mContext.getString(summary); 595016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return this; 596016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 597016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 598016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang Builder setTileSummary(CharSequence summary) { 599016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang mTileSummary = summary; 600016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return this; 601016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 602016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 603016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang Builder setMetricsEvent(int metricsEvent) { 604016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang mMetricsEvent = metricsEvent; 605016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return this; 606016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 607016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 608016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang Builder setIntent(Intent intent) { 609016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang mIntent = intent; 610016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return this; 611016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 612016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 613016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang SupportData build() { 614016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return new SupportData(this); 615016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 616016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 617016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 618016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 619016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang /** 620016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang * Data model for escalation cards. 621016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang */ 622016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private static class EscalationData extends SupportData { 623016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 624016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang @StringRes 625016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final int text1; 626016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final CharSequence text2; 627016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final boolean enabled1; 628016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final boolean enabled2; 629016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final CharSequence summary1; 630016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang final CharSequence summary2; 631016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 632016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private EscalationData(Builder builder) { 633016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang super(builder); 634016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.text1 = builder.mText1; 635016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.text2 = builder.mText2; 636016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.summary1 = builder.mSummary1; 637016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.summary2 = builder.mSummary2; 638016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.enabled1 = builder.mEnabled1; 639016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this.enabled2 = builder.mEnabled2; 640016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 641016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 642016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang static class Builder extends SupportData.Builder { 643016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 644016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang @StringRes 645016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private int mText1; 646016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private CharSequence mText2; 647016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private CharSequence mSummary1; 648016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private CharSequence mSummary2; 649016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private boolean mEnabled1; 650016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private boolean mEnabled2; 651016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 652016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang protected Builder(Context context, @LayoutRes int type) { 653016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang super(context, type); 654016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 655016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 656016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang Builder(Context context) { 657016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang this(context, TYPE_ESCALATION_OPTIONS); 658016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang } 659016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang 660841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang Builder setEnabled1(boolean enabled) { 661841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang mEnabled1 = enabled; 662841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang return this; 663841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang } 664841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang 665be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang Builder setText1(@StringRes int text1) { 666be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang mText1 = text1; 667be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang return this; 668be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 669be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 6700bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang Builder setText2(@StringRes int text2) { 6710bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang mText2 = mContext.getString(text2); 6720bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang return this; 6730bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang } 6740bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang 6750bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang Builder setText2(CharSequence text2) { 6760bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang mText2 = text2; 6770bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang return this; 6780bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang } 6790bc42ab6183e5cf3c15b7bde67e12870aa58966dFan Zhang 680be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang Builder setSummary1(String summary1) { 681be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang mSummary1 = summary1; 682be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang return this; 683be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 684be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 685841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang Builder setEnabled2(boolean enabled) { 686841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang mEnabled2 = enabled; 687841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang return this; 688841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang } 689841b13ac98d6608ae842846d4b27f62f0587c50bFan Zhang 690be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang Builder setSummary2(String summary2) { 691be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang mSummary2 = summary2; 692be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang return this; 693be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 694be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang 695016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang EscalationData build() { 696016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return new EscalationData(this); 697be61a14fcd01f5d8ccc2cb1584cea48b52697ce6Fan Zhang } 698a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 699a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang } 700a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 701a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang /** 702a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang * Support data for offline mode. 703a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang */ 704016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private static final class OfflineEscalationData extends EscalationData { 705a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 706a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final List<String> countries; 707a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final SupportPhone tollFreePhone; 708a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang final SupportPhone tolledPhone; 709a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 710016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang private OfflineEscalationData(Builder builder) { 711a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang super(builder); 712a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang countries = builder.mCountries; 713a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang tollFreePhone = builder.mTollFreePhone; 714a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang tolledPhone = builder.mTolledPhone; 715a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 716a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 717016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang static final class Builder extends EscalationData.Builder { 718a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 719a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private List<String> mCountries; 720a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private SupportPhone mTollFreePhone; 721a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang private SupportPhone mTolledPhone; 722a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 723a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang Builder(Context context) { 724a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang super(context, TYPE_ESCALATION_OPTIONS_OFFLINE); 725a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 726a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 727a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang Builder setCountries(List<String> countries) { 728a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mCountries = countries; 729a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang return this; 730a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 731a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 732a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang Builder setTollFreePhone(SupportPhone phone) { 733a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mTollFreePhone = phone; 734a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang return this; 735a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 736a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 737a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang Builder setTolledPhone(SupportPhone phone) { 738a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang mTolledPhone = phone; 739a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang return this; 740a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 741a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang 742016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang OfflineEscalationData build() { 743016bd604917a1826de18fa82e3d36d54665452d5Fan Zhang return new OfflineEscalationData(this); 744a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 745a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 746a44b1efbdce7dc50d6e3576150a47bbc72bfed96Fan Zhang } 747a9fa0059b268f7090f375b481990b89fc84bbb5eFan Zhang} 748