virtual bool isEmergency() const = 0;
virtual bool isHDVoice() const = 0;
virtual bool isForwarded() const = 0;
+ virtual bool isVoiceMailNumber() const = 0;
virtual int getConferenceMemberCount() const = 0;
virtual const ConfMemberList &getConferenceMemberList() const = 0;
};
ucl::Result updateSubText();
ucl::Result updateMainTxt();
- std::string getNumberSubText(const ICallInfoWCRef &callInfo) const;
+ std::string getNumberSubText(const ICallInfoSCRef &callInfo) const;
std::string getIncomingCallSubText() const;
std::string getOutgoingCallSubText() const;
std::string getDuringCallSubText() const;
std::string getEndCallSubText() const;
- std::string generateMainTxt(const ICallInfoWCRef &callInfo);
+ std::string generateMainTxt(const ICallInfoSCRef &callInfo);
- void displayMainTxt(const std::string &text) const;
- void displaySubTxt(const std::string &text) const;
+ void displayMainTxt(const ICallInfoSCRef &info, const std::string &text) const;
private:
ucl::LayoutSRef m_widget;
ICallInfoSCRef m_heldCallInfo;
ICallInfoSCRef m_endCallInfo;
CallStatusSRef m_callStatus;
- bool m_isEmergency;
bool m_isSubTxtEnable;
bool m_needModifyCallStatus;
};
extern const ucl::TString STR_CONFERENCE_CALL;
extern const ucl::TString STR_UNKNOWN;
extern const ucl::TString STR_EMERGENCY_CALL;
+ extern const ucl::TString STR_VOICEMAIL;
extern const ucl::TString STR_INCOMING_CALL;
extern const ucl::TString STR_DIALING_CALL;
m_isEmergency(false),
m_isHDVoice(false),
m_isForwarded(false),
+ m_isVoiceMailNumber(false),
m_confMemberCount(0)
{
}
Result CallInfo::prepare(CallClient &client, cm_call_data_h callData)
{
- Result res = convertCMResult(cm_call_data_get_call_id(callData, &m_callId));
+ Result res = convertCMResult(
+ cm_call_data_get_call_id(callData, &m_callId));
FAIL_RETURN(res, "cm_call_data_get_call_id() failed!");
char *number = nullptr;
- res = convertCMResult(cm_call_data_get_call_number(callData, &number));
+ res = convertCMResult(
+ cm_call_data_get_call_number(callData, &number));
FAIL_RETURN(res, "cm_call_data_get_call_number() failed!");
m_phoneNum = nz(number);
// XXX: According to documentation it must be free, but it leads to crash
// free(number);
gboolean isEmergency;
- res = convertCMResult(cm_call_data_is_emergency_call(callData, &isEmergency));
+ res = convertCMResult(
+ cm_call_data_is_emergency_call(callData, &isEmergency));
FAIL_RETURN(res, "cm_call_data_is_emergency_call() failed!");
m_isEmergency = isEmergency;
int hdIconState = 0;
- res = convertCMResult(cm_call_data_get_hd_icon_state(callData, &hdIconState));
+ res = convertCMResult(
+ cm_call_data_get_hd_icon_state(callData, &hdIconState));
FAIL_RETURN(res, "cm_call_data_get_hd_icon_state() failed!");
m_isHDVoice = hdIconState;
- res = convertCMResult(cm_call_data_get_start_time(callData, &m_startTime));
+ gboolean isVoiceMailNumber;
+ res = convertCMResult(
+ cm_call_data_is_voicemail_number(callData, &isVoiceMailNumber));
+ FAIL_RETURN(res, "cm_call_data_is_voicemail_number() failed!");
+ m_isVoiceMailNumber = isVoiceMailNumber;
+
+ res = convertCMResult(
+ cm_call_data_get_start_time(callData, &m_startTime));
FAIL_RETURN(res, "cm_call_data_get_start_time() failed!");
int personId = -1;
- res = convertCMResult(cm_call_data_get_person_id(callData, &personId));
+ res = convertCMResult(
+ cm_call_data_get_person_id(callData, &personId));
FAIL_RETURN(res, "cm_call_data_get_person_id() failed!");
if (personId >= 0) {
return m_isForwarded;
}
+ bool CallInfo::isVoiceMailNumber() const
+ {
+ return m_isVoiceMailNumber;
+ }
+
int CallInfo::getConferenceMemberCount() const
{
return m_confMemberCount;
virtual bool isEmergency() const override final;
virtual bool isHDVoice() const override final;
virtual bool isForwarded() const override final;
+ virtual bool isVoiceMailNumber() const override final;
virtual int getConferenceMemberCount() const override final;
virtual const ConfMemberList &getConferenceMemberList() const override final;
bool m_isEmergency;
bool m_isHDVoice;
bool m_isForwarded;
+ bool m_isVoiceMailNumber;
int m_confMemberCount;
ConfMemberList m_confMemberList;
};
CallMode mode):
Presenter(rc),
m_mode(mode),
- m_isEmergency(false),
m_isSubTxtEnable(false),
m_needModifyCallStatus(false)
{
}
}
- Result CallInfoPresenter::update(CallMode mode, const ICallManagerSRef &cm)
+ Result CallInfoPresenter::update(CallMode mode,
+ const ICallManagerSRef &cm)
{
m_needModifyCallStatus = false;
if (mode != m_mode || mode == CallMode::DURING) {
m_mode = mode;
initCallInfos(cm);
- m_isEmergency = false;
m_isSubTxtEnable = false;
return update();
}
- std::string CallInfoPresenter::getNumberSubText(const ICallInfoWCRef &callInfo) const
+ std::string CallInfoPresenter::getNumberSubText(
+ const ICallInfoSCRef &callInfo) const
{
if (!callInfo) {
FAIL_RETURN_VALUE(RES_FAIL, "", "callInfo is NULL!");
if (displStr.empty()) {
displStr = STR_UNKNOWN.translate();
}
- return TString{STR_CALL_WITH_PS_WILL_END.translate()}.format(displStr.c_str());
+ return TString{STR_CALL_WITH_PS_WILL_END.translate()}.
+ format(displStr.c_str());
+ }
+
+ if (m_incomCallInfo->isVoiceMailNumber() ||
+ m_incomCallInfo->isEmergency()){
+ return "";
}
return getNumberSubText(m_incomCallInfo);
if (m_heldCallInfo) {
return STR_CALL_ON_HOLD.translate();
} else if (confMemberCount > 1) {
- return TString{STR_WITH_PD_PEOPLE.translate()}.format(confMemberCount);
+ return TString{STR_WITH_PD_PEOPLE.translate()}.
+ format(confMemberCount);
}
} else if (m_heldCallInfo) {
auto confMemberCount = m_heldCallInfo->getConferenceMemberCount();
if (confMemberCount > 1) {
- return TString{STR_WITH_PD_PEOPLE.translate()}.format(confMemberCount);
+ return TString{STR_WITH_PD_PEOPLE.translate()}.
+ format(confMemberCount);
}
} else {
ELOG("Invalid call data");
auto confMemberCount = m_endCallInfo->getConferenceMemberCount();
if (confMemberCount > 1) {
- return TString{STR_WITH_PD_PEOPLE.translate()}.format(confMemberCount);
+ return TString{STR_WITH_PD_PEOPLE.translate()}.
+ format(confMemberCount);
}
return "";
label->setText(tmp);
elm_label_slide_mode_set(*label, ELM_LABEL_SLIDE_MODE_AUTO);
- elm_label_wrap_width_set(*label, ELM_SCALE_SIZE(impl::SUB_TXT_WIDTH));
+ elm_label_wrap_width_set(*label,
+ ELM_SCALE_SIZE(impl::SUB_TXT_WIDTH));
elm_label_slide_duration_set(*label, duration);
elm_label_slide_go(*label);
return RES_OK;
}
- std::string CallInfoPresenter::generateMainTxt(const ICallInfoWCRef &callInfo)
+ std::string CallInfoPresenter::generateMainTxt(
+ const ICallInfoSCRef &callInfo)
{
if (!callInfo) {
LOG_RETURN_VALUE(RES_FAIL, "", "callInfo is NULL");
}
if (callInfo->isEmergency()) {
- m_isEmergency = true;
return STR_EMERGENCY_CALL.translate();
}
+ if (callInfo->isVoiceMailNumber()) {
+ return STR_VOICEMAIL.translate();
+ }
+
std::string mainTxt;
auto contactInfo = callInfo->getContactInfo();
if (contactInfo) {
return mainTxt;
}
- void CallInfoPresenter::displayMainTxt(const std::string &text) const
+ void CallInfoPresenter::displayMainTxt(const ICallInfoSCRef &info,
+ const std::string &text) const
{
m_widget->setText(text.c_str(), impl::PART_TXT_MAIN);
m_widget->emit(impl::SIGN_CALLER_ID_DISABLE, impl::SRC_TXT_1LINE);
- if (m_isEmergency) {
+ if (info->isEmergency()) {
m_widget->emit(impl::SIGN_EMERGENCY_MODE, impl::SRC_TXT_1LINE);
}
Result CallInfoPresenter::updateMainTxt()
{
std::string mainTxt;
+
+ ICallInfoSCRef info;
+
switch (m_mode) {
case CallMode::INCOMING:
- mainTxt = generateMainTxt(m_incomCallInfo);
+ info = m_incomCallInfo;
break;
case CallMode::OUTGOING:
- mainTxt = generateMainTxt(m_activeCallInfo);
+ info = m_activeCallInfo;
break;
case CallMode::DURING:
if (m_activeCallInfo) {
- mainTxt = generateMainTxt(m_activeCallInfo);
+ info = m_activeCallInfo;
} else if (m_heldCallInfo) {
- mainTxt = generateMainTxt(m_heldCallInfo);
+ info = m_heldCallInfo;
}
break;
case CallMode::END:
- mainTxt = generateMainTxt(m_endCallInfo);
+ info = m_endCallInfo;
break;
default:
LOG_RETURN(RES_FAIL, "Unknown mode");
break;
}
+ if (!info) {
+ LOG_RETURN(RES_FAIL, "info is NULL");
+ }
+
+ mainTxt = generateMainTxt(info);
if (mainTxt.empty()) {
LOG_RETURN(RES_FAIL, "Main text is empty");
}
- displayMainTxt(mainTxt);
+ displayMainTxt(info, mainTxt);
return RES_OK;
}
const ucl::TString STR_CONFERENCE_CALL {"Conference call"};
const ucl::TString STR_UNKNOWN {"Unknown"};
const ucl::TString STR_EMERGENCY_CALL {"Emergency call"};
+ const ucl::TString STR_VOICEMAIL {"Voicemail"};
const ucl::TString STR_INCOMING_CALL {"Incoming call"};
const ucl::TString STR_DIALING_CALL {"Dialing"};