Remove unloaded callback, rename loaded callback to changed callback.
When current theme changed, the changed callback will be invoked.
Change-Id: Ib528b63bdcae7a161e6bb9ef36130fe9f5d22605
Signed-off-by: Sangyoon Jang <jeremy.jang@samsung.com>
class ThemeEventHandler : public IThemeEvent {
public:
- explicit ThemeEventHandler(theme_loader_loaded_cb loaded_cb,
- theme_loader_unloaded_cb unloaded_cb, void* user_data)
- : loaded_cb_(loaded_cb), unloaded_cb_(unloaded_cb), userdata_(user_data) {}
+ explicit ThemeEventHandler(theme_loader_changed_cb changed_cb,
+ void* user_data) : changed_cb_(changed_cb), userdata_(user_data) {}
virtual ~ThemeEventHandler() = default;
- void OnThemeLoaded(const ThemeInfo* theme,
+ void OnThemeChanged(const ThemeInfo* theme,
const tizen_base::Bundle& args) override {
std::shared_ptr<ThemeInfo> shared_info(new ThemeInfo(*theme));
- loaded_cb_(static_cast<theme_h>(&shared_info), userdata_);
- }
-
- void OnThemeUnloaded(const std::string& id) override {
- unloaded_cb_(id.c_str(), userdata_);
+ changed_cb_(static_cast<theme_h>(&shared_info), userdata_);
}
private:
- theme_loader_loaded_cb loaded_cb_;
- theme_loader_unloaded_cb unloaded_cb_;
+ theme_loader_changed_cb changed_cb_;
void* userdata_;
};
}
extern "C" EXPORT_API int theme_loader_add_event(theme_loader_h handle,
- theme_loader_loaded_cb loaded, theme_loader_unloaded_cb unloaded,
- void* user_data, theme_loader_event_h* event_h) {
- if (handle == nullptr || loaded == nullptr ||
- unloaded == nullptr || event_h == nullptr) {
+ theme_loader_changed_cb changed, void* user_data,
+ theme_loader_event_h* event_h) {
+ if (handle == nullptr || changed == nullptr || event_h == nullptr) {
LOG(ERROR) << "Invalid parameter";
return THEME_MANAGER_ERROR_INVALID_PARAMETER;
}
std::shared_ptr<IThemeEvent> event_handler(new ThemeEventHandler(
- loaded, unloaded, user_data));
+ changed, user_data));
if (event_handler.get() == nullptr) {
LOG(ERROR) << "Out of memory";
return THEME_MANAGER_ERROR_OUT_OF_MEMORY;
*/
/**
- * @brief Called to get the loaded theme information.
+ * @brief Called to get the changed theme information.
* @since_tizen 6.0
* @remarks The @a handle should not be released
* @remarks @handle is valid only inside this function. If you want to keep it,
- * please use theme_clone().
- * @param[in] handle The loaded theme information.
+ * please use theme_clone().
+ * @param[in] handle The changed theme information.
* @param[in] user_data The user data passed from add event function.
* @return @c 0 on success,
* otherwise a negative value.
* @pre theme_loader_add_event() will invoke this callback.
* @see theme_loader_add_event()
*/
-typedef int (*theme_loader_loaded_cb) (theme_h handle, void *user_data);
-
-/**
- * @brief Called to get the unloaded theme ID.
- * @since_tizen 6.0
- * @remarks The @a id can be used only in the callback. To use outside, make a copy.
- * @param[in] id The ID of unloaded theme.
- * @param[in] user_data The user data passed from add event function.
- * @return @c 0 on success,
- * otherwise a negative value.
- * @pre theme_loader_add_event() will invoke this callback.
- * @see theme_loader_add_event()
- */
-typedef int (*theme_loader_unloaded_cb) (const char *id, void *user_data);
+typedef int (*theme_loader_changed_cb) (theme_h handle, void *user_data);
/**
* @brief The theme loader handle.
int theme_loader_destroy(theme_loader_h handle);
/**
- * @brief Registers a callback function to be invoked when the theme is being loaded or unloaded.
+ * @brief Registers a callback function to be invoked when the theme is being changed.
* @since_tizen 6.0
* @param[in] handle The theme loader handle
- * @param[in] loaded The callback function to be registered for theme load event
- * @param[in] unloaded The callback function to be registered for theme unload event
+ * @param[in] changed The callback function to be registered for theme changed event
* @param[in] user_data The user data to be passed to the callback function
* @param[out] event_h The theme event handle
* @return @c 0 on success,
* @see theme_loader_remove_event()
*/
int theme_loader_add_event(theme_loader_h handle,
- theme_loader_loaded_cb loaded, theme_loader_unloaded_cb unloaded,
- void *user_data, theme_loader_event_h* event_h);
+ theme_loader_changed_cb changed, void *user_data,
+ theme_loader_event_h* event_h);
/**
* @brief Unregisters a callback function.
UPDATE,
REMOVE,
CHANGED,
- REMOVED
};
extern const char kCmdDataKey[];
class IThemeEvent {
public:
virtual ~IThemeEvent() = default;
- virtual void OnThemeLoaded(const ThemeInfo* info,
+ virtual void OnThemeChanged(const ThemeInfo* info,
const tizen_base::Bundle& args) = 0;
- virtual void OnThemeUnloaded(const std::string& id) = 0;
};
} // namespace loader
const ThemeInfo* info = new ThemeInfo(b);
for (auto& listener : listeners_) {
std::shared_ptr<IThemeEvent> ev = listener.second;
- ev->OnThemeLoaded(info, args);
+ ev->OnThemeChanged(info, args);
}
delete info;
break;
}
- case dbus::Command::REMOVED: {
- std::string id = args.GetString(dbus::kCmdDataKey);
- for (auto& listener : listeners_) {
- std::shared_ptr<IThemeEvent> ev = listener.second;
- ev->OnThemeUnloaded(id);
- }
- break;
- }
default: {
LOG(ERROR) << "Invalid command type";
break;
dbus::RequestBroker::GetInst().RegisterRequestFilter(*changed_filter_);
}
- if (removed_filter_ == nullptr) {
- removed_filter_ =
- std::make_unique<dbus::RequestFilter>(dbus::Command::REMOVED,
- shared_from_this(), false);
- dbus::RequestBroker::GetInst().RegisterRequestFilter(*removed_filter_);
- }
-
std::size_t hash = std::hash<std::shared_ptr<IThemeEvent>>{}(ev);
std::string key(std::to_string(hash));
listeners_.insert(std::make_pair(key, std::move(ev)));
std::shared_ptr<ThemeInfo> cache_;
std::unique_ptr<dbus::RequestFilter> changed_filter_;
- std::unique_ptr<dbus::RequestFilter> removed_filter_;
std::map<std::string, std::shared_ptr<IThemeEvent>> listeners_;
};
gpointer user_data, GDestroyNotify noti) {
tizen_base::Bundle b;
GVariant* param = g_variant_new("(is)",
- static_cast<int>(ttm::dbus::Command::REMOVED),
+ static_cast<int>(ttm::dbus::Command::CHANGED),
reinterpret_cast<char*>(b.ToRaw().first.get()));
callback(nullptr, nullptr, nullptr, nullptr, nullptr, param, user_data);
return 1;
class ThemeEvent : public IThemeEvent {
public:
- void OnThemeLoaded(const ThemeInfo* theme,
+ void OnThemeChanged(const ThemeInfo* theme,
const tizen_base::Bundle& args) override {
}
-
- void OnThemeUnloaded(const std::string& id) override {
- }
};
class Mocks : public ::testing::NiceMock<GioMock> {};