diff options
author | Yeongil Jang <yg0577.jang@samsung.com> | 2012-09-21 00:19:43 +0900 |
---|---|---|
committer | Yeongil Jang <yg0577.jang@samsung.com> | 2012-09-21 00:19:43 +0900 |
commit | 6d5a5230487644957ac52c689af2395c3267338a (patch) | |
tree | 2b233f37b8629da2893cf09ce5dd0262e337c1e9 /include | |
parent | a51a532adbad8e61d9917d43a98a73a5dea67a83 (diff) | |
download | calendar-master.tar.gz calendar-master.tar.bz2 calendar-master.zip |
2.0_alpha release commitHEADsubmit/master/20120920.1528342.0_alphamaster2.0alpha
Diffstat (limited to 'include')
-rwxr-xr-x | include/calendar.h | 1852 | ||||
-rwxr-xr-x | include/calendar_attendee.h | 61 | ||||
-rw-r--r--[-rwxr-xr-x] | include/calendar_private.h | 30 | ||||
-rwxr-xr-x | include/calendar_types.h | 323 |
4 files changed, 1584 insertions, 682 deletions
diff --git a/include/calendar.h b/include/calendar.h index cb12a45..74020d0 100755 --- a/include/calendar.h +++ b/include/calendar.h @@ -11,17 +11,17 @@ * 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. + * limitations under the License. */ - + #ifndef __TIZEN_SOCIAL_CALENDAR_CALENDAR_H__ #define __TIZEN_SOCIAL_CALENDAR_CALENDAR_H__ #include <tizen.h> #include <time.h> -#include <calendar_attendee.h> -#include <calendar_types.h> +#include "calendar_attendee.h" +#include "calendar_types.h" #ifdef __cplusplus @@ -36,9 +36,9 @@ extern "C" { /** * @brief Connects to the calendar service. * - * @details Opening connection is necessary to access the calendar database. + * @details Opening connection is necessary to access the calendar database. * All operations like inserting, updating, or deleting calendar require opened connection to work properly. - + * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_DB_FAILED No access to database @@ -61,27 +61,56 @@ int calendar_connect(void); int calendar_disconnect(void); /** - * @brief Retrieves all timezone information supported on a device. + * @brief Begins transaction to calendar database * - * @param[in] callback The callback function to invoke - * @param[in] user_data The user data to be passed to the callback function + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_timezone_cb(). + * @see calendar_connect() + * @see calendar_rollback_transaction() + * @see calendar_commit_transaction() + */ +int calendar_begin_transaction(void); + +/** + * @brief Rollbacks transaction to calendar database * - * @see calendar_foreach_timezone_cb() - * @see calendar_event_set_timezone() - * @see calendar_todo_set_timezone() + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + * @see calendar_begin_transaction() + * @see calendar_commit_transaction() */ -int calendar_foreach_timezone(calendar_foreach_timezone_cb callback, void *user_data); +int calendar_rollback_transaction(void); /** - * @brief Registers a callback function to be invoked when any database change occur. + * @brief Commits transaction to calendar database + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database * - * @param[in] callback The callback function to invoke + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + * @see calendar_begin_transaction() + * @see calendar_rollback_transaction() + */ +int calendar_commit_transaction(void); + + +/** + * @brief Registers a callback function to be invoked when any database change occurs. + * + * @param[in] callback The callback function to invoke + * @param[in] type The notification type to subscribe * @param[in] user_data The user data to be passed to the callback function * * @return 0 on success, otherwise a negative error value. @@ -90,19 +119,26 @@ int calendar_foreach_timezone(calendar_foreach_timezone_cb callback, void *user_ * * @pre This function requires an open connection to the calendar service by calendar_connect(). * @post calendar_db_changed_cb() will be invoked. - * + * * @see calendar_db_changed_cb() - * @see calendar_unset_db_changed_cb() + * @see calendar_remove_db_changed_cb() + * @see calendar_book_insert_to_db() + * @see calendar_book_update_to_db() + * @see calendar_book_delete_from_db() * @see calendar_event_insert_to_db() * @see calendar_event_update_to_db() * @see calendar_event_delete_from_db() + * @see calendar_todo_insert_to_db() + * @see calendar_todo_update_to_db() + * @see calendar_todo_delete_from_db() */ -int calendar_set_db_changed_cb(calendar_db_changed_cb callback, void *user_data); +int calendar_add_db_changed_cb(calendar_db_changed_cb callback, calendar_db_changed_cb_type_e type, void *user_data); /** * @brief Unregisters the callback function. * * @param[in] callback The callback function to unregister + * @param[in] type The notification type to unregister callback * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -110,9 +146,23 @@ int calendar_set_db_changed_cb(calendar_db_changed_cb callback, void *user_data) * * @pre This function requires an open connection to the calendar service by calendar_connect(). * @see calendar_db_changed_cb() - * @see calendar_set_db_changed_cb() + * @see calendar_add_db_changed_cb() + */ +int calendar_remove_db_changed_cb(calendar_db_changed_cb callback, calendar_db_changed_cb_type_e type); + +/** + * @brief Gets the calendar database version. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_DB_FAILED Database operation failure + * + * @see calendar_connect() + * @see calendar_query_event_by_version() + * @see calendar_query_todo_by_version() */ -int calendar_unset_db_changed_cb(calendar_db_changed_cb callback); +int calendar_get_db_version(int* calendar_db_version); /** * @} @@ -144,7 +194,7 @@ int calendar_event_create(calendar_event_h *event); /** * @brief Destroys the calendar event handle and releases all its resources. * - * @param[out] event The calendar event handle + * @param[out] event The calendar event handle * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -158,10 +208,10 @@ int calendar_event_destroy(calendar_event_h event); /** * @brief Adds a calendar event to the calendar database. * - * @param[in] event The calendar event handle - * @param[in] calendar_db_id The calendar database ID to which the event insert. \n - * 1 means the default calendar on the device - * @param[out] event_db_id The event db ID associated with the calendar event \n + * @param[in] event The calendar event handle + * @param[in] calendar_book_db_id The calendar book database ID to which the event insert. \n + * #DEFAULT_EVENT_CALENDAR_BOOK_DB_ID means the default event calendar book on the device + * @param[out] event_db_id The event database ID associated with the calendar event \n * If the function fails, it is -1. * * @return 0 on success, otherwise a negative error value. @@ -174,12 +224,12 @@ int calendar_event_destroy(calendar_event_h event); * @see calendar_event_update_to_db() * @see calendar_event_delete_from_db() */ -int calendar_event_insert_to_db(calendar_event_h event, int calendar_db_id, int *event_db_id); +int calendar_event_insert_to_db(calendar_event_h event, int calendar_book_db_id, int *event_db_id); /** * @brief Removes the calendar event from the calendar database. * - * @param[in] event_id The event ID to delete + * @param[in] event_db_id The database event ID to delete * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -191,13 +241,13 @@ int calendar_event_insert_to_db(calendar_event_h event, int calendar_db_id, int * @see calendar_event_insert_to_db() * @see calendar_event_update_to_db() */ -int calendar_event_delete_from_db(int event_id); +int calendar_event_delete_from_db(int event_db_id); /** * @brief Updates the calendar event in the calendar database. * @details calendar_event_get_db_id() is called internally to update in the calendar database to get the event ID in the calendar database. * - * @param[in] event The calendar event handle + * @param[in] event The calendar event handle * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -218,9 +268,9 @@ int calendar_event_update_to_db(calendar_event_h event); /** * @brief Gets the calendar event from the calendar database. * @details This function gets the new calendar event handle with the given event database ID from the calendar database. \n - * The new calendar event handle will be created. + * The new calendar event handle will be created. * - * @remarks The created calendar event handle must be released with calendar_event_destroy() by you. + * @remarks The created calendar event handle must be released with calendar_event_destroy() by you. * * * @param[in] event_id The event ID @@ -235,14 +285,14 @@ int calendar_event_update_to_db(calendar_event_h event); * * @see calendar_event_destroy() */ -int calendar_event_get_from_db(int event_id, calendar_event_h *event); +int calendar_event_get_from_db(int event_db_id, calendar_event_h *event); /** - * @brief Gets the database ID associated with the given calendar event handle. + * @brief Gets the database ID associated with the given calendar event handle. * * @param[in] event The calendar event handle * @param[out] event_db_id The event database ID fetched from the calendar event handle (default : 0) \n - * 0 means the event is not in calendar database. + * 0 means the event is not in calendar database. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -254,11 +304,11 @@ int calendar_event_get_from_db(int event_id, calendar_event_h *event); int calendar_event_get_db_id(calendar_event_h event, int *event_db_id); /** - * @brief Gets the calendar database ID associated with the given calendar event handle. + * @brief Gets The calendar book database ID associated with the given calendar event handle. * * @param[in] event The calendar event handle - * @param[out] calendar_db_id The calendar database ID fetched from the calendar event handle (default : 0) \n - * 0 means the event is not in calendar database. + * @param[out] calendar_book_db_id The calendar book database ID fetched from the calendar event handle (default : 0) \n + * 0 means the event is not in calendar database. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -266,14 +316,14 @@ int calendar_event_get_db_id(calendar_event_h event, int *event_db_id); * * @see calendar_event_insert_to_db() */ -int calendar_event_get_calendar_db_id(calendar_event_h event, int *calendar_db_id); +int calendar_event_get_calendar_book_db_id(calendar_event_h event, int *calendar_book_db_id); /** * @brief Gets the subject of the event from the calendar event handle . * * @remarks @a subject must be released with free() by you. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [out] subject The subject of the event \n If the subject does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. @@ -285,11 +335,10 @@ int calendar_event_get_calendar_db_id(calendar_event_h event, int *calendar_db_i */ int calendar_event_get_subject(calendar_event_h event, char **subject); - /** * @brief Sets the subject of the event in the calendar event handle. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [in] subject The subject of the event * * @return 0 on success, otherwise a negative error value. @@ -300,13 +349,12 @@ int calendar_event_get_subject(calendar_event_h event, char **subject); */ int calendar_event_set_subject(calendar_event_h event, const char *subject); - /** * @brief Gets the description of the event from the calendar event handle. * - * @remarks @a description must be released with free() by you. + * @remarks @a description must be released with free() by you. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [out] description The description of the event \n If the description does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. @@ -317,11 +365,10 @@ int calendar_event_set_subject(calendar_event_h event, const char *subject); */ int calendar_event_get_description(calendar_event_h event, char **description); - /** * @brief Sets a description of the event in the calendar event handle. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [in] description The description of the event * * @return 0 on success, otherwise a negative error value. @@ -332,11 +379,72 @@ int calendar_event_get_description(calendar_event_h event, char **description); */ int calendar_event_set_description(calendar_event_h event, const char *description); +/** + * @brief Gets the start time of the event from the calendar event handle. + * + * @param [in] event The calendar event handle + * @param [out] start_time The start date of the event \n + * The @a start_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NO_DATA Data not found + * + * @see calendar_event_set_start_time() + */ +int calendar_event_get_start_time(calendar_event_h event, long long int *start_time); + +/** + * @brief Sets a start time of the event in the calendar event handle. + * + * @param [in] event The calendar event handle + * @param [in] start_time The start date of the event \n + * The @a start_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_start_time() + */ +int calendar_event_set_start_time(calendar_event_h event, long long int start_time); + +/** + * @brief Gets the end time of the event from the calendar event handle. + * + * @param [in] event The calendar event handle + * @param [out] end_time The end date of the event\n + * The @a end_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NO_DATA Data not found + * + * @see calendar_event_set_end_time() + */ +int calendar_event_get_end_time(calendar_event_h event, long long int *end_time); + +/** + * @brief Sets the end time of the event in the calendar event handle. + * + * @param[in] event The calendar event handle + * @param[in] end_time The end date of the event\n + * The @a end_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_end_time() + */ +int calendar_event_set_end_time(calendar_event_h event, long long int end_time); /** * @brief Gets an all-day event property of the calendar event handle. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [out] is_all_day_event @c true if the event lasts for an entire day, otherwise @c false \n * (default : @c false) * @@ -348,30 +456,54 @@ int calendar_event_set_description(calendar_event_h event, const char *descripti */ int calendar_event_get_is_all_day_event(calendar_event_h event, bool *is_all_day_event); - /** - * @brief Sets an all-day event property of the calendar event handle. + * @brief Sets an all-day event with date range * - * @param [in] event The calendar event handle - * @param [in] is_all_day_event The all-day event type \n - * @c true if the event will last for an entire day, otherwise @c false \n - * (default : @c false) + * @param [in] event The calendar event handle + * @param [in] start_year Year of start date + * @param [in] start_month Month of start date + * @param [in] start_day Day of start date + * @param [in] end_year Year of end date + * @param [in] end_month Month of end date + * @param [in] end_day Day of end date * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * * @see calendar_event_get_is_all_day_event() + * @see calendar_event_get_all_day_event() */ -int calendar_event_set_is_all_day_event(calendar_event_h event, bool is_all_day_event); +int calendar_event_set_all_day_event(calendar_event_h event, int start_year, int start_month, int start_day, + int end_year, int end_month, int end_day); +/** + * @brief Gets an all-day event date range + * + * @param [in] event The calendar event handle + * @param [out] start_year Year of start date + * @param [out] start_month Month of start date + * @param [out] start_day Day of start date + * @param [out] end_year Year of end date + * @param [out] end_month Month of end date + * @param [out] end_day Day of end date + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_is_all_day_event() + * @see calendar_event_set_all_day_event() + */ +int calendar_event_get_all_day_event(calendar_event_h event, int *start_year, int *start_month, int *start_day, + int *end_year, int *end_month, int *end_day); /** * @brief Gets the location of the event from the calendar event handle. * - * @remarks @a location must be released with free() by you. + * @remarks @a location must be released with free() by you. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [out] location The location of the event \n If the location does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. @@ -382,11 +514,10 @@ int calendar_event_set_is_all_day_event(calendar_event_h event, bool is_all_day_ */ int calendar_event_get_location(calendar_event_h event, char **location); - /** * @brief Sets a location of the event in the calendar event handle. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [in] location The location of the event * * @return 0 on success, otherwise a negative error value. @@ -397,15 +528,14 @@ int calendar_event_get_location(calendar_event_h event, char **location); */ int calendar_event_set_location(calendar_event_h event, const char *location); - /** * @brief Gets the reminder of the event from the calendar event handle. * @details The function returns reminder type and interval of the event. - * * - * @param [in] event The calendar event handle - * @param [out] reminder_interval_type The reminder type - * @param [out] reminder_interval The interval + * + * @param [in] event The calendar event handle + * @param [out] reminder_interval_type The reminder type + * @param [out] reminder_interval The interval * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -415,13 +545,12 @@ int calendar_event_set_location(calendar_event_h event, const char *location); */ int calendar_event_get_reminder(calendar_event_h event, calendar_reminder_interval_type_e *reminder_interval_type, int *reminder_interval); - /** * @brief Sets a reminder of the event in the calendar event handle. * * @remarks If reminder is set, the alarm will remind the event with in-house calendar application. * - * @param [in] event The calendar event handle + * @param [in] event The calendar event handle * @param [in] reminder_interval_type The reminder interval type * @param [in] reminder_interval The reminder interval * @@ -434,556 +563,825 @@ int calendar_event_get_reminder(calendar_event_h event, calendar_reminder_interv int calendar_event_set_reminder(calendar_event_h event, calendar_reminder_interval_type_e reminder_interval_type, int reminder_interval); /** - * @brief Gets the recurrence frequency of the event from the calendar event handle. + * @brief Gets the sound file path from the event handle. + * + * @remarks @a sound_file_path must be released with free() by you. + * + * @param[in] event The calendar event handle + * @param[out] sound_file_path The sound file path \n + * If @a sound_file_path does not exist, it is NULL + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_set_reminder_sound_file_path() + */ +int calendar_event_get_reminder_sound_file_path(calendar_event_h event, char **sound_file_path); + +/** + * @brief Sets the sound file path to the event handle. * - * @param[in] event The calendar event handle - * @param[out] recurrence_frequency The recurrence type of the event + * @param[in] event The calendar event handle + * @param[in] sound_file_path The sound file path to set * * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_reminder_sound_file_path() + */ +int calendar_event_set_reminder_sound_file_path(calendar_event_h event, const char *sound_file_path); + +/** + * @brief Creates a attendee handle and make adds it to the calendar event. + * + * @remarks The created handle is not added to calendar database until calendar_event_insert_to_db() is called + * + * @param[in] event The calendar event handle + * @param[out] attendee A new attendee handle + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_remove_attendee() + * @see calendar_attendee_set_name() + * @see calendar_attendee_set_email() + * @see calendar_attendee_set_phone_number() + * @see calendar_event_get_attendee_iterator() + */ +int calendar_event_add_attendee(calendar_event_h event, calendar_attendee_h* attendee); + +/** + * @brief Creates a attendee handle with contact ID and adds it to the calendar event. + * + * @details Adds an existing contact as an attendee to an event. A new attendee record is created, and the name, email address and phone number are populated from the values in the contact record. + * @remarks The created handle is not added to calendar database until calendar_event_insert_to_db() is called + * + * + * @param[in] event The calendar event handle + * @param[in] contact_db_id The contact DB ID which is related to attendee + * @param[out] attendee A new attendee handle from contact ID in the contacts database + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @pre This function requires an open connection to Contacts Service by contacts_connect(). + * + * @see calendar_event_remove_attendee() + * @see calendar_attendee_set_name() + * @see calendar_attendee_set_email() + * @see calendar_attendee_set_phone_number() + * @see calendar_event_get_attendee_iterator() + * @see contact_get_db_id() + * @see contact_get_from_db() + * @see calendar_attendee_get_phone_number() + */ +int calendar_event_add_attendee_with_contact(calendar_event_h event, int contact_db_id, calendar_attendee_h* attendee); + +/** + * @brief Removes the attendee from the calendar event handle. + * + * + * @param[in] event The calendar event handle + * @param[in] attendee The attendee handle + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_add_attendee() + * @see calendar_event_get_attendee_iterator() + */ +int calendar_event_remove_attendee(calendar_event_h event, calendar_attendee_h attendee); + +/** + * @brief Gets the attendee iterator handle from the event handle. + * + * @param[in] event The calendar event handle + * @param[out] iterator The attendee iterator handle + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_attendee_iterator_has_next() + * @see calendar_attendee_iterator_next() + * + */ +int calendar_event_get_attendee_iterator(calendar_event_h event, calendar_attendee_iterator_h *iterator); + +/** + * @brief Gets the last modified time of the event handle. + * + * @param[in] event The calendar event handle + * @param[out] modified_time The last modified time of event \n + * The @a modified_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NO_DATA Data not found + * + * @see calendar_event_insert_to_db() + * @see calendar_event_update_to_db() + */ +int calendar_event_get_last_modified_time(calendar_event_h event, long long int *modified_time); + +/** + * @brief Gets the visibility for the given calendar event handle. + * + * @param[in] event The calendar event handle + * @param[out] visibility The visibility of the event \n (default : #CALENDAR_VISIBILITY_PUBLIC) + * + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_set_recurrence_frequency() - * @see calendar_event_set_recurrence_week_flag() - * @see calendar_event_get_recurrence_week_flag() - * @see calendar_event_add_recurrence_exception_date() + * @see calendar_event_set_visibility() */ -int calendar_event_get_recurrence_frequency(calendar_event_h event, calendar_recurrence_frequency_e *recurrence_frequency); +int calendar_event_get_visibility(calendar_event_h event, calendar_visibility_e *visibility); +/** + * @brief Sets the visibility for the given calendar event handle. + * + * @param[in] event The calendar event handle + * @param[in] visibility The visibility of the event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_visibility() + */ +int calendar_event_set_visibility(calendar_event_h event, calendar_visibility_e visibility); /** - * @brief Sets a recurrence frequency of the event in the calendar event handle. + * @brief Gets the category for the given calendar event handle. + * @remarks @a categories must be released with free() by you. * - * @param [in] event The calendar event handle - * @param [in] recurrence_frequency The recurrence frequency of the event \n - * If you set it to #CALENDAR_RECURRENCE_WEEKLY, you have to set calendar_event_set_recurrence_week_flag(). + * @param[in] event The calendar event handle + * @param[out] categories The category of the event \n Multiple categories are seperated by "," * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_recurrence_frequency() - * @see calendar_event_set_recurrence_week_flag() - * @see calendar_event_get_recurrence_week_flag() - * @see calendar_event_add_recurrence_exception_date() + * @see calendar_event_set_categories() */ -int calendar_event_set_recurrence_frequency(calendar_event_h event, calendar_recurrence_frequency_e recurrence_frequency); +int calendar_event_get_categories(calendar_event_h event, char **categories); /** - * @brief Gets the recurrence frequency of the event in the calendar event handle. + * @brief Sets the category for the given calendar event handle. * - * @remarks This function is valid only if recurrence frequency of the event is #CALENDAR_RECURRENCE_WEEKLY. + * @param[in] event The calendar event handle + * @param[in] categories The category of the event \n Multiple categories are seperated by "," * - * @param[in] event The calendar event handle - * @param[out] week_flag The days of week flag of the event \n It supports "OR"ing combination of #calendar_week_flag_e. \n eg) #CALENDAR_WEEK_FLAG_TUE | #CALENDAR_WEEK_FLAG_FRI + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @return 0 on success, otherwise a negative error value. + * @see calendar_event_get_categories() + */ +int calendar_event_set_categories(calendar_event_h event, const char *categories); + +/** + * @brief Gets the status for the given calendar event handle. + * + * @param[in] event The calendar event handle + * @param[out] status The status of the event \n (default : #CALENDAR_EVENT_STATUS_NONE) + * + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_set_recurrence_week_flag() - * @see calendar_event_set_recurrence_frequency() - * @see calendar_event_get_recurrence_frequency() + * @see calendar_event_set_status() */ -int calendar_event_get_recurrence_week_flag(calendar_event_h event, int *week_flag); +int calendar_event_get_status(calendar_event_h event, calendar_event_status_e *status); /** - * @brief Sets the days of week flag to the calendar event handle. + * @brief Sets a status for the given calendar event handle. + * + * @param[in] event The calendar event handle + * @param[in] status The status of the event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @remarks This function is valid only if recurrence frequency of the event is #CALENDAR_RECURRENCE_WEEKLY. + * @see calendar_event_get_status() + */ +int calendar_event_set_status(calendar_event_h event, calendar_event_status_e status); + +/** + * @brief Gets the busy status for the given calendar event handle. * - * @param[in] event The calendar event handle - * @param[in] week_flag The days of week flag of the event \n It supports "OR"ing combination of #calendar_week_flag_e. \n eg) #CALENDAR_WEEK_FLAG_TUE | #CALENDAR_WEEK_FLAG_FRI + * @param[in] event The calendar event handle + * @param[out] busy_status The busy status of the event \n (default : #CALENDAR_EVENT_BUSY_STATUS_FREE) * - * @return 0 on success, otherwise a negative error value. + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_recurrence_week_flag() - * @see calendar_event_set_recurrence_frequency() - * @see calendar_event_get_recurrence_frequency() + * @see calendar_event_set_busy_status() + */ +int calendar_event_get_busy_status(calendar_event_h event, calendar_event_busy_status_e *busy_status); + +/** + * @brief Sets a busy status for the given calendar event handle. * + * @param[in] event The calendar event handle + * @param[in] busy_status The busy status of the event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_busy_status() */ -int calendar_event_set_recurrence_week_flag(calendar_event_h event, int week_flag); +int calendar_event_set_busy_status(calendar_event_h event, calendar_event_busy_status_e busy_status); /** - * @brief Gets the recurrence ending time of the event from the calendar event handle. - * @details If recurrence frequency of the event is activated, then @a recurrence_until_date indicates recurrence ending time. + * @brief Gets the priority for the given calendar event handle. + * + * @param[in] event The calendar event handle + * @param[out] priority The priority of the event \n (default : #CALENDAR_EVENT_PRIORITY_LOW) + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_set_priority() + */ +int calendar_event_get_priority(calendar_event_h event, calendar_event_priority_e *priority); + +/** + * @brief Sets a priority for the given calendar event handle. + * + * @param[in] todo The calendar event handle + * @param[in] priority The priority of the event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_get_priority() + */ +int calendar_event_set_priority(calendar_event_h event, calendar_event_priority_e priority); + +/** + * @brief Gets the UID of the event from the calendar event handle. + * + * @remarks @a uid must be released with free() by you. * - * @param [in] event The calendar event handle - * @param [out] recurrence_until_date The ending time of the recurrence event + * @param [in] event The calendar event handle + * @param [out] uid The UID of the event \n If the uid does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_NO_DATA Data not found * - * @see calendar_event_set_recurrence_until_date() + * @see calendar_event_set_uid() */ -int calendar_event_get_recurrence_until_date(calendar_event_h event, struct tm *recurrence_until_date); - +int calendar_event_get_uid(calendar_event_h event, char **uid); /** - * @brief Sets a recurrence end time of the event in the calendar event handle. + * @brief Sets a UID of the event in the calendar event handle. * - * @param [in] event The calendar event handle - * @param [in] recurrence_until_date The end time of the recurrence event + * @param [in] event The calendar event handle + * @param [in] uid The UID of the event * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @pre @a event has a recurrence frequency property using calendar_event_set_recurrence_frequency(). - * - * @see calendar_event_get_recurrence_until_date() + * @see calendar_event_get_uid() */ -int calendar_event_set_recurrence_until_date(calendar_event_h event, struct tm recurrence_until_date); +int calendar_event_set_uid(calendar_event_h event, const char *uid); /** - * @brief Adds a recurrence exception date to the calendar event handle. + * @brief Gets the timezone details for the given calendar event handle. * - * @param[in] event The calendar event handle - * @param[in] year The year of date \n It has to be more than 1900 - * @param[in] month The month of date [1-12] - * @param[in] day The day of date [1-31] + * @remark @a timezone_name must be released with free() by you. + * + * @param[in] event The calendar event handle + * @param[out] timezone_name The time zone name * * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_set_recurrence_frequency() - * @see calendar_event_get_recurrence_exception_iterator() + * @see calendar_foreach_timezone() + * @see calendar_event_set_timezone() */ -int calendar_event_add_recurrence_exception_date(calendar_event_h event, int year, int month, int day); - +int calendar_event_get_timezone(calendar_event_h event, char** timezone_name); /** - * @brief Gets the recurrence exception iterator handle from the event handle. + * @brief Sets a timezone for the given calendar event handle. * - * @param[in] event The calendar event handle - * @param[out] iterator The recurrence exception iterator handle \n If the iterator does not exist, it is NULL + * @param[in] event The calendar event handle + * @param[in] timezone_name The time zone name * * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_recurrence_exception_has_next() - * @see calendar_recurrence_exception_next() + * @see calendar_foreach_timezone() + * @see calendar_event_get_timezone() */ -int calendar_event_get_recurrence_exception_iterator(calendar_event_h event, calendar_recurrence_exception_iterator_h *iterator); +int calendar_event_set_timezone(calendar_event_h event, const char* timezone_name); /** - * @brief Checks whether there is a next recurrence exception handle on the list. + * @brief Gets events as array from vCalendar * - * @param [in] iterator The recurrence exception iterator handle + * @remarks @a event_array must be released with calendar_event_free_event_array() by you. * - * @return @c true If the next element exists or @c false If the next element doesn't exist + * @param[in] vcalendar_stream The vCalendar stream to convert + * @param[out] event_array The event array + * @param[out] length The length of the event array * - * @see calendar_event_get_recurrence_exception_iterator() - * @see calendar_recurrence_exception_next() + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * + * @see calendar_event_free_event_array() + * @see calendar_event_get_vcalendar_from_db() */ -bool calendar_recurrence_exception_has_next(calendar_recurrence_exception_iterator_h iterator); +int calendar_event_get_event_array_from_vcalendar(const char *vcalendar_stream, calendar_event_h **event_array, int *length); /** - * @brief Moves recurrence exception list iterator to the next position and gets recurrence exception date. - * @details If the next element for the current recurrence exception list exists, then the iterator is moved to - * the next position on the list and the recurrence exception handle for this position is returned. - * When the iterator reaches the last element of the list, all further calls will return - * #CALENDAR_ERROR_ITERATOR_END and @a recurrence exception will remain unchanged. + * @brief Gets vCalendar with event database ID from the calendar database * - * @param [in] iterator The recurrent exception iterator handle - * @param [out] year The year of date \n It is supposed to be more than 1900 - * @param [out] month The month of date [1-12] - * @param [out] day The day of date [1-31] + * @remarks @a vcalendar_stream must be released with free() by you. * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_ITERATOR_END Iterator is on the last position + * @param[in] event_db_id_array The event database ID array + * @param[in] length Length of event database ID array + * @param[out] vcalendar_stream The vCalendar stream to convert + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_recurrence_exception_iterator() - * @see calendar_recurrence_exception_has_next() + * @see calendar_connect() + * @see calendar_event_get_event_array_from_vcalendar() */ -int calendar_recurrence_exception_next(calendar_recurrence_exception_iterator_h *iterator, int* year, int* month, int* day); +int calendar_event_get_vcalendar_from_db(int *event_db_id_array, int length, char **vcalendar_stream); /** - * @brief Gets the start time of the event from the calendar event handle. + * @brief Gets information whether an event is recurrence or not. * - * @param [in] event The calendar event handle - * @param [out] start_time The start date of the event + * @param [in] event The calendar event handle + * @param [out] is_recurrence @c true if the event is recurrence event, otherwise @c false \n + * (default : @c false) * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_NO_DATA Data not found * - * @see calendar_event_set_start_time() + * @see calendar_event_set_recurrence_frequency() */ -int calendar_event_get_start_time(calendar_event_h event, struct tm *start_time); +int calendar_event_get_is_recurrence(calendar_event_h event, bool *is_recurrence); +/** + * @brief Gets the recurrence frequency of the event from the calendar event handle. + * + * @param[in] event The calendar event handle + * @param[out] recurrence_frequency The recurrence frequency of the event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_set_recurrence_frequency() + * @see calendar_event_set_recurrence_byday() + * @see calendar_event_get_recurrence_byday() + */ +int calendar_event_get_recurrence_frequency(calendar_event_h event, calendar_recurrence_frequency_e *recurrence_frequency); /** - * @brief Sets a start time of the event in the calendar event handle. + * @brief Sets a recurrence frequency of the event to the calendar event handle. * - * @param [in] event The calendar event handle - * @param [in] start_time The start date of the event + * @param [in] event The calendar event handle + * @param [in] recurrence_frequency The recurrence frequency of the event \n + * If you set it to #CALENDAR_RECURRENCE_WEEKLY, you have to set calendar_event_set_recurrence_byday(). * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_start_time() + * @see calendar_event_get_recurrence_frequency() + * @see calendar_event_set_recurrence_byday() + * @see calendar_event_get_recurrence_byday() */ -int calendar_event_set_start_time(calendar_event_h event, struct tm start_time); +int calendar_event_set_recurrence_frequency(calendar_event_h event, calendar_recurrence_frequency_e recurrence_frequency); +/** + * @brief Gets the recurrence interval of the event from the calendar event handle. + * + * @param[in] event The calendar event handle + * @param[out] recurrence_interval The recurrence interval of the event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_set_recurrence_interval() + * @see calendar_event_get_recurrence_frequency() + */ +int calendar_event_get_recurrence_interval(calendar_event_h event, int *recurrence_interval); /** - * @brief Gets the end time of the event from the calendar event handle. + * @brief Sets a recurrence interval of the event in the calendar event handle. * - * @param [in] event The calendar event handle - * @param [out] end_time The end date of the event + * @param [in] event The calendar event handle + * @param [in] recurrence_interval The recurrence interval of the event * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_NO_DATA Data not found * - * @see calendar_event_set_end_time() + * @see calendar_event_get_recurrence_interval() + * @see calendar_event_set_recurrence_frequency() */ -int calendar_event_get_end_time(calendar_event_h event, struct tm *end_time); - +int calendar_event_set_recurrence_interval(calendar_event_h event, int recurrence_interval); /** - * @brief Sets the end time of the event in the calendar event handle. + * @brief Gets the recurrence count of the event from the calendar event handle. * - * @param[in] event The calendar event handle - * @param[in] end_time The end date of the event + * @param[in] event The calendar event handle + * @param[out] recurrence_count The recurrence type of the event * - * @return 0 on success, otherwise a negative error value. + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_end_time() + * @see calendar_event_set_recurrence_count() + * @see calendar_event_get_recurrence_frequency() */ -int calendar_event_set_end_time(calendar_event_h event, struct tm end_time); +int calendar_event_get_recurrence_count(calendar_event_h event, int *recurrence_count); /** - * @brief Gets the total number of events from the calendar database. - * @pre This function requires an open connection to the calendar service by calendar_connect(). + * @brief Sets a recurrence count of the event to the calendar event handle. * - * @param[out] count The total number of events + * @param [in] event The calendar event handle + * @param [in] recurrence_count The recurrence count of the event * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_connect() + * @see calendar_event_get_recurrence_count() + * @see calendar_event_set_recurrence_frequency() */ -int calendar_event_get_total_count_from_db(int *count); +int calendar_event_set_recurrence_count(calendar_event_h event, int recurrence_count); /** - * @brief Creates a attendee handle and make adds it to the calendar event. + * @brief Gets the recurrence ending time of the event from the calendar event handle. + * @details If recurrence frequency of the event is activated, then @a recurrence_until_date indicates recurrence ending time. * - * @remarks The created handle is not added to calendar database until calendar_event_insert_to_db() is called + * @param [in] event The calendar event handle + * @param [out] recurrence_until_date The ending time of the recurrence event \n + * The @a recurrence_until_date is a unix timestamp since 00:00, Jan 1 1970 UTC. * - * @param[in] event The calendar event handle - * @param[out] attendee A new attendee handle - * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NO_DATA Data not found * - * @see calendar_event_remove_attendee() - * @see calendar_attendee_set_name() - * @see calendar_attendee_set_email() - * @see calendar_attendee_set_phone_number() - * @see calendar_event_get_attendee_iterator() + * @see calendar_event_set_recurrence_until_date() */ -int calendar_event_add_attendee(calendar_event_h event, calendar_attendee_h* attendee); +int calendar_event_get_recurrence_until_date(calendar_event_h event, long long int *recurrence_until_date); /** - * @brief Creates a attendee handle with contact ID and adds it to the calendar event. - * - * @details Adds an existing contact as an attendee to an event. A new attendee record is created, and the name, email address and phone number are populated from the values in the contact record. - * @remarks The created handle is not added to calendar database until calendar_event_insert_to_db() is called + * @brief Sets a recurrence end time of the event in the calendar event handle. * + * @param [in] event The calendar event handle + * @param [in] recurrence_until_date The end time of the recurrence event \n + * The @a recurrence_until_date is a unix timestamp since 00:00, Jan 1 1970 UTC. * - * @param[in] event The calendar event handle - * @param[in] contact_db_id The contact DB ID which is related to attendee - * @param[out] attendee A new attendee handle from contact ID in the contacts database * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @pre This function requires an open connection to Contacts Service by contacts_connect(). + * @pre @a event has a recurrence frequency property using calendar_event_set_recurrence_frequency(). * - * @see calendar_event_remove_attendee() - * @see calendar_attendee_set_name() - * @see calendar_attendee_set_email() - * @see calendar_attendee_set_phone_number() - * @see calendar_event_get_attendee_iterator() - * @see contact_get_db_id() - * @see contact_get_from_db() - * @see calendar_attendee_get_phone_number() + * @see calendar_event_get_recurrence_until_date() */ -int calendar_event_add_attendee_with_contact(calendar_event_h event, int contact_db_id, calendar_attendee_h* attendee); +int calendar_event_set_recurrence_until_date(calendar_event_h event, long long int recurrence_until_date); /** - * @brief Removes the attendee from the calendar event handle. - * + * @brief Gets the recurrence ending date for all day event + * @details If recurrence frequency of the event is activated, then @a recurrence_until_date indicates recurrence ending time. * - * @param[in] event The calendar event handle - * @param[in] attendee The attendee handle + * @param [in] event The calendar event handle + * @param [out] until_year Year of until date + * @param [out] until_month Month of until date + * @param [out] until_day Day of until date * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NO_DATA Data not found * - * @see calendar_event_add_attendee() - * @see calendar_event_get_attendee_iterator() + * @see calendar_event_set_all_day_recurrence_until_date() */ -int calendar_event_remove_attendee(calendar_event_h event, calendar_attendee_h attendee); +int calendar_event_get_all_day_recurrence_until_date(calendar_event_h event, int *until_year, int *until_month, int *until_day); /** - * @brief Gets the attendee iterator handle from the event handle. + * @brief Sets a recurrence end date for all day event * - * @param[in] event The calendar event handle - * @param[out] iterator The attendee iterator handle + * @param [in] event The calendar event handle + * @param [in] until_year Year of until date + * @param [in] until_month Month of until date + * @param [in] until_day Day of until date * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_attendee_iterator_has_next() - * @see calendar_attendee_iterator_next() + * @pre @a event has a recurrence frequency property using calendar_event_set_recurrence_frequency(). * + * @see calendar_event_get_all_day_recurrence_until_date() */ -int calendar_event_get_attendee_iterator(calendar_event_h event, calendar_attendee_iterator_h *iterator); +int calendar_event_set_all_day_recurrence_until_date(calendar_event_h event, int until_year, int until_month, int until_day); /** - * @brief Gets the last modified time of the event handle. + * @brief Gets the recurrence frequency of the event from the calendar event handle. + * @details This rule is "BYDAY" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @param[in] event The calendar event handle - * @param[out] modified_time The last modified time of event + * @remarks @a byday must be released with free() by you. * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_NO_DATA Data not found + * @param[in] event The calendar event handle + * @param[out] byday The "BYDAY" of the reccurrence event \n combination of [[-]1~5]MO, TU, WE, TH, FR, SA, SU with "," * - * @see calendar_event_insert_to_db() - * @see calendar_event_update_to_db() + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_set_recurrence_byday() + * @see calendar_event_set_recurrence_frequency() + * @see calendar_event_get_recurrence_frequency() */ -int calendar_event_get_last_modified_time(calendar_event_h event, struct tm *modified_time); +int calendar_event_get_recurrence_byday(calendar_event_h event, char **byday); /** - * @brief Gets the visibility for the given calendar event handle. + * @brief Sets the days of week flag to the calendar event handle. + * @details This rule is "BYDAY" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @param[in] event The calendar event handle - * @param[out] visibility The visibility of the event \n (default : #CALENDAR_VISIBILITY_PUBLIC) + * @param[in] event The calendar event handle + * @param[in] byday The "BYDAY" of the reccurrence event \n combination of [[-]1~5]MO, TU, WE, TH, FR, SA, SU with "," * - * @return 0 on success, otherwise a negative error value. + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_set_visibility() + * @see calendar_event_get_recurrence_byday() + * @see calendar_event_set_recurrence_frequency() + * @see calendar_event_get_recurrence_frequency() */ -int calendar_event_get_visibility(calendar_event_h event, calendar_visibility_e *visibility); +int calendar_event_set_recurrence_byday(calendar_event_h event, const char* byday); /** - * @brief Sets a visibility for the given calendar event handle. + * @brief Gets the recurrence position flag of the event from the calendar event handle. + * @details This rule is "BYSETPOS" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @param[in] event The calendar event handle - * @param[in] visibility The visibility of the event + * @remarks @a bysetpos must be released with free() by you. * - * @return 0 on success, otherwise a negative error value. + * @param[in] event The calendar event handle + * @param[out] bysetpos The "BYSETPOS" of the reccurrence event \n combination of 1 to 366 or -366 to -1 with "," + * + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_visibility() + * @see calendar_event_set_recurrence_bysetpos() */ -int calendar_event_set_visibility(calendar_event_h event, calendar_visibility_e visibility); +int calendar_event_get_recurrence_bysetpos(calendar_event_h event, char **bysetpos); /** - * @brief Gets the timezone details for the given calendar event handle. + * @brief Sets a recurrence position flag of the event to the calendar event handle. + * @details This rule is "BYSETPOS" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @remark @a timezone_name must be released with free() by you. + * @param[in] event The calendar event handle + * @param[in] bysetpos The "BYSETPOS" of the reccurrence event \n combination of 1 to 366 or -366 to -1 with "," * - * @param[in] event The calendar event handle - * @param[out] timezone_name The time zone name + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @see calendar_event_get_recurrence_bysetpos() + */ +int calendar_event_set_recurrence_bysetpos(calendar_event_h event, const char* bysetpos); + +/** + * @brief Gets a recurrence BYMONTHDAY of the event to the calendar event handle. + * @details This rule is "BYMONTHDAY" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @see calendar_foreach_timezone() - * @see calendar_event_set_timezone() + * @remarks @a bymonthday must be released with free() by you. + * + * @param[in] event The calendar event handle + * @param[out] bymonthday The BYMONTHDAY of the reccurrence event \n combination of 1 to 31 or -31 to -1 with "," + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter */ -int calendar_event_get_timezone(calendar_event_h event, char** timezone_name); +int calendar_event_get_recurrence_bymonthday(calendar_event_h event, char **bymonthday); /** - * @brief Sets a timezone for the given calendar event handle. + * @brief Sets a recurrence BYMONTHDAY of the event to the calendar event handle. + * @details This rule is "BYMONTHDAY" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @param[in] event The calendar event handle - * @param[in] timezone_name The time zone name + * @param[in] event The calendar event handle + * @param[in] bymonthday The BYMONTHDAY of the reccurrence event \n combination of 1 to 31 or -31 to -1 with "," * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + */ +int calendar_event_set_recurrence_bymonthday(calendar_event_h event, const char* bymonthday); + +/** + * @brief Gets a recurrence BYMONTH of the event to the calendar event handle. + * @details This rule is "BYMONTH" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @see calendar_foreach_timezone() - * @see calendar_event_get_timezone() + * @remarks @a bymonth must be released with free() by you. + * + * @param[in] event The calendar event handle + * @param[out] bymonth The BYMONTH of the reccurrence event \n combination of 1 to 12 with "," + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter */ -int calendar_event_set_timezone(calendar_event_h event, const char* timezone_name); +int calendar_event_get_recurrence_bymonth(calendar_event_h event, char** bymonth); /** - * @brief Gets an event from vCalendar and returns a new event handle. + * @brief Sets a recurrence BYMONTH of the event to the calendar event handle. + * @details This rule is "BYMONTH" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @remarks The new event handle must be released with calendar_event_destroy() by you. + * @param[in] event The calendar event handle + * @param[in] bymonth The BYMONTH of the reccurrence event \n combination of 1 to 12 with "," * - * @param[in] vcalendar_stream The vCalendar stream to convert - * @param[out] event The event handle + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + */ +int calendar_event_set_recurrence_bymonth(calendar_event_h event, const char* bymonth); + +/** + * @brief Gets the first day of the week. * - * @return 0 on success, otherwise a negative error value. + * @param[in] event The calendar event handle + * @param[out] week_start The first day of the week for the recurrence + * + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory * - * @see calendar_event_destroy() - * @see calendar_event_get_vcalendar_from_event() + * @see calendar_event_set_recurrence_week_start() */ -int calendar_event_get_from_vcalendar(const char *vcalendar_stream, calendar_event_h *event); +int calendar_event_get_recurrence_week_start(calendar_event_h event, calendar_week_flag_e *week_start); /** - * @brief Gets vCalendar from the event handle. - * - * @remarks @a vcalendar_stream must be released with free() by you. + * @brief Sets the first day of the week * - * @param[in] event The event handle - * @param[out] vcalendar_stream The vCalendar stream to convert + * @param[in] event The calendar event handle + * @param[in] week_start The first day of the week for the recurrence * - * @return 0 on success, otherwise a negative error value. + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_event_get_from_vcalendar() + * @see calendar_event_get_recurrence_week_start() */ -int calendar_event_get_vcalendar_from_event(calendar_event_h event, char **vcalendar_stream); +int calendar_event_set_recurrence_week_start(calendar_event_h event, calendar_week_flag_e week_start); /** - * @brief Retrieves all calendar events from all of calendars by invoking the given callback function iteratively. + * @brief Removes the recurrence event instance from the calendar database. * - * @param[in] callback The callback function to invoke - * @param[in] user_data The user data to be passed to the callback function + * @param[in] event_db_id The event database ID to delete + * @param[in] start_time The recurrence instance start time to delete * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_DB_FAILED No access to database * - * @pre This function requires an open connection to the calendar service by calendar_connect(). - * - * @post This function invokes calendar_foreach_query_event_cb(). + * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @see calendar_foreach_query_event_cb() + * @see calendar_connect() + * @see calendar_event_get_recurrence_exdate() */ -int calendar_foreach_event_from_db(calendar_foreach_query_event_cb callback, void *user_data); +int calendar_event_delete_recurrence_instance_from_db(int event_db_id, long long int start_time); /** - * @brief Retrieves all calendar events with the given calendar database ID. + * @brief Removes the recurrence all day event instance from the calendar database. * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] user_data The user data to be passed to the callback function + * @param[in] event_db_id The event database ID to delete + * @param[in] year The year of recurrence all instance + * @param[in] month The month of recurrence all instance + * @param[in] day The day of recurrence all instance * - * @return 0 on success, otherwise a negative error value. - * @retval #CALENDAR_ERROR_NONE Successful - * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database * - * @pre This function requires an open connection to the calendar service by calendar_connect(). + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + * @see calendar_event_get_recurrence_exdate() + */ +int calendar_event_delete_recurrence_all_day_instance_from_db(int event_db_id, int year, int month, int day); + +/** + * @brief Gets a recurrence EXDATE of the event to the calendar event handle. + * @details This rule is "EXDATE" rule in RFC 5545 iCalendar http://http://www.ietf.org/rfc/rfc2445.txt * - * @post This function invokes calendar_foreach_query_event_cb(). + * @remarks @a exdate must be released with free() by you. * - * @see calendar_foreach_query_event_cb() - * @see calendar_foreach_event_from_db() - * @see calendar_query_event_by_description() - * @see calendar_query_event_by_location() - * @see calendar_query_event_by_period() + * @param[in] event The calendar event handle + * @param[out] exdate The EXDATE of the reccurrence event + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_delete_recurrence_instance_from_db() + * @see calendar_event_delete_recurrence_all_day_instance_from_db() */ -int calendar_query_event_by_calendar(calendar_foreach_query_event_cb callback, int calendar_db_id, void *user_data); +int calendar_event_get_recurrence_exdate(calendar_event_h event, char** exdate); /** - * @brief Retrieves all calendar events with the given subject. + * @brief Frees event array * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] subject_to_find The description to filter - * @param[in] user_data The user data to be passed to the callback function + * @param[out] event_array The event array * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_DB_FAILED No access to database * - * @pre This function requires an open connection to the calendar service by calendar_connect(). + * @see calendar_event_search_event_by_calendar_book() + */ +int calendar_event_free_event_array(calendar_event_h *event_array); + +/** + * @brief Frees modified event array * - * @post This function invokes calendar_foreach_query_event_cb(). + * @param[out] modified_event_array The modified event array * - * @see calendar_event_get_subject() - * @see calendar_event_set_subject() - * @see calendar_foreach_query_event_cb() - * @see calendar_query_event_by_calendar() - * @see calendar_query_event_by_description() - * @see calendar_query_event_by_location() - * @see calendar_query_event_by_period() + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_event_search_event_by_version() */ -int calendar_query_event_by_subject(calendar_foreach_query_event_cb callback, int calendar_db_id, const char *subject_to_find, void *user_data); +int calendar_event_free_modified_event_array(pcalendar_modified_event_s *modified_event_array); /** - * @brief Retrieves all calendar events with the given description. + * @brief Retrieves all events as array from calendar book * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] description_to_find The description to filter - * @param[in] user_data The user data to be passed to the callback function + * @remarks @a event_array must be released with calendar_event_free_event_array() by you. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_EVENT_CALENDAR_BOOK_DB_ID means the default event calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[out] event_array The event array + * @param[out] length The length of the event array * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * @retval #CALENDAR_ERROR_DB_FAILED Database operation failure * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_event_cb(). - * - * @see calendar_event_get_description() - * @see calendar_event_set_description() - * @see calendar_foreach_query_event_cb() - * @see calendar_query_event_by_calendar() - * @see calendar_query_event_by_subject() - * @see calendar_query_event_by_location() - * @see calendar_query_event_by_period() - * @see calendar_foreach_query_event_cb() + * @see calendar_connect() + * @see calendar_event_free_event_array() */ -int calendar_query_event_by_description(calendar_foreach_query_event_cb callback, int calendar_db_id, const char *description_to_find, void *user_data); +int calendar_event_search_event_by_calendar_book(int calendar_book_db_id, calendar_event_h **event_array, int *length); /** - * @brief Retrieves all calendar events with the given location. + * @brief Retrieves extend event instances within specified time range. + * + * @remarks @a event_array must be released with calendar_event_free_event_array() by you. * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] location_to_find The location to filter - * @param[in] user_data The user data to be passed to the callback function + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_EVENT_CALENDAR_BOOK_DB_ID means the default event calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] period_start_time The start of the time range\n + * The @a start_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * @param[in] period_end_time The end of the time range\n + * The @a end_time is a unix timestamp since 00:00, Jan 1 1970 UTC. + * @param[out] event_array The event array + * @param[out] length The length of the event array * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -992,27 +1390,29 @@ int calendar_query_event_by_description(calendar_foreach_query_event_cb callback * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_event_cb(). - * - * @see calendar_event_get_location() - * @see calendar_event_set_location() - * @see calendar_foreach_query_event_cb() - * @see calendar_query_event_by_calendar() - * @see calendar_query_event_by_subject() - * @see calendar_query_event_by_description() - * @see calendar_query_event_by_period() + * @see calendar_connect() + * @see calendar_event_free_event_array() */ -int calendar_query_event_by_location(calendar_foreach_query_event_cb callback, int calendar_db_id, const char *location_to_find, void *user_data); +int calendar_event_search_extend_instance_by_period(int calendar_book_db_id, + long long int period_start_time, long long int period_end_time, + calendar_event_h **event_array, int *length); /** - * @brief Retrieves all calendar events between the given start_time and end_time. + * @brief Retrieves all day extend event instances within specified time range. * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] start_time The start date - * @param[in] end_time The end date - * @param[in] user_data The user data to be passed to the callback function + * @remarks @a event_array must be released with calendar_event_free_event_array() by you. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_EVENT_CALENDAR_BOOK_DB_ID means the default event calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] period_start_year The start year of the time range + * @param[in] period_start_month The start month of the time range + * @param[in] period_start_day The start day of the time range + * @param[in] period_end_year The end year of the time range + * @param[in] period_end_month The end month of the time range + * @param[in] period_end_day The end day of the time range + * @param[out] event_array The event array + * @param[out] length The length of the event array * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1021,45 +1421,38 @@ int calendar_query_event_by_location(calendar_foreach_query_event_cb callback, i * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_event_cb(). - * - * @see calendar_event_get_start_time() - * @see calendar_event_set_start_time() - * @see calendar_event_get_end_time() - * @see calendar_event_set_end_time() - * @see calendar_foreach_query_event_cb() - * @see calendar_query_event_by_calendar() - * @see calendar_query_event_by_subject() - * @see calendar_query_event_by_description() - * @see calendar_query_event_by_location() - * @see calendar_foreach_query_event_cb() - * + * @see calendar_connect() + * @see calendar_event_free_event_array() */ -int calendar_query_event_by_period(calendar_foreach_query_event_cb callback, int calendar_db_id, struct tm start_time, struct tm end_time, void *user_data); +int calendar_event_search_all_day_extend_instance_by_period(int calendar_book_db_id, + int period_start_year, int period_start_month, int period_start_day, + int period_end_year, int period_end_month, int period_end_day, + calendar_event_h **event_array, int *length); /** - * @brief Retrieves all calendar events that have been modified since the given time. - * @details This function will find all changed event since the given time + * @brief Retrieves all modified events information as array that have been modified since the given version. + * + * @remarks @a modified_event_array must be released with calendar_event_free_modified_event_array() by you. * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] time The time to find events which are changed since when - * @param[in] user_data The user data to be passed to the callback function + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_EVENT_CALENDAR_BOOK_DB_ID means the default event calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] calendar_db_version The calendar database version + * @param[out] modified_event_array The modified event information array + * @param[out] length The length of the event array * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * @retval #CALENDAR_ERROR_DB_FAILED Database operation failure * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_event_cb(). - * - * @see calendar_event_get_last_modified_time() - * @see calendar_foreach_query_event_cb() + * @see calendar_connect() + * @see calendar_event_free_modified_event_array() */ -int calendar_query_event_by_time_last_modified(calendar_foreach_query_event_cb callback, int calendar_db_id, struct tm time, void *user_data); +int calendar_event_search_event_by_version(int calendar_book_db_id, int calendar_db_version, pcalendar_modified_event_s **modified_event_array, int *length); /** * @} @@ -1090,9 +1483,9 @@ int calendar_query_event_by_time_last_modified(calendar_foreach_query_event_cb c int calendar_todo_create(calendar_todo_h *todo); /** - * @brief Destroys the calendar to-do handle + * @brief Destroys the calendar to-do handle * - * @param[in] todo The calendar to-do handle + * @param[in] todo The calendar to-do handle * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1106,9 +1499,9 @@ int calendar_todo_destroy(calendar_todo_h todo); /** * @brief Adds the given to-do item to the calendar database. * - * @param[in] todo The calendar to-do handle - * @param[in] calendar_db_id The calendar database ID to which the event insert. \n - * 1 means the default calendar on the device + * @param[in] todo The calendar to-do handle + * @param[in] calendar_book_db_id The calendar book database ID to which the to-do insert. \n + * #DEFAULT_TODO_CALENDAR_BOOK_DB_ID means the default to-do calendar book on the device * @param[out] todo_db_id The to-do ID to be assigned to the to-do item * * @return 0 on success, otherwise a negative error value. @@ -1120,7 +1513,7 @@ int calendar_todo_destroy(calendar_todo_h todo); * @see calendar_todo_update_to_db() * */ -int calendar_todo_insert_to_db(calendar_todo_h todo, int calendar_db_id, int *todo_db_id); +int calendar_todo_insert_to_db(calendar_todo_h todo, int calendar_book_db_id, int *todo_db_id); /** * @brief Removes the to-do item from the calendar database. @@ -1142,7 +1535,7 @@ int calendar_todo_delete_from_db(int todo_id); * @brief Updates the to-do item on the calendar database. * @details calendar_todo_get_db_id() is called internally to update the to-do item in the calendar database. * - * @param[in] todo The calendar to-do handle + * @param[in] todo The calendar to-do handle * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1160,13 +1553,13 @@ int calendar_todo_update_to_db(calendar_todo_h todo); /** * @brief Gets the to-do item handle associated with the given to-do DB ID. - * @details This function gets the new to-do handle with the given to-do database ID from the calendar database. - * A new calendar to-do handle will be created. + * @details This function gets the new to-do handle with the given to-do database ID from the calendar database. + * A new calendar to-do handle will be created. * - * @remarks The new to-do handle must be released with calendar_todo_destroy() by you. + * @remarks The new to-do handle must be released with calendar_todo_destroy() by you. * * @param[in] todo_id The to-do Database ID - * @param[out] todo The calendar to-do handle + * @param[out] todo The calendar to-do handle * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1181,7 +1574,7 @@ int calendar_todo_update_to_db(calendar_todo_h todo); int calendar_todo_get_from_db(int todo_id, calendar_todo_h *todo); /** - * @brief Gets the database ID for the given calendar to-do handle. + * @brief Gets the database ID for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[out] todo_db_id The database ID of the to-do item (default : 0) \n @@ -1197,11 +1590,11 @@ int calendar_todo_get_from_db(int todo_id, calendar_todo_h *todo); int calendar_todo_get_db_id(calendar_todo_h todo, int *todo_db_id); /** - * @brief Gets the calendar database ID associated with the given calendar to-do handle. + * @brief Gets The calendar book database ID associated with the given calendar to-do handle. * * @param[in] todo The calendar to-do handle - * @param[out] calendar_db_id The calendar database ID fetched from the calendar to-do handle (default : 0) \n - * 0 means the to-do is not in calendar database. + * @param[out] calendar_book_db_id The calendar book database ID fetched from the calendar to-do handle (default : 0) \n + * 0 means the to-do is not in calendar database. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1209,14 +1602,14 @@ int calendar_todo_get_db_id(calendar_todo_h todo, int *todo_db_id); * * @see calendar_todo_insert_to_db() */ -int calendar_todo_get_calendar_db_id(calendar_todo_h todo, int *calendar_db_id); +int calendar_todo_get_calendar_book_db_id(calendar_todo_h todo, int *calendar_book_db_id); /** * @brief Gets the subject of the to-do from the calendar to-do handle. * - * @remarks @a subject must be released with free() by you. + * @remarks @a subject must be released with free() by you. * - * @param [in] todo The calendar to-do handle + * @param [in] todo The calendar to-do handle * @param [out] subject The subject of the to-do \n If the subject does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. @@ -1230,7 +1623,7 @@ int calendar_todo_get_subject(calendar_todo_h todo, char **subject); /** * @brief Sets a subject of the to-do handle. * - * @param [in] todo The calendar to-do handle + * @param [in] todo The calendar to-do handle * @param [in] subject The subject of the to-do * * @return 0 on success, otherwise a negative error value. @@ -1244,9 +1637,9 @@ int calendar_todo_set_subject(calendar_todo_h todo, const char *subject); /** * @brief Gets description of the to-do from the calendar to-do handle. * - * @remarks @a description must be released with free() by you. + * @remarks @a description must be released with free() by you. * - * @param [in] todo The calendar to-do handle + * @param [in] todo The calendar to-do handle * @param [out] description The description of the to-do \n If the description does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. @@ -1260,7 +1653,7 @@ int calendar_todo_get_description(calendar_todo_h todo, char **description); /** * @brief Sets a description of the to-do in the calendar to-do handle. * - * @param [in] todo The calendar to-do handle + * @param [in] todo The calendar to-do handle * @param [in] description The description of the to-do * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1272,7 +1665,7 @@ int calendar_todo_get_description(calendar_todo_h todo, char **description); int calendar_todo_set_description(calendar_todo_h todo, const char *description); /** - * @brief Gets the priority for the given calendar to-do handle. + * @brief Gets the priority for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[out] priority The priority of the to-do @@ -1286,7 +1679,7 @@ int calendar_todo_set_description(calendar_todo_h todo, const char *description) int calendar_todo_get_priority(calendar_todo_h todo, calendar_todo_priority_e *priority); /** - * @brief Sets a priority for the given calendar to-do handle. + * @brief Sets a priority for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[in] priority The priority of the to-do @@ -1300,7 +1693,7 @@ int calendar_todo_get_priority(calendar_todo_h todo, calendar_todo_priority_e *p int calendar_todo_set_priority(calendar_todo_h todo, calendar_todo_priority_e priority); /** - * @brief Gets the status for the given calendar to-do handle. + * @brief Gets the status for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[out] status The status of the to-do @@ -1309,12 +1702,12 @@ int calendar_todo_set_priority(calendar_todo_h todo, calendar_todo_priority_e pr * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_todo_set_status() + * @see calendar_todo_set_status() */ int calendar_todo_get_status(calendar_todo_h todo, calendar_todo_status_e *status); /** - * @brief Sets a status for the given calendar to-do handle. + * @brief Sets a status for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[in] status The status of the to-do @@ -1328,7 +1721,7 @@ int calendar_todo_get_status(calendar_todo_h todo, calendar_todo_status_e *statu int calendar_todo_set_status(calendar_todo_h todo, calendar_todo_status_e status); /** - * @brief Gets the visibility for the given calendar to-do handle. + * @brief Gets the visibility for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[out] visibility The visibility of the to-do \n (default : #CALENDAR_VISIBILITY_PUBLIC) @@ -1342,7 +1735,7 @@ int calendar_todo_set_status(calendar_todo_h todo, calendar_todo_status_e status int calendar_todo_get_visibility(calendar_todo_h todo, calendar_visibility_e *visibility); /** - * @brief Sets a visibility for the given calendar to-do handle. + * @brief Sets a visibility for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[in] visibility The visibility of the to-do @@ -1358,9 +1751,9 @@ int calendar_todo_set_visibility(calendar_todo_h todo, calendar_visibility_e vis /** * @brief Gets the location of the to-do from the calendar to-do handle. * - * @remarks @a location must be released with free() by you. + * @remarks @a location must be released with free() by you. * - * @param [in] todo The calendar to-do handle + * @param [in] todo The calendar to-do handle * @param [out] location The location of the to-do \n If the location does not exist, it is NULL * * @return 0 on success, otherwise a negative error value. @@ -1375,7 +1768,7 @@ int calendar_todo_get_location(calendar_todo_h todo, char **location); /** * @brief Sets a location of the to-do in the calendar to-do handle. * - * @param [in] todo The calendar to-do handle + * @param [in] todo The calendar to-do handle * @param [in] location The location of the to-do * * @return 0 on success, otherwise a negative error value. @@ -1389,8 +1782,9 @@ int calendar_todo_set_location(calendar_todo_h todo, const char *location); /** * @brief Gets the last modified time of the to-do item. * - * @param[in] todo The calendar to-do handle - * @param[out] modified_time The last modified time + * @param[in] todo The calendar to-do handle + * @param[out] modified_time The last modified time\n + * The @a modified_time is a unix timestamp since 00:00, Jan 1 1970 UTC. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1401,9 +1795,9 @@ int calendar_todo_set_location(calendar_todo_h todo, const char *location); * @see calendar_todo_update_to_db() * */ -int calendar_todo_get_last_modified_time(calendar_todo_h todo, struct tm *modified_time); +int calendar_todo_get_last_modified_time(calendar_todo_h todo, long long int *modified_time); /** - * @brief Gets the timezone details for the given calendar to-do handle. + * @brief Gets the timezone details for the given calendar to-do handle. * @remarks @a timezone_name must be released with free() by you. * * @param[in] todo The calendar to-do handle @@ -1416,10 +1810,10 @@ int calendar_todo_get_last_modified_time(calendar_todo_h todo, struct tm *modifi * @see calendar_todo_set_timezone() * @see calendar_foreach_timezone() */ -int calendar_todo_get_timezone(calendar_todo_h todo, char** timezone_name); +int calendar_todo_get_timezone(calendar_todo_h todo, char** timezone_name); /** - * @brief Sets the timezone for the given calendar to-do handle. + * @brief Sets the timezone for the given calendar to-do handle. * * @param[in] todo The calendar to-do handle * @param[in] timezone_name The timezone name eg. Europe/Paris @@ -1431,13 +1825,14 @@ int calendar_todo_get_timezone(calendar_todo_h todo, char** timezone_name); * @see calendar_todo_get_timezone() * @see calendar_foreach_timezone() */ -int calendar_todo_set_timezone(calendar_todo_h todo, const char* timezone_name); +int calendar_todo_set_timezone(calendar_todo_h todo, const char* timezone_name); /** * @brief Gets the start time of the to-do from the calendar to-do handle. * - * @param [in] todo The calendar to-do handle - * @param [out] start_time The start date of the to-do + * @param [in] todo The calendar to-do handle + * @param [out] start_time The start date of the to-do\n + * The @a start_time is a unix timestamp since 00:00, Jan 1 1970 UTC. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1446,29 +1841,42 @@ int calendar_todo_set_timezone(calendar_todo_h todo, const char* timezone_name); * * @see calendar_todo_set_start_time() */ -int calendar_todo_get_start_time(calendar_todo_h todo, struct tm *start_time); +int calendar_todo_get_start_time(calendar_todo_h todo, long long int *start_time); /** - * @brief Sets a start time of the to-do in the calendar to-do handle. + * @brief Sets a start time of the to-do in the calendar to-do handle. * - * @param [in] todo The calendar todo handle - * @param [in] start_time The start date of the todo + * @param [in] todo The calendar todo handle + * @param [in] start_time The start date of the todo\n + * The @a start_time is a unix timestamp since 00:00, Jan 1 1970 UTC. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * * @see calendar_todo_get_start_time() - * */ -int calendar_todo_set_start_time(calendar_todo_h todo, struct tm start_time); +int calendar_todo_set_start_time(calendar_todo_h todo, long long int start_time); +/** + * @brief Unsets a start time of the to-do in the calendar to-do handle. + * + * @param [in] todo The calendar todo handle + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_todo_set_start_time() + */ +int calendar_todo_unset_start_time(calendar_todo_h todo); /** * @brief Gets the due time of the to-do from the calendar to-do handle. * - * @param [in] todo The calendar to-do handle - * @param [out] due_time The due date of the to-do + * @param [in] todo The calendar to-do handle + * @param [out] due_time The due date of the to-do\n + * The @a due_time is a unix timestamp since 00:00, Jan 1 1970 UTC. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1476,15 +1884,15 @@ int calendar_todo_set_start_time(calendar_todo_h todo, struct tm start_time); * @retval #CALENDAR_ERROR_NO_DATA Data not found * * @see calendar_todo_set_due_time() - * */ -int calendar_todo_get_due_time(calendar_todo_h todo, struct tm *due_time); +int calendar_todo_get_due_time(calendar_todo_h todo, long long int *due_time); /** * @brief Sets a due time of the to-do in the calendar to-do handle. * - * @param[in] todo The calendar to-do handle - * @param[in] due_time The due date of the to-do + * @param[in] todo The calendar to-do handle + * @param[in] due_time The due date of the to-do\n + * The @a due_time is a unix timestamp since 00:00, Jan 1 1970 UTC. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1492,47 +1900,182 @@ int calendar_todo_get_due_time(calendar_todo_h todo, struct tm *due_time); * * @see calendar_todo_get_due_time() */ -int calendar_todo_set_due_time(calendar_todo_h todo, struct tm due_time); +int calendar_todo_set_due_time(calendar_todo_h todo, long long int due_time); /** - * @brief Retrieves all to-do items by invoking the given callback function iteratively. + * @brief Unsets a due time of the to-do in the calendar to-do handle. * - * @param[in] callback The callback function to invoke - * @param[in] user_data The user data to be passed to the callback function + * @param[in] todo The calendar to-do handle * - * @return 0 on success, otherwise a negative error value. + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_todo_set_due_time() + */ +int calendar_todo_unset_due_time(calendar_todo_h todo); + +/** + * @brief Gets the total number of to-dos from the calendar book. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_TODO_CALENDAR_BOOK_DB_ID means the default to-do calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] todo_priority The to-do priority(#calendar_todo_priority_e) to filter \n + * Supports "OR"ing of #calendar_todo_priority_e + * @param[in] todo_status The to-do status(#calendar_todo_status_e) to filter \n + * Supports "OR"ing of #calendar_todo_status_e + * @param[out] count The total number of to-dos + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + */ +int calendar_todo_get_total_count_from_db(int calendar_book_db_id, int todo_priority, int todo_status, int *count); + +/** + * @brief Gets the total number of to-dos within specified time range from the calendar book. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_TODO_CALENDAR_BOOK_DB_ID means the default to-do calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] start_duedate_range The start of the time range\n + * The @a start_duedate_range is a unix timestamp since 00:00, Jan 1 1970 UTC. + * @param[in] end_duedate_range The end of the time range\n + * The @a end_duedate_range is a unix timestamp since 00:00, Jan 1 1970 UTC. + * @param[in] todo_priority The to-do priority(#calendar_todo_priority_e) to filter \n + * Supports "OR"ing of #calendar_todo_priority_e + * @param[in] todo_status The to-do status(#calendar_todo_status_e) to filter \n + * Supports "OR"ing of #calendar_todo_status_e + * @param[out] count The total number of to-dos + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * @retval #CALENDAR_ERROR_DB_FAILED No access to database * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_todo_cb(). + * @see calendar_connect() + */ +int calendar_todo_get_total_count_by_duedate_range(int calendar_book_db_id, long long int start_duedate_range, long long int end_duedate_range, int todo_priority, int todo_status, int *count); + +/** + * @brief Frees to-do array + * + * @param[out] todo_array The to-do array * - * @see calendar_foreach_query_todo_cb() + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_todo_search_todo_by_calendar_book() */ -int calendar_foreach_todo_from_db(calendar_foreach_query_todo_cb callback, void *user_data); +int calendar_todo_free_todo_array(calendar_todo_h *todo_array); /** - * @brief Retrieves all to-do items with the given calendar database ID by invoking the given callback function iteratively. + * @brief Frees modified to-do array * - * @param[in] callback The callback function to invoke - * @param[in] calendar_db_id The calendar database ID to filter \n - * 1 means the default calendar on the device - * @param[in] user_data The user data to be passed to the callback function + * @param[out] modified_todo_array The modified to-do array + * @param[out] length The length of the array * - * @return 0 on success, otherwise a negative error value. + * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @see calendar_todo_search_todo_by_version() + */ +int calendar_todo_free_modified_todo_array(pcalendar_modified_todo_s *modified_todo_array); + +/** + * @brief Retrieves all to-dos as array from calendar book + * + * @remarks @a todo_array must be released with calendar_todo_free_todo_array() by you. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_TODO_CALENDAR_BOOK_DB_ID means the default to-do calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] todo_priority The to-do priority(#calendar_todo_priority_e) to filter \n + * Supports "OR"ing of #calendar_todo_priority_e + * @param[in] todo_status The to-do status(#calendar_todo_status_e) to filter \n + * Supports "OR"ing of #calendar_todo_status_e + * @param[out] todo_array The to-do array + * @param[out] length The length of the to-do array + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_DB_FAILED Database operation failure * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_todo_cb(). + * @see calendar_connect() + * @see calendar_todo_free_todo_array() + */ +int calendar_todo_search_todo_by_calendar_book(int calendar_book_db_id, int todo_priority, int todo_status, calendar_todo_h **todo_array, int *length); + +/** + * @brief Retrieves all calendar to-dos as array within specified time range. + * + * @remarks @a todo_array must be released with calendar_todo_free_todo_array() by you. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_TODO_CALENDAR_BOOK_DB_ID means the default to-do calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] start_duedate_range The start of the time range\n + * The @a start_duedate_range is a unix timestamp since 00:00, Jan 1 1970 UTC. + * @param[in] end_duedate_range The end of the time range\n + * The @a end_duedate_range is a unix timestamp since 00:00, Jan 1 1970 UTC. + * @param[in] todo_priority The to-do priority(#calendar_todo_priority_e) to filter \n + * Supports "OR"ing of #calendar_todo_priority_e + * @param[in] todo_status The to-do status(#calendar_todo_status_e) to filter \n + * Supports "OR"ing of #calendar_todo_status_e + * @param[out] todo_array The to-do array + * @param[out] length The length of the todo array + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_DB_FAILED Database operation failure + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @see calendar_foreach_query_todo_cb() + * @see calendar_connect() + * @see calendar_todo_free_todo_array() */ -int calendar_query_todo_by_calendar(calendar_foreach_query_todo_cb callback, int calendar_db_id, void *user_data); +int calendar_todo_search_todo_by_duedate_range(int calendar_book_db_id, long long int start_duedate_range, long long int end_duedate_range, int todo_priority, int todo_status, calendar_todo_h **todo_array, int *length); + +/** + * @brief Retrieves all modified to-dos information as array that have been modified since the given version. + * + * @remarks @a modified_todo_array must be released with calendar_todo_free_modified_todo_array() by you. + * + * @param[in] calendar_book_db_id The calendar book database ID to filter \n + * #DEFAULT_TODO_CALENDAR_BOOK_DB_ID means the default to-do calendar book on the device \n + * #CALENDAR_BOOK_FILTER_ALL means all calendar books on the device + * @param[in] calendar_db_version The calendar database version + * @param[out] modified_todo_array The modified to-do information array + * @param[out] length The length of the to-do array + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_DB_FAILED Database operation failure + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + * @see calendar_todo_free_modified_todo_array() + */ +int calendar_todo_search_todo_by_version(int calendar_book_db_id, int calendar_db_version, pcalendar_modified_todo_s **modified_todo_array, int *length); /** * @} @@ -1544,14 +2087,44 @@ int calendar_query_todo_by_calendar(calendar_foreach_query_todo_cb callback, int */ /** - * @brief Gets the calendar from the calendar database. - * @details This function gets the new calendar handle with the given calendar database ID from the calendar database. \n - * The new calendar handle will be created. + * @brief Creates a handle to the calendar book. + * @remarks The calendar book handle must be released with calendar_book_destroy() by you. + * @remarks The created handle is not added to calendar database until calendar_insert_to_db() is called + * + * @param[out] calendar_book A new handle to calendar book + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_OUT_OF_MEMORY Out of memory + * + * @see calendar_book_destroy() + * + */ +int calendar_book_create(calendar_book_h *calendar_book); + +/** + * @brief Destroys the calendar book handle and releases all its resources. * - * @remarks The created calendar handle must be released with calendar_destroy() by you. + * @param[out] calendar_book The calendar book handle * - * @param[in] calendar_db_id The calendar database ID - * @param[out] calendar The calendar handle associated with the calendar database ID + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_get_from_db() + */ +int calendar_book_destroy(calendar_book_h calendar_book); + +/** + * @brief Gets the calendar book from the calendar database. + * @details This function gets the new calendar book handle with the given calendar book database ID from the calendar database. \n + * The new calendar book handle will be created. + * + * @remarks The created calendar book handle must be released with calendar_book_destroy() by you. + * + * @param[in] calendar_book_db_id The calendar book database ID + * @param[out] calendar_book The calendar book handle associated with The calendar book database ID * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1560,110 +2133,289 @@ int calendar_query_todo_by_calendar(calendar_foreach_query_todo_cb callback, int * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @see calendar_destroy() + * @see calendar_book_destroy() + */ +int calendar_book_get_from_db(int calendar_book_db_id, calendar_book_h *calendar_book); + +/** + * @brief Adds a calendar book to the calendar database. + * + * @param[in] calendar_book The calendar book handle + * @param[out] calendar_book_db_id The calendar book database ID associated with the calendar book \n + * If the function fails, it is -1. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + * @see calendar_book_delete_from_db() + */ +int calendar_book_insert_to_db(calendar_book_h calendar_book, int *calendar_book_db_id); + +/** + * @brief Updates a calendar book to the calendar database. + * + * @param[in] calendar_book The calendar book handle + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_book_connect() */ -int calendar_get_from_db(int calendar_db_id, calendar_h *calendar); +int calendar_book_update_to_db(calendar_book_h calendar_book); /** - * @brief Destroys the calendar handle and releases all its resources. + * @brief Removes the calendar book from the calendar database. * - * @param[out] calendar The calendar handle + * @param[in] calendar_book_db_id The calendar book database ID to delete + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + */ +int calendar_book_delete_from_db(int calendar_book_db_id); + +/** + * @brief Removes the calendar books, events and to-dos from the calendar database. + * + * @param[in] account_db_id The account database ID to filter + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + */ +int calendar_book_delete_all_by_account(int account_db_id); + +/** + * @brief Gets the calendar book database ID associated with the given calendar book handle. + * + * @param[in] calendar_book The calendar book handle + * @param[out] calendar_book_db_id The calendar book database ID fetched from the calendar book handle * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_get_from_db() + * @see calendar_book_get_from_db() + */ +int calendar_book_get_db_id(calendar_book_h calendar_book, int *calendar_book_db_id); + +/** + * @brief Sets the calendar book type associated with the given calendar book handle. + * + * @param[in] calendar_book The calendar book handle + * @param[in] calendar_book_type The calendar book type. \n Supports "OR"ing of #calendar_book_type_e + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * + * @see calendar_book_get_type() */ -int calendar_destroy(calendar_h calendar); +int calendar_book_set_type(calendar_book_h calendar_book, int calendar_book_type); /** - * @brief Gets the database ID associated with the given calendar handle. + * @brief Gets the calendar book type associated with the given calendar book handle. * - * @param[in] calendar The calendar handle - * @param[out] calendar_db_id The calendar database ID fetched from the calendar handle + * @param[in] calendar_book The calendar book handle + * @param[out] calendar_book_type The calendar book type. \n Supports "OR"ing of #calendar_book_type_e * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter * - * @see calendar_get_from_db() + * @see calendar_book_set_type() */ -int calendar_get_db_id(calendar_h calendar, int *calendar_db_id); +int calendar_book_get_type(calendar_book_h calendar_book, int *calendar_book_type); /** - * @brief Gets the status whether the calendar is default calendar is or not in the device. + * @brief Gets the status whether the calendar book is default calendar book is or not in the device. * - * @param [in] calendar The calendar handle - * @param [out] is_default @c true if the calendar is the default calendar in the device @c false \n + * @param [in] calendar_book The calendar book handle + * @param [out] is_default @c true if the calendar is the default calendar book in the device @c false \n * (default : @c false) * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter */ -int calendar_get_is_default(calendar_h calendar, bool *is_default); +int calendar_book_get_is_default(calendar_book_h calendar_book, bool *is_default); /** - * @brief Gets the name of the calendar from the calendar handle. + * @brief Sets the name of the calendar from the calendar book handle. * - * @remarks @a calendar_name must be released with free() by you. + * @remarks @a calendar_name must be released with free() by you. * - * @param [in] calendar The calendar handle - * @param [out] calendar_name The name of the calendar \n If the name does not exist, it is NULL + * @param [in] calendar_book The calendar book handle + * @param [in] calendar_book_name The name of the calendar book * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_get_name() + */ +int calendar_book_set_name(calendar_book_h calendar_book, const char *calendar_book_name); + +/** + * @brief Gets the name of the calendar book from the calendar book handle. + * + * @remarks @a calendar_book_name must be released with free() by you. + * + * @param [in] calendar_book The calendar book handle + * @param [out] calendar_book_name The name of the calendar book \n If the name does not exist, it is NULL + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_set_name() + */ +int calendar_book_get_name(calendar_book_h calendar_book, char **calendar_book_name); + +/** + * @brief Sets the visible status of the calendar book handle. + * + * @param [in] calendar_book The calendar book handle + * @param [in] is_visible @c true if the calendar book is visible in the device, otherwise @c false \n + * (default : @c false) + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_get_is_visibile() */ -int calendar_get_name(calendar_h calendar, char **calendar_name); +int calendar_book_set_is_visible(calendar_book_h calendar_book, bool is_visible); /** - * @brief Gets the visible status of the calendar handle. + * @brief Gets the visible status of the calendar book handle. * - * @param [in] calendar The calendar handle - * @param [out] is_visible @c true if the calendar is visible in the device, otherwise @c false \n + * @param [in] calendar_book The calendar book handle + * @param [out] is_visible @c true if the calendar book is visible in the device, otherwise @c false \n * (default : @c false) * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_set_is_visibile() + */ +int calendar_book_get_is_visible(calendar_book_h calendar_book, bool *is_visible); + +/** + * @brief Sets the color of the calendar book from the calendar book handle. + * + * @param [in] calendar_book The calendar book handle + * @param [in] red The calendar book color which represents red among RGB + * @param [in] green The calendar book color which represents green among RGB + * @param [in] blue The calendar book color which represents blue among RGB + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_get_color() + * @see calendar_book_unset_color() + */ +int calendar_book_set_color(calendar_book_h calendar_book, unsigned char red, unsigned char green, unsigned char blue); + +/** + * @brief Unsets the color of the calendar book from the calendar book handle. + * + * @param [in] calendar_book The calendar book handle + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_set_color() */ -int calendar_get_is_visibile(calendar_h calendar, bool *is_visible); +int calendar_book_unset_color(calendar_book_h calendar_book); /** - * @brief Gets the color of the calendar from the calendar handle. + * @brief Gets the color of the calendar book from the calendar book handle. + * + * @remarks returns @a CALENDAR_ERROR_NO_DATA means calendar book color is not valid * - * @param [in] calendar The calendar handle - * @param [out] red The calendar color which represents red among RGB - * @param [out] green The calendar color which represents green among RGB - * @param [out] blue The calendar color which represents blue among RGB + * @param [in] calendar_book The calendar book handle + * @param [out] red The calendar book color which represents red among RGB + * @param [out] green The calendar book color which represents green among RGB + * @param [out] blue The calendar book color which represents blue among RGB * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_NO_DATA Data not found + * + * @see calendar_book_set_color() + */ +int calendar_book_get_color(calendar_book_h calendar_book, unsigned char *red, unsigned char *green, unsigned char *blue); + +/** + * @brief Sets the account database ID associated with the given calendar book handle. + * + * @param[in] calendar_book The calendar book handle + * @param[in] account_db_id The account database ID(default : 0) \n + * 0 means the calendar book is not related to any accounts. + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_get_account_db_id() */ -int calendar_get_color(calendar_h calendar, unsigned char *red, unsigned char *green, unsigned char *blue); +int calendar_book_set_account_db_id(calendar_book_h calendar_book, int account_db_id); /** - * @brief Gets the account database ID associated with the given calendar handle. + * @brief Gets the account database ID associated with the given calendar book handle. * - * @param[in] calendar The calendar handle + * @param[in] calendar_book The calendar book handle * @param[out] account_db_id The account database ID(default : 0) \n - * 0 means the calendar is not related to any accounts. + * 0 means the calendar book is not related to any accounts. * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_set_account_db_id() */ -int calendar_get_account_db_id(calendar_h calendar, int *account_db_id); +int calendar_book_get_account_db_id(calendar_book_h calendar_book, int *account_db_id); /** - * @brief Retrieves all calendars by invoking the given callback function iteratively. + * @brief Frees calendar book array * - * @param[in] callback The callback function to invoke - * @param[in] user_data The user data to be passed to the callback function + * @param[out] calendar_book_array The calendar book array + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_book_get_all_calendar_book() + */ +int calendar_book_free_calendar_book_array(calendar_book_h *calendar_book_array); + +/** + * @brief Retrieves all calendar books as array from database. + * + * @remarks @a calendar_book_array must be released with calendar_book_free_calendar_book_array() by you. + * + * @param[out] calendar_book_array The calendar book array + * @param[out] length The length of the calendar book array * * @return 0 on success, otherwise a negative error value. * @retval #CALENDAR_ERROR_NONE Successful @@ -1672,11 +2424,31 @@ int calendar_get_account_db_id(calendar_h calendar, int *account_db_id); * * @pre This function requires an open connection to the calendar service by calendar_connect(). * - * @post This function invokes calendar_foreach_query_event_cb(). + * @see calendar_connect() + * @see calendar_book_free_calendar_book_array() + */ +int calendar_book_get_all_calendar_book(calendar_book_h **calendar_book_array, int *length); + +/** + * @brief Retrieves calendar books as array with account database ID from database. + * + * @remarks @a calendar_book_array must be released with calendar_book_free_calendar_book_array() by you. * - * @see calendar_foreach_query_calendar_cb() + * @param[in] account_db_id The account database ID to filter + * @param[out] calendar_book_array The calendar book array + * @param[out] length The length of the calendar book array + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #CALENDAR_ERROR_DB_FAILED No access to database + * + * @pre This function requires an open connection to the calendar service by calendar_connect(). + * + * @see calendar_connect() + * @see calendar_book_free_calendar_book_array() */ -int calendar_foreach_calendar_from_db(calendar_foreach_query_calendar_cb callback, void *user_data); +int calendar_book_search_calendar_book_by_account(int account_db_id, calendar_book_h **calendar_book_array, int *length); /** * @} diff --git a/include/calendar_attendee.h b/include/calendar_attendee.h index 8e4cf90..49821f4 100755 --- a/include/calendar_attendee.h +++ b/include/calendar_attendee.h @@ -14,13 +14,14 @@ * limitations under the License. */ - + #ifndef __TIZEN_SOCIAL_CALENDAR_CALENDAR_ATTENDEE_H__ #define __TIZEN_SOCIAL_CALENDAR_CALENDAR_ATTENDEE_H__ #include <tizen.h> #include <time.h> -#include <calendar_types.h> + +#include "calendar_types.h" @@ -161,6 +162,62 @@ int calendar_attendee_get_contact_db_id(calendar_attendee_h attendee, int *conta int calendar_attendee_set_contact_db_id(calendar_attendee_h attendee, int contact_db_id); /** + * @brief Gets the status for the given calendar attendee handle. + * + * @param[in] attendee The calendar attendee handle + * @param[out] status The status of the attendee \n (default : #CALENDAR_ATTENDEE_STATUS_PENDING) + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_attendee_set_status() + */ +int calendar_attendee_get_status(calendar_attendee_h attendee, calendar_attendee_status_e *status); + +/** + * @brief Sets a status for the given calendar attendee handle. + * + * @param[in] attendee The calendar attendee handle + * @param[in] status The status of the attendee + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_attendee_get_status() + */ +int calendar_attendee_set_status(calendar_attendee_h attendee, calendar_attendee_status_e status); + +/** + * @brief Gets the role for the given calendar attendee handle. + * + * @param[in] attendee The calendar attendee handle + * @param[out] role The role of the attendee \n (default : #CALENDAR_ATTENDEE_ROLE_REQ_PARTICIPANT) + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_attendee_set_role() + */ +int calendar_attendee_get_role(calendar_attendee_h attendee, calendar_attendee_role_e *role); + +/** + * @brief Sets a role for the given calendar attendee handle. + * + * @param[in] attendee The calendar attendee handle + * @param[in] role The role of the attendee + * + * @return 0 on success, otherwise a negative error value. + * @retval #CALENDAR_ERROR_NONE Successful + * @retval #CALENDAR_ERROR_INVALID_PARAMETER Invalid parameter + * + * @see calendar_attendee_get_role() + */ +int calendar_attendee_set_role(calendar_attendee_h attendee, calendar_attendee_role_e role); + +/** * @brief Checks whether there is a next attendee handle on the list. * * @param [in] iterator The attendee iterator handle diff --git a/include/calendar_private.h b/include/calendar_private.h index 18d1bcc..2796572 100755..100644 --- a/include/calendar_private.h +++ b/include/calendar_private.h @@ -11,15 +11,18 @@ * 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. + * limitations under the License. */ - + #ifndef __TIZEN_SOCIAL_CALENDAR_PRIVATE_H__ #define __TIZEN_SOCIAL_CALENDAR_PRIVATE_H__ #include <glib.h> -#include <calendar_types.h> + +#include "calendar_types.h" +#include "calendar_private.h" +#include "calendar.h" #ifdef __cplusplus extern "C" { @@ -28,11 +31,11 @@ extern "C" { /** * @internal */ -typedef struct GList calendar_list_s; +typedef struct GList calendar_list_s; typedef struct { - int event_type; - void* user_data; + int event_type; + void* user_data; } calendar_event_legacy_s; typedef struct { @@ -42,7 +45,7 @@ typedef struct { typedef struct { int index; /**< Record index */ - int account_id; /**< Account_id */ + int account_id; /**< Account_id */ int cal_type; /**< Calendar event type */ int sch_category; /**< Category of schedule */ @@ -72,7 +75,7 @@ typedef struct int task_status; /**< current task status */ int priority; /**< Priority */ int timezone; /**< timezone of task */ - int file_id; /**< file id for attach or alarm tone*/ + int file_id; /**< file id for attach or alarm tone*/ int contact_id; /**< contact id for birthday in contact list */ GList* attendee_list; /**< collection of attendee */ int busy_status; /**< ACS, G : Flag of busy or not */ @@ -93,7 +96,6 @@ typedef struct char* edit_uri; /**< G : EditUri for google calendar */ char* gevent_id; /**< G : Server id of an event */ int dst; /**< dst of event */ - GList* exception_date_list; /**< exception dates */ int original_event_id; /**< original event id for recurrency exception */ double latitude; double longitude; @@ -120,11 +122,8 @@ typedef struct GList* _calendar_glist_next_until_not_deleted(GList* list); -int _calendar_event_foreach(calendar_foreach_query_event_cb callback, int account_db_id, int calendar_db_id, void* user_data); -int _calendar_todo_foreach(calendar_foreach_query_todo_cb callback, int account_db_id, int calendar_db_id, void* user_data); -int _calendar_event_query(calendar_foreach_query_event_cb callback, int calendar_db_id, char* option, const char* string_to_find, void* user_data); -int _calendar_get_account_db_id(int calendar_db_id); -void _calendar_parse_color(char* color_string, unsigned char* red, unsigned char* green, unsigned char* blue); +int _calendar_get_account_db_id(int calendar_db_id); +void _calendar_parse_color(char* color_string, unsigned char* red, unsigned char* green, unsigned char* blue); /** * Internal Macros @@ -140,14 +139,13 @@ void _calendar_parse_color(char* color_string, unsigned char* red, unsigned char } \ }while(0) -#define CONTACTS_INVALID_ARG_CHECK(_condition_) do { \ +#define CALENDAR_INVALID_ARG_CHECK(_condition_) do { \ if(_condition_) { \ LOGE("[%s] CALENDAR_ERROR_INVALID_PARAMETER(0x%08x)", __FUNCTION__, CALENDAR_ERROR_INVALID_PARAMETER); \ return CALENDAR_ERROR_INVALID_PARAMETER; \ } \ }while(0) - #ifdef __cplusplus } #endif diff --git a/include/calendar_types.h b/include/calendar_types.h index 890a711..058d395 100755 --- a/include/calendar_types.h +++ b/include/calendar_types.h @@ -11,7 +11,7 @@ * 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. + * limitations under the License. */ @@ -46,6 +46,16 @@ typedef enum } calendar_error_e; /** + * @brief Enumerations for calendar book type. "OR"ing supported. + */ +typedef enum +{ + CALENDAR_BOOK_TYPE_NONE = 0, /**< Calendar book type default */ + CALENDAR_BOOK_TYPE_EVENT = 1<<0, /**< Event calendar book type */ + CALENDAR_BOOK_TYPE_TODO = 1<<1 /**< To-do Calendar book type */ +} calendar_book_type_e; + +/** * @brief Enumerations for calendar visibility type. */ typedef enum @@ -56,31 +66,6 @@ typedef enum } calendar_visibility_e; /** - * @brief Enumerations for calendar timezone details. - */ -typedef struct -{ - char* timezone_name; /**< Timezone name eg. Europe/Paris */ - char* city_name; /**< City name eg. Paris */ - char* country_name; /**< Country name eg. France */ - char* time_offset; /**< Time offset eg. GMT+1 */ - char* timezone_detail_filepath; /**< Timezone detail file path eg. /.../Europe/Paris */ -}calendar_foreach_timezone_s ; - -/** - * @brief Called once for each timezone supported on a device. - * - * @param[out] timezone The timezone information - * @param[in] user_data The user data passed from the foreach function - * - * @return @c true to continue with the next iteration of the loop or return @c false to break out of the loop. - * - * @pre calendar_foreach_timezone() will invoke this callback. - * - * @see calendar_foreach_timezone() - */ -typedef bool (*calendar_foreach_timezone_cb)(calendar_foreach_timezone_s *timezone, void *user_data); -/** * @} */ @@ -89,18 +74,45 @@ typedef bool (*calendar_foreach_timezone_cb)(calendar_foreach_timezone_s *timezo * @{ */ - /** +/** + * @brief Enumerations of attendee status. + */ +typedef enum +{ + CALENDAR_ATTENDEE_STATUS_PENDING = 0, /**< Pending status */ + CALENDAR_ATTENDEE_STATUS_ACCEPTED, /**< Accepted status */ + CALENDAR_ATTENDEE_STATUS_DECLINED, /**< Decliend status */ + CALENDAR_ATTENDEE_STATUS_TENTATIVE, /**< Tentative status */ + CALENDAR_ATTENDEE_STATUS_DELEGATED, /**< Delegated status */ + CALENDAR_ATTENDEE_STATUS_COMPLETED, /**< Completed status */ + CALENDAR_ATTENDEE_STATUS_IN_PROCESS, /**< In process status */ + CALENDAR_ATTENDEE_STATUS_MAX, +}calendar_attendee_status_e; + +/** + * @brief Enumerations of attendee role. + */ +typedef enum +{ + CALENDAR_ATTENDEE_ROLE_REQ_PARTICIPANT = 0, /**< Participation is required */ + CALENDAR_ATTENDEE_ROLE_OPT_PARTICIPANT, /**< Accepted status */ + CALENDAR_ATTENDEE_ROLE_NON_PARTICIPANT, /**< Non-Participant */ + CALENDAR_ATTENDEE_ROLE_CHAIR, /**< Chairperson */ + CALENDAR_ATTENDEE_ROLE_MAX, +}calendar_attendee_role_e; + +/** * @brief The calendar attendee handle. * @see calendar_event_add_attendee() * @see calendar_event_remove_attendee() */ -typedef struct calendar_attendee_s *calendar_attendee_h; /* cal_value */ +typedef struct calendar_attendee_s* calendar_attendee_h; /** * @brief The event attendee iterator. * @see calendar_event_get_attendee_iterator() */ -typedef struct calendar_list_s *calendar_attendee_iterator_h; +typedef struct calendar_list_s* calendar_attendee_iterator_h; /** * @} @@ -115,16 +127,10 @@ typedef struct calendar_list_s *calendar_attendee_iterator_h; /** * @brief The calendar event handle. */ -typedef struct calendar_event_s *calendar_event_h; +typedef struct calendar_event_s* calendar_event_h; /** - * @brief The calendar recurrence exception iterator handle. - * @see calendar_event_get_recurrence_exception_iterator() - */ -typedef struct calendar_list_s *calendar_recurrence_exception_iterator_h; - -/** - * @brief Reminder interval type of event such as minutes, hours, days, or etc. + * @brief Reminder interval type of event such as minutes, hours, days, or etc. */ typedef enum { @@ -136,7 +142,6 @@ typedef enum CALENDAR_REMINDER_TIME_UNIT_MONTH, /**< Reminder interval in months */ } calendar_reminder_interval_type_e; - /** * @brief Enumerations of the frequency of event recurrence. */ @@ -146,11 +151,11 @@ typedef enum CALENDAR_RECURRENCE_DAILY, /**< A Event occurs every day */ CALENDAR_RECURRENCE_WEEKLY, /**< A Event occurs on the same day of every week \n According to week flag, the event will recurrence every days of week */ CALENDAR_RECURRENCE_MONTHLY, /**< A Event occurs on the same day of every month */ - CALENDAR_RECURRENCE_YEARLY, /**< A Event occurs on the same day of every year */ + CALENDAR_RECURRENCE_YEARLY /**< A Event occurs on the same day of every year */ } calendar_recurrence_frequency_e; /** - * @brief Enumerations of weekly recurrence event which days of week will be repeated. + * @brief Enumerations of weekly recurrence event which days of week will be repeated. "OR"ing supported. */ typedef enum { @@ -166,27 +171,79 @@ typedef enum } calendar_week_flag_e; /** - * @brief Called once for each event returned from the query. - * - * @param[in] event The calendar event handle - * @param[in] user_data The user data passed from the foreach function - * - * @return @c true to continue with the next iteration of the loop or return @c false to break out of the loop. - * - * @pre calendar_foreach_event_from_db() will invoke this callback. - * @pre calendar_query_event_by_subject() will invoke this callback. - * @pre calendar_query_event_by_description() will invoke this callback. - * @pre calendar_query_event_by_location() will invoke this callback. - * @pre calendar_query_event_by_period() will invoke this callback. - * @pre calendar_query_event_by_time_last_modified() will invoke this callback. + * @brief Enumerations of category for event. + */ +typedef enum +{ + CALENDAR_EVENT_CATEGORY_NONE=0, /**< No category */ + CALENDAR_EVENT_CATEGORY_APPOINTMENT, /**< Appointment category */ + CALENDAR_EVENT_CATEGORY_IMPORTANT, /**< Important category */ + CALENDAR_EVENT_CATEGORY_ANNIVERSARY, /**< Anniversary category */ + CALENDAR_EVENT_CATEGORY_BIRTHDAY, /**< Birthday category */ + CALENDAR_EVENT_CATEGORY_HOLIDAY, /**< Holiday category */ + CALENDAR_EVENT_CATEGORY_PRIVATE, /**< Private category */ + CALENDAR_EVENT_CATEGORY_BUSSINESS /**< Bussiness category */ +}calendar_event_category_e; + +/** + * @brief Enumerations of status for event. + */ +typedef enum +{ + CALENDAR_EVENT_STATUS_NONE = 0x01, /**< None */ + CALENDAR_EVENT_STATUS_TENTATIVE = 0x02, /**< The event is tentative */ + CALENDAR_EVENT_STATUS_CONFIRMED = 0x04, /**< The event is confirmed */ + CALENDAR_EVENT_STATUS_CANCELLED = 0x08 /**< The event is cancelled */ +}calendar_event_status_e; + +/** + * @brief Enumerations of busy status for event. + */ +typedef enum +{ + CALENDAR_EVENT_BUSY_STATUS_FREE = 0, /**< The free status */ + CALENDAR_EVENT_BUSY_STATUS_BUSY, /**< The busy status */ + CALENDAR_EVENT_BUSY_STATUS_UNAVAILABLE, /**< The unavailable status */ + CALENDAR_EVENT_BUSY_STATUS_TENTATIVE /**< The tentative status */ +}calendar_event_busy_status_e; + +/** + * @brief Calendar event item priority + */ +typedef enum +{ + CALENDAR_EVENT_PRIORITY_LOW = 0, /**< Low priority */ + CALENDAR_EVENT_PRIORITY_NORMAL, /**< Normal priority */ + CALENDAR_EVENT_PRIORITY_HIGH /**< High priority */ +} calendar_event_priority_e; + +/** + * @brief Enumerations of modified status for event. + */ +typedef enum +{ + CALENDAR_EVENT_MODIFIED_STATUS_INSERTED = 0, /**< The event is inserted */ + CALENDAR_EVENT_MODIFIED_STATUS_UPDATED, /**< The event is updated */ + CALENDAR_EVENT_MODIFIED_STATUS_DELETED /**< The event is deleted */ +}calendar_event_modified_status_e; + +/** + * @brief The structure of modified event * - * @see calendar_query_event_by_subject() - * @see calendar_query_event_by_description() - * @see calendar_query_event_by_location() - * @see calendar_query_event_by_period() - * @see calendar_foreach_event_from_db() + * @see calendar_event_search_event_by_version() + */ +typedef struct +{ + calendar_event_modified_status_e modified_status; /**< modified status */ + int event_db_id; /**< event database ID */ + int calendar_book_db_id; /**< calendar book database ID */ + int calendar_db_version; /**< calendar database version */ +}calendar_modified_event_s; + +/** + * @brief The pointer type of calendar_modified_event_s */ -typedef bool (*calendar_foreach_query_event_cb)(calendar_event_h event, void *user_data); +typedef calendar_modified_event_s* pcalendar_modified_event_s; /** * @} @@ -198,18 +255,25 @@ typedef bool (*calendar_foreach_query_event_cb)(calendar_event_h event, void *us */ /** - * @brief Called when any database changes has occurred. + * @brief Enumerations of calendar database changed type. + */ +typedef enum +{ + CALENDAR_DB_CHANGED_CB_TYPE_CALENDAR_BOOK = 1, /**< Subscribes a calendar book related notifications */ + CALENDAR_DB_CHANGED_CB_TYPE_EVENT, /**< Subscribes a event related notifications */ + CALENDAR_DB_CHANGED_CB_TYPE_TODO /**< Subscribes a to-do related notifications */ +}calendar_db_changed_cb_type_e; + +/** + * @brief Called when any database changes has occurred. * * @param[in] user_data The user data passed from the callback registration function * - * @pre calendar_set_db_changed_cb() will invoke this callback. + * @pre calendar_add_db_changed_cb() will invoke this callback. * @pre calendar_event_insert_to_db(), calendar_event_delete_from_db() or calendar_event_update_to_db() will invoke this callback. * - * @see calendar_set_db_changed_cb() - * @see calendar_unset_db_changed_cb() - * @see calendar_event_insert_to_db() - * @see calendar_event_delete_from_db() - * @see calendar_event_update_to_db() + * @see calendar_add_db_changed_cb() + * @see calendar_remove_db_changed_cb() */ typedef void (*calendar_db_changed_cb)(void *user_data); @@ -225,56 +289,67 @@ typedef void (*calendar_db_changed_cb)(void *user_data); /** * @brief The calendar to-do handle. */ -typedef struct calendar_event_s *calendar_todo_h; +typedef struct calendar_event_s* calendar_todo_h; /** * @brief Calendar to-do item priority */ typedef enum { - CALENDAR_TODO_PRIORITY_LOW = 0, /**< Low priority */ - CALENDAR_TODO_PRIORITY_NORMAL, /**< Normal priority */ - CALENDAR_TODO_PRIORITY_HIGH /**< High priority */ + CALENDAR_TODO_PRIORITY_NONE = 0x01, /**< Priority none */ + CALENDAR_TODO_PRIORITY_LOW = 0x08, /**< Low priority */ + CALENDAR_TODO_PRIORITY_NORMAL = 0x04, /**< Normal priority */ + CALENDAR_TODO_PRIORITY_HIGH = 0x02, /**< High priority */ } calendar_todo_priority_e; +/** + * @brief Enumerations of status for to-do. + */ typedef enum { - CALENDAR_TODO_STATUS_NONE = 0, /**< None */ - CALENDAR_TODO_STATUS_NEEDS_ACTION, /**< Needs action status */ - CALENDAR_TODO_STATUS_COMPLETED, /**< Completed status */ - CALENDAR_TODO_STATUS_IN_PROCESS, /**< Work in process status */ - CALENDAR_TODO_STATUS_CANCELED /**< Canceled status */ + CALENDAR_TODO_STATUS_NONE = 0x0100, /**< None */ + CALENDAR_TODO_STATUS_NEEDS_ACTION = 0x0200, /**< Needs action status */ + CALENDAR_TODO_STATUS_COMPLETED = 0x0400, /**< Completed status */ + CALENDAR_TODO_STATUS_IN_PROCESS = 0x0800, /**< Work in process status */ + CALENDAR_TODO_STATUS_CANCELED = 0x1000 /**< Canceled status */ } calendar_todo_status_e; +// deprecated +#define CALENDAR_TODO_FILTER_PRIORITY_ALL -1 + +// deprecated +#define CALENDAR_TODO_FILTER_STATUS_ALL -1 + /** - * @brief Called once for each calendar to-do item. - * - * @param[in] todo The calendar to-do handle - * @param[in] user_data The user data passed from the foreach function - * - * @return @c true to continue with the next iteration of the loop or return @c false to break out of the loop. + * @brief Enumerations of modified status for to-do. + */ +typedef enum +{ + CALENDAR_TODO_MODIFIED_STATUS_INSERTED = 0, /**< The to-do is inserted */ + CALENDAR_TODO_MODIFIED_STATUS_UPDATED, /**< The to-do is updated */ + CALENDAR_TODO_MODIFIED_STATUS_DELETED /**< The to-do is deleted */ +}calendar_todo_modified_status_e; + +/** + * @brief The structure of modified to-do * - * @pre calendar_foreach_todo_from_db() will invoke this callback. - * @see calendar_foreach_todo_from_db() + * @see calendar_todo_search_todo_by_version() */ -typedef bool (*calendar_foreach_query_todo_cb)(calendar_todo_h todo, void *user_data); +typedef struct +{ + calendar_todo_modified_status_e modified_status; /**< modified status */ + int todo_db_id; /**< to-do database ID */ + int calendar_book_db_id; /**< calendar book database ID */ + int calendar_db_version; /**< calendar database version */ +}calendar_modified_todo_s; + /** - * @} + * @brief The pointer type of calendar_modified_todo_s */ +typedef calendar_modified_todo_s* pcalendar_modified_todo_s; /** - * @ingroup CAPI_SOCIAL_CALENDAR_MODULE - * @defgroup CAPI_SOCIAL_CALENDAR_MULTIPLECALENDAR_MODULE Multiple Calendar - * - * @brief Calendar definition and Calendar related operations. - * - * @section CAPI_SOCIAL_CALENDAR_MULTIPLECALENDAR_MODULE_HEADER Required Header - * \#include <calendar.h> - * - * @section CAPI_SOCIAL_CALENDAR_MULTIPLECALENDAR_MODULE_OVERVIEW Overview - * Calendar - * - * <BR> + * @} */ /** @@ -285,42 +360,42 @@ typedef bool (*calendar_foreach_query_todo_cb)(calendar_todo_h todo, void *user_ /** * @brief The calendar handle. */ -typedef struct calendar_event_s *calendar_h; +typedef struct calendar_event_s* calendar_book_h; + +// deprecated +#define DEFAULT_CALENDAR_BOOK_DB_ID 1 + +/** + * @brief Definition for default event calendar book database ID + */ +#define DEFAULT_EVENT_CALENDAR_BOOK_DB_ID 1 + +/** + * @brief Definition for default to-do calendar book database ID + */ +#define DEFAULT_TODO_CALENDAR_BOOK_DB_ID 2 /** - * @brief Definition for default calendar database ID + * @brief Definition for all calendar book */ -#define DEFAULT_CALENDAR_DB_ID 1 +#define CALENDAR_BOOK_FILTER_ALL -1 /** * @brief The structure of calendar in search results. * - * @see calendar_foreach_query_calendar_cb() + * @see calendar_foreach_query_calendar_book_cb() */ typedef struct { - int calendar_db_id; /**< calendar database ID */ - char* calendar_name; /**< calendar name */ - bool calendar_is_default; /**< default calendar status */ - bool calendar_is_visible; /**< calendar visible status */ - unsigned char calendar_color_red; /**< calendar color red among RGB */ - unsigned char calendar_color_green; /**< calendar color green among RGB */ - unsigned char calendar_color_blue; /**< calendar color blue among RGB */ - int account_db_id; /**< account database ID */ -}calendar_query_calendar_s; - -/** - * @brief The callback function to get the calendar - * - * @param[in] calendar The calendar - * @param[in] user_data The user data passed from the foreach function - * - * @return @c true to continue with the next iteration of the loop or @c false to break out of the loop. - * - * @pre calendar_foreach_calendar_from_db() will invoke this callback. - * - * @see calendar_foreach_calendar_from_db() - */ -typedef bool (*calendar_foreach_query_calendar_cb)(calendar_query_calendar_s *calendar, void *user_data); + int calendar_db_id; /**< Calendar database ID */ + int calendar_type; /**< Calendar type. It supports "OR"ing of #calendar_book_type_e*/ + char* calendar_name; /**< Calendar name */ + bool calendar_is_default; /**< Default calendar status */ + bool calendar_is_visible; /**< Calendar visible status */ + unsigned char calendar_color_red; /**< Calendar color red among RGB */ + unsigned char calendar_color_green; /**< Calendar color green among RGB */ + unsigned char calendar_color_blue; /**< Calendar color blue among RGB */ + int account_db_id; /**< Account database ID */ +}calendar_query_calendar_book_s; /** * @} |