public static boolean canHangupHolding(CallManager cm) {
   // Because of CDMA no hold concept, so disable the holding menu
   // when there cdma active.
   if (DualTalkUtils.isEvdoDTSupport()) {
     DualTalkUtils dt = DualTalkUtils.getInstance();
     if (dt.isCDMAPhoneActive()) {
       return false;
     }
   }
   Call bgCall = cm.getFirstActiveBgCall();
   return bgCall.getState() != Call.State.IDLE;
 }
  public static boolean canECT(CallManager cm) {
    boolean retval = false;

    final boolean hasActiveFgCall = cm.hasActiveFgCall();
    final boolean hasActiveBgCall = cm.hasActiveBgCall();
    final boolean hasActiveRingingCall = cm.hasActiveRingingCall();

    Call fgCall = null;
    Call bgCall = null;

    DualTalkUtils dt = DualTalkUtils.getInstance();
    if (DualTalkUtils.isSupportDualTalk() && dt != null && dt.isDualTalkMultipleHoldCase()) {
      fgCall = dt.getActiveFgCall();
      bgCall = dt.getFirstActiveBgCall();
    } else {
      fgCall = cm.getActiveFgCall();
      bgCall = cm.getFirstActiveBgCall();
    }

    if (hasActiveRingingCall) {
      retval = false;
      return retval;
    }

    if (hasActiveFgCall && hasActiveBgCall) {
      final boolean isFgSipPhone =
          fgCall.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_SIP;
      final boolean isBgSipPhone =
          bgCall.getPhone().getPhoneType() == PhoneConstants.PHONE_TYPE_SIP;
      if (!isFgSipPhone && !isBgSipPhone && (fgCall.getPhone() == bgCall.getPhone())) {
        retval = true;
      }
    }

    return retval;
  }