#15736: Implement dialpad using Custom components
diff --git a/res/layout/numpad.xml b/res/layout/numpad.xml
new file mode 100644
index 0000000..d7cbb82
--- /dev/null
+++ b/res/layout/numpad.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<merge xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent">
+    <TableRow
+        android:layout_width="match_parent"
+        android:layout_height="0px"
+        android:layout_weight="1">
+        <Button android:id="@+id/numButton1"/>
+        <Button android:id="@+id/numButton2"/>
+        <Button android:id="@+id/numButton3"/>
+    </TableRow>
+    <TableRow
+        android:layout_width="match_parent"
+        android:layout_height="0px"
+        android:layout_weight="1">
+        <Button android:id="@+id/numButton4"/>
+        <Button android:id="@+id/numButton5"/>
+        <Button android:id="@+id/numButton6"/>
+    </TableRow>
+    <TableRow
+        android:layout_width="match_parent"
+        android:layout_height="0px"
+        android:layout_weight="1">
+        <Button android:id="@+id/numButton7"/>
+        <Button android:id="@+id/numButton8"/>
+        <Button android:id="@+id/numButton9"/>
+    </TableRow>
+    <TableRow
+        android:layout_width="match_parent"
+        android:layout_height="0px"
+        android:layout_weight="1">
+        <Button android:id="@+id/numButtonStar"/>
+        <Button android:id="@+id/numButton0"/>
+        <Button android:id="@+id/numButtonSharp"/>
+    </TableRow>
+</merge>
diff --git a/src/com/savoirfairelinux/sflphone/client/ButtonSectionFragment.java b/src/com/savoirfairelinux/sflphone/client/ButtonSectionFragment.java
index 076ef5f..f4fb81b 100644
--- a/src/com/savoirfairelinux/sflphone/client/ButtonSectionFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/ButtonSectionFragment.java
@@ -6,8 +6,10 @@
 import android.view.InflateException;
 import android.view.LayoutInflater;
 import android.view.View;
+import android.view.View.OnClickListener;
 import android.view.ViewGroup;
 import android.widget.Button;
+import android.widget.EditText;
 import android.widget.TextView;
 
 import com.savoirfairelinux.sflphone.R;
@@ -40,12 +42,11 @@
 		@Override
 		public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState)
 		{
-			View view;
-			
-			Log.i(TAG, "onCreateView" );
-			view = inflater.inflate(R.layout.test_layout, parent, false);
+		    View view;
+		    Log.i(TAG, "onCreateView" );
+		    view = inflater.inflate(R.layout.test_layout, parent, false);
 
-			callVoidText = (TextView) view.findViewById(R.id.callVoid_text);
+		    callVoidText = (TextView) view.findViewById(R.id.callVoid_text);
 
 		    NewDataText = (TextView) view.findViewById(R.id.NewData_text);  
 		    buttonGetNewData = (Button) view.findViewById(R.id.buttonGetNewData);
@@ -53,13 +54,21 @@
 		    DataStringText = (TextView) view.findViewById(R.id.DataString_text);
 		    buttonGetDataString = (Button) view.findViewById(R.id.buttonGetDataString);
 
-		    try {
-				inflater.inflate(R.layout.test_layout, parent, false);
-			} catch (InflateException e) {
-				Log.e(TAG, "Error inflating test_layout ", e);
-				return null;
-			}
+                    Numpad numpad = (Numpad) view.findViewById(R.id.numPad);
+                    EditText textEntry = (EditText) view.findViewById(R.id.numDisplay);
 
-			return view;
+                    numpad.setEditText(textEntry);
+
+/*
+		    try {
+		        inflater.inflate(R.layout.test_layout, parent, false);
+		    } catch (InflateException e) {
+			Log.e(TAG, "Error inflating test_layout ", e);
+			return null;
+		    }
+*/
+
+
+		    return view;
 		}
 }
diff --git a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
index ce19330..f2239df 100644
--- a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
+++ b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java
@@ -238,6 +238,18 @@
                 return true;
             }
         });
+
+        lv.setOnItemSelectedListener(new OnItemSelectedListener() {
+            @Override
+            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+                Log.i(TAG, "On Item Selected");
+            }
+
+            @Override
+            public void onNothingSelected(AdapterView<?> parent) {
+                Log.i(TAG, "On Nothing Selected");
+            }
+        });
     }
 
     @Override
diff --git a/src/com/savoirfairelinux/sflphone/client/Numpad.java b/src/com/savoirfairelinux/sflphone/client/Numpad.java
new file mode 100644
index 0000000..e8a570a
--- /dev/null
+++ b/src/com/savoirfairelinux/sflphone/client/Numpad.java
@@ -0,0 +1,74 @@
+package com.savoirfairelinux.sflphone.client;
+
+import android.content.Context;
+import android.text.Editable;
+import android.widget.TableLayout;
+import android.util.AttributeSet;
+import android.util.Log;
+import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.EditText;
+
+import com.savoirfairelinux.sflphone.R;
+
+public class Numpad extends TableLayout implements OnClickListener
+{
+    private static final String TAG = "Numpad";
+    private static final SparseArray<String> DIGITS_NAME = new SparseArray<String>();
+    private EditText mEditText;
+
+    static {
+        DIGITS_NAME.put(R.id.numButton0, "0");
+        DIGITS_NAME.put(R.id.numButton1, "1");
+        DIGITS_NAME.put(R.id.numButton2, "2");
+        DIGITS_NAME.put(R.id.numButton3, "3");
+        DIGITS_NAME.put(R.id.numButton4, "4");
+        DIGITS_NAME.put(R.id.numButton5, "5");
+        DIGITS_NAME.put(R.id.numButton6, "6");
+        DIGITS_NAME.put(R.id.numButton7, "7");
+        DIGITS_NAME.put(R.id.numButton8, "8");
+        DIGITS_NAME.put(R.id.numButton9, "9");
+        DIGITS_NAME.put(R.id.numButtonStar, "*");
+        DIGITS_NAME.put(R.id.numButtonSharp, "#");
+    }
+
+    public Numpad(Context context)
+    {
+        super(context);
+    }
+
+    public Numpad(Context context, AttributeSet attrs)
+    {
+        super(context, attrs);
+        LayoutInflater inflater = LayoutInflater.from(context);
+        inflater.inflate(R.layout.numpad, this, true);
+    }
+
+    protected void onFinishInflate()
+    {
+        super.onFinishInflate();
+
+        for(int i = 0; i < DIGITS_NAME.size(); i++)
+        {
+            Button b = (Button) findViewById(DIGITS_NAME.keyAt(i));
+            b.setText(DIGITS_NAME.valueAt(i));
+            b.setOnClickListener(this);
+        }
+    }
+
+    public void setEditText(EditText editText)
+    {
+        mEditText = editText;
+    } 
+
+    @Override
+    public void onClick(View v)
+    {
+        Log.i(TAG, "Clicked " + ((Button)v).getText().toString() );
+        Editable edit = mEditText.getText(); 
+        edit.append(((Button)v).getText());
+    }
+}