package com.xiaomi.xms.sales.xmsf.account.ui; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.TextUtils; import android.text.style.TextAppearanceSpan; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.ArrayAdapter; import android.widget.AutoCompleteTextView; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.TextView.OnEditorActionListener; import com.xiaomi.xms.sales.R; import com.xiaomi.xms.sales.util.Constants; import com.xiaomi.xms.sales.util.Utils; public class LoginInputFragment extends Fragment implements View.OnClickListener, LoginFailureFragment.GetUserInputInterface { private static final String TAG = "LoginInputFragment"; private AutoCompleteTextView mAccountNameView; private EditText mAccountPwdView; private Button mButtonLogin; private TextView mForgetPwdView; private TextView mRegisterAccountView; private OnLoginInterface mOnLoginInterface; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.micloud_login, container, false); mAccountNameView = (AutoCompleteTextView) v.findViewById(R.id.et_account_name); mAccountPwdView = (EditText) v.findViewById(R.id.et_account_password); mButtonLogin = (Button) v.findViewById(R.id.btn_login); mForgetPwdView = (TextView) v.findViewById(R.id.tv_forget_pwd); mRegisterAccountView = (TextView) v.findViewById(R.id.tv_reg_new); mAccountPwdView.setOnEditorActionListener(new OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_DONE) { startLogin(); return true; } return false; } }); mButtonLogin.setOnClickListener(this); mForgetPwdView.setOnClickListener(this); mRegisterAccountView.setOnClickListener(this); String userNames = Utils.Preference.getStringPref(getActivity(), Constants.Account.PREF_USER_NAMES, ""); if (!TextUtils.isEmpty(userNames)) { ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), R.layout.login_username_list_item, userNames.split(Constants.Account.USER_NAME_SEPARATOR)); mAccountNameView.setThreshold(1); mAccountNameView.setAdapter(adapter); } return v; } @Override public void onResume() { super.onResume(); getActivity().getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE | WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); if (TextUtils.isEmpty(mAccountNameView.getText())) { mAccountNameView.requestFocus(); } else { mAccountPwdView.requestFocus(); } } public void setOnLoginInterface(OnLoginInterface onLoginInterface) { mOnLoginInterface = onLoginInterface; } private SpannableStringBuilder getErrorSpanString(int resId) { String err = getActivity().getString(resId); TextAppearanceSpan highlightTextAppearanceSpan = new TextAppearanceSpan( getActivity(), R.style.TextAppearance_Notice_Normal); SpannableStringBuilder builder = new SpannableStringBuilder(err); builder.setSpan(highlightTextAppearanceSpan, builder.length() - err.length(), builder.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); return builder; } @Override public void onClick(View v) { if (v == mButtonLogin) { boolean hasError = false; String username = mAccountNameView.getText().toString(); String pwd = mAccountPwdView.getText().toString(); if (TextUtils.isEmpty(username)) { hasError = true; mAccountNameView .setError(getErrorSpanString(R.string.micloud_error_empty_username)); } if (TextUtils.isEmpty(pwd)) { hasError = true; mAccountPwdView .setError(getErrorSpanString(R.string.micloud_error_empty_pwd)); } if (!hasError) { Utils.SoftInput.hide(getActivity(), mAccountNameView.getWindowToken()); startLogin(); } } else if (v == mForgetPwdView) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(Constants.Account.URL_PASSWORD_RECOVERY)); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); getActivity().startActivity(intent); } else if (v == mRegisterAccountView) { Intent intent = new Intent(getActivity(), RegisterAccountActivity.class); startActivityForResult(intent, Constants.RequestCode.CODE_REQUEST_SIGUP); } } @Override public void onPause() { super.onPause(); Utils.SoftInput.hide(getActivity(), mAccountNameView.getWindowToken()); Utils.SoftInput.hide(getActivity(), mAccountPwdView.getWindowToken()); } private void startLogin() { if (mOnLoginInterface != null) { mOnLoginInterface .onStartLogin(mAccountNameView.getText().toString(), mAccountPwdView.getText().toString()); } } public static interface OnLoginInterface { void onStartLogin(String userName, String pwd); } @Override public String getUserName() { return mAccountNameView.getText().toString(); } @Override public String getUserPwd() { return mAccountPwdView.getText().toString(); } }