OwnerInfoSettings.java revision 3bcd76ce63c77b229e2d25a0191ccb568824f5c4
1edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller/*
2edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * Copyright (C) 2010 The Android Open Source Project
3edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller *
4edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * Licensed under the Apache License, Version 2.0 (the "License");
5edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * you may not use this file except in compliance with the License.
6edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * You may obtain a copy of the License at
7edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller *
8edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller *      http://www.apache.org/licenses/LICENSE-2.0
9edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller *
10edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * Unless required by applicable law or agreed to in writing, software
11edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * distributed under the License is distributed on an "AS IS" BASIS,
12edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * See the License for the specific language governing permissions and
14edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller * limitations under the License.
15edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller */
16edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
17edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Millerpackage com.android.settings;
18edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
193bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.app.AlertDialog;
203bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.app.Dialog;
213bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.app.DialogFragment;
22edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Millerimport android.app.Fragment;
233bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.content.DialogInterface;
243bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.content.DialogInterface.OnClickListener;
25edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Millerimport android.os.Bundle;
268666b9e170c23a9595d611a49b7c8262e357ced1Amith Yamasaniimport android.os.UserHandle;
273bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.text.Editable;
28d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasaniimport android.text.TextUtils;
293bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.text.TextWatcher;
30edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Millerimport android.view.LayoutInflater;
31edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Millerimport android.view.View;
32edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Millerimport android.widget.EditText;
333bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkimport android.widget.TextView;
34edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
3599b50ae5844b847ff60350ecb9266f569dbbefdfJim Millerimport com.android.internal.widget.LockPatternUtils;
3699b50ae5844b847ff60350ecb9266f569dbbefdfJim Miller
373bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monkpublic class OwnerInfoSettings extends DialogFragment implements OnClickListener {
38d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani
393bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    private static final String TAG_OWNER_INFO = "ownerInfo";
403bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk
413bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    private static final int MAX_CHARS = 100;
42d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani
43edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller    private View mView;
4499b50ae5844b847ff60350ecb9266f569dbbefdfJim Miller    private int mUserId;
4599b50ae5844b847ff60350ecb9266f569dbbefdfJim Miller    private LockPatternUtils mLockPatternUtils;
46d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani    private EditText mOwnerInfo;
473bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    private TextView mOwnerInfoStatus;
48d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani
49d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani    @Override
50d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani    public void onCreate(Bundle savedInstanceState) {
51d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani        super.onCreate(savedInstanceState);
523bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        mUserId = UserHandle.myUserId();
533bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        mLockPatternUtils = new LockPatternUtils(getActivity());
54d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani    }
55edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
56edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller    @Override
573bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    public Dialog onCreateDialog(Bundle savedInstanceState) {
583bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        mView = LayoutInflater.from(getActivity()).inflate(R.layout.ownerinfo, null);
590592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio        initView();
603bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        return new AlertDialog.Builder(getActivity())
613bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                .setTitle(R.string.owner_info_settings_title)
623bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                .setView(mView)
633bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                .setPositiveButton(R.string.save, this)
643bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                .setNegativeButton(R.string.cancel, this)
653bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                .show();
66edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller    }
67edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
680592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio    private void initView() {
690592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio        String info = mLockPatternUtils.getOwnerInfo(mUserId);
700592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio
710592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio        mOwnerInfo = (EditText) mView.findViewById(R.id.owner_info_edit_text);
720592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio        if (!TextUtils.isEmpty(info)) {
730592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio            mOwnerInfo.setText(info);
740592a21fd8d95b2e00fbd93419df790856fc74c1Fabrice Di Meglio        }
753bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        mOwnerInfoStatus = (TextView) mView.findViewById(R.id.owner_info_status);
763bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        updateOwnerInfoStatus();
77edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
783bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        mOwnerInfo.addTextChangedListener(new TextWatcher() {
793bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            @Override
803bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            public void onTextChanged(CharSequence s, int start, int before, int count) {
813bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            }
823bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk
833bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            @Override
843bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
853bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            }
863bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk
873bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            @Override
883bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            public void afterTextChanged(Editable s) {
893bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                updateOwnerInfoStatus();
903bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            }
913bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        });
928a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren    }
938a963babe2e36b7a41f77b8d2598c97658196e58Chris Wren
943bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    private void updateOwnerInfoStatus() {
953bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        String status = getString(R.string.owner_info_settings_status,
963bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                mOwnerInfo.getText().toString().length(), MAX_CHARS);
973bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        mOwnerInfoStatus.setText(status);
98edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller    }
99edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller
1003bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    @Override
1013bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    public void onClick(DialogInterface dialog, int which) {
1023bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        if (which == AlertDialog.BUTTON_POSITIVE) {
1033bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            String info = mOwnerInfo.getText().toString();
1043bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            mLockPatternUtils.setOwnerInfoEnabled(!TextUtils.isEmpty(info));
1053bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            mLockPatternUtils.setOwnerInfo(info, mUserId);
1063bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk
1073bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk            if (getTargetFragment() instanceof SecuritySettings) {
1083bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk                ((SecuritySettings) getTargetFragment()).updateOwnerInfo();
109d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani            }
110d4abdd27adac36e7243bcaae37a7a2c69ac73db7Amith Yamasani        }
111edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller    }
1123bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk
1133bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    public static void show(Fragment parent) {
1143bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        if (!parent.isAdded()) return;
1153bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk
1163bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        final OwnerInfoSettings dialog = new OwnerInfoSettings();
1173bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        dialog.setTargetFragment(parent, 0);
1183bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk        dialog.show(parent.getFragmentManager(), TAG_OWNER_INFO);
1193bcd76ce63c77b229e2d25a0191ccb568824f5c4Jason Monk    }
120edfaaeaed7e7329620b8e9d62a62aa41f09ad787Jim Miller}
121