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

Commit 25d5b6cf authored by Tetiana Meronyk's avatar Tetiana Meronyk
Browse files

Update dialog to edit user info

This CL includes replacing AlertDialog used in EditUserInfoController class
with dialog from CustomDialogHelper class that has an updated layout.
Tests are updated to comply with new layout of the dialog.
Minor changes made to code to better work with this update.

Bug: 280568195
Test: atest EditUserInfoController
Change-Id: Ic93887eebf85757e50b4ccdcf2ba24f338763ae8
parent 9ce13dd2
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -41,7 +41,6 @@
            android:id="@+id/dialog_with_icon_message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:gravity="center"
            style="@style/TextAppearanceSmall"/>

+39 −53
Original line number Diff line number Diff line
@@ -14,26 +14,13 @@
     limitations under the License.
-->

<ScrollView
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/user_info_editor"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/user_info_scroll"
    android:padding="16dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
    android:baselineAligned="false"
    android:orientation="vertical">
        <TextView
            android:id="@+id/user_info_title"
            android:gravity="center"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/EditUserDialogTitle"
            android:text="@string/user_info_settings_title"
            android:textDirection="locale"/>
    <FrameLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
@@ -71,5 +58,4 @@

</LinearLayout>

</ScrollView>
+3 −4
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ public class CreateUserDialogController {
    private static final String KEY_IS_ADMIN = "admin_status";
    private static final String KEY_ADD_USER_LONG_MESSAGE_DISPLAYED =
            "key_add_user_long_message_displayed";
    public static final int MESSAGE_PADDING = 10;

    @Retention(RetentionPolicy.SOURCE)
    @IntDef({EXIT_DIALOG, INITIAL_DIALOG, GRANT_ADMIN_DIALOG,
@@ -191,6 +192,7 @@ public class CreateUserDialogController {
            cancelCallback.run();
            clear();
        });
        mCustomDialogHelper.setMessagePadding(MESSAGE_PADDING);
        mUserCreationDialog.setCanceledOnTouchOutside(true);
        return mUserCreationDialog;
    }
@@ -212,7 +214,6 @@ public class CreateUserDialogController {
            }
            updateLayout();
        });
        return;
    }

    private void updateLayout() {
@@ -234,7 +235,6 @@ public class CreateUserDialogController {
                }
                Drawable icon = mActivity.getDrawable(R.drawable.ic_person_add);
                mCustomDialogHelper.setVisibility(mCustomDialogHelper.ICON, true)
                        .setVisibility(mCustomDialogHelper.TITLE, true)
                        .setVisibility(mCustomDialogHelper.MESSAGE, true)
                        .setIcon(icon)
                        .setButtonEnabled(true)
@@ -248,7 +248,6 @@ public class CreateUserDialogController {
                mGrantAdminView.setVisibility(View.VISIBLE);
                mCustomDialogHelper
                        .setVisibility(mCustomDialogHelper.ICON, true)
                        .setVisibility(mCustomDialogHelper.TITLE, true)
                        .setVisibility(mCustomDialogHelper.MESSAGE, true)
                        .setIcon(mActivity.getDrawable(R.drawable.ic_admin_panel_settings))
                        .setTitle(R.string.user_grant_admin_title)
@@ -262,8 +261,8 @@ public class CreateUserDialogController {
            case EDIT_NAME_DIALOG:
                mCustomDialogHelper
                        .setVisibility(mCustomDialogHelper.ICON, false)
                        .setVisibility(mCustomDialogHelper.TITLE, false)
                        .setVisibility(mCustomDialogHelper.MESSAGE, false)
                        .setTitle(R.string.user_info_settings_title)
                        .setNegativeButtonText(R.string.back)
                        .setPositiveButtonText(R.string.done);
                mEditUserInfoView.setVisibility(View.VISIBLE);
+21 −20
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.settingslib.users;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
@@ -31,7 +30,6 @@ import android.view.View;
import android.view.WindowManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ScrollView;

import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting;
@@ -41,6 +39,7 @@ import com.android.settingslib.R;
import com.android.settingslib.RestrictedLockUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.settingslib.utils.CustomDialogHelper;

import java.io.File;
import java.util.function.BiConsumer;
@@ -128,7 +127,7 @@ public class EditUserInfoController {
     *                        codes to take photo/choose photo/crop photo.
     */
    public Dialog createDialog(Activity activity, ActivityStarter activityStarter,
            @Nullable Drawable oldUserIcon, String defaultUserName, String title,
            @Nullable Drawable oldUserIcon, String defaultUserName,
            BiConsumer<String, Drawable> successCallback, Runnable cancelCallback) {
        LayoutInflater inflater = LayoutInflater.from(activity);
        View content = inflater.inflate(R.layout.edit_user_info_dialog_content, null);
@@ -160,10 +159,8 @@ public class EditUserInfoController {
                        userPhotoView);
            }
        }
        ScrollView scrollView = content.findViewById(R.id.user_info_scroll);
        scrollView.setClipToOutline(true);
        mEditUserInfoDialog = buildDialog(activity, content, userNameView, oldUserIcon,
                defaultUserName, title, successCallback, cancelCallback);
                defaultUserName, successCallback, cancelCallback);

        // Make sure the IME is up.
        mEditUserInfoDialog.getWindow()
@@ -181,12 +178,13 @@ public class EditUserInfoController {
    }

    private Dialog buildDialog(Activity activity, View content, EditText userNameView,
            @Nullable Drawable oldUserIcon, String defaultUserName, String title,
            @Nullable Drawable oldUserIcon, String defaultUserName,
            BiConsumer<String, Drawable> successCallback, Runnable cancelCallback) {
        return new AlertDialog.Builder(activity)
                .setView(content)
                .setCancelable(true)
                .setPositiveButton(android.R.string.ok, (dialog, which) -> {
        CustomDialogHelper dialogHelper = new CustomDialogHelper(activity);
        dialogHelper
                .setTitle(R.string.user_info_settings_title)
                .addCustomView(content)
                .setPositiveButton(android.R.string.ok, view -> {
                    Drawable newUserIcon = mEditUserPhotoController != null
                            ? mEditUserPhotoController.getNewUserPhotoDrawable()
                            : null;
@@ -201,20 +199,23 @@ public class EditUserInfoController {
                    if (successCallback != null) {
                        successCallback.accept(userName, userIcon);
                    }
                    dialogHelper.getDialog().dismiss();
                })
                .setNegativeButton(android.R.string.cancel, (dialog, which) -> {
                .setBackButton(android.R.string.cancel, view -> {
                    clear();
                    if (cancelCallback != null) {
                        cancelCallback.run();
                    }
                })
                .setOnCancelListener(dialog -> {
                    dialogHelper.getDialog().dismiss();
                });
        dialogHelper.getDialog().setOnCancelListener(dialog -> {
            clear();
            if (cancelCallback != null) {
                cancelCallback.run();
            }
                })
                .create();
            dialogHelper.getDialog().dismiss();
        });
        return dialogHelper.getDialog();
    }

    @VisibleForTesting
+8 −0
Original line number Diff line number Diff line
@@ -192,6 +192,14 @@ public class CustomDialogHelper {
        return this;
    }

    /**
     * Sets message padding of the dialog.
     */
    public CustomDialogHelper setMessagePadding(int dp) {
        mDialogMessage.setPadding(dp, dp, dp, dp);
        return this;
    }

    /**
     * Sets icon of the dialog.
     */
Loading