From 427ed76520efe9df6bf7cd616095419bbacb3827 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 24 Jul 2012 13:58:32 +0200 Subject: [PATCH] Fix issue with incall dialer view --- src/org/linphone/ContactsFragment.java | 2 +- src/org/linphone/DialerFragment.java | 16 ++++++++++++---- src/org/linphone/LinphoneActivity.java | 11 +++-------- src/org/linphone/ui/Digit.java | 10 +++++----- 4 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/org/linphone/ContactsFragment.java b/src/org/linphone/ContactsFragment.java index 045d9473f..0cfffb40b 100644 --- a/src/org/linphone/ContactsFragment.java +++ b/src/org/linphone/ContactsFragment.java @@ -69,7 +69,7 @@ public class ContactsFragment extends Fragment implements OnClickListener, OnIte newContact = (ImageView) view.findViewById(R.id.newContact); newContact.setOnClickListener(this); - newContact.setEnabled(!LinphoneActivity.instance().isInCallLayout()); + newContact.setEnabled(LinphoneManager.getLc().getCallsNb() == 0); allContacts.setEnabled(onlyDisplayLinphoneContacts); linphoneContacts.setEnabled(!allContacts.isEnabled()); diff --git a/src/org/linphone/DialerFragment.java b/src/org/linphone/DialerFragment.java index 2a84f7661..9cdbb7caf 100644 --- a/src/org/linphone/DialerFragment.java +++ b/src/org/linphone/DialerFragment.java @@ -23,6 +23,7 @@ import org.linphone.ui.AddressText; import org.linphone.ui.CallButton; import org.linphone.ui.EraseButton; +import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -57,7 +58,7 @@ public class DialerFragment extends Fragment { mCall = (CallButton) view.findViewById(R.id.Call); mCall.setAddressWidget(mAddress); - if (LinphoneActivity.isInstanciated() && LinphoneActivity.instance().isInCallLayout()) { + if (LinphoneActivity.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0) { mCall.setImageResource(R.drawable.plus); } else { mCall.setImageResource(R.drawable.call); @@ -81,7 +82,7 @@ public class DialerFragment extends Fragment { LinphoneActivity.instance().resetClassicMenuLayoutAndGoBackToCallIfStillRunning(); } }; - mAddContact.setEnabled(!(LinphoneActivity.isInstanciated() && LinphoneActivity.instance().isInCallLayout())); + mAddContact.setEnabled(!(LinphoneActivity.isInstanciated() && LinphoneManager.getLc().getCallsNb() > 0)); resetLayout(); if (getArguments() != null) { @@ -108,16 +109,23 @@ public class DialerFragment extends Fragment { } @Override - public void onResume() { + public void onAttach(Activity activity) { + super.onAttach(activity); + LinphoneActivity.instance().updateDialerFragment(this); + } + + @Override + public void onResume() { super.onResume(); if (LinphoneActivity.isInstanciated()) { LinphoneActivity.instance().selectMenu(FragmentsAvailable.DIALER); LinphoneActivity.instance().updateDialerFragment(this); } + resetLayout(); } public void resetLayout() { - if (LinphoneActivity.instance().isInCallLayout()) { + if (LinphoneManager.getLc().getCallsNb() > 0) { mCall.setImageResource(R.drawable.plus); mAddress.setText(""); mAddContact.setImageResource(R.drawable.cancel); diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index adf7f4c6c..c309ceca3 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -84,7 +84,6 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene private SavedState dialerSavedState; private ChatStorage chatStorage; private Handler mHandler = new Handler(); - private boolean isInCallLayout = false; private List contactList, sipContactList; private Cursor contactCursor, sipContactCursor; @@ -606,16 +605,16 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene } private void initInCallMenuLayout() { - isInCallLayout = true; selectMenu(FragmentsAvailable.DIALER); - ((DialerFragment) dialerFragment).resetLayout(); + if (dialerFragment != null) { + ((DialerFragment) dialerFragment).resetLayout(); + } } public void resetClassicMenuLayoutAndGoBackToCallIfStillRunning() { mHandler.post(new Runnable() { @Override public void run() { - isInCallLayout = false; if (dialerFragment != null) { ((DialerFragment) dialerFragment).resetLayout(); } @@ -632,10 +631,6 @@ public class LinphoneActivity extends FragmentActivity implements OnClickListene }); } - public boolean isInCallLayout() { - return isInCallLayout; - } - public FragmentsAvailable getCurrentFragment() { return currentFragment; } diff --git a/src/org/linphone/ui/Digit.java b/src/org/linphone/ui/Digit.java index cce34ff74..4535583b5 100644 --- a/src/org/linphone/ui/Digit.java +++ b/src/org/linphone/ui/Digit.java @@ -77,11 +77,11 @@ public class Digit extends Button implements AddressAware { } private class DialKeyListener implements OnClickListener, OnTouchListener, OnLongClickListener { - final CharSequence mKeyCode; + final char mKeyCode; boolean mIsDtmfStarted; DialKeyListener() { - mKeyCode = Digit.this.getText().subSequence(0, 1); + mKeyCode = Digit.this.getText().subSequence(0, 1).charAt(0); } private boolean linphoneServiceReady() { @@ -100,7 +100,7 @@ public class Digit extends Button implements AddressAware { lc.stopDtmf(); mIsDtmfStarted =false; if (lc.isIncall()) { - lc.sendDtmf(mKeyCode.charAt(0)); + lc.sendDtmf(mKeyCode); } } @@ -110,7 +110,7 @@ public class Digit extends Button implements AddressAware { lBegin = mAddress.length(); } if (lBegin >=0) { - mAddress.getEditableText().insert(lBegin,mKeyCode); + mAddress.getEditableText().insert(lBegin,String.valueOf(mKeyCode)); } } } @@ -121,7 +121,7 @@ public class Digit extends Button implements AddressAware { LinphoneCore lc = LinphoneManager.getLc(); if (event.getAction() == MotionEvent.ACTION_DOWN && !mIsDtmfStarted) { - LinphoneManager.getInstance().playDtmf(getContext().getContentResolver(), mKeyCode.charAt(0)); + LinphoneManager.getInstance().playDtmf(getContext().getContentResolver(), mKeyCode); mIsDtmfStarted=true; } else { if (event.getAction() == MotionEvent.ACTION_UP) {