From: Denis Dolzhenko Date: Mon, 25 Sep 2017 09:35:49 +0000 (+0300) Subject: Refactor cast mathod in View and ViewItem clases. X-Git-Tag: submit/tizen_4.0/20170927.132058^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a3294acbe9990b57b4aa3a76c22c9d353c8ec6e8;p=profile%2Fwearable%2Fapps%2Fnative%2Fmessage.git Refactor cast mathod in View and ViewItem clases. Fix svace issue. Change-Id: I4d0a15fadcd4c0e45029c1c315b333166351dbe6 Signed-off-by: Denis Dolzhenko --- diff --git a/src/Common/View/inc/View.h b/src/Common/View/inc/View.h index 55782b3..fce7a89 100644 --- a/src/Common/View/inc/View.h +++ b/src/Common/View/inc/View.h @@ -236,11 +236,9 @@ namespace Msg { static void addSignalCb(Evas_Object *obj, const char *emission, const char *source, Edje_Signal_Cb func, void *data); template - static T staticCast(void *evasObj); + static T* staticCast(const void *evasObj); template - static T reinterpretCast(void *evasObj); - template - static T dynamicCast(void *evasObj); + static T* dynamicCast(const void *evasObj); /** * @brief Gets text placed in specified part. @@ -311,10 +309,7 @@ namespace Msg { View(View&) = delete; View& operator=(View&) = delete; Evas_Object_Event_Cb getCb(Evas_Callback_Type); - void *getData() const; - static void *getData(Evas_Object *obj); - void setData(const void *data); - static void setData(Evas_Object *obj, const void *data); + static View *getThis(const Evas_Object *obj); private: static void on_free_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -477,32 +472,16 @@ namespace Msg { return evas_object_data_get(m_pEo, key); } - inline void View::setData(const void *data) - { - setData(m_pEo, data); - } - - inline void *View::getData() const - { - return getData(m_pEo); - } - - template - inline T View::staticCast(void *evasObj) - { - return static_cast(getData((Evas_Object*)evasObj)); - } - template - inline T View::reinterpretCast(void *evasObj) + inline T* View::staticCast(const void *evasObj) { - return reinterpret_cast(getData((Evas_Object*)evasObj)); + return static_cast(getThis((Evas_Object*)evasObj)); } template - inline T View::dynamicCast(void *evasObj) + inline T* View::dynamicCast(const void *evasObj) { - return dynamic_cast(staticCast(evasObj)); + return dynamic_cast(staticCast(evasObj)); } inline void View::addEventCb(Evas_Callback_Type type, Evas_Object_Event_Cb func, const void *data) diff --git a/src/Common/View/inc/ViewItem.h b/src/Common/View/inc/ViewItem.h index 408998a..5cae251 100644 --- a/src/Common/View/inc/ViewItem.h +++ b/src/Common/View/inc/ViewItem.h @@ -72,12 +72,6 @@ namespace Msg */ void *getData() const; - /** - * @brief Sets item-data. - * @param[in] data item-data. - */ - void setData(void *data); - /** * @brief Gets Elm_Object_Item current view-item is wrapping. * @return wrapped object-item. @@ -137,11 +131,9 @@ namespace Msg static void setStyle(Elm_Object_Item *it, const char *style); template - static T staticCast(void *elmObjectItem); - template - static T reinterpretCast(void *elmObjectItem); + static T* staticCast(const void *elmObjectItem); template - static T dynamicCast(void *elmObjectItem); + static T* dynamicCast(const void *elmObjectItem); protected: virtual ~ViewItem(); @@ -149,6 +141,7 @@ namespace Msg void setElmObjItem(Elm_Object_Item *item); private: + static ViewItem *getThis(const Elm_Object_Item *item); static void on_delete_cb(void *data, Evas_Object *obj, void *event_info); }; @@ -172,11 +165,6 @@ namespace Msg return elm_object_item_data_get(getElmObjItem()); } - inline void ViewItem::setData(void *data) - { - elm_object_item_data_set(getElmObjItem(), data); - } - inline void ViewItem::disabled(bool val) { elm_object_item_disabled_set(getElmObjItem(), val); @@ -228,22 +216,21 @@ namespace Msg elm_object_item_style_set(it, style); } - template - inline T ViewItem::staticCast(void *elmObjectItem) + inline ViewItem *ViewItem::getThis(const Elm_Object_Item *item) { - return static_cast(elm_object_item_data_get((Elm_Object_Item*)elmObjectItem)); + return (ViewItem*)elm_object_item_data_get(item); } template - inline T ViewItem::reinterpretCast(void *elmObjectItem) + inline T* ViewItem::staticCast(const void *elmObjectItem) { - return reinterpret_cast(elm_object_item_data_get((Elm_Object_Item*)elmObjectItem)); + return static_cast(getThis((Elm_Object_Item*)elmObjectItem)); } template - inline T ViewItem::dynamicCast(void *elmObjectItem) + inline T* ViewItem::dynamicCast(const void *elmObjectItem) { - return dynamic_cast(staticCast(elmObjectItem)); + return dynamic_cast(staticCast(elmObjectItem)); } } diff --git a/src/Common/View/src/ListView.cpp b/src/Common/View/src/ListView.cpp index 4bce3b9..9e1815f 100644 --- a/src/Common/View/src/ListView.cpp +++ b/src/Common/View/src/ListView.cpp @@ -141,10 +141,13 @@ bool ListView::sortedInsertItem(ListItem &listItem, ListItem *parent) [](const void *data1, const void *data2)->int { int res = 0; - ListItem *item1 = (ListItem*)elm_object_item_data_get((Elm_Object_Item*)data1); - ListItem *item2 = (ListItem*)elm_object_item_data_get((Elm_Object_Item*)data2); - if (item1->m_pOwner->m_CmpFunc) - res = normalizeCmpValue(item1->m_pOwner->m_CmpFunc(*item1, *item2)); + auto *item1 = ViewItem::staticCast(data1); + auto *item2 = ViewItem::staticCast(data2); + if (item1 && item2) { + auto cmpFunc = item1->m_pOwner->m_CmpFunc; + if (cmpFunc) + res = normalizeCmpValue(cmpFunc(*item1, *item2)); + } return res; }, on_item_selected_cb, @@ -241,7 +244,7 @@ void ListView::setHomogeneous(bool isHomogeneous) ListItem *ListView::getSelectedItem() const { Elm_Object_Item *elmItem = elm_genlist_selected_item_get(getEo()); - return ListItem::staticCast(elmItem); + return ListItem::staticCast(elmItem); } unsigned ListView::getItemsCount() const @@ -251,12 +254,12 @@ unsigned ListView::getItemsCount() const ListItem *ListView::getNextItem(ListItem &item) const { - return ListItem::staticCast(elm_genlist_item_next_get(item)); + return ListItem::staticCast(elm_genlist_item_next_get(item)); } ListItem *ListView::getPrevItem(ListItem &item) const { - return ListItem::staticCast(elm_genlist_item_prev_get(item)); + return ListItem::staticCast(elm_genlist_item_prev_get(item)); } void ListView::demoteItem(ListItem &item) @@ -276,7 +279,7 @@ void ListView::setFilter(void *key) void ListView::notifyListener(void *data, Evas_Object *obj, void *event_info, ListenerMethod method) { - ListItem *item = ListItem::staticCast(event_info); + auto *item = ListItem::staticCast(event_info); MSG_ASSERT(item, "Item is null"); if (item) @@ -357,7 +360,7 @@ unsigned ListView::getCheckableItemsCount() const void ListView::on_item_selected_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + auto *item = ListItem::staticCast(event_info); item->setSelected(false); if (item->getOwner()->getCheckMode() && item->isCheckable()) { @@ -372,19 +375,19 @@ void ListView::on_item_selected_cb(void *data, Evas_Object *obj, void *event_inf void ListView::on_realized_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + auto *item = ListItem::staticCast(event_info); item->onRealized(*item); } void ListView::on_unrealized_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + auto *item = ListItem::staticCast(event_info); item->onUnrealized(*item); } void ListView::on_longpressed_cb(void *data, Evas_Object *obj, void *event_info) { - ListItem *item = ListItem::staticCast(event_info); + auto *item = ListItem::staticCast(event_info); item->setSelected(false); if (!item->getOwner()->getCheckMode()) notifyListener(data, obj, event_info, &IListViewListener::onListItemLongPressed); diff --git a/src/Common/View/src/NaviFrameView.cpp b/src/Common/View/src/NaviFrameView.cpp index e57838a..b8cff2e 100644 --- a/src/Common/View/src/NaviFrameView.cpp +++ b/src/Common/View/src/NaviFrameView.cpp @@ -69,7 +69,7 @@ bool NaviFrameView::isLastFrame() const NaviFrameItem *NaviFrameView::getTopFrame() const { - return ViewItem::staticCast(elm_naviframe_top_item_get(getEo())); + return ViewItem::staticCast(elm_naviframe_top_item_get(getEo())); } unsigned NaviFrameView::getItemsCount() const diff --git a/src/Common/View/src/View.cpp b/src/Common/View/src/View.cpp index a9fb80e..92db85a 100644 --- a/src/Common/View/src/View.cpp +++ b/src/Common/View/src/View.cpp @@ -63,17 +63,15 @@ void View::setEventCb(Evas_Callback_Type type) void View::setEo(Evas_Object *eo) { - if (m_pEo) - { + if (m_pEo) { MSG_LOG_ERROR("m_pEo not null"); assert(false); } BaseView::setEo(eo); - if (eo) - { - setData(this); + if (eo) { + evas_object_data_set(eo, thisKey, this); setEventCb(EVAS_CALLBACK_FREE); setEventCb(EVAS_CALLBACK_DEL); } @@ -161,14 +159,9 @@ Evas_Object *View::addIconButton(Evas_Object *parent, const std::string &iconNam return button; } -void View::setData(Evas_Object *obj, const void *data) -{ - evas_object_data_set(obj, thisKey, (void*)data); -} - -void *View::getData(Evas_Object *obj) +View *View::getThis(const Evas_Object *obj) { - return evas_object_data_get(obj, thisKey); + return static_cast(evas_object_data_get(obj, thisKey)); } std::string Msg::markupToUtf8(const char *str) diff --git a/src/Common/View/src/ViewItem.cpp b/src/Common/View/src/ViewItem.cpp index c1339f9..068a760 100644 --- a/src/Common/View/src/ViewItem.cpp +++ b/src/Common/View/src/ViewItem.cpp @@ -29,7 +29,7 @@ ViewItem::~ViewItem() void ViewItem::setElmObjItem(Elm_Object_Item *item) { BaseView::setEo(item); - setData(this); + elm_object_item_data_set(getElmObjItem(), this); elm_object_item_del_cb_set(getElmObjItem(), on_delete_cb); onAttached(*this); }