2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "toolkit-clipboard.h"
21 #include <dali/public-api/object/base-object.h>
33 * Implementation of the Clipboard
36 class Clipboard : public Dali::BaseObject
41 * @copydoc Dali::ClipboardEventNotifier::Get()
43 static Dali::Clipboard Get();
47 * @param[in] ecoreXwin, The window is created by application.
49 Clipboard(/*Ecore_X_Window ecoreXwin*/);
53 * @copydoc Dali::Clipboard::IsAvailable()
55 static bool IsAvailable();
58 * @copydoc Dali::Clipboard::DataSentSignal()
60 Dali::Clipboard::DataSentSignalType& DataSentSignal();
63 * @copydoc Dali::Clipboard::DataReceivedSignal()
65 Dali::Clipboard::DataReceivedSignalType& DataReceivedSignal();
68 * @copydoc Dali::Clipboard::HasType()
70 bool HasType(const std::string& mimeType);
73 * @copydoc Dali::Clipboard::SetData()
75 bool SetData(const Dali::Clipboard::ClipData& clipData);
78 * @copydoc Dali::Clipboard::GetData()
80 uint32_t GetData(const std::string &mimeType);
83 * @copydoc Dali::Clipboard::NumberOfClipboardItems()
85 size_t NumberOfItems();
88 * @copydoc Dali::Clipboard::ShowClipboard()
93 * @copydoc Dali::Clipboard::HideClipboard()
98 * @copydoc Dali::Clipboard::IsVisible()
100 bool IsVisible() const;
103 Clipboard( const Clipboard& );
104 Clipboard& operator=( Clipboard& );
106 static Dali::Clipboard mToolkitClipboard;
109 std::string mMimeType;
114 Dali::Clipboard::DataSentSignalType mDataSentSignal;
115 Dali::Clipboard::DataReceivedSignalType mDataReceivedSignal;
116 }; // class clipboard
119 Dali::Clipboard Dali::Internal::Adaptor::Clipboard::mToolkitClipboard;
122 Clipboard::Clipboard()
128 Clipboard::~Clipboard()
132 Dali::Clipboard Clipboard::Get()
134 if(!mToolkitClipboard)
136 mToolkitClipboard = Dali::Clipboard(new Dali::Internal::Adaptor::Clipboard());
138 return mToolkitClipboard;
141 bool Clipboard::IsAvailable()
143 if(mToolkitClipboard)
150 Dali::Clipboard::DataSentSignalType& Clipboard::DataSentSignal()
152 return mDataSentSignal;
155 Dali::Clipboard::DataReceivedSignalType& Clipboard::DataReceivedSignal()
157 return mDataReceivedSignal;
160 bool Clipboard::HasType(const std::string& mimeType)
162 return mMimeType == mimeType ? true : false;
165 bool Clipboard::SetData(const Dali::Clipboard::ClipData& clipData)
167 mMimeType = clipData.GetMimeType();
168 mData = clipData.GetData();
176 mDataSentSignal.Emit(mMimeType.c_str(), mData.c_str());
181 uint32_t Clipboard::GetData(const std::string &mimeType)
183 if(!mMimeType.compare(mimeType.c_str()))
186 mDataReceivedSignal.Emit(mDataId, mMimeType.c_str(), mData.c_str());
192 size_t Clipboard::NumberOfItems()
197 void Clipboard::ShowClipboard()
202 void Clipboard::HideClipboard()
207 bool Clipboard::IsVisible() const
212 } // namespace Adaptor
214 } // namespace Internal
217 inline static Internal::Adaptor::Clipboard& GetImplementation(Dali::Clipboard& clipboard)
219 // Bypass any passed in clipboard handle - it probably won't be initialized
220 Dali::Clipboard theClipboard = Dali::Clipboard::Get();
221 BaseObject& object = theClipboard.GetBaseObject();
222 return static_cast<Internal::Adaptor::Clipboard&>(object);
225 inline static const Internal::Adaptor::Clipboard& GetImplementation(const Dali::Clipboard& clipboard)
227 // Bypass any passed in clipboard handle - it probably won't be initialized
228 Dali::Clipboard theClipboard = Dali::Clipboard::Get();
229 const BaseObject& object = theClipboard.GetBaseObject();
230 return static_cast<const Internal::Adaptor::Clipboard&>(object);
234 Clipboard::Clipboard()
237 Clipboard::~Clipboard()
240 Clipboard::Clipboard(Internal::Adaptor::Clipboard *impl)
245 Clipboard Clipboard::Get()
247 return Internal::Adaptor::Clipboard::Get();
250 size_t Clipboard::NumberOfItems()
252 return GetImplementation(*this).NumberOfItems();
255 void Clipboard::ShowClipboard()
257 GetImplementation(*this).ShowClipboard();
260 void Clipboard::HideClipboard()
262 GetImplementation(*this).HideClipboard();
265 bool Clipboard::IsVisible() const
267 return GetImplementation(*this).IsVisible();