2 * Copyright (c) 2018 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-event-notifier.h"
20 #include <dali-toolkit/public-api/dali-toolkit-common.h>
21 #include <dali/public-api/object/base-object.h>
22 #include <dali/public-api/signals/dali-signal.h>
33 class TextClipboardEventNotifier : public Dali::BaseObject
37 typedef Dali::TextClipboardEventNotifier::TextClipboardEventSignalType TextClipboardEventSignalType;
40 static Dali::TextClipboardEventNotifier New();
41 static Dali::TextClipboardEventNotifier Get();
44 const std::string& GetContent() const;
45 void SetContent( const std::string& content );
47 void EmitContentSelectedSignal();
50 TextClipboardEventSignalType& ContentSelectedSignal()
52 return mContentSelectedSignal;
56 // Construction & Destruction
57 TextClipboardEventNotifier();
58 virtual ~TextClipboardEventNotifier();
61 TextClipboardEventNotifier( const TextClipboardEventNotifier& );
62 TextClipboardEventNotifier& operator=( TextClipboardEventNotifier& );
66 std::string mContent; ///< The current selected content.
67 TextClipboardEventSignalType mContentSelectedSignal;
69 static Dali::TextClipboardEventNotifier mToolkitClipboardEventNotifier;
73 // Helpers for public-api forwarding methods
75 inline static Internal::Adaptor::TextClipboardEventNotifier& GetImplementation(Dali::TextClipboardEventNotifier& detector)
77 DALI_ASSERT_ALWAYS( detector && "TextClipboardEventNotifier handle is empty" );
79 BaseObject& handle = detector.GetBaseObject();
81 return static_cast<Internal::Adaptor::TextClipboardEventNotifier&>(handle);
84 inline static const Internal::Adaptor::TextClipboardEventNotifier& GetImplementation(const Dali::TextClipboardEventNotifier& detector)
86 DALI_ASSERT_ALWAYS( detector && "TextClipboardEventNotifier handle is empty" );
88 const BaseObject& handle = detector.GetBaseObject();
90 return static_cast<const Internal::Adaptor::TextClipboardEventNotifier&>(handle);
95 Dali::TextClipboardEventNotifier TextClipboardEventNotifier::mToolkitClipboardEventNotifier;
97 Dali::TextClipboardEventNotifier TextClipboardEventNotifier::New()
102 Dali::TextClipboardEventNotifier TextClipboardEventNotifier::Get()
104 if ( !mToolkitClipboardEventNotifier )
106 mToolkitClipboardEventNotifier = Dali::TextClipboardEventNotifier( new TextClipboardEventNotifier );
108 return mToolkitClipboardEventNotifier;
111 const std::string& TextClipboardEventNotifier::GetContent() const
116 void TextClipboardEventNotifier::SetContent( const std::string& content )
121 void TextClipboardEventNotifier::ClearContent()
126 void TextClipboardEventNotifier::EmitContentSelectedSignal()
128 if ( !mContentSelectedSignal.Empty() )
130 Dali::TextClipboardEventNotifier handle( this );
131 mContentSelectedSignal.Emit( handle );
135 TextClipboardEventNotifier::TextClipboardEventNotifier()
140 TextClipboardEventNotifier::~TextClipboardEventNotifier()
144 } // namespace Adaptor
145 } // namespace Internal
147 ////////////////////////////////////////////////////////////////////////////////////////////////////
149 TextClipboardEventNotifier::TextClipboardEventNotifier()
153 TextClipboardEventNotifier TextClipboardEventNotifier::Get()
155 return Internal::Adaptor::TextClipboardEventNotifier::Get();
158 TextClipboardEventNotifier::~TextClipboardEventNotifier()
162 const std::string& TextClipboardEventNotifier::GetContent() const
164 return Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).GetContent();
167 void TextClipboardEventNotifier::SetContent( const std::string& content )
169 Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).SetContent(content);
172 void TextClipboardEventNotifier::ClearContent()
174 Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).ClearContent();
177 void TextClipboardEventNotifier::EmitContentSelectedSignal()
179 Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).EmitContentSelectedSignal();
182 TextClipboardEventNotifier::TextClipboardEventSignalType& TextClipboardEventNotifier::ContentSelectedSignal()
184 return Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).ContentSelectedSignal();
187 TextClipboardEventNotifier::TextClipboardEventNotifier( Internal::Adaptor::TextClipboardEventNotifier* notifier )
188 : BaseHandle( notifier )