*/
bool isFlightModeEnabled() const;
+ /**
+ * @brief Checks roaming status
+ * @return true if roaming, false otherwise.
+ */
+ bool isRoaming() const;
+
+ /**
+ * @brief Checks whether roaming data is enabled or not
+ * @return true if enabled, false otherwise.
+ */
+ bool isRoamingDataEnabled() const;
+
private:
SystemSettingsManager(SystemSettingsManager&) = delete;
SystemSettingsManager &operator =(const SystemSettingsManager&) = delete;
#include <algorithm>
#include <system_settings.h>
#include <dpm/restriction.h>
+#include <vconf-internal-telephony-keys.h>
+#include <vconf.h>
using namespace Msg;
return res;
}
+bool SystemSettingsManager::isRoaming() const
+{
+ bool status = false;
+ telephony_h telHandle = m_TelHandleList.handle[0];
+ telephony_network_get_roaming_status(telHandle, &status);
+ return status;
+}
+
+bool SystemSettingsManager::isRoamingDataEnabled() const
+{
+ int enabled = false;
+ vconf_get_bool(VCONFKEY_SETAPPL_STATE_DATA_ROAMING_BOOL, &enabled);
+ return enabled;
+}
+
void SystemSettingsManager::onTimeFormatChanged()
{
for (ISystemSettingsManager *it : m_Listeners)
- {
it->onTimeFormatChanged();
- }
}
void SystemSettingsManager::onLanguageChanged()
{
for (ISystemSettingsManager *it : m_Listeners)
- {
it->onLanguageChanged();
- }
}
void showSentWhenServiceBecomesAvailablePopup();
void showMobileNetworkSettingsPopup();
void showMmsTextLimitExceededPopup();
- void showUnableToSendMmsPopup();
+ void showUnableDataRoamingPopup();
void showDiscardMsgPopup();
// Popup callback:
bool MsgBodyFrame::checkBeforeSend(Message::Type type)
{
- if (!App::getInst().getSysSettingsManager().isSimInserted()) {
+ auto &settings = App::getInst().getSysSettingsManager();
+
+ if (!settings.isSimInserted()) {
// TODO: popup for No SIM card
return false;
}
- if (App::getInst().getSysSettingsManager().isFlightModeEnabled()) {
+ if (settings.isFlightModeEnabled()) {
showDisableFlightModePopup();
return false;
}
- if (MsgUtils::isMms(type) && !App::getInst().getSysSettingsManager().isMobileDataEnabled()) {
- showMobileNetworkSettingsPopup();
- return false;
+ if (MsgUtils::isMms(type)) {
+ if (!settings.isMobileDataEnabled()) {
+ showMobileNetworkSettingsPopup();
+ return false;
+ }
+
+ if (settings.isRoaming() && !settings.isRoamingDataEnabled()) {
+ showUnableDataRoamingPopup();
+ return false;
+ }
}
return true;
popup->show();
}
-void MsgBodyFrame::showUnableToSendMmsPopup()
+void MsgBodyFrame::showUnableDataRoamingPopup()
{
auto *popup = new StandardPopup(StandardPopup::buttons2Style);
popup->setText(msgt("WDS_MSG_BODY_UNABLE_TO_SEND_MMS_ENABLE_DATA_ROAMING"));
{
MSG_LOG("");
popup.destroy();
+ // TODO: run network settings
}
void MsgBodyFrame::onMobileNetworkSettingsClicked(Popup &popup)
{
MSG_LOG("");
popup.destroy();
+ // TODO: run network settings
}
void MsgBodyFrame::onDiscardMsgClicked(Popup &popup)