/* * Copyright (c) 2000 - 2017 Samsung Electronics Co., Ltd. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef __BADGE_INTERNAL_DEF_H__ #define __BADGE_INTERNAL_DEF_H__ #include #include #include #include #include "badge_error.h" #include "badge.h" #ifndef EXPORT_API #define EXPORT_API __attribute__ ((visibility("default"))) #endif #ifndef DEPRECATED #define DEPRECATED __attribute__((deprecated)) #endif #define BADGE_ERROR (badge_error_quark()) GQuark badge_error_quark(void); #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ typedef struct _badge_h badge_h; typedef struct badge_info { char *pkg; unsigned int badge_count; } badge_info_s; /** * @internal * @brief Checks whether badge service is ready. * @since_tizen 2.3 * @privlevel public * @privilege %http://tizen.org/privilege/notification * @remarks The specific error code can be obtained using the get_last_result() method. Error codes are described in Exception section. * @return 1 if badge service is ready, other value if badge service isn't ready * @retval BADGE_ERROR_NONE Success * @retval BADGE_ERROR_NOT_SUPPORTED Not supported * @retval BADGE_ERROR_SERVICE_NOT_READY Service is not ready */ int badge_is_service_ready(void); /** * @internal * @brief Adds deferred task. The registered task will be executed when badge service become ready. * @since_tizen 2.3 * @privlevel public * @privilege %http://tizen.org/privilege/notification * @param[in] badge_add_deferred_task The callback function * @param[in] user_data The user data to be passed to the callback function * @return #BADGE_ERROR_NONE if success, other value if failure * @retval BADGE_ERROR_NONE Success * @retval BADGE_ERROR_NOT_SUPPORTED Not supported * @retval BADGE_ERROR_PERMISSION_DENIED Permission denied * @retval BADGE_ERROR_OUT_OF_MEMORY Out of memory * @see #badge_error_e * @see badge_is_service_ready() */ int badge_add_deferred_task( void (*badge_add_deferred_task)(void *data), void *user_data); /** * @internal * @brief Removes deferred task. * @since_tizen 2.3 * @privlevel public * @privilege %http://tizen.org/privilege/notification * @param[in] badge_add_deferred_task The callback function * @return #BADGE_ERROR_NONE if success, other value if failure * @retval BADGE_ERROR_NONE Success * @retval BADGE_ERROR_NOT_SUPPORTED Not supported * @retval BADGE_ERROR_PERMISSION_DENIED Permission denied * @retval BADGE_ERROR_INVALID_PARAMETER Invalid parameter * @see #badge_error_e * @see badge_is_service_ready() */ int badge_del_deferred_task( void (*badge_add_deferred_task)(void *data)); /** * @internal * @brief Tests if the badge for the designated application exists or not. * @since_tizen 2.3 * @privlevel public * @privilege %http://tizen.org/privilege/notification * @param[in] app_id The name of the designated application * @param[out] existing The bool value of badge existence status * @return #BADGE_ERROR_NONE if success, other value if failure * @retval BADGE_ERROR_NONE Success * @retval BADGE_ERROR_NOT_SUPPORTED Not supported * @retval BADGE_ERROR_PERMISSION_DENIED Permission denied * @retval BADGE_ERROR_INVALID_PARAMETER Invalid parameter * @retval BADGE_ERROR_FROM_DB Error from DB * @retval BADGE_ERROR_OUT_OF_MEMORY Out of memory * @retval BADGE_ERROR_NOT_EXIST Not exist * @retval BADGE_ERROR_SERVICE_NOT_READY Service is not ready * @see #badge_error_e * @see badge_new() * @see badge_remove() * @par Sample code: * @code #include ... { int err = BADGE_ERROR_NONE; bool exist; err = badge_is_existing(app_id, &exist); if (err != BADGE_ERROR_NONE) { return; } } * @endcode */ int badge_is_existing(const char *app_id, bool *existing); char *_badge_get_pkgname_by_pid(void); int _badge_is_existing(const char *pkgname, bool *existing, uid_t uid); int _badge_get_list(GList **badge_list, uid_t uid); int _badge_insert(badge_h *badge, uid_t uid); int _badge_remove(const char *caller, const char *pkgname, uid_t uid, pid_t pid); int _badge_remove_by_pkgname(const char *pkgname, uid_t uid); int _badge_set_count(const char *caller, const char *pkgname, unsigned int count, uid_t uid, pid_t pid); int _badge_get_count(const char *pkgname, unsigned int *count, uid_t uid); int _badge_set_display(const char *pkgname, unsigned int is_display, uid_t uid); int _badge_get_display(const char *pkgname, unsigned int *is_display, uid_t uid); int _badge_free(badge_h *badge); badge_h *_badge_new(const char *pkgname, const char *writable_pkgs, int *err); char *_badge_pkgs_new(int *err, const char *pkg1, ...); void badge_changed_cb_call(unsigned int action, const char *pkgname, unsigned int count, uid_t uid); /** * @internal * @brief Creates a badge for the designated package. * @details Creates new badge to display. * @since_tizen 2.3 * @privlevel public * @privilege %http://tizen.org/privilege/notification * @param[in] pkgname The name of the designated package * @param[in] writable_pkg The name of package which is authorized to change the badge * @return #BADGE_ERROR_NONE if success, other value if failure * @retval #BADGE_ERROR_NOT_SUPPORTED Not supported * @see #badge_error_e * @par Sample code: * @code #include ... { int err = BADGE_ERROR_NONE; err = badge_create("org.tizen.sms", "org.tizen.sms2"); if (err != BADGE_ERROR_NONE) { return; } } * @endcode */ int badge_create(const char *pkgname, const char *writable_pkg); int badge_create_for_uid(const char *pkgname, const char *writable_pkg, uid_t uid); int badge_new_for_uid(const char *writable_app_id, uid_t uid); /** * @internal * @brief Creates a badge for the application specified by the badge_app_id. * @details Creates new badge to display. * @since_tizen 5.5 * @privlevel public * @privilege %http://tizen.org/privilege/notification * @param[in] badge_app_id The id of the application for which the badge will be created. This should be the same package id with the caller application's package id * @param[in] writable_app_id The id of the application which is authorized to change the badge * @return #BADGE_ERROR_NONE if success, other value if failure * @retval #BADGE_ERROR_NONE Success * @retval #BADGE_ERROR_PERMISSION_DENIED Permission denied * @retval #BADGE_ERROR_INVALID_PARAMETER Invalid parameter * @retval #BADGE_ERROR_IO_ERROR Error from I/O * @retval #BADGE_ERROR_SERVICE_NOT_READY Service is not ready * @retval #BADGE_ERROR_INVALID_PACKAGE Error while caller package is different with the id of the application badge creates * @see #badge_error_e * @par Sample code: * @code #include { int err = BADGE_ERROR_NONE; err = badge_new_for(badge_app_id,app_id); if(err != BADGE_ERROR_NONE) { return; } } * @endcode */ int badge_new_for(const char *badge_app_id, const char *writable_app_id); int badge_new_for_for_uid(const char *badge_app_id, const char *writable_app_id, uid_t uid); int badge_add_for_uid(const char *badge_app_id, uid_t uid); int badge_remove_for_uid(const char *app_id, uid_t uid); int badge_is_existing_for_uid(const char *app_id, bool *existing, uid_t uid); int badge_foreach_for_uid(badge_foreach_cb callback, void *user_data, uid_t uid); int badge_set_count_for_uid(const char *app_id, unsigned int count, uid_t uid); int badge_get_count_for_uid(const char *app_id, unsigned int *count, uid_t uid); int badge_set_display_for_uid(const char *app_id, unsigned int is_display, uid_t uid); int badge_get_display_for_uid(const char *app_id, unsigned int *is_display, uid_t uid); int badge_register_changed_cb_for_uid(badge_change_cb callback, void *data, uid_t uid); int badge_unregister_changed_cb_for_uid(badge_change_cb callback, uid_t uid); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* __BADGE_INTERNAL_DEF_H__ */