package com.iwedia.gui.components;
import android.content.Context;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;
import android.view.KeyEvent;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import com.iwedia.gui.MainActivity;
import com.iwedia.gui.mainmenu.MainMenuContent;
/**
* Our EditText that has theme change implemented
*
* @author Branimir Pavlovic
*/
public class A4TVEditText extends EditText {
private Context ctx;
private int lastEnteredKey = 0;
public static final int INPUT_TYPE_NUMBER_PASSWORD = 18;
/**
* Default constructor, it would create default system button it should not
* be used since it is not possible to reach and set any theme attributes
* from here
*
* @param context
*/
public A4TVEditText(Context context) {
super(context);
ctx = context;
setTag(MainMenuContent.TAGA4TVEditText);
initEditText();
setOnKeyListener(new EditKeyListener());
addTextChangedListener(new TextWatcherEditText());
}
/**
* This constructor is to be used
*
* @param context
* @param attrs
*/
public A4TVEditText(Context context, AttributeSet attrs) {
super(context, attrs);
ctx = context;
setTag(MainMenuContent.TAGA4TVEditText);
initEditText();
setOnKeyListener(new EditKeyListener());
addTextChangedListener(new TextWatcherEditText());
}
// Virtual keyboard crash fix
private void initEditText() {
InputMethodManager mgr = (InputMethodManager) ctx
.getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(this.getWindowToken(), 0);
}
private class EditKeyListener implements OnKeyListener {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
lastEnteredKey = keyCode;
if (event.getAction() == KeyEvent.ACTION_DOWN) {
if (keyCode == KeyEvent.KEYCODE_CLEAR
|| keyCode == KeyEvent.KEYCODE_FUNCTION
|| keyCode == KeyEvent.KEYCODE_F10) {
v.onKeyDown(KeyEvent.KEYCODE_DEL, new KeyEvent(0, 0));
return true;
}
}
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER
|| keyCode == KeyEvent.KEYCODE_ENTER) {
return true;
}
return false;
}
}
@Override
public boolean onCheckIsTextEditor() {
return false;
}
private class TextWatcherEditText implements TextWatcher {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
int inputType = getInputType();
if (inputType == INPUT_TYPE_NUMBER_PASSWORD) {
if (lastEnteredKey == KeyEvent.KEYCODE_0) {
if (after < count) {
setText(s);
setSelection(getText().length());
}
}
}
}
@Override
public void afterTextChanged(Editable s) {
}
}
public int getLastEnteredKey() {
return lastEnteredKey;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
MainActivity.activity.getScreenSaverDialog().updateScreensaverTimer();
return super.onKeyDown(keyCode, event);
}
}