EXPECT_NE(WC::complication, nullptr);
}
-TEST_F(WC, GetId)
+TEST_F(WC, GetEditableId)
{
- EXPECT_EQ(WC::complication->GetId(), 0);
+ EXPECT_EQ(WC::complication->GetEditableId(), 0);
}
TEST_F(WC, GetGeo)
EXPECT_EQ(complication_get_cur_type(WFC::complication, &cur_type), 0);
EXPECT_EQ(cur_type, COMPLICATION_SHORT_TEXT);
- EXPECT_EQ(complication_get_id(WFC::complication), comp_id);
}
TEST_F(WFC, UpdateRequest)
EXPECT_EQ(DE::element->GetShapeType(), IEditable::EditableShapeType::Circle);
}
-TEST_F(DE, GetId)
+TEST_F(DE, GetEditableId)
{
- EXPECT_EQ(DE::element->GetId(), 0);
+ EXPECT_EQ(DE::element->GetEditableId(), 0);
}
TEST_F(DE, State)
ReceivedEditable* re = new ReceivedEditable(std::string(reinterpret_cast<char*>(raw_data)));
std::shared_ptr<IEditable> ed = static_cast<std::shared_ptr<IEditable>>(re);
- EXPECT_EQ(EC::container->Add(ed), 0);
+ EXPECT_EQ(EC::container->Add(ed, 1), 0);
EXPECT_EQ(EC::container->Remove(ed), 0);
}
EXPECT_EQ(RE::received->GetShapeType(), IEditable::EditableShapeType::Circle);
}
-TEST_F(RE, GetId)
+TEST_F(RE, GetEditableId)
{
- EXPECT_EQ(RE::received->GetId(), 0);
+ EXPECT_EQ(RE::received->GetEditableId(), 0);
}
TEST_F(RE, State)
private:
Complication* parent_;
- int complication_id_;
+ int complication_id_ = -1;
+ int editable_id_ = -1;
int support_types_;
std::string default_provider_id_;
ComplicationType default_type_;
return "org.tizen.comp_provider";
}
-int Complication::GetId() {
+int Complication::GetComplicationId() {
return impl_->complication_id_;
}
+int Complication::GetEditableId() {
+ return impl_->editable_id_;
+}
+
+int Complication::SetEditableId(int id) {
+ impl_->editable_id_ = id;
+ return COMPLICATION_ERROR_NONE;
+}
+
const IEditable::Geometry* Complication::GetGeo() {
return impl_->geo_.get();
}
ComplicationType type,
const Bundle& data) override;
void OnNotifyDataUpdate() override;
- int GetId() override;
+ int GetComplicationId();
+ int GetEditableId() override;
+ int SetEditableId(int id) override;
void SetName(const std::string& name) override;
void SetState(IEditable::EditableState state) override;
IEditable::EditableState GetState() override;
int GetCurType();
int GetType(Bundle& data);
-
public:
static const char* GetProviderIdKey();
static const char* GetProviderTypeKey();
-
private:
class Impl;
std::unique_ptr<Impl> impl_;
private:
DesignElement* parent_;
- int id_;
+ int id_ = -1;
int default_data_idx_;
int cur_data_idx_;
int last_data_idx_;
LOGI("cur data idx : %d", cur_data_idx_);
}
-int DesignElement::GetId() {
+int DesignElement::GetEditableId() {
return impl_->id_;
}
+int DesignElement::SetEditableId(int id) {
+ impl_->id_ = id;
+ return COMPLICATION_ERROR_NONE;
+}
+
const IEditable::Geometry* DesignElement::GetGeo() {
return impl_->geo_.get();
}
const IEditable::EditableShapeType GetShapeType() override;
void OnEditableUpdated(int selected_idx,
IEditable::EditableState state) override;
- int GetId() override;
+ int GetEditableId() override;
+ int SetEditableId(int id) override;
void SetName(const std::string& name) override;
void SetState(IEditable::EditableState state) override;
IEditable::EditableState GetState() override;
int h_;
};
virtual ~IEditable() = default;
- virtual int GetId() = 0;
+ virtual int GetEditableId() = 0;
+ virtual int SetEditableId(int id) = 0;
virtual const IEditable::Geometry* GetGeo() = 0;
virtual std::list<std::unique_ptr<Bundle>> const& GetCandidates() const = 0;
virtual Bundle& GetCurData() = 0;
if (context != NULL)
ctx_str = std::string(context);
for (auto& i : ed_list_) {
- if (i.get()->GetId() == editable_id) {
+ if (i.get()->GetEditableId() == editable_id) {
i.get()->SetState(IEditable::OnGoing);
i.get()->SetCurDataIdx(selected_idx);
if (!ctx_str.empty())
return COMPLICATION_ERROR_OUT_OF_MEMORY;
}
- bundle_add(ed, "EDITABLE_ID", std::to_string(i.get()->GetId()).c_str());
+ bundle_add(ed, "EDITABLE_ID", std::to_string(i.get()->GetEditableId()).c_str());
int cur_data_idx = i.get()->GetCurDataIdx();
bundle_add(ed, "CUR_DATA_IDX", std::to_string(cur_data_idx).c_str());
void EditablesContainer::OnEditReady(const std::string& editor_id) {
}
-int EditablesContainer::Add(std::shared_ptr<IEditable> ed) {
+int EditablesContainer::Add(std::shared_ptr<IEditable> ed, int editable_id) {
if (ed == nullptr)
return COMPLICATION_ERROR_INVALID_PARAMETER;
+ ed.get()->SetEditableId(editable_id);
impl_->ed_list_.push_back(ed);
return COMPLICATION_ERROR_NONE;
}
+bool EditablesContainer::IsExist(int editable_id) {
+ for (auto& i : impl_->ed_list_) {
+ if (i.get()->GetEditableId() == editable_id)
+ return true;
+ }
+ return false;
+}
+
int EditablesContainer::Remove(std::shared_ptr<IEditable> ed) {
if (ed == nullptr)
return COMPLICATION_ERROR_INVALID_PARAMETER;
public:
EditablesContainer();
virtual ~EditablesContainer();
- int Add(std::shared_ptr<IEditable> ed);
+ int Add(std::shared_ptr<IEditable> ed, int editable_id);
int Remove(std::shared_ptr<IEditable> ed);
int RequestEdit(const std::string& editor_id);
virtual void OnUpdate(const IEditable& ed, int selected_idx,
IEditable::EditableState state);
void OnEditReady(const std::string& editor_id) override;
+ bool IsExist(int editable_id);
private:
class Impl;
COMPLICATION_ERROR_DB = TIZEN_ERROR_COMPLICATION | 0x1, /**< DB Error */
COMPLICATION_ERROR_DBUS = TIZEN_ERROR_COMPLICATION | 0x2, /**< DBUS Error */
COMPLICATION_ERROR_EDIT_NOT_READY = TIZEN_ERROR_COMPLICATION | 0x3, /**< Edit not ready */
+ COMPLICATION_ERROR_EXIST_ID = TIZEN_ERROR_COMPLICATION | 0x4, /**< ID already exist */
} complication_error;
/**
void *user_data);
int complication_update_cb_del(complication_h handle,
on_complication_update cb);
-int complication_set_provider(const char *provider_id);
int complication_send_update_request(complication_h handle);
-int complication_get_id(complication_h handle);
+int complication_set_provider(const char *provider_id);
int complication_create(int complication_id, const char *default_provider_id,
complication_type default_type, int support_types,
complication_shape_type type,
private:
ReceivedEditable* parent_;
- int id_;
+ int id_ = -1;
Bundle* cur_data_ = nullptr;
std::list<std::unique_ptr<Bundle>> candidates_list_;
std::shared_ptr<IEditable::Geometry> geo_;
shape_type_ = static_cast<IEditable::EditableShapeType>(atoi(val));
}
-int ReceivedEditable::GetId() {
+int ReceivedEditable::GetEditableId() {
return impl_->id_;
}
+int ReceivedEditable::SetEditableId(int id) {
+ impl_->id_ = id;
+ return COMPLICATION_ERROR_NONE;
+}
+
const IEditable::Geometry* ReceivedEditable::GetGeo() {
return impl_->geo_.get();
}
const IEditable::EditableShapeType GetShapeType() override;
void OnEditableUpdated(int selected_idx,
IEditable::EditableState state) override;
- int GetId() override;
+ int GetEditableId() override;
+ int SetEditableId(int id) override;
void SetName(const std::string& name) override;
void SetState(IEditable::EditableState state) override;
IEditable::EditableState GetState() override;
void OnDataUpdated(const std::string& provider_id,
ComplicationType type, const Bundle& data) override {
for (auto& i : cb_list_) {
- i->Invoke(GetId(), provider_id, type, data);
+ i->Invoke(GetComplicationId(), provider_id, type, data);
}
LOGI("update call!! done");
}
return ptr.get()->SendDataUpdateRequest();
}
-extern "C" EXPORT_API int complication_get_id(complication_h handle) {
- if (handle == NULL)
- return COMPLICATION_ERROR_INVALID_PARAMETER;
-
- auto sh = static_cast<SharedHandle<WatchComplicationStub>*>(handle);
- auto ptr = SharedHandle<WatchComplicationStub>::Share(sh);
-
- return ptr.get()->GetId();
-}
-
extern "C" EXPORT_API int complication_create(int complication_id,
const char *default_provider_id, complication_type default_type,
int support_types, complication_shape_type shape_type,
}
}
+ if (ec->IsExist(edit_id)) {
+ LOGE("ID already exist");
+ return COMPLICATION_ERROR_EXIST_ID;
+ }
auto de = std::shared_ptr<IEditable>(new DesignElement(edit_id,
default_data_idx,
std::move(new_list),
std::shared_ptr<IEditable::Geometry>(
new IEditable::Geometry(0, 0, 100, 100))));
de.get()->SetName(std::string(editable_name));
- ec->Add(de);
+ ec->Add(de, edit_id);
return COMPLICATION_ERROR_NONE;
}
EditablesContainerStub* ec = static_cast<EditablesContainerStub*>(handle);
SharedHandle<IEditable>* sh = static_cast<SharedHandle<IEditable>*>(comp);
-
SharedHandle<IEditable>::Share(sh)->SetName(std::string(editable_name));
- ec->Add(SharedHandle<IEditable>::Share(sh));
+
+ if (ec->IsExist(edit_id)) {
+ LOGE("ID already exist");
+ return COMPLICATION_ERROR_EXIST_ID;
+ }
+ ec->Add(SharedHandle<IEditable>::Share(sh), edit_id);
LOGI("Add comp %d", edit_id);
return COMPLICATION_ERROR_NONE;
return COMPLICATION_ERROR_INVALID_PARAMETER;
IEditable* ie = static_cast<IEditable*>(handle);
- *editable_id = ie->GetId();
+ *editable_id = ie->GetEditableId();
return COMPLICATION_ERROR_NONE;
}
-1,
ComplicationConnector::GetInst().GetCmdStr(
ComplicationConnector::EditableEditPreview),
- g_variant_new("(iis)", cur_data_idx, ed.GetId(),
+ g_variant_new("(iis)", cur_data_idx, ed.GetEditableId(),
(context == nullptr) ? "" : context->ToString()));
return COMPLICATION_ERROR_NONE;
GList* list = NULL;
for (auto& i : e_list_) {
- LOGI("edit item %d", i.get()->GetId());
+ LOGI("edit item %d", i.get()->GetEditableId());
list = g_list_append(list, i.get());
}
for (auto& i : cb_list_) {
void OnSetupReply(int editable_id, std::unique_ptr<Bundle> context) override {
for (auto& i : e_list_) {
- LOGI("Setup reply!! %d, %d", i.get()->GetId(), editable_id);
- if (i.get()->GetId() == editable_id) {
+ LOGI("Setup reply!! %d, %d", i.get()->GetEditableId(), editable_id);
+ if (i.get()->GetEditableId() == editable_id) {
for (auto& j : setup_cb_list_) {
j->Invoke(i.get(), context.get()->GetRaw());
}
return ret;
}
- snprintf(ed_id, sizeof(ed_id), "%d", ed->GetId());
+ snprintf(ed_id, sizeof(ed_id), "%d", ed->GetEditableId());
LOGI("add ed_id %s", ed_id);
ret = _add_extra_data(&service, SETUP_EDITABLE_ID_KEY, ed_id);
if (ret != COMPLICATION_ERROR_NONE) {