package com.gertherb.login; import android.content.Context; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.LinearLayout; import android.widget.TextView; import com.gertherb.R; import com.novoda.notils.caster.Views; import com.novoda.notils.meta.AndroidUtils; import rx.Observable; import rx.android.observables.ViewObservable; import rx.functions.Func1; public class LoginView extends LinearLayout { private EditText username; private EditText password; private Button login; public LoginView(Context context, AttributeSet attrs) { super(context, attrs); inflate(); } public LoginView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); inflate(); } private void inflate() { inflate(getContext(), R.layout.view_login, this); } @Override protected void onFinishInflate() { super.onFinishInflate(); username = Views.findById(this, R.id.login_edit_username); password = Views.findById(this, R.id.login_edit_password); login = Views.findById(this, R.id.login_button); password.setOnEditorActionListener(new TextView.OnEditorActionListener() { @Override public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { login.performClick(); return true; } }); } public Observable<UserCredentials> newLoginObservable() { return ViewObservable.clicks(login, false).map(new Func1<View, UserCredentials>() { @Override public UserCredentials call(View view) { AndroidUtils.requestHideKeyboard(getContext(), view); return new UserCredentials(username.getText().toString(), password.getText().toString()); } }); } }