Devide complication id and editable id for complication 43/174243/4
authorhyunho <hhstark.kang@samsung.com>
Thu, 29 Mar 2018 08:26:23 +0000 (17:26 +0900)
committerhyunho <hhstark.kang@samsung.com>
Fri, 30 Mar 2018 00:41:32 +0000 (09:41 +0900)
Compilcation id and editable id should be distinguish for CAPI

Change-Id: I1c6d30ce1749240d197864e5e66e0da6c7dddf0f
Signed-off-by: hyunho <hhstark.kang@samsung.com>
22 files changed:
unittest/src/test_complication.cc
unittest/src/test_design_element.cc
unittest/src/test_editables_container.cc
unittest/src/test_received_editable.cc
watchface-complication/complication-implementation.h
watchface-complication/complication.cc
watchface-complication/complication.h
watchface-complication/design-element-implementation.h
watchface-complication/design-element.cc
watchface-complication/design-element.h
watchface-complication/editable-interface.h
watchface-complication/editables-container.cc
watchface-complication/editables-container.h
watchface-complication/include/watchface-common.h
watchface-complication/include/watchface-complication.h
watchface-complication/received-editable-implementation.h
watchface-complication/received-editable.cc
watchface-complication/received-editable.h
watchface-complication/watchface-complication.cc
watchface-complication/watchface-editable.cc
watchface-editor/editables-editor.cc
watchface-editor/watchface-editor.cc

index 5c92468..b1ed4b4 100644 (file)
@@ -68,9 +68,9 @@ TEST_F(WC, Create)
   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)
@@ -170,7 +170,6 @@ TEST_F(WFC, GetData)
 
   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)
index 91c84fd..48ee379 100644 (file)
@@ -109,9 +109,9 @@ TEST_F(DE, GetShapeType)
   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)
index 9b2f069..2db5605 100644 (file)
@@ -109,7 +109,7 @@ TEST_F(EC, AddRemove)
   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);
 }
 
index 9e658ad..d94565a 100644 (file)
@@ -115,9 +115,9 @@ TEST_F(RE, GetShapeType)
   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)
index c8fcb3b..99c1d14 100755 (executable)
@@ -62,7 +62,8 @@ class Complication::Impl : ComplicationConnector::IEventListener {
 
  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_;
index 465dffb..b6dbc43 100755 (executable)
@@ -233,10 +233,19 @@ std::string Complication::Impl::GetProviderAppId() {
   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();
 }
index 45c6dc5..e4eca00 100755 (executable)
@@ -56,7 +56,9 @@ class EXPORT_API Complication : public IEditable
                     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;
@@ -74,12 +76,10 @@ class EXPORT_API Complication : public IEditable
   int GetCurType();
   int GetType(Bundle& data);
 
-
  public:
   static const char* GetProviderIdKey();
   static const char* GetProviderTypeKey();
 
-
  private:
   class Impl;
   std::unique_ptr<Impl> impl_;
index 56f9323..84df8df 100755 (executable)
@@ -46,7 +46,7 @@ class DesignElement::Impl {
 
  private:
   DesignElement* parent_;
-  int id_;
+  int id_ = -1;
   int default_data_idx_;
   int cur_data_idx_;
   int last_data_idx_;
index fb54e91..7460868 100755 (executable)
@@ -76,10 +76,15 @@ void DesignElement::Impl::RestoreStateOrSetDefault() {
   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();
 }
index 270318e..117adac 100755 (executable)
@@ -51,7 +51,8 @@ class EXPORT_API DesignElement : public IEditable {
   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;
index 0398b1f..85f9d4e 100755 (executable)
@@ -65,7 +65,8 @@ class IEditable {
     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;
index 39354b5..762ecd4 100755 (executable)
@@ -76,7 +76,7 @@ void EditablesContainer::Impl::OnSignal(const std::string& sender_name,
     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())
@@ -145,7 +145,7 @@ int EditablesContainer::RequestEdit(const std::string& editor_id) {
       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());
@@ -208,14 +208,23 @@ void EditablesContainer::OnUpdate(const IEditable& ed, int selected_idx,
 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;
index b5c5d19..7dd939c 100755 (executable)
@@ -31,12 +31,13 @@ class EXPORT_API EditablesContainer : IEditablesEditorEvent {
  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;
index 76053ab..cb66110 100755 (executable)
@@ -40,6 +40,7 @@ typedef enum _complication_error {
   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;
 
 /**
index 3e0725a..39caffe 100755 (executable)
@@ -57,9 +57,8 @@ int complication_update_cb_add(complication_h handle, on_complication_update cb,
                                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,
index 9274e2e..b4576ff 100755 (executable)
@@ -41,7 +41,7 @@ class ReceivedEditable::Impl {
 
  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_;
index 4ad2714..59ea6c2 100755 (executable)
@@ -78,10 +78,15 @@ ReceivedEditable::Impl::Impl(ReceivedEditable* parent, std::string raw)
   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();
 }
index f7145f8..e1d4105 100755 (executable)
@@ -49,7 +49,8 @@ class EXPORT_API ReceivedEditable : public IEditable {
   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;
index 4b026b9..b26d9a1 100755 (executable)
@@ -69,7 +69,7 @@ class WatchComplicationStub : public Complication {
   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");
   }
@@ -123,16 +123,6 @@ extern "C" EXPORT_API int complication_send_update_request(
   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,
index 338b547..c70664f 100755 (executable)
@@ -151,13 +151,17 @@ extern "C" EXPORT_API int editable_add_design_element(editable_container_h handl
     }
   }
 
+  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;
 }
@@ -170,9 +174,13 @@ extern "C" EXPORT_API int editable_add_complication(editable_container_h handle,
 
   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;
@@ -263,7 +271,7 @@ extern "C" EXPORT_API int editable_get_editable_id(const editable_h handle,
     return COMPLICATION_ERROR_INVALID_PARAMETER;
 
   IEditable* ie = static_cast<IEditable*>(handle);
-  *editable_id = ie->GetId();
+  *editable_id = ie->GetEditableId();
 
   return COMPLICATION_ERROR_NONE;
 }
index f4c79dd..b6662bf 100755 (executable)
@@ -118,7 +118,7 @@ int EditablesEditor::EditPreview(IEditable& ed, int cur_data_idx) {
     -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;
index d5b68b8..8d08286 100755 (executable)
@@ -77,7 +77,7 @@ class EditablesEditorStub : public EditablesEditor {
 
     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_) {
@@ -90,8 +90,8 @@ class EditablesEditorStub : public EditablesEditor {
   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());
         }
@@ -377,7 +377,7 @@ extern "C" EXPORT_API int editor_launch_setup_app(const editable_h handle,
     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) {