Эх сурвалжийг харах

initial commit of editbox with badge

Bartek Przybylski 13 жил өмнө
parent
commit
dc7cafe677

+ 29 - 7
res/layout/account_setup.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:oc="http://schemas.android.com/apk/res/eu.alefzero.owncloud"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:background="#F7F7F7"
@@ -67,7 +68,7 @@
                 android:gravity="center_horizontal"
                 android:weightSum="1.0" >
 


-                <EditText
+                <eu.alefzero.owncloud.widgets.ActionEditText
                     android:id="@+id/host_URL"
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
@@ -75,11 +76,16 @@
                     android:hint="@string/setup_hint_address"
                     android:inputType="textUri"
                     android:textColor="@android:color/black"
-                    android:singleLine="true" >
+                    android:singleLine="true"
+                    oc:optionOneString="SSL"
+                    oc:optionTwoString="NO SSL"
+                    oc:optionOneColor="#00ff00"
+                    oc:optionTwoColor="#ff0000"
+                    oc:onBadgeClick="sslBadgeClick">
 
                     <requestFocus>
                     </requestFocus>
-                </EditText>
+                </eu.alefzero.owncloud.widgets.ActionEditText>
             </TableRow>
 
             <TableRow
@@ -108,7 +114,7 @@
                 android:gravity="center_horizontal"
                 android:weightSum="1.0" >
 

-                <EditText
+                <eu.alefzero.owncloud.widgets.ActionEditText
                     android:id="@+id/account_password"
                     android:layout_width="fill_parent"
                     android:layout_height="wrap_content"
@@ -116,9 +122,14 @@
                     android:hint="@string/setup_hint_password"
                     android:inputType="textPassword"
                     android:singleLine="true"
-                    android:textColor="@android:color/black" >
+                    android:textColor="@android:color/black" 
+                    oc:optionOneString="Show"
+                    oc:optionTwoString="Hide"
+                    oc:optionOneColor="#00ff00"
+                    oc:optionTwoColor="#ff0000"
+                    oc:onBadgeClick="passwordBadgeClick">
 
-                </EditText>
+                </eu.alefzero.owncloud.widgets.ActionEditText>
             </TableRow>
             <TableRow android:id="@+id/tableRow5"
                 android:layout_width="fill_parent"
@@ -157,7 +168,7 @@
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:gravity="center_horizontal"
-            android:orientation="horizontal"
+            android:orientation="vertical"
             android:weightSum="1.0" >
 
             <Button
@@ -169,6 +180,17 @@
                 android:textColor="@android:color/black"
                 android:text="@string/setup_btn_connect" >
             </Button>
+
+            <Button
+                android:id="@+id/buttonNotUser"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_weight=".50"
+                android:onClick="onNotUserClick"
+                android:textColor="@android:color/black"
+                android:text="Get started!" >
+            </Button>
+            
         </LinearLayout>
     </LinearLayout>
 

+ 14 - 0
res/values/attrs.xml

@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+	<declare-styleable name="ActionEditText">
+
+		<attr name="optionOneString" format="string" />
+		<attr name="optionOneColor" format="color" />
+    <attr name="optionTwoString" format="string" />
+		<attr name="optionTwoColor" format="color" />
+		<attr name="onBadgeClick" format="string" />
+
+	</declare-styleable>
+
+</resources>

+ 133 - 0
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);
+    }
+  }
+  
+}