* Copyright (c) 2022 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef NWEB_DRAG_DATA_H
#define NWEB_DRAG_DATA_H
#include <memory>
#include <string>
#include "nweb_export.h"
namespace OHOS::NWeb {
class OHOS_NWEB_EXPORT NWebDragData {
public:
enum class DragOperation : unsigned char {
DRAG_OPERATION_NONE = 0,
DRAG_OPERATION_COPY = 1,
DRAG_OPERATION_LINK = 2,
DRAG_OPERATION_GENERIC = 4,
DRAG_OPERATION_PRIVATE = 8,
DRAG_OPERATION_MOVE = 16,
DRAG_OPERATION_DELETE = 32,
DRAG_OPERATION_EVERY = UINT_MAX
};
enum class DragOperationsMask {
DRAG_ALLOW_NONE = 0,
DRAG_ALLOW_COPY = 1,
DRAG_ALLOW_LINK = 2,
DRAG_ALLOW_MOVE = 16,
DRAG_ALLOW_EVERY = UINT_MAX
};
NWebDragData() = default;
virtual ~NWebDragData() = default;
virtual std::string GetLinkURL() = 0;
virtual std::string GetFragmentText() = 0;
virtual std::string GetFragmentHtml() = 0;
virtual bool GetPixelMapSetting(const void** data, size_t& len, int& width, int& height) = 0;
virtual bool SetFragmentHtml(const std::string& html) = 0;
virtual bool SetPixelMapSetting(const void* data, size_t len, int width, int height) = 0;
virtual bool SetLinkURL(const std::string& url) = 0;
virtual bool SetFragmentText(const std::string& Text) = 0;
virtual std::string GetLinkTitle() = 0;
virtual bool SetLinkTitle(const std::string& title) = 0;
virtual void GetDragStartPosition(int& x, int& y) = 0;
virtual bool IsSingleImageContent() = 0;
virtual bool SetFileUri(const std::string& uri) = 0;
virtual std::string GetImageFileName() = 0;
virtual void ClearImageFileNames() = 0;
virtual bool IsDragNewStyle() {
return false;
}
virtual DragOperationsMask GetAllowedDragOperation() const {
return DragOperationsMask::DRAG_ALLOW_EVERY;
}
virtual void SetAllowedDragOperation(DragOperationsMask allowed_op) {};
virtual void ClearDragData() {}
};
}
#endif