return true;
}
+
+ bool CheckComplicationType(int type) {
+ switch (type) {
+ case WATCHFACE_COMPLICATION_TYPE_NO_DATA:
+ return true;
+ case WATCHFACE_COMPLICATION_TYPE_SHORT_TEXT:
+ return true;
+ case WATCHFACE_COMPLICATION_TYPE_LONG_TEXT:
+ return true;
+ case WATCHFACE_COMPLICATION_TYPE_RANGED_VALUE:
+ return true;
+ case WATCHFACE_COMPLICATION_TYPE_TIME:
+ return true;
+ case WATCHFACE_COMPLICATION_TYPE_ICON:
+ return true;
+ case WATCHFACE_COMPLICATION_TYPE_IMAGE:
+ return true;
+ default:
+ return false;
+ }
+ }
+
} /* namespace util */
} /* namespace watchface_complication */
const std::string& sender_name,
GDBusConnection* conn,
int* sender_pid);
+ bool CheckComplicationType(int type);
}
} /* namespace watchface_complication */
int ret;
char num_str[32] = {0,};
- if (shared_data == NULL) {
- LOGE("shared_data is NULL");
+ if (shared_data == NULL || !util::CheckComplicationType(static_cast<int>(type))) {
+ LOGE("Invalid param");
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
}
data.get() == NULL ? NULL : data.get()->GetConstRaw(), user_data_);
}
+ watchface_complication_updated_cb GetCallback() {
+ return cb_;
+ }
+
private:
watchface_complication_updated_cb cb_;
void* user_data_;
LOGI("update call!! done");
}
- void AddCallbackInfo(CallbackInfo* ci) {
+ int AddCallbackInfo(CallbackInfo* ci) {
+ for (auto& i : cb_list_) {
+ if (i.get()->GetCallback() == ci->GetCallback()) {
+ LOGI("already registered callback");
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+ }
cb_list_.emplace_back(ci);
+ return WATCHFACE_COMPLICATION_ERROR_NONE;
}
- void RemoveCallbackInfo(CallbackInfo* ci) {
+ int RemoveCallbackInfo(watchface_complication_updated_cb cb) {
for (auto& i : cb_list_) {
- if (i.get() == ci) {
+ if (i.get()->GetCallback() == cb) {
cb_list_.remove(i);
- break;
+ return WATCHFACE_COMPLICATION_ERROR_NONE;
}
}
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
}
private:
if (handle == NULL || cb == NULL)
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
- return WATCHFACE_COMPLICATION_ERROR_NONE;
+ auto sh = static_cast<SharedHandle<WatchComplicationStub>*>(handle);
+ auto ptr = SharedHandle<WatchComplicationStub>::Share(sh);
+
+ return ptr.get()->RemoveCallbackInfo(cb);
}
extern "C" EXPORT_API int watchface_complication_send_update_request(
extern "C" EXPORT_API int watchface_complication_allowed_list_del(
complication_allowed_list_h handle, const char *provider_id) {
- if (handle == NULL || provider_id == NULL || handle->allowed_list) {
+ if (handle == NULL || provider_id == NULL || handle->allowed_list == NULL) {
LOGE("Invalid param");
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
}
cb_(stub, editor_appid.c_str(), user_data_);
}
+ watchface_editable_edit_ready_cb GetCallback() {
+ return cb_;
+ }
+
private:
watchface_editable_edit_ready_cb cb_;
void* user_data_;
}
}
- void AddReadyCallbackInfo(ReadyCallbackInfo* ci) {
+ int AddReadyCallbackInfo(ReadyCallbackInfo* ci) {
+ for (auto& i : ready_cb_list_) {
+ if (i.get()->GetCallback() == ci->GetCallback()) {
+ LOGI("already registered callback");
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ }
+ }
+
ready_cb_list_.emplace_back(ci);
+ return WATCHFACE_COMPLICATION_ERROR_NONE;
}
- void RemoveReadyCallbackInfo(ReadyCallbackInfo* ci) {
+ int RemoveReadyCallbackInfo(watchface_editable_edit_ready_cb ci) {
for (auto& i : ready_cb_list_) {
- if (i.get() == ci) {
+ if (i.get()->GetCallback() == ci) {
ready_cb_list_.remove(i);
- break;
+ return WATCHFACE_COMPLICATION_ERROR_NONE;
}
}
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
}
void ClearUpdateCallbackInfo() {
list_handle->candidates_list == NULL)
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
+ if (cur_data_idx < 0 && cur_data_idx >= (int)g_list_length(list_handle->candidates_list))
+ return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
EditablesContainerStub* ec = static_cast<EditablesContainerStub*>(handle);
bundle* data;
int str_len = 0;
__container = new EditablesContainerStub();
auto ci = new ReadyCallbackInfo(cb, user_data);
- __container->AddReadyCallbackInfo(ci);
- return WATCHFACE_COMPLICATION_ERROR_NONE;
+ return __container->AddReadyCallbackInfo(ci);
}
extern "C" EXPORT_API int watchface_editable_remove_edit_ready_cb(
watchface_editable_edit_ready_cb cb) {
- if (cb == NULL)
+ if (cb == NULL || __container == NULL)
return WATCHFACE_COMPLICATION_ERROR_INVALID_PARAMETER;
- return WATCHFACE_COMPLICATION_ERROR_NONE;
+ return __container->RemoveReadyCallbackInfo(cb);
}
extern "C" EXPORT_API int watchface_editable_get_cur_data_idx(