* #30591: dtmf working in dial screen
diff --git a/src/com/savoirfairelinux/sflphone/client/CallActivity.java b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
index d085ced..79717b0 100644
--- a/src/com/savoirfairelinux/sflphone/client/CallActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/CallActivity.java
@@ -185,6 +185,10 @@
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
+
+ if (keyCode == KeyEvent.KEYCODE_BACK){
+ return super.onKeyUp(keyCode, event);
+ }
mCurrentCallFragment.onKeyUp(keyCode, event);
return true;
}
diff --git a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
index ea54c74..74b063d 100644
--- a/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
+++ b/src/com/savoirfairelinux/sflphone/client/SFLPhoneHomeActivity.java
@@ -56,7 +56,6 @@
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.util.TypedValue;
-import android.view.KeyEvent;
import android.view.MenuItem;
import android.view.View;
import android.widget.RelativeLayout;
diff --git a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
index f0091c3..b8d031b 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/CallFragment.java
@@ -32,6 +32,7 @@
package com.savoirfairelinux.sflphone.fragments;
import java.util.ArrayList;
+import java.util.Locale;
import android.app.Activity;
import android.app.Fragment;
@@ -47,8 +48,6 @@
import android.hardware.SensorManager;
import android.os.Bundle;
import android.os.RemoteException;
-import android.text.Editable;
-import android.text.method.KeyListener;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -56,7 +55,6 @@
import android.view.SurfaceHolder.Callback;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.ImageButton;
@@ -536,8 +534,9 @@
public void onKeyUp(int keyCode, KeyEvent event) {
try {
- Log.d(TAG, "Sending "+event.getDisplayLabel());
String toSend = "" + event.getDisplayLabel();
+ Log.d(TAG,"toSend "+toSend);
+ toSend.toUpperCase(Locale.getDefault());
mCallbacks.getService().playDtmf(toSend);
} catch (RemoteException e) {
e.printStackTrace();
diff --git a/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java b/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
index 94d9270..2db5258 100644
--- a/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
+++ b/src/com/savoirfairelinux/sflphone/fragments/DialingFragment.java
@@ -31,11 +31,15 @@
package com.savoirfairelinux.sflphone.fragments;
+import java.util.Locale;
+
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.os.RemoteException;
+import android.text.Editable;
+import android.text.TextWatcher;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
@@ -155,27 +159,38 @@
@Override
public void onResume() {
super.onResume();
- textField.setOnKeyListener(dtmfKeyListener);
+ textField.setTextWatcher(dtmfKeyListener);
}
@Override
public void onPause() {
super.onPause();
- textField.setOnKeyListener(null);
+ textField.unsetTextWatcher();
}
- OnKeyListener dtmfKeyListener = new OnKeyListener() {
+ TextWatcher dtmfKeyListener = new TextWatcher() {
@Override
- public boolean onKey(View v, int keyCode, KeyEvent event) {
- if (event.getAction() == KeyEvent.ACTION_UP) {
- try {
- mCallbacks.getService().playDtmf(KeyEvent.keyCodeToString(keyCode));
- } catch (RemoteException e) {
- e.printStackTrace();
- }
+ public void afterTextChanged(Editable s) {
+ }
+
+ @Override
+ public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ }
+
+ @Override
+ public void onTextChanged(CharSequence s, int start, int before, int count) {
+ if (count - before > 1 || count == 0)
+ return; // pasted a number (not implemented yet)
+
+ try {
+ String toSend = Character.toString(s.charAt(start));
+ Log.d(TAG, "onTextChanged toSend" + toSend);
+ toSend.toUpperCase(Locale.getDefault());
+ mCallbacks.getService().playDtmf(toSend);
+ } catch (RemoteException e) {
+ e.printStackTrace();
}
- return false;
}
};
diff --git a/src/com/savoirfairelinux/sflphone/views/ClearableEditText.java b/src/com/savoirfairelinux/sflphone/views/ClearableEditText.java
index 6d4f84a..bf10a05 100644
--- a/src/com/savoirfairelinux/sflphone/views/ClearableEditText.java
+++ b/src/com/savoirfairelinux/sflphone/views/ClearableEditText.java
@@ -17,6 +17,7 @@
LayoutInflater inflater = null;
EditText edit_text;
Button btn_clear;
+ private TextWatcher watch = null;
public ClearableEditText(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
@@ -103,8 +104,12 @@
edit_text.requestFocus();
}
- @Override
- public void setOnKeyListener(OnKeyListener l){
- edit_text.setOnKeyListener(l);
+ public void setTextWatcher(TextWatcher l){
+ watch = l;
+ edit_text.addTextChangedListener(watch);
+ }
+
+ public void unsetTextWatcher(){
+ edit_text.removeTextChangedListener(watch);
}
}