X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/blobdiff_plain/390949b8323633b26d56b3a837e83941cbc24b4b..5f61cb15552eb2fda01716078a9191b88cebf764:/src/eu/alefzero/owncloud/widgets/ActionEditText.java diff --git a/src/eu/alefzero/owncloud/widgets/ActionEditText.java b/src/eu/alefzero/owncloud/widgets/ActionEditText.java index a17c59e3..4b11b6c4 100644 --- a/src/eu/alefzero/owncloud/widgets/ActionEditText.java +++ b/src/eu/alefzero/owncloud/widgets/ActionEditText.java @@ -15,103 +15,113 @@ import android.view.MotionEvent; import android.widget.EditText; public class ActionEditText extends EditText { - private String s; - private String optionOneString; - private int optionOneColor; - private String optionTwoString; - private int optionTwoColor; - private Rect mTextBounds, mButtonRect; - - private String badgeClickCallback; - private Rect btn_rect; - - public ActionEditText(Context context, AttributeSet attrs) { - super(context, attrs); - getAttrs(attrs); - s = optionOneString; - mTextBounds = new Rect(); - mButtonRect = new Rect(); - } - - public ActionEditText(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - getAttrs(attrs); - s = optionOneString; - mTextBounds = new Rect(); - mButtonRect = new Rect(); - } - - @Override - protected void onDraw(Canvas canvas) { - super.onDraw(canvas); - - Paint p = getPaint(); - - p.getTextBounds(s, 0, s.length(), mTextBounds); - - getDrawingRect(mButtonRect); - mButtonRect.top += 10; - mButtonRect.bottom -= 10; - mButtonRect.left = (int)(getWidth() - mTextBounds.width() - 18); - mButtonRect.right = getWidth() - 10; - btn_rect = mButtonRect; - - if (s.equals(optionOneString)) - p.setColor(optionOneColor); - else - p.setColor(optionTwoColor); - canvas.drawRect(mButtonRect, p); - p.setColor(Color.GRAY); - - canvas.drawText(s, mButtonRect.left + 3, mButtonRect.bottom - (mTextBounds.height()/2), p); - - invalidate(); - } - - @Override - public boolean onTouchEvent(MotionEvent event) { - int touchX = (int) event.getX(); - int touchY = (int) event.getY(); - boolean r = super.onTouchEvent(event); - if (event.getAction() == MotionEvent.ACTION_UP) { - if (btn_rect.contains(touchX, touchY)) { - if (s.equals(optionTwoString)) s = optionOneString; - else s = optionTwoString; - if (badgeClickCallback != null) { - @SuppressWarnings("rawtypes") - Class[] paramtypes = new Class[2]; - paramtypes[0] = android.view.View.class; - paramtypes[1] = String.class; - Method method; - try { - - method = getContext().getClass().getMethod(badgeClickCallback, paramtypes); - method.invoke(getContext(), this, s); - - } catch (NoSuchMethodException e) { - e.printStackTrace(); - } catch (IllegalArgumentException e) { - e.printStackTrace(); - } catch (IllegalAccessException e) { - e.printStackTrace(); - } catch (InvocationTargetException e) { - e.printStackTrace(); - } - - invalidate(); + private String s; + private String optionOneString; + private int optionOneColor; + private String optionTwoString; + private int optionTwoColor; + private Rect mTextBounds, mButtonRect; + + private String badgeClickCallback; + private Rect btn_rect; + + public ActionEditText(Context context, AttributeSet attrs) { + super(context, attrs); + getAttrs(attrs); + s = optionOneString; + mTextBounds = new Rect(); + mButtonRect = new Rect(); + } + + public ActionEditText(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + getAttrs(attrs); + s = optionOneString; + mTextBounds = new Rect(); + mButtonRect = new Rect(); + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + + Paint p = getPaint(); + + p.getTextBounds(s, 0, s.length(), mTextBounds); + + getDrawingRect(mButtonRect); + mButtonRect.top += 10; + mButtonRect.bottom -= 10; + mButtonRect.left = (int) (getWidth() - mTextBounds.width() - 18); + mButtonRect.right = getWidth() - 10; + btn_rect = mButtonRect; + + if (s.equals(optionOneString)) + p.setColor(optionOneColor); + else + p.setColor(optionTwoColor); + canvas.drawRect(mButtonRect, p); + p.setColor(Color.GRAY); + + canvas.drawText(s, mButtonRect.left + 3, mButtonRect.bottom + - (mTextBounds.height() / 2), p); + + invalidate(); + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + int touchX = (int) event.getX(); + int touchY = (int) event.getY(); + boolean r = super.onTouchEvent(event); + if (event.getAction() == MotionEvent.ACTION_UP) { + if (btn_rect.contains(touchX, touchY)) { + if (s.equals(optionTwoString)) + s = optionOneString; + else + s = optionTwoString; + if (badgeClickCallback != null) { + @SuppressWarnings("rawtypes") + Class[] paramtypes = new Class[2]; + paramtypes[0] = android.view.View.class; + paramtypes[1] = String.class; + Method method; + try { + + method = getContext().getClass().getMethod( + badgeClickCallback, paramtypes); + method.invoke(getContext(), this, s); + + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } catch (InvocationTargetException e) { + e.printStackTrace(); + } + + invalidate(); + } + } } - } + return r; } - return r; - } - - private void getAttrs(AttributeSet attr) { - TypedArray a = getContext().obtainStyledAttributes(attr, R.styleable.ActionEditText); - optionOneString = a.getString(R.styleable.ActionEditText_optionOneString); - optionTwoString = a.getString(R.styleable.ActionEditText_optionTwoString); - optionOneColor = a.getColor(R.styleable.ActionEditText_optionOneColor, 0x00ff00); - optionTwoColor = a.getColor(R.styleable.ActionEditText_optionTwoColor, 0xff0000); - badgeClickCallback = a.getString(R.styleable.ActionEditText_onBadgeClick); - } - + + private void getAttrs(AttributeSet attr) { + TypedArray a = getContext().obtainStyledAttributes(attr, + R.styleable.ActionEditText); + optionOneString = a + .getString(R.styleable.ActionEditText_optionOneString); + optionTwoString = a + .getString(R.styleable.ActionEditText_optionTwoString); + optionOneColor = a.getColor(R.styleable.ActionEditText_optionOneColor, + 0x00ff00); + optionTwoColor = a.getColor(R.styleable.ActionEditText_optionTwoColor, + 0xff0000); + badgeClickCallback = a + .getString(R.styleable.ActionEditText_onBadgeClick); + } + }