Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 46061ed2 authored by Weng Su's avatar Weng Su
Browse files

Refine Spinner style in Edit VPN profile

- Design using SettingsSpinnerAdapter with a check icon

Bug: 404668006
Flag: EXEMPT refactor
Test: Manual testing
Change-Id: Ia7cd3ad97ca271176203b813ed2927ff9c1f3a34
parent fdc069e0
Loading
Loading
Loading
Loading
+22 −17
Original line number Diff line number Diff line
@@ -64,8 +64,9 @@
                <TextView style="@style/vpn_label"
                        android:text="@string/vpn_type"
                        android:labelFor="@+id/type"/>
                <Spinner style="@style/vpn_value"
                <Spinner
                    android:id="@+id/type"
                    style="@style/vpn_spinner"
                    android:prompt="@string/vpn_type"
                    android:entries="@array/vpn_types"/>

@@ -126,8 +127,9 @@
                    <TextView style="@style/vpn_label"
                            android:text="@string/vpn_ipsec_user_cert"
                            android:labelFor="@+id/ipsec_user_cert"/>
                    <Spinner style="@style/vpn_value"
                    <Spinner
                        android:id="@+id/ipsec_user_cert"
                        style="@style/vpn_spinner"
                        android:prompt="@string/vpn_ipsec_user_cert"/>
                </LinearLayout>

@@ -139,15 +141,17 @@
                    <TextView style="@style/vpn_label"
                            android:text="@string/vpn_ipsec_ca_cert"
                            android:labelFor="@+id/ipsec_ca_cert"/>
                    <Spinner style="@style/vpn_value"
                    <Spinner
                        android:id="@+id/ipsec_ca_cert"
                        style="@style/vpn_spinner"
                        android:prompt="@string/vpn_ipsec_ca_cert"/>

                    <TextView style="@style/vpn_label"
                            android:text="@string/vpn_ipsec_server_cert"
                            android:labelFor="@+id/ipsec_server_cert"/>
                    <Spinner style="@style/vpn_value"
                    <Spinner
                        android:id="@+id/ipsec_server_cert"
                        style="@style/vpn_spinner"
                        android:prompt="@string/vpn_ipsec_server_cert"/>
                </LinearLayout>

@@ -167,8 +171,9 @@
                          android:text="@string/proxy_settings_title"
                          android:labelFor="@+id/vpn_proxy_settings" />

                <Spinner android:id="@+id/vpn_proxy_settings"
                         style="@style/vpn_value"
                <Spinner
                    android:id="@+id/vpn_proxy_settings"
                    style="@style/vpn_spinner"
                    android:prompt="@string/proxy_settings_title"
                    android:entries="@array/vpn_proxy_settings"/>

+18 −0
Original line number Diff line number Diff line
@@ -69,6 +69,15 @@
        <item name="android:scrollbarStyle">outsideOverlay</item>
    </style>

    <style name="Dialog.Spinner" parent="@style/SettingslibSpinnerStyle.Expressive">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:minHeight">40dp</item>
        <item name="android:layout_marginTop">4dp</item>
        <item name="android:layout_marginBottom">4dp</item>
        <item name="android:dropDownVerticalOffset">@dimen/min_tap_target_size</item>
    </style>

    <style name="Theme.Network" parent="@style/Theme.Material3.DynamicColors.DayNight">
        <item name="textInputStyle">@style/Widget.Network.TextInputLayout</item>
    </style>
@@ -245,6 +254,10 @@
    <style name="vpn_label">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:layout_marginStart">8dp</item>
        <item name="android:minHeight">@dimen/min_tap_target_size</item>
        <item name="android:paddingBottom">8dp</item>
        <item name="android:gravity">bottom</item>
        <item name="android:textAppearance">?android:attr/textAppearanceSmall</item>
    </style>

@@ -258,6 +271,11 @@
        <item name="android:textColorHint">?android:attr/textColorSecondary</item>
    </style>

    <style name="vpn_spinner" parent="@style/Dialog.Spinner">
        <item name="android:singleLine">true</item>
        <item name="android:textAlignment">viewStart</item>
    </style>

    <style name="vpn_input_label" parent="vpn_label">
        <item name="android:paddingBottom">8dp</item>
    </style>
+15 −9
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.Spinner;
@@ -40,6 +39,7 @@ import com.android.internal.net.VpnProfile;
import com.android.net.module.util.ProxyUtils;
import com.android.settings.R;
import com.android.settings.utils.AndroidKeystoreAliasLoader;
import com.android.settings.widget.EnhancedSettingsSpinnerAdapter;
import com.android.settings.wifi.utils.TextInputGroup;

import java.util.Collection;
@@ -117,6 +117,7 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
        mPasswordInput = new TextInputGroup(mView, R.id.password_layout, R.id.password,
                R.string.vpn_field_required);
        mProxySettings = (Spinner) mView.findViewById(R.id.vpn_proxy_settings);
        loadProxySettings(mProxySettings);
        mProxyHost = (TextView) mView.findViewById(R.id.vpn_proxy_host);
        mProxyPort = (TextView) mView.findViewById(R.id.vpn_proxy_port);
        mIpsecIdentifierInput = new TextInputGroup(mView, R.id.ipsec_identifier_layout,
@@ -149,8 +150,8 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
        mIpsecSecretInput.setText(mProfile.ipsecSecret);
        final AndroidKeystoreAliasLoader androidKeystoreAliasLoader =
                new AndroidKeystoreAliasLoader(null);
        loadCertificates(mIpsecUserCert, androidKeystoreAliasLoader.getKeyCertAliases(), 0,
                mProfile.ipsecUserCert);
        loadCertificates(mIpsecUserCert, androidKeystoreAliasLoader.getKeyCertAliases(),
                R.string.vpn_not_used, mProfile.ipsecUserCert);
        loadCertificates(mIpsecCaCert, androidKeystoreAliasLoader.getCaCertAliases(),
                R.string.vpn_no_ca_cert, mProfile.ipsecCaCert);
        loadCertificates(mIpsecServerCert, androidKeystoreAliasLoader.getKeyCertAliases(),
@@ -450,9 +451,8 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
            mProfile.type = VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS;
        }

        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                getContext(), android.R.layout.simple_spinner_item, types);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        EnhancedSettingsSpinnerAdapter<String> adapter =
                new EnhancedSettingsSpinnerAdapter<>(getContext(), types);
        typeSpinner.setAdapter(adapter);
    }

@@ -473,9 +473,8 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
            }
        }

        ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                context, android.R.layout.simple_spinner_item, myChoices);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        EnhancedSettingsSpinnerAdapter<String> adapter =
                new EnhancedSettingsSpinnerAdapter<>(context, myChoices);
        spinner.setAdapter(adapter);

        for (int i = 1; i < myChoices.length; ++i) {
@@ -486,6 +485,13 @@ class ConfigDialog extends AlertDialog implements TextWatcher,
        }
    }

    private void loadProxySettings(Spinner spinner) {
        String[] types = getContext().getResources().getStringArray(R.array.vpn_proxy_settings);
        EnhancedSettingsSpinnerAdapter<String> adapter =
                new EnhancedSettingsSpinnerAdapter<>(getContext(), types);
        spinner.setAdapter(adapter);
    }

    private void setUsernamePasswordVisibility(int type) {
        mView.findViewById(R.id.userpass).setVisibility(
                requiresUsernamePassword(type) ? View.VISIBLE : View.GONE);