Fix coverity issues (uint32_t overflow + size_t to int32_t)
[platform/core/uifw/dali-toolkit.git] / automated-tests / src / dali-toolkit / dali-toolkit-test-utils / toolkit-clipboard-event-notifier.cpp
index 168625e..cfc2a96 100644 (file)
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.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://floralicense.org/license/
-//
-// 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.
-//
+/*
+ * Copyright (c) 2018 Samsung Electronics 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.
+ *
+ */
 
 #include "toolkit-clipboard-event-notifier.h"
 
-#include <dali/public-api/common/dali-common.h>
+#include <dali-toolkit/public-api/dali-toolkit-common.h>
 #include <dali/public-api/object/base-object.h>
-#include <dali/public-api/signals/dali-signal-v2.h>
+#include <dali/public-api/signals/dali-signal.h>
 
 namespace Dali
 {
 
-namespace
-{
-ToolkitClipboardEventNotifier* gToolkitClipboardEventNotifier(NULL);
-} // unnamed namespace
-
 namespace Internal
 {
 
 namespace Adaptor
 {
 
-/**
- * Stub for the ClipboardEventNotifier
- */
-class ClipboardEventNotifier : public BaseObject
+class TextClipboardEventNotifier : public Dali::BaseObject
 {
-public: // Creation & Destruction
+public:
 
-  static Dali::ClipboardEventNotifier Get();
+  typedef Dali::TextClipboardEventNotifier::TextClipboardEventSignalType TextClipboardEventSignalType;
 
-  ClipboardEventNotifier();
-  ClipboardEventNotifier(ToolkitClipboardEventNotifier *clipboardEventNotifier);
-  ~ClipboardEventNotifier();
+  // Creation
+  static Dali::TextClipboardEventNotifier New();
+  static Dali::TextClipboardEventNotifier Get();
 
-public: // Signals
+  // Public API
+  const std::string& GetContent() const;
+  void SetContent( const std::string& content );
+  void ClearContent();
+  void EmitContentSelectedSignal();
 
-  Dali::ClipboardEventNotifier::ClipboardEventSignalV2& SignalContentSelected()
+  // Signals
+  TextClipboardEventSignalType& ContentSelectedSignal()
   {
-    return mClipboardSignal;
+    return mContentSelectedSignal;
   }
 
 private:
+  // Construction & Destruction
+  TextClipboardEventNotifier();
+  virtual ~TextClipboardEventNotifier();
+
+  // Undefined
+  TextClipboardEventNotifier( const TextClipboardEventNotifier& );
+  TextClipboardEventNotifier& operator=( TextClipboardEventNotifier& );
+
+private:
+
+  std::string mContent;    ///< The current selected content.
+  TextClipboardEventSignalType mContentSelectedSignal;
+
+  static Dali::TextClipboardEventNotifier mToolkitClipboardEventNotifier;
+
+public:
+
+  // Helpers for public-api forwarding methods
+
+  inline static Internal::Adaptor::TextClipboardEventNotifier& GetImplementation(Dali::TextClipboardEventNotifier& detector)
+  {
+    DALI_ASSERT_ALWAYS( detector && "TextClipboardEventNotifier handle is empty" );
+
+    BaseObject& handle = detector.GetBaseObject();
 
-  ToolkitClipboardEventNotifier* mToolkitClipboardEventNotifier;
-  Dali::ClipboardEventNotifier::ClipboardEventSignalV2 mClipboardSignal;
+    return static_cast<Internal::Adaptor::TextClipboardEventNotifier&>(handle);
+  }
+
+  inline static const Internal::Adaptor::TextClipboardEventNotifier& GetImplementation(const Dali::TextClipboardEventNotifier& detector)
+  {
+    DALI_ASSERT_ALWAYS( detector && "TextClipboardEventNotifier handle is empty" );
+
+    const BaseObject& handle = detector.GetBaseObject();
+
+    return static_cast<const Internal::Adaptor::TextClipboardEventNotifier&>(handle);
+  }
 
 };
 
-Dali::ClipboardEventNotifier ClipboardEventNotifier::Get()
+Dali::TextClipboardEventNotifier TextClipboardEventNotifier::mToolkitClipboardEventNotifier;
+
+Dali::TextClipboardEventNotifier TextClipboardEventNotifier::New()
 {
-  return gToolkitClipboardEventNotifier->GetClipboardEventNotifier();
+  return Get();
 }
 
-ClipboardEventNotifier::ClipboardEventNotifier()
-: mToolkitClipboardEventNotifier(NULL)
+Dali::TextClipboardEventNotifier TextClipboardEventNotifier::Get()
 {
+  if ( !mToolkitClipboardEventNotifier )
+  {
+    mToolkitClipboardEventNotifier = Dali::TextClipboardEventNotifier( new TextClipboardEventNotifier );
+  }
+  return mToolkitClipboardEventNotifier;
 }
 
-ClipboardEventNotifier::ClipboardEventNotifier(ToolkitClipboardEventNotifier *clipboardEventNotifier)
-: mToolkitClipboardEventNotifier(clipboardEventNotifier)
+const std::string& TextClipboardEventNotifier::GetContent() const
 {
+  return mContent;
 }
 
-ClipboardEventNotifier::~ClipboardEventNotifier()
+void TextClipboardEventNotifier::SetContent( const std::string& content )
 {
+  mContent = content;
 }
 
-} // namespace Adaptor
+void TextClipboardEventNotifier::ClearContent()
+{
+  mContent.clear();
+}
+
+void TextClipboardEventNotifier::EmitContentSelectedSignal()
+{
+  if ( !mContentSelectedSignal.Empty() )
+  {
+    Dali::TextClipboardEventNotifier handle( this );
+    mContentSelectedSignal.Emit( handle );
+  }
+}
+
+TextClipboardEventNotifier::TextClipboardEventNotifier()
+: mContent()
+{
+}
+
+TextClipboardEventNotifier::~TextClipboardEventNotifier()
+{
+}
 
+} // namespace Adaptor
 } // namespace Internal
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
-ToolkitClipboardEventNotifier::ToolkitClipboardEventNotifier()
-: mClipboardEventNotifierStub(new Internal::Adaptor::ClipboardEventNotifier(this)),
-  mClipboardEventNotifier( mClipboardEventNotifierStub )
+TextClipboardEventNotifier::TextClipboardEventNotifier()
+{
+}
+
+TextClipboardEventNotifier TextClipboardEventNotifier::Get()
+{
+  return Internal::Adaptor::TextClipboardEventNotifier::Get();
+}
+
+TextClipboardEventNotifier::~TextClipboardEventNotifier()
+{
+}
+
+const std::string& TextClipboardEventNotifier::GetContent() const
+{
+  return Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).GetContent();
+}
+
+void TextClipboardEventNotifier::SetContent( const std::string& content )
+{
+  Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).SetContent(content);
+}
+
+void TextClipboardEventNotifier::ClearContent()
+{
+  Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).ClearContent();
+}
+
+void TextClipboardEventNotifier::EmitContentSelectedSignal()
 {
-  gToolkitClipboardEventNotifier = this;
+  Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).EmitContentSelectedSignal();
 }
 
-ToolkitClipboardEventNotifier::~ToolkitClipboardEventNotifier()
+TextClipboardEventNotifier::TextClipboardEventSignalType& TextClipboardEventNotifier::ContentSelectedSignal()
 {
-  gToolkitClipboardEventNotifier = NULL;
+  return Internal::Adaptor::TextClipboardEventNotifier::GetImplementation(*this).ContentSelectedSignal();
 }
 
-ClipboardEventNotifier ToolkitClipboardEventNotifier::GetClipboardEventNotifier()
+TextClipboardEventNotifier::TextClipboardEventNotifier( Internal::Adaptor::TextClipboardEventNotifier* notifier )
+: BaseHandle( notifier )
 {
-  return mClipboardEventNotifier;
 }
 
 } // namespace Dali