17777dab0Sopenharmony_ci/* 27777dab0Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47777dab0Sopenharmony_ci * you may not use this file except in compliance with the License. 57777dab0Sopenharmony_ci * You may obtain a copy of the License at 67777dab0Sopenharmony_ci * 77777dab0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87777dab0Sopenharmony_ci * 97777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127777dab0Sopenharmony_ci * See the License for the specific language governing permissions and 137777dab0Sopenharmony_ci * limitations under the License. 147777dab0Sopenharmony_ci */ 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_ci/** 177777dab0Sopenharmony_ci * @addtogroup Pasteboard 187777dab0Sopenharmony_ci * @{ 197777dab0Sopenharmony_ci * 207777dab0Sopenharmony_ci * @brief Provides the copy and paste support for the system Pasteboard. 217777dab0Sopenharmony_ci * You can use the APIs of this module to operate the Pasteboard content of the plain text, HTML, 227777dab0Sopenharmony_ci * URI, Want, pixel map, and other types. 237777dab0Sopenharmony_ci * 247777dab0Sopenharmony_ci * @since 13 257777dab0Sopenharmony_ci */ 267777dab0Sopenharmony_ci 277777dab0Sopenharmony_ci/** 287777dab0Sopenharmony_ci * @file OH_Pasteboard.h 297777dab0Sopenharmony_ci * 307777dab0Sopenharmony_ci * @brief Provides APIs and enums of the Pasteboard module. 317777dab0Sopenharmony_ci * 327777dab0Sopenharmony_ci * @kit BasicServicesKit 337777dab0Sopenharmony_ci * @library libpasteboard.so 347777dab0Sopenharmony_ci * @syscap SystemCapability.MiscServices.Pasteboard 357777dab0Sopenharmony_ci * 367777dab0Sopenharmony_ci * @since 13 377777dab0Sopenharmony_ci */ 387777dab0Sopenharmony_ci 397777dab0Sopenharmony_ci#ifndef OH_PASTEBOARD_H 407777dab0Sopenharmony_ci#define OH_PASTEBOARD_H 417777dab0Sopenharmony_ci 427777dab0Sopenharmony_ci#include <inttypes.h> 437777dab0Sopenharmony_ci#include <stdbool.h> 447777dab0Sopenharmony_ci#include "database/udmf/udmf.h" 457777dab0Sopenharmony_ci 467777dab0Sopenharmony_ci#ifdef __cplusplus 477777dab0Sopenharmony_ciextern "C" { 487777dab0Sopenharmony_ci#endif 497777dab0Sopenharmony_ci 507777dab0Sopenharmony_ci/** 517777dab0Sopenharmony_ci * @brief Enumerates the types of data changes that can be observed. 527777dab0Sopenharmony_ci * 537777dab0Sopenharmony_ci * @since 13 547777dab0Sopenharmony_ci */ 557777dab0Sopenharmony_citypedef enum Pasteboard_NotifyType { 567777dab0Sopenharmony_ci /** 577777dab0Sopenharmony_ci * @brief Change of the Pasteboard data in the local device. 587777dab0Sopenharmony_ci */ 597777dab0Sopenharmony_ci NOTIFY_LOCAL_DATA_CHANGE = 1, 607777dab0Sopenharmony_ci /** 617777dab0Sopenharmony_ci * @brief Change of the Pasteboard data in the remote devices. 627777dab0Sopenharmony_ci */ 637777dab0Sopenharmony_ci NOTIFY_REMOTE_DATA_CHANGE = 2 647777dab0Sopenharmony_ci} Pasteboard_NotifyType; 657777dab0Sopenharmony_ci 667777dab0Sopenharmony_ci/** 677777dab0Sopenharmony_ci * @brief Defines the callback function used to return the Pasteboard data changed. 687777dab0Sopenharmony_ci * 697777dab0Sopenharmony_ci * @param context The context set by {@link OH_PasteboardObserver_SetData} function. 707777dab0Sopenharmony_ci * @param type The types of data changes. For details, see {@link Pasteboard_NotifyType}. 717777dab0Sopenharmony_ci * @since 13 727777dab0Sopenharmony_ci */ 737777dab0Sopenharmony_citypedef void (*Pasteboard_Notify)(void* context, Pasteboard_NotifyType type); 747777dab0Sopenharmony_ci 757777dab0Sopenharmony_ci/** 767777dab0Sopenharmony_ci * @brief Defines the callback function used free the context. 777777dab0Sopenharmony_ci * @param context Pointer to the context which is to be free. 787777dab0Sopenharmony_ci * @since 13 797777dab0Sopenharmony_ci */ 807777dab0Sopenharmony_citypedef void (*Pasteboard_Finalize)(void* context); 817777dab0Sopenharmony_ci 827777dab0Sopenharmony_ci/** 837777dab0Sopenharmony_ci * @brief Defines the Pasteboard subscriber information 847777dab0Sopenharmony_ci * 857777dab0Sopenharmony_ci * @since 13 867777dab0Sopenharmony_ci */ 877777dab0Sopenharmony_citypedef struct OH_PasteboardObserver OH_PasteboardObserver; 887777dab0Sopenharmony_ci 897777dab0Sopenharmony_ci/** 907777dab0Sopenharmony_ci * @brief Creates a {@link OH_PasteboardObserver} instance. 917777dab0Sopenharmony_ci * 927777dab0Sopenharmony_ci * @return Returns the pointer to the {@link OH_PasteboardObserver} instance created if the operation is successful. 937777dab0Sopenharmony_ci * Returns nullptr if the operation is failed. 947777dab0Sopenharmony_ci * @see OH_PasteboardObserver. 957777dab0Sopenharmony_ci * @since 13 967777dab0Sopenharmony_ci */ 977777dab0Sopenharmony_ciOH_PasteboardObserver* OH_PasteboardObserver_Create(); 987777dab0Sopenharmony_ci 997777dab0Sopenharmony_ci/** 1007777dab0Sopenharmony_ci * @brief Destroy a {@link OH_PasteboardObserver} instance. 1017777dab0Sopenharmony_ci * 1027777dab0Sopenharmony_ci * @param observer Pointer to the {@link OH_PasteboardObserver} instance to destroy. 1037777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, see {@link PASTEBOARD_ErrCode}. 1047777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 1057777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 1067777dab0Sopenharmony_ci * @see OH_PasteboardObserver PASTEBOARD_ErrCode. 1077777dab0Sopenharmony_ci * @since 13 1087777dab0Sopenharmony_ci */ 1097777dab0Sopenharmony_ciint OH_PasteboardObserver_Destroy(OH_PasteboardObserver* observer); 1107777dab0Sopenharmony_ci 1117777dab0Sopenharmony_ci/** 1127777dab0Sopenharmony_ci * @brief Sets a callback function to return the Pasteboard data changed. 1137777dab0Sopenharmony_ci * 1147777dab0Sopenharmony_ci * @param observer Pointer to the {@link OH_PasteboardObserver} instance. 1157777dab0Sopenharmony_ci * @param context Pointer to the context set, which is the first parameter in Pasteboard_Notify. 1167777dab0Sopenharmony_ci * @param callback Callback to set. For details, see {@link Pasteboard_Notify}. 1177777dab0Sopenharmony_ci * @param finalize Optional callback that can free context when destroy observer. 1187777dab0Sopenharmony_ci * For details, see {@link Pasteboard_Finalize}. 1197777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, see {@link PASTEBOARD_ErrCode}. 1207777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 1217777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 1227777dab0Sopenharmony_ci * @see OH_PasteboardObserver Pasteboard_Notify PASTEBOARD_ErrCode. 1237777dab0Sopenharmony_ci * @since 13 1247777dab0Sopenharmony_ci */ 1257777dab0Sopenharmony_ciint OH_PasteboardObserver_SetData(OH_PasteboardObserver* observer, void* context, 1267777dab0Sopenharmony_ci const Pasteboard_Notify callback, const Pasteboard_Finalize finalize); 1277777dab0Sopenharmony_ci 1287777dab0Sopenharmony_ci/** 1297777dab0Sopenharmony_ci * @brief Represents the Pasteboard information. 1307777dab0Sopenharmony_ci * 1317777dab0Sopenharmony_ci * @since 13 1327777dab0Sopenharmony_ci */ 1337777dab0Sopenharmony_citypedef struct OH_Pasteboard OH_Pasteboard; 1347777dab0Sopenharmony_ci 1357777dab0Sopenharmony_ci/** 1367777dab0Sopenharmony_ci * @brief Creates a {@link OH_Pasteboard} instance. 1377777dab0Sopenharmony_ci * 1387777dab0Sopenharmony_ci * @return Returns the pointer to the {@link OH_Pasteboard} instance created if the operation is successful. 1397777dab0Sopenharmony_ci * Returns nullptr if the memory is not enough. 1407777dab0Sopenharmony_ci * @see OH_Pasteboard. 1417777dab0Sopenharmony_ci * @since 13 1427777dab0Sopenharmony_ci */ 1437777dab0Sopenharmony_ciOH_Pasteboard* OH_Pasteboard_Create(); 1447777dab0Sopenharmony_ci 1457777dab0Sopenharmony_ci/** 1467777dab0Sopenharmony_ci * @brief Destroy a {@link OH_Pasteboard} instance. 1477777dab0Sopenharmony_ci * 1487777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance to destroy. 1497777dab0Sopenharmony_ci * @see OH_Pasteboard. 1507777dab0Sopenharmony_ci * @since 13 1517777dab0Sopenharmony_ci */ 1527777dab0Sopenharmony_civoid OH_Pasteboard_Destroy(OH_Pasteboard* pasteboard); 1537777dab0Sopenharmony_ci 1547777dab0Sopenharmony_ci/** 1557777dab0Sopenharmony_ci * @brief Subscribes to the Pasteboard data change. 1567777dab0Sopenharmony_ci * 1577777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 1587777dab0Sopenharmony_ci * @param type Event type to subscribe to. 1597777dab0Sopenharmony_ci * @param observer - Pointer to the observer information, which specifies the callback used to 1607777dab0Sopenharmony_ci * reporting the pasteboard data change. For details, see {@link OH_PasteboardObserver}. 1617777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, {@link PASTEBOARD_ErrCode}. 1627777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 1637777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 1647777dab0Sopenharmony_ci * @see OH_Pasteboard OH_PasteboardObserver PASTEBOARD_ErrCode. 1657777dab0Sopenharmony_ci * @since 13 1667777dab0Sopenharmony_ci */ 1677777dab0Sopenharmony_ciint OH_Pasteboard_Subscribe(OH_Pasteboard* pasteboard, int type, const OH_PasteboardObserver* observer); 1687777dab0Sopenharmony_ci 1697777dab0Sopenharmony_ci/** 1707777dab0Sopenharmony_ci * @brief Unsubscribes from the Pasteboard data change. 1717777dab0Sopenharmony_ci * 1727777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 1737777dab0Sopenharmony_ci * @param type Event type to subscribe to. 1747777dab0Sopenharmony_ci * @param observer - Pointer to the observer information, which specifies the callback used to 1757777dab0Sopenharmony_ci * reporting the pasteboard data change. For details, see {@link OH_PasteboardObserver}. 1767777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, {@link PASTEBOARD_ErrCode}. 1777777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 1787777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 1797777dab0Sopenharmony_ci * @see OH_Pasteboard OH_PasteboardObserver PASTEBOARD_ErrCode. 1807777dab0Sopenharmony_ci * @since 13 1817777dab0Sopenharmony_ci */ 1827777dab0Sopenharmony_ciint OH_Pasteboard_Unsubscribe(OH_Pasteboard* pasteboard, int type, const OH_PasteboardObserver* observer); 1837777dab0Sopenharmony_ci 1847777dab0Sopenharmony_ci/** 1857777dab0Sopenharmony_ci * @brief Checks whether the Pasteboard data is from a remote device. 1867777dab0Sopenharmony_ci * 1877777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 1887777dab0Sopenharmony_ci * @return Returns a boolean value, which indicates whether the the data is from a remote device. 1897777dab0Sopenharmony_ci * The value {@code false} means Pasteboard data is not from a remote device. 1907777dab0Sopenharmony_ci * The value {@code true} means the opposite. 1917777dab0Sopenharmony_ci * @see OH_Pasteboard. 1927777dab0Sopenharmony_ci * @since 13 1937777dab0Sopenharmony_ci */ 1947777dab0Sopenharmony_cibool OH_Pasteboard_IsRemoteData(OH_Pasteboard* pasteboard); 1957777dab0Sopenharmony_ci 1967777dab0Sopenharmony_ci/** 1977777dab0Sopenharmony_ci * @brief Obtains the source of Pasteboard data. 1987777dab0Sopenharmony_ci * 1997777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 2007777dab0Sopenharmony_ci * @param source Pointer to the source data. 2017777dab0Sopenharmony_ci * @param len Length of the source data. 2027777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, see {@link PASTEBOARD_ErrCode}. 2037777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 2047777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 2057777dab0Sopenharmony_ci * @see OH_Pasteboard PASTEBOARD_ErrCode. 2067777dab0Sopenharmony_ci * @since 13 2077777dab0Sopenharmony_ci */ 2087777dab0Sopenharmony_ciint OH_Pasteboard_GetDataSource(OH_Pasteboard* pasteboard, char* source, unsigned int len); 2097777dab0Sopenharmony_ci 2107777dab0Sopenharmony_ci/** 2117777dab0Sopenharmony_ci * @brief Checks whether the Pasteboard has the specified type of data. 2127777dab0Sopenharmony_ci * 2137777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 2147777dab0Sopenharmony_ci * @param type Poniter to the type of data to check. 2157777dab0Sopenharmony_ci * @return Returns a boolean value, which indicates whether the Pasteboard has the specified type of data. 2167777dab0Sopenharmony_ci * The value {@code true} means the Pasteboard has the specified type of data. 2177777dab0Sopenharmony_ci * The value {@code false} means the opposite. 2187777dab0Sopenharmony_ci * @see OH_Pasteboard. 2197777dab0Sopenharmony_ci * @since 13 2207777dab0Sopenharmony_ci */ 2217777dab0Sopenharmony_cibool OH_Pasteboard_HasType(OH_Pasteboard* pasteboard, const char* type); 2227777dab0Sopenharmony_ci 2237777dab0Sopenharmony_ci/** 2247777dab0Sopenharmony_ci * @brief Checks whether there is data in the Pasteboard. 2257777dab0Sopenharmony_ci * 2267777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 2277777dab0Sopenharmony_ci * @return Returns a boolean value, which indicates whether there is data in the Pasteboard. 2287777dab0Sopenharmony_ci * The value {@code true} means there is data in Pasteboard. 2297777dab0Sopenharmony_ci * The value {@code false} means the opposite. 2307777dab0Sopenharmony_ci * @see OH_Pasteboard. 2317777dab0Sopenharmony_ci * @since 13 2327777dab0Sopenharmony_ci */ 2337777dab0Sopenharmony_cibool OH_Pasteboard_HasData(OH_Pasteboard* pasteboard); 2347777dab0Sopenharmony_ci 2357777dab0Sopenharmony_ci/** 2367777dab0Sopenharmony_ci * @brief Obtains data from the Pasteboard. 2377777dab0Sopenharmony_ci * 2387777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 2397777dab0Sopenharmony_ci * @param status The status code of the execution. For details, see {@link PASTEBOARD_ErrCode}. 2407777dab0Sopenharmony_ci * @return Returns the pointer to the {@link OH_UdmfData} instance. 2417777dab0Sopenharmony_ci * @see OH_Pasteboard OH_UdmfData PASTEBOARD_ErrCode. 2427777dab0Sopenharmony_ci * @since 13 2437777dab0Sopenharmony_ci */ 2447777dab0Sopenharmony_ciOH_UdmfData* OH_Pasteboard_GetData(OH_Pasteboard* pasteboard, int* status); 2457777dab0Sopenharmony_ci 2467777dab0Sopenharmony_ci/** 2477777dab0Sopenharmony_ci * @brief Writes data to the Pasteboard. 2487777dab0Sopenharmony_ci * 2497777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 2507777dab0Sopenharmony_ci * @param data Pointer to the {@link OH_UdmfData} instance. 2517777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, see {@link PASTEBOARD_ErrCode}. 2527777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 2537777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 2547777dab0Sopenharmony_ci * @see OH_Pasteboard OH_UdmfData PASTEBOARD_ErrCode. 2557777dab0Sopenharmony_ci * @since 13 2567777dab0Sopenharmony_ci */ 2577777dab0Sopenharmony_ciint OH_Pasteboard_SetData(OH_Pasteboard* pasteboard, OH_UdmfData* data); 2587777dab0Sopenharmony_ci 2597777dab0Sopenharmony_ci/** 2607777dab0Sopenharmony_ci * @brief Clears the data in the Pastedboard. 2617777dab0Sopenharmony_ci * 2627777dab0Sopenharmony_ci * @param pasteboard Pointer to the {@link OH_Pasteboard} instance. 2637777dab0Sopenharmony_ci * @return Returns the status code of the execution. For details, see {@link PASTEBOARD_ErrCode}. 2647777dab0Sopenharmony_ci * Returns {@link ERR_OK} if the operation is successful. 2657777dab0Sopenharmony_ci * Returns {@link ERR_INVALID_PARAMETER} if invalid args are detected. 2667777dab0Sopenharmony_ci * @see OH_Pasteboard PASTEBOARD_ErrCode. 2677777dab0Sopenharmony_ci * @since 13 2687777dab0Sopenharmony_ci */ 2697777dab0Sopenharmony_ciint OH_Pasteboard_ClearData(OH_Pasteboard* pasteboard); 2707777dab0Sopenharmony_ci#ifdef __cplusplus 2717777dab0Sopenharmony_ci}; 2727777dab0Sopenharmony_ci#endif 2737777dab0Sopenharmony_ci 2747777dab0Sopenharmony_ci/** @} */ 2757777dab0Sopenharmony_ci#endif