return GetImplementation(*this).DataSelectedSignal();
}
+bool Clipboard::HasType(const std::string& mimeType)
+{
+ return GetImplementation(*this).HasType(mimeType);
+}
+
bool Clipboard::SetData(const ClipData& clipData)
{
return GetImplementation(*this).SetData(clipData);
DataSelectedSignalType& DataSelectedSignal();
/**
+ * @brief Check if there is data in the clipboard with a given mime type.
+ * @param[in] mimeType mime type to search for.
+ * @return bool true if there is data, otherwise false.
+ */
+ bool HasType(const std::string& mimeType);
+
+ /**
* @brief Send the given data to the clipboard.
* @param[in] clipData data to send to the clipboard
* @return bool true if the internal clipboard sending was successful.
*/
class Clipboard : public Dali::BaseObject, public ConnectionTracker
{
+const char* MIME_TYPE_TEXT_PLAIN = "text/plain;charset=utf-8";
+const char* MIME_TYPE_HTML = "application/xhtml+xml";
+const char* MIME_TYPE_TEXT_URI = "text/uri-list";
+
public:
struct Impl;
Dali::Clipboard::DataSelectedSignalType& DataSelectedSignal();
/**
+ * @copydoc Dali::Clipboard::HasType()
+ */
+ bool HasType(const std::string& mimeType);
+
+ /**
* @copydoc Dali::Clipboard::SetData()
*/
bool SetData(const Dali::Clipboard::ClipData& clipData);
return mImpl->mDataSelectedSignal;
}
+bool Clipboard::HasType(const std::string& mimeType)
+{
+ return true;
+}
+
bool Clipboard::SetData(const Dali::Clipboard::ClipData& clipData)
{
return true;
ecore_event_handler_del(mSelectionHanlder);
}
+ bool HasType(const std::string& mimeType)
+ {
+ Ecore_Wl2_Display* display = ecore_wl2_connected_display_get(NULL);
+ Ecore_Wl2_Input* input = ecore_wl2_input_default_input_get(display);
+ Ecore_Wl2_Offer* offer = ecore_wl2_dnd_selection_get(input);
+
+ if(!offer)
+ {
+ DALI_LOG_ERROR("selection_get fail, request type:%s\n", mimeType.c_str());
+ return false;
+ }
+
+ Eina_Array* availableTypes = ecore_wl2_offer_mimes_get(offer);
+ unsigned int typeCount = (unsigned int)eina_array_count((Eina_Array *)availableTypes);
+
+ for(unsigned int i = 0; i < typeCount; ++i)
+ {
+ char* availableType = (char*)eina_array_data_get((Eina_Array *)availableTypes, i);
+ if(!mimeType.compare(availableType))
+ {
+ return true;
+ }
+ }
+ return false;
+ }
+
bool SetData(const Dali::Clipboard::ClipData& clipData)
{
mMimeType = clipData.GetMimeType();
return mImpl->mDataSelectedSignal;
}
+bool Clipboard::HasType(const std::string& mimeType)
+{
+ return mImpl->HasType(mimeType);
+}
+
bool Clipboard::SetData(const Dali::Clipboard::ClipData& clipData)
{
return mImpl->SetData(clipData);
size_t Clipboard::NumberOfItems()
{
- // TODO: We should to check if the data is empty in the clipboard service.
- return 1u;
+ bool isItem = HasType(MIME_TYPE_TEXT_PLAIN) || HasType(MIME_TYPE_HTML) || HasType(MIME_TYPE_TEXT_URI);
+ return isItem ? 1u : 0u;
}
void Clipboard::ShowClipboard()
mApplicationWindow = ecoreXwin;
}
+ bool HasType(const std::string& mimeType)
+ {
+ return mMimeType == mimeType ? true : false;
+ }
+
bool SetData(const Dali::Clipboard::ClipData& clipData)
{
mMimeType = clipData.GetMimeType();
return mImpl->mDataSelectedSignal;
}
+bool Clipboard::HasType(const std::string& mimeType)
+{
+ return mImpl->HasType(mimeType);
+}
+
bool Clipboard::SetData(const Dali::Clipboard::ClipData& clipData)
{
return mImpl->SetData(clipData);
size_t Clipboard::NumberOfItems()
{
- // TODO: We should to check if the data is empty in the clipboard service.
- return 1u;
+ bool isItem = HasType(MIME_TYPE_TEXT_PLAIN) || HasType(MIME_TYPE_HTML) || HasType(MIME_TYPE_TEXT_URI);
+ return isItem ? 1u : 0u;
}
void Clipboard::ShowClipboard()