});
};
+var EditManager = function() {
+ this.canEdit = false;
+};
+
+EditManager.prototype.allow = function() {
+ this.canEdit = true;
+};
+
+EditManager.prototype.disallow = function() {
+ this.canEdit = false;
+};
+
+var _edit = new EditManager();
+
function InternalData_(data) {
if (!(this instanceof InternalData_)) {
return new InternalData_(data);
callArgs.type = type;
callArgs.seconds = Converter.toString(seconds);
+ callArgs.isPeriodSet = !T.isNullOrUndefined(args.alarm.period);
var result = native.callSync('AlarmManager_add', callArgs);
if (native.isFailure(result)) {
throw native.getErrorObject(result);
} else {
+ _edit.allow();
UpdateInternalData_(args.alarm, native.getResultObject(result));
+ _edit.disallow();
}
};
var m_delay = Converter.toLong(delay);
if (arguments.length >= 2) {
- m_period = Converter.toLong(period, true);
+ if(!T.isNullOrUndefined(period)){
+ m_period = Converter.toLong(period, true);
+ }
}
Alarm.call(this, internal);
Object.defineProperties(this, {
- delay: { value: m_delay, writable: false, enumerable: true},
- period: { value: m_period, writable: false, enumerable: true}
+ delay: {
+ get: function() {
+ return m_delay;
+ },
+ set: function(v) {
+ if (_edit.canEdit && v) {
+ m_delay = Converter.toLong(v.delay);
+ }
+ },
+ enumerable: true
+ },
+ period: {
+ get: function() {
+ return m_period;
+ },
+ set: function(v) {
+ if (_edit.canEdit && v) {
+ m_period = Converter.toLong(v.period);
+ }
+ },
+ enumerable: true
+ }
});
-}
+};
tizen.AlarmRelative.prototype = new Alarm();
if(T.isArray(second)){
m_daysOfWeek = second;
} else {
- m_period = Converter.toLong(second);
+ if(!T.isNullOrUndefined(second)){
+ m_period = Converter.toLong(second);
+ }
}
}
}
makeDateConst(m_date);
Object.defineProperties(this, {
- date: { value: m_date, writable: false, enumerable: true},
- period: { value: m_period, writable: false, enumerable: true},
- daysOfTheWeek: { value: m_daysOfWeek, writable: false, enumerable: true}
+ date: {
+ get: function() {
+ return m_date;
+ },
+ set: function(v) {
+ if (_edit.canEdit && T.isDate(v.date)) {
+ m_date = v.date;
+ }
+ },
+ enumerable: true
+ },
+ period: {
+ get: function() {
+ return m_period;
+ },
+ set: function(v) {
+ if (_edit.canEdit && v) {
+ m_period = Converter.toLong(v.period);
+ }
+ },
+ enumerable: true
+ },
+ daysOfTheWeek: {
+ get: function() {
+ return m_daysOfWeek;
+ },
+ set: function(v) {
+ if (_edit.canEdit && T.isArray(v.second)) {
+ m_daysOfWeek = v.second;
+ }
+ },
+ enumerable: true
+ }
});
-}
+};
tizen.AlarmAbsolute.prototype = new Alarm();
app_control_set_app_id(app_control, app_id.c_str());
int alarm_id = 0;
+ int period = 0;
+
+ // result object
+ picojson::value result = picojson::value(picojson::object());
+ picojson::object& result_obj = result.get<picojson::object>();
if (kAlarmRelative == alarm_type) {
app_control_add_extra_data(app_control, kAlarmKeyType, kAlarmTypeValueRelative);
}
int delay = static_cast<int>(it_delay->second.get<double>());
- int period = 0;
if (it_period->second.is<double>()) {
period = static_cast<int>(it_period->second.get<double>());
}
+ bool isPeriodSet = false;
+ if (args.contains("isPeriodSet")) {
+ isPeriodSet = args.get("isPeriodSet").get<bool>();
+ }
+
std::string delay_str = std::to_string(delay);
int ret = app_control_add_extra_data(app_control, kAlarmRelativeDelayKey, delay_str.c_str());
if (APP_CONTROL_ERROR_NONE != ret) {
return;
}
- if(period == 0){
+ if(!isPeriodSet){
ret = alarm_schedule_once_after_delay(app_control, delay, &alarm_id);
}else{
ret = alarm_schedule_after_delay(app_control, delay, period, &alarm_id);
("Error while add alarm to server: %d (%s)", ret, get_error_message(ret)));
return;
}
+
+ ret = alarm_get_scheduled_period(alarm_id, &period);
+ if (ALARM_ERROR_NONE != ret) {
+ LogAndReportError(PlatformResult(
+ ErrorCode::UNKNOWN_ERR, "Unknown error occurred."), &out,
+ ("Unknown error occurred: %d (%s)", ret, get_error_message(ret)));
+ return;
+ }
+ if(period != 0){
+ result_obj.insert(std::make_pair("period", picojson::value(std::to_string(period))));
+ }
} else {
app_control_add_extra_data(app_control, kAlarmKeyType, kAlarmTypeValueAbsolute);
if (alarm.end() != it_period && it_period->second.is<double>()) {
app_control_add_extra_data(
app_control, kAlarmAbsoluteRecurrenceTypeKey, kAlarmAbsoluteReccurrenceTypeInterval);
- int period = static_cast<int>(it_period->second.get<double>());
+ period = static_cast<int>(it_period->second.get<double>());
ret = alarm_schedule_at_date(app_control, &start_date, period, &alarm_id);
+ if (ALARM_ERROR_NONE != ret) {
+ LogAndReportError(PlatformResult(ErrorCode::UNKNOWN_ERR, "Adding alarm to server failed."),
+ &out,
+ ("Adding alarm to server failed: %d (%s)", ret, get_error_message(ret)));
+ return;
+ }
+
+ ret = alarm_get_scheduled_period(alarm_id, &period);
+ result_obj.insert(std::make_pair("period", picojson::value(std::to_string(period))));
} else if (alarm.end() != it_daysOfTheWeek && it_daysOfTheWeek->second.is<picojson::array>() &&
!(it_daysOfTheWeek->second.get<picojson::array>()).empty()) {
app_control_add_extra_data(
}
}
- // result object
- picojson::value result = picojson::value(picojson::object());
- picojson::object& result_obj = result.get<picojson::object>();
-
result_obj.insert(std::make_pair("id", picojson::value(std::to_string(alarm_id))));
ReportSuccess(result, out);
}
obj.insert(std::make_pair("type", picojson::value(kAlarmRelative)));
obj.insert(std::make_pair("delay", picojson::value(delay_string)));
- obj.insert(std::make_pair("period", picojson::value(std::to_string(interval))));
+ if (interval != 0) {
+ //according to documentation interval will not be lower than 600,
+ //thus 0 from native means period wasn't set by user
+ obj.insert(std::make_pair("period", picojson::value(std::to_string(interval))));
+ }
} else {
return LogAndCreateResult(ErrorCode::UNKNOWN_ERR, "Unknown error occurred.");
}