/* Swisscom Safe Connect Copyright (C) 2014 Swisscom This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.swisscom.safeconnect.view; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.util.AttributeSet; import android.view.View; import android.view.animation.AnimationUtils; import android.widget.EditText; import android.widget.ImageView; import android.widget.RelativeLayout; import com.swisscom.safeconnect.R; /** * Created by vadim on 25.09.14. */ public class PipeEditTextWithStatus extends RelativeLayout { private EditText txtField; private ImageView imgStatus; public PipeEditTextWithStatus(Context context, AttributeSet attrs) { super(context, attrs); LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); txtField = new PipeEditText(context, attrs); txtField.setId(0); txtField.setPadding(4, 0, 4, 0); txtField.setLayoutParams(params); txtField.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { imgStatus.setVisibility(View.GONE); } @Override public void afterTextChanged(Editable s) { } }); addView(txtField); params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.CENTER_VERTICAL, RelativeLayout.TRUE); params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, RelativeLayout.TRUE); params.setMargins(0, 0, (int) (getContext().getResources().getDisplayMetrics().density*10), 0); imgStatus = new ImageView(context); imgStatus.setLayoutParams(params); imgStatus.setVisibility(View.GONE); addView(imgStatus); } public CharSequence getText() { return txtField.getText(); } public void showErrorStatus() { imgStatus.clearAnimation(); imgStatus.setImageResource(R.drawable.ic_signup_error); imgStatus.setVisibility(View.VISIBLE); txtField.setEnabled(true); } public void showOkStatus() { imgStatus.clearAnimation(); imgStatus.setImageResource(R.drawable.ic_signup_validation); imgStatus.setVisibility(View.VISIBLE); txtField.setEnabled(true); } public void showWaitingIndicator() { imgStatus.setImageResource(R.drawable.ic_progress_spinner); imgStatus.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.rotate)); imgStatus.setVisibility(View.VISIBLE); txtField.setEnabled(false); } public void resetStatus() { imgStatus.clearAnimation(); imgStatus.setVisibility(View.GONE); txtField.setEnabled(true); } }