From: Bartek Przybylski Date: Tue, 1 May 2012 21:37:37 +0000 (+0200) Subject: initial commit of editbox with badge X-Git-Tag: oc-android-1.4.3~434 X-Git-Url: http://git.linex4red.de/pub/Android/ownCloud.git/commitdiff_plain/dc7cafe677ff5513587ee84306b762c525c64cf9 initial commit of editbox with badge --- diff --git a/res/layout/account_setup.xml b/res/layout/account_setup.xml index 9868b27c..3a9cb4e6 100644 --- a/res/layout/account_setup.xml +++ b/res/layout/account_setup.xml @@ -1,5 +1,6 @@ - + android:singleLine="true" + oc:optionOneString="SSL" + oc:optionTwoString="NO SSL" + oc:optionOneColor="#00ff00" + oc:optionTwoColor="#ff0000" + oc:onBadgeClick="sslBadgeClick"> - + - + android:textColor="@android:color/black" + oc:optionOneString="Show" + oc:optionTwoString="Hide" + oc:optionOneColor="#00ff00" + oc:optionTwoColor="#ff0000" + oc:onBadgeClick="passwordBadgeClick"> - + + + + diff --git a/res/values/attrs.xml b/res/values/attrs.xml new file mode 100644 index 00000000..22c082c6 --- /dev/null +++ b/res/values/attrs.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/eu/alefzero/owncloud/widgets/ActionEditText.java b/src/eu/alefzero/owncloud/widgets/ActionEditText.java new file mode 100644 index 00000000..adc18457 --- /dev/null +++ b/src/eu/alefzero/owncloud/widgets/ActionEditText.java @@ -0,0 +1,133 @@ +package eu.alefzero.owncloud.widgets; + +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; + +import eu.alefzero.owncloud.R; +import android.content.Context; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.graphics.Canvas; +import android.graphics.Color; +import android.graphics.Paint; +import android.graphics.Rect; +import android.text.InputType; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.widget.CheckBox; +import android.widget.EditText; +import android.widget.TextView; + +public class ActionEditText extends EditText { + private String s; + private String optionOneString; + private int optionOneColor; + private String optionTwoString; + private int optionTwoColor; + + private String badgeClickCallback; + private Rect btn_rect; + + public ActionEditText(Context context, AttributeSet attrs) { + super(context, attrs); + getAttrs(attrs); + s = optionOneString; + } + + public ActionEditText(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + getAttrs(attrs); + s = optionOneString; + } + + @Override + protected void onDraw(Canvas canvas) { + super.onDraw(canvas); + Rect r = new Rect(); + + Paint p = getPaint(); + Rect text_bounds = new Rect(); + + p.getTextBounds(s, 0, s.length(), text_bounds); + + getDrawingRect(r); + r.top += 10; + r.bottom -= 10; + r.left = (int)(getWidth() - text_bounds.width() - 18); + r.right = getWidth() - 10; + btn_rect = r; + + if (s.equals(optionOneString)) + p.setColor(optionOneColor); + else + p.setColor(optionTwoColor); + canvas.drawRect(r, p); + p.setColor(Color.GRAY); + + canvas.drawText(s, r.left + 3, r.bottom - (text_bounds.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) { + Class[] paramtypes = new Class[2]; + paramtypes[0] = android.view.View.class; + paramtypes[1] = String.class; + Method method; + try { + method = this.getClass().getMethod(badgeClickCallback, paramtypes); + method.invoke(this, this, s); + } catch (NoSuchMethodException e) { + e.printStackTrace(); + } catch (IllegalArgumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IllegalAccessException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (InvocationTargetException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } + invalidate(); + } + } + 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); + } + + public void sslBadgeClick(View view, String val) { + Log.d("ASD", val); + } + + public void passwordBadgeClick(View view, String val) { + + if(val.equals("Hide")) { + ((TextView)view).setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD); + } else { + ((TextView)view).setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD); + } + } + +}