OSDN Git Service

Merge "Fix overlapping problem on wifi detail screen" into qt-dev
[android-x86/packages-apps-Settings.git] / src / com / android / settings / wifi / details / WifiDetailPreferenceController.java
index eaf3678..5e49b2e 100644 (file)
@@ -54,7 +54,6 @@ import android.widget.Toast;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.core.text.BidiFormatter;
-import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
 import androidx.preference.PreferenceFragmentCompat;
@@ -151,7 +150,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
 
     private AccessPoint mAccessPoint;
     private final ConnectivityManager mConnectivityManager;
-    private final Fragment mFragment;
+    private final PreferenceFragmentCompat mFragment;
     private final Handler mHandler;
     private LinkProperties mLinkProperties;
     private Network mNetwork;
@@ -296,7 +295,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
             AccessPoint accessPoint,
             ConnectivityManager connectivityManager,
             Context context,
-            Fragment fragment,
+            PreferenceFragmentCompat fragment,
             Handler handler,
             Lifecycle lifecycle,
             WifiManager wifiManager,
@@ -311,7 +310,7 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
             AccessPoint accessPoint,
             ConnectivityManager connectivityManager,
             Context context,
-            Fragment fragment,
+            PreferenceFragmentCompat fragment,
             Handler handler,
             Lifecycle lifecycle,
             WifiManager wifiManager,
@@ -441,7 +440,10 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
         if (usingDataUsageHeader(mContext)) {
             mSummaryHeaderController.updateState(mDataUsageSummaryPref);
         } else {
-            mEntityHeaderController.setSummary(mAccessPoint.getSettingsSummary())
+            mEntityHeaderController
+                    .setSummary(
+                            mAccessPoint.getSettingsSummary(true /*convertSavedAsDisconnected*/))
+                    .setRecyclerView(mFragment.getListView(), mLifecycle)
                     .done(mFragment.getActivity(), true /* rebind */);
         }
     }
@@ -885,13 +887,19 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
     /**
      * Show QR code to share the network represented by this preference.
      */
-    public void launchWifiDppConfiguratorActivity() {
+    private void launchWifiDppConfiguratorActivity() {
         final Intent intent = WifiDppUtils.getConfiguratorQrCodeGeneratorIntentOrNull(mContext,
                 mWifiManager, mAccessPoint);
 
         if (intent == null) {
             Log.e(TAG, "Launch Wi-Fi DPP QR code generator with a wrong Wi-Fi network!");
         } else {
+            mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
+                    SettingsEnums.ACTION_SETTINGS_SHARE_WIFI_QR_CODE,
+                    SettingsEnums.SETTINGS_WIFI_DPP_CONFIGURATOR,
+                    /* key */ null,
+                    /* value */ Integer.MIN_VALUE);
+
             mContext.startActivity(intent);
         }
     }
@@ -1103,6 +1111,10 @@ public class WifiDetailPreferenceController extends AbstractPreferenceController
             }
             @Override
             public void onFinish() {
+                if (mFragment == null || mFragment.getActivity() == null) {
+                    Log.d(TAG, "Ignore timeout since activity not exist!");
+                    return;
+                }
                 Log.e(TAG, "Timeout for state:" + mConnectingState);
                 if (mConnectingState == STATE_ENABLE_WIFI) {
                     updateConnectingState(STATE_ENABLE_WIFI_FAILED);