diff --git a/res/layout/wifi_dpp_fragment_header.xml b/res/layout/wifi_dpp_fragment_header.xml index 266a3e892de..20bcd7d77c3 100644 --- a/res/layout/wifi_dpp_fragment_header.xml +++ b/res/layout/wifi_dpp_fragment_header.xml @@ -27,13 +27,13 @@ android:paddingEnd="16dp"> diff --git a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java index 8d6aa6813c5..90fb850a25d 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppAddDeviceFragment.java @@ -17,6 +17,13 @@ package com.android.settings.wifi.dpp; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ImageView; +import android.widget.ProgressBar; +import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; @@ -26,10 +33,11 @@ import com.android.settings.R; * to the Wi-Fi network. */ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment { - @Override - protected int getLayout() { - return R.layout.wifi_dpp_add_device_fragment; - } + private ProgressBar mProgressBar; + private ImageView mWifiApPictureView; + private TextView mChooseDifferentNetwork; + private Button mButtonLeft; + private Button mButtonRight; @Override public int getMetricsCategory() { @@ -37,7 +45,20 @@ public class WifiDppAddDeviceFragment extends WifiDppQrCodeBaseFragment { } @Override - public void onActivityCreated (Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); + public final View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.wifi_dpp_add_device_fragment, container, + /* attachToRoot */ false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + mProgressBar = view.findViewById(R.id.progress_bar); + mWifiApPictureView = view.findViewById(R.id.wifi_ap_picture_view); + mChooseDifferentNetwork = view.findViewById(R.id.choose_different_network); + mButtonLeft = view.findViewById(R.id.button_left); + mButtonRight = view.findViewById(R.id.button_right); } } diff --git a/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragment.java b/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragment.java index 66bc349ebdf..a3e6db3953a 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppChooseSavedWifiNetworkFragment.java @@ -17,6 +17,11 @@ package com.android.settings.wifi.dpp; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Button; +import android.widget.ListView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; @@ -26,10 +31,9 @@ import com.android.settings.R; * {@code WifiDppConfiguratorActivity} to start with this fragment to choose a saved Wi-Fi network. */ public class WifiDppChooseSavedWifiNetworkFragment extends WifiDppQrCodeBaseFragment { - @Override - protected int getLayout() { - return R.layout.wifi_dpp_choose_saved_wifi_network_fragment; - } + private ListView mSavedWifiNetworkList; + private Button mButtonLeft; + private Button mButtonRight; @Override public int getMetricsCategory() { @@ -37,7 +41,18 @@ public class WifiDppChooseSavedWifiNetworkFragment extends WifiDppQrCodeBaseFrag } @Override - public void onActivityCreated (Bundle savedInstanceState) { - super.onActivityCreated(savedInstanceState); + public final View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.wifi_dpp_choose_saved_wifi_network_fragment, container, + /* attachToRoot */ false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + mSavedWifiNetworkList = view.findViewById(R.id.saved_wifi_network_list); + mButtonLeft = view.findViewById(R.id.button_left); + mButtonRight = view.findViewById(R.id.button_right); } } diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeBaseFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeBaseFragment.java index 50e3ee520b1..4ac5850ee2e 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeBaseFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeBaseFragment.java @@ -17,25 +17,16 @@ package com.android.settings.wifi.dpp; import android.os.Bundle; -import android.view.LayoutInflater; import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; import android.widget.ImageView; -import android.widget.ListView; -import android.widget.ProgressBar; import android.widget.TextView; import com.android.settings.core.InstrumentedFragment; import com.android.settings.R; -/** - * TODO: b/120645817 should refine code to only initiate UI component in each child fragment. - */ - /** * There are below 4 fragments for Wi-Fi DPP UI flow, to reduce redundant code of UI components, - * this parent fragment instantiates all UI components and provides setting APIs for them. + * this parent fragment instantiates common UI components * * {@code WifiDppQrCodeScannerFragment} * {@code WifiDppQrCodeGeneratorFragment} @@ -43,135 +34,16 @@ import com.android.settings.R; * {@code WifiDppAddDeviceFragment} */ public abstract class WifiDppQrCodeBaseFragment extends InstrumentedFragment { - private ImageView mHeaderIcon; - private TextView mTitle; - private TextView mDescription; - - private TextView mErrorMessage; //optional, for WifiDppQrCodeScannerFragment - private ListView mSavedWifiNetworkList; //optional, for WifiDppChooseSavedWifiNetworkFragment - private ProgressBar mProgressBar; //optional, for WifiDppAddDeviceFragment - private ImageView mWifiApPictureView; //optional, for WifiDppAddDeviceFragment - private TextView mChooseDifferentNetwork;//optional, for WifiDppAddDeviceFragment - - private Button mButtonLeft; //optional, for WifiDppChooseSavedWifiNetworkFragment, - // WifiDppAddDeviceFragment - private Button mButtonRight; //optional, for WifiDppChooseSavedWifiNetworkFragment, - // WifiDppAddDeviceFragment - - abstract protected int getLayout(); + protected ImageView mHeaderIcon; + protected TextView mTitle; + protected TextView mSummary; @Override - public final void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - } + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); - @Override - public final View onCreateView(LayoutInflater inflater, ViewGroup container, - Bundle savedInstanceState) { - View view = inflater.inflate(getLayout(), container, false); - initView(view); - return view; - } - - private void initView(View view) { - mHeaderIcon = view.findViewById(R.id.header_icon); - mTitle = view.findViewById(R.id.title); - mDescription = view.findViewById(R.id.description); - mErrorMessage = view.findViewById(R.id.error_message); - - mSavedWifiNetworkList = view.findViewById(R.id.saved_wifi_network_list); - - mProgressBar = view.findViewById(R.id.progress_bar); - mWifiApPictureView = view.findViewById(R.id.wifi_ap_picture_view); - mChooseDifferentNetwork = view.findViewById(R.id.choose_different_network); - - mButtonLeft = view.findViewById(R.id.button_left); - mButtonRight = view.findViewById(R.id.button_right); - } - - protected void setHeaderIconImageResource(int resId) { - mHeaderIcon.setImageResource(resId); - } - - protected void setTitle(String title) { - mTitle.setText(title); - } - - protected void setDescription(String description) { - mDescription.setText(description); - } - - /** optional, for WifiDppQrCodeScannerFragment */ - protected void showErrorMessage(boolean show) { - if (mErrorMessage != null) { - mErrorMessage.setVisibility(show ? View.VISIBLE : View.INVISIBLE); - } - } - - /** optional, for WifiDppQrCodeScannerFragment */ - protected void setErrorMessage(String errorMessage) { - if (mErrorMessage != null) { - mErrorMessage.setText(errorMessage); - } - } - - /** - * optional, for WifiDppChooseSavedWifiNetworkFragment, - * WifiDppAddDeviceFragment - */ - protected void setLeftButtonText(String text) { - if (mButtonLeft != null) { - mButtonLeft.setText(text); - } - } - - /** - * optional, for WifiDppChooseSavedWifiNetworkFragment, - * WifiDppAddDeviceFragment - */ - protected void setRightButtonText(String text) { - if (mButtonRight != null) { - mButtonRight.setText(text); - } - } - - /** - * optional, for WifiDppChooseSavedWifiNetworkFragment, - * WifiDppAddDeviceFragment - */ - protected void hideLeftButton() { - if (mButtonLeft != null) { - mButtonLeft.setVisibility(View.INVISIBLE); - } - } - - /** - * optional, for WifiDppChooseSavedWifiNetworkFragment, - * WifiDppAddDeviceFragment - */ - protected void hideRightButton() { - if (mButtonRight != null) { - mButtonRight.setVisibility(View.INVISIBLE); - } - } - - /** - * optional, for WifiDppChooseSavedWifiNetworkFragment, - * WifiDppAddDeviceFragment - */ - protected void setLeftButtonOnClickListener(View.OnClickListener listener) { - if (mButtonLeft != null) { - mButtonLeft.setOnClickListener(listener); - } - } - - /** - * optional, for WifiDppChooseSavedWifiNetworkFragment, - * WifiDppAddDeviceFragment - */ - protected void setRightButtonOnClickListener(View.OnClickListener listener) { - if (mButtonRight != null) { - mButtonRight.setOnClickListener(listener); - } + mHeaderIcon = view.findViewById(android.R.id.icon); + mTitle = view.findViewById(android.R.id.title); + mSummary = view.findViewById(android.R.id.summary); } } diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java index 02ebffcce07..f4bbcc10b85 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeGeneratorFragment.java @@ -21,10 +21,12 @@ import android.content.Context; import android.graphics.Bitmap; import android.os.Bundle; 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.ViewGroup; import android.widget.ImageView; import com.android.internal.logging.nano.MetricsProto; @@ -43,11 +45,6 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment { private ImageView mQrCodeView; private String mQrCode; - @Override - protected int getLayout() { - return R.layout.wifi_dpp_qrcode_generator_fragment; - } - @Override public int getMetricsCategory() { return MetricsProto.MetricsEvent.SETTINGS_WIFI_DPP_CONFIGURATOR; @@ -63,25 +60,12 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment { public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - setHeaderIconImageResource(R.drawable.ic_qrcode_24dp); - WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity()) - .getWifiNetworkConfig(); - if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) { - throw new IllegalArgumentException("Invalid Wi-Fi network for configuring"); - } - setTitle(getString(R.string.wifi_dpp_share_wifi)); - setDescription(getString(R.string.wifi_dpp_scan_qr_code_with_another_device, - wifiNetworkConfig.getSsid())); - setHasOptionsMenu(true); - ActionBar actionBar = getActivity().getActionBar(); + final ActionBar actionBar = getActivity().getActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); actionBar.show(); } - - mQrCode = wifiNetworkConfig.getQrCode(); - setQrCode(); } @Override @@ -118,10 +102,31 @@ public class WifiDppQrCodeGeneratorFragment extends WifiDppQrCodeBaseFragment { } } + @Override + public final View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.wifi_dpp_qrcode_generator_fragment, container, + /* attachToRoot */ false); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + mQrCodeView = view.findViewById(R.id.qrcode_view); + + mHeaderIcon.setImageResource(R.drawable.ic_qrcode_24dp); + WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity()) + .getWifiNetworkConfig(); + if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) { + throw new IllegalStateException("Invalid Wi-Fi network for configuring"); + } + mTitle.setText(R.string.wifi_dpp_share_wifi); + mSummary.setText(getString(R.string.wifi_dpp_scan_qr_code_with_another_device, + wifiNetworkConfig.getSsid())); + + mQrCode = wifiNetworkConfig.getQrCode(); + setQrCode(); } private void setQrCode() { diff --git a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java index 4ec19a695c7..c7c1461a62c 100644 --- a/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java +++ b/src/com/android/settings/wifi/dpp/WifiDppQrCodeScannerFragment.java @@ -16,7 +16,6 @@ package com.android.settings.wifi.dpp; -import android.annotation.Nullable; import android.app.ActionBar; import android.app.Activity; import android.content.Context; @@ -29,11 +28,14 @@ import android.os.Handler; import android.os.Message; import android.text.TextUtils; import android.util.Size; +import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.TextureView; import android.view.TextureView.SurfaceTextureListener; import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; import com.android.internal.logging.nano.MetricsProto; import com.android.settings.R; @@ -67,6 +69,7 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl private QrCamera mCamera; private TextureView mTextureView; private QrDecorateView mDecorateView; + private TextView mErrorMessage; /** true if the fragment working for configurator, false enrollee*/ private final boolean mIsConfiguratorMode; @@ -77,11 +80,6 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl /** QR code data scanned by camera */ private WifiQrCode mWifiQrCode; - @Override - protected int getLayout() { - return R.layout.wifi_dpp_qrcode_scanner_fragment; - } - @Override public int getMetricsCategory() { if (mIsConfiguratorMode) { @@ -127,37 +125,11 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); - setHeaderIconImageResource(R.drawable.ic_scan_24dp); - - if (mIsConfiguratorMode) { - setTitle(getString(R.string.wifi_dpp_add_device_to_network)); - - WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity()) - .getWifiNetworkConfig(); - if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) { - throw new IllegalArgumentException("Invalid Wi-Fi network for configuring"); - } - setDescription(getString(R.string.wifi_dpp_center_qr_code, wifiNetworkConfig.getSsid())); - } else { - setTitle(getString(R.string.wifi_dpp_scan_qr_code)); - - String description; - if (TextUtils.isEmpty(mSsid)) { - description = getString(R.string.wifi_dpp_scan_qr_code_join_unknown_network, mSsid); - } else { - description = getString(R.string.wifi_dpp_scan_qr_code_join_network, mSsid); - } - setDescription(description); - } - final ActionBar actionBar = getActivity().getActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); actionBar.show(); } - - setErrorMessage(getString(R.string.wifi_dpp_could_not_detect_valid_qr_code)); - showErrorMessage(false); } @Override @@ -177,13 +149,45 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl } @Override - public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + public final View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + return inflater.inflate(R.layout.wifi_dpp_qrcode_scanner_fragment, container, + /* attachToRoot */ false); + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); mTextureView = (TextureView) view.findViewById(R.id.preview_view); mTextureView.setSurfaceTextureListener(this); mDecorateView = (QrDecorateView) view.findViewById(R.id.decorate_view); + + mHeaderIcon.setImageResource(R.drawable.ic_scan_24dp); + if (mIsConfiguratorMode) { + mTitle.setText(R.string.wifi_dpp_add_device_to_network); + + WifiNetworkConfig wifiNetworkConfig = ((WifiNetworkConfig.Retriever) getActivity()) + .getWifiNetworkConfig(); + if (!WifiNetworkConfig.isValidConfig(wifiNetworkConfig)) { + throw new IllegalStateException("Invalid Wi-Fi network for configuring"); + } + mSummary.setText(getString(R.string.wifi_dpp_center_qr_code, + wifiNetworkConfig.getSsid())); + } else { + mTitle.setText(R.string.wifi_dpp_scan_qr_code); + + String description; + if (TextUtils.isEmpty(mSsid)) { + description = getString(R.string.wifi_dpp_scan_qr_code_join_unknown_network, mSsid); + } else { + description = getString(R.string.wifi_dpp_scan_qr_code_join_network, mSsid); + } + mSummary.setText(description); + } + + mErrorMessage = view.findViewById(R.id.error_message); } @Override @@ -321,9 +325,8 @@ public class WifiDppQrCodeScannerFragment extends WifiDppQrCodeBaseFragment impl } } - @Override public void showErrorMessage(boolean show) { - super.showErrorMessage(show); + mErrorMessage.setVisibility(show ? View.VISIBLE : View.INVISIBLE); if (show) { mHandler.removeMessages(MESSAGE_HIDE_ERROR_MESSAGE);