Updated all code to new format
[platform/core/uifw/dali-core.git] / dali / internal / event / events / key-event-impl.cpp
old mode 100755 (executable)
new mode 100644 (file)
index 8f0c84f..4cfefd1
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2021 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.
 
 namespace Dali
 {
-
 namespace
 {
-/**
- * This container stores a mapping between public key event and impl as we cannot add data members in public one.
- * In practice this keeps the impl "alive" in between KeyEvent constructor and destructor calls so that getter
- * methods can be called to access the new data members. There is a 1:1 mapping between KeyEvent and KeyEventImpl.
- */
-struct KeyImplMapping
+const uint32_t MODIFIER_SHIFT   = 0x1;
+const uint32_t MODIFIER_CTRL    = 0x2;
+const uint32_t MODIFIER_ALT     = 0x4;
+const int32_t  KEY_INVALID_CODE = -1;
+} // namespace
+
+namespace Internal
+{
+KeyEvent::KeyEvent()
+: mKeyName(""),
+  mLogicalKey(""),
+  mKeyString(""),
+  mKeyCode(KEY_INVALID_CODE),
+  mKeyModifier(0),
+  mTime(0),
+  mState(Dali::KeyEvent::DOWN),
+  mCompose(""),
+  mDeviceName(""),
+  mDeviceClass(Device::Class::NONE),
+  mDeviceSubclass(Device::Subclass::NONE)
 {
-  KeyEvent* keyEvent;
-  Internal::KeyEventImpl* impl;
-};
-Vector< KeyImplMapping > gKeyEventToImplMapping;
+}
 
+KeyEvent::KeyEvent(const std::string&           keyName,
+                   const std::string&           logicalKey,
+                   const std::string&           keyString,
+                   int                          keyCode,
+                   int                          keyModifier,
+                   unsigned long                timeStamp,
+                   const Dali::KeyEvent::State& keyState,
+                   const std::string&           compose,
+                   const std::string&           deviceName,
+                   const Device::Class::Type    deviceClass,
+                   const Device::Subclass::Type deviceSubclass)
+: mKeyName(keyName),
+  mLogicalKey(logicalKey),
+  mKeyString(keyString),
+  mKeyCode(keyCode),
+  mKeyModifier(keyModifier),
+  mTime(timeStamp),
+  mState(keyState),
+  mCompose(compose),
+  mDeviceName(deviceName),
+  mDeviceClass(deviceClass),
+  mDeviceSubclass(deviceSubclass)
+{
 }
 
-namespace Internal
+KeyEventPtr KeyEvent::New(const std::string&           keyName,
+                          const std::string&           logicalKey,
+                          const std::string&           keyString,
+                          int                          keyCode,
+                          int                          keyModifier,
+                          unsigned long                timeStamp,
+                          const Dali::KeyEvent::State& keyState,
+                          const std::string&           compose,
+                          const std::string&           deviceName,
+                          const Device::Class::Type    deviceClass,
+                          const Device::Subclass::Type deviceSubclass)
 {
+  KeyEventPtr keyEvent = new KeyEvent(keyName, logicalKey, keyString, keyCode, keyModifier, timeStamp, keyState, compose, deviceName, deviceClass, deviceSubclass);
+  return keyEvent;
+}
 
-KeyEventImpl::KeyEventImpl( KeyEvent* keyEvent )
-: mLogicalKey( "" ),
-  mCompose( "" ),
-  mDeviceName( "" ),
-  mDeviceClass( Device::Class::NONE ),
-  mDeviceSubclass( Device::Subclass::NONE )
+bool KeyEvent::IsShiftModifier() const
 {
-  gKeyEventToImplMapping.PushBack( { keyEvent, this } );
+  return ((MODIFIER_SHIFT & mKeyModifier) == MODIFIER_SHIFT);
 }
 
-KeyEventImpl::~KeyEventImpl()
+bool KeyEvent::IsCtrlModifier() const
 {
-  for( auto&& iter : gKeyEventToImplMapping )
-  {
-    if( this == iter.impl )
-    {
-      gKeyEventToImplMapping.Erase( &iter ); // iter is reference to KeyImplMapping, take address of it for Erase
-      return;
-    }
-  }
+  return ((MODIFIER_CTRL & mKeyModifier) == MODIFIER_CTRL);
 }
 
-KeyEventImpl& KeyEventImpl::operator=( const KeyEventImpl& rhs )
+bool KeyEvent::IsAltModifier() const
 {
-  if( this != &rhs )
-  {
-    mLogicalKey = rhs.mLogicalKey;
-    mCompose = rhs.mCompose;
-    mDeviceName = rhs.mDeviceName;
-    mDeviceClass = rhs.mDeviceClass;
-    mDeviceSubclass = rhs.mDeviceSubclass;
-  }
+  return ((MODIFIER_ALT & mKeyModifier) == MODIFIER_ALT);
+}
 
-  return *this;
+const std::string& KeyEvent::GetCompose() const
+{
+  return mCompose;
 }
 
-std::string KeyEventImpl::GetLogicalKey() const
+const std::string& KeyEvent::GetDeviceName() const
 {
-  return mLogicalKey;
+  return mDeviceName;
 }
 
-void KeyEventImpl::SetLogicalKey( const std::string& logicalKey )
+Device::Class::Type KeyEvent::GetDeviceClass() const
 {
-  mLogicalKey = logicalKey;
+  return mDeviceClass;
 }
 
-std::string KeyEventImpl::GetCompose() const
+Device::Subclass::Type KeyEvent::GetDeviceSubclass() const
 {
-  return mCompose;
+  return mDeviceSubclass;
 }
 
-void KeyEventImpl::SetCompose( const std::string& compose )
+const std::string& KeyEvent::GetKeyName() const
 {
-  mCompose = compose;
+  return mKeyName;
 }
 
-std::string KeyEventImpl::GetDeviceName() const
+const std::string& KeyEvent::GetKeyString() const
 {
-  return mDeviceName;
+  return mKeyString;
 }
 
-void KeyEventImpl::SetDeviceName( const std::string& deviceName )
+const std::string& KeyEvent::GetLogicalKey() const
 {
-  mDeviceName = deviceName;
+  return mLogicalKey;
 }
 
-Device::Class::Type KeyEventImpl::GetDeviceClass() const
+int32_t KeyEvent::GetKeyCode() const
 {
-  return mDeviceClass;
+  return mKeyCode;
 }
 
-void KeyEventImpl::SetDeviceClass( Device::Class::Type deviceClass )
+int32_t KeyEvent::GetKeyModifier() const
 {
-  mDeviceClass = deviceClass;
+  return mKeyModifier;
 }
 
-Device::Subclass::Type KeyEventImpl::GetDeviceSubclass() const
+unsigned long KeyEvent::GetTime() const
 {
-  return mDeviceSubclass;
+  return mTime;
+}
+
+Dali::KeyEvent::State KeyEvent::GetState() const
+{
+  return mState;
+}
+
+void KeyEvent::SetKeyName(const std::string& keyName)
+{
+  mKeyName = keyName;
+}
+
+void KeyEvent::SetKeyString(const std::string& keyString)
+{
+  mKeyString = keyString;
 }
 
-void KeyEventImpl::SetDeviceSubclass( Device::Subclass::Type deviceSubclass )
+void KeyEvent::SetKeyCode(int32_t keyCode)
 {
-  mDeviceSubclass = deviceSubclass;
+  mKeyCode = keyCode;
 }
 
-} // namsespace Internal
+void KeyEvent::SetKeyModifier(int32_t keyModifier)
+{
+  mKeyModifier = keyModifier;
+}
 
-Internal::KeyEventImpl* GetImplementation( KeyEvent* keyEvent )
+void KeyEvent::SetTime(unsigned long time)
 {
-  Internal::KeyEventImpl* impl( NULL );
-  for( auto&& iter : gKeyEventToImplMapping )
-  {
-    if( iter.keyEvent == keyEvent )
-    {
-      impl = iter.impl;
-    }
-  }
-  return impl;
+  mTime = time;
 }
 
-const Internal::KeyEventImpl* GetImplementation( const KeyEvent* keyEvent )
+void KeyEvent::SetState(const Dali::KeyEvent::State& state)
 {
-  Internal::KeyEventImpl* impl( NULL );
-  for( auto&& iter : gKeyEventToImplMapping )
-  {
-    if( iter.keyEvent == keyEvent )
-    {
-      impl = iter.impl;
-    }
-  }
-  return impl;
+  mState = state;
 }
 
+} // namespace Internal
+
 } // namespace Dali