/*
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);
}
}