From 0014d237e5618a20b2dba76ce3f76373e90ed5a6 Mon Sep 17 00:00:00 2001 From: Alexandre Savard <alexandre.savard@savoirfairelinux.com> Date: Mon, 24 Sep 2012 10:31:23 -0400 Subject: [PATCH] #15736: Implement dialpad using Custom components --- res/layout/numpad.xml | 38 ++++++++++ .../client/ButtonSectionFragment.java | 31 +++++--- .../sflphone/client/ContactListFragment.java | 12 +++ .../sflphone/client/Numpad.java | 74 +++++++++++++++++++ 4 files changed, 144 insertions(+), 11 deletions(-) create mode 100644 res/layout/numpad.xml create mode 100644 src/com/savoirfairelinux/sflphone/client/Numpad.java diff --git a/res/layout/numpad.xml b/res/layout/numpad.xml new file mode 100644 index 000000000..d7cbb82ab --- /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 076ef5f28..f4fb81b90 100644 --- a/src/com/savoirfairelinux/sflphone/client/ButtonSectionFragment.java +++ b/src/com/savoirfairelinux/sflphone/client/ButtonSectionFragment.java @@ -6,8 +6,10 @@ import android.util.Log; 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 @@ public class ButtonSectionFragment extends Fragment @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 @@ public class ButtonSectionFragment extends Fragment DataStringText = (TextView) view.findViewById(R.id.DataString_text); buttonGetDataString = (Button) view.findViewById(R.id.buttonGetDataString); + Numpad numpad = (Numpad) view.findViewById(R.id.numPad); + EditText textEntry = (EditText) view.findViewById(R.id.numDisplay); + + 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; - } + inflater.inflate(R.layout.test_layout, parent, false); + } catch (InflateException e) { + Log.e(TAG, "Error inflating test_layout ", e); + return null; + } +*/ + - return view; + return view; } } diff --git a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java index ce1933014..f2239df97 100644 --- a/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java +++ b/src/com/savoirfairelinux/sflphone/client/ContactListFragment.java @@ -238,6 +238,18 @@ public class ContactListFragment extends ListFragment implements OnQueryTextList 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 000000000..e8a570ac8 --- /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()); + } +} -- GitLab