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