#include <dali/public-api/object/base-object.h>
#include <dali/public-api/actors/layer.h>
#include <dali/public-api/render-tasks/render-task-list.h>
-
-#ifdef DALI_ADAPTOR_COMPILATION
-#include <dali/integration-api/scene-holder-impl.h>
-#else
-#include <dali/integration-api/adaptors/scene-holder-impl.h>
-#endif
+#include <dali/public-api/object/property-array.h>
// INTERNAL INCLUDES
-#include <dali/internal/adaptor/common/adaptor-impl.h>
#include <dali/public-api/adaptor-framework/window.h>
#include <dali/public-api/adaptor-framework/key-grab.h>
#include <dali/devel-api/adaptor-framework/window-devel.h>
+#include <dali/integration-api/adaptor-framework/scene-holder-impl.h>
+#include <dali/internal/adaptor/common/adaptor-impl.h>
#include <dali/internal/window-system/common/event-handler.h>
namespace Dali
typedef Dali::Window::IndicatorSignalType IndicatorSignalType;
typedef Dali::Window::FocusSignalType FocusSignalType;
typedef Dali::Window::ResizedSignalType ResizedSignalType;
+ typedef Dali::Window::FocusChangeSignalType FocusChangeSignalType;
+ typedef Dali::Window::ResizeSignalType ResizeSignalType;
+ typedef Dali::DevelWindow::VisibilityChangedSignalType VisibilityChangedSignalType;
+ typedef Dali::DevelWindow::TransitionEffectEventSignalType TransitionEffectEventSignalType;
typedef Signal< void () > SignalType;
/**
- * Create a new Window. This should only be called once by the Application class
+ * @brief Create a new Window. This should only be called once by the Application class
* @param[in] positionSize The position and size of the window
* @param[in] name The window title
* @param[in] className The window class name
static Window* New(const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent = false);
/**
+ * @brief Create a new Window. This should only be called once by the Application class
+ * @param[in] surface The surface used to render on.
+ * @param[in] positionSize The position and size of the window
+ * @param[in] name The window title
+ * @param[in] className The window class name
+ * @param[in] isTransparent Whether window is transparent
+ * @return A newly allocated Window
+ */
+ static Window* New(Any surface, const PositionSize& positionSize, const std::string& name, const std::string& className, bool isTransparent = false);
+
+ /**
* @copydoc Dali::Window::ShowIndicator()
*/
void ShowIndicator( Dali::Window::IndicatorVisibleMode visibleMode );
void RemoveAvailableOrientation(Dali::Window::WindowOrientation orientation);
/**
- * @copydoc Dali::Window::SetAvailableOrientations()
- */
- void SetAvailableOrientations(const std::vector<Dali::Window::WindowOrientation>& orientations);
-
- /**
- * @copydoc Dali::Window::GetAvailableOrientations()
- */
- const std::vector<Dali::Window::WindowOrientation>& GetAvailableOrientations();
-
- /**
* @copydoc Dali::Window::SetPreferredOrientation()
*/
void SetPreferredOrientation(Dali::Window::WindowOrientation orientation);
*/
static Dali::Window Get( Dali::Actor actor );
+ /**
+ * @copydoc Dali::DevelWindow::SetParent()
+ */
+ void SetParent( Dali::Window& parent );
+
+ /**
+ * @copydoc Dali::DevelWindow::Unparent()
+ */
+ void Unparent();
+
+ /**
+ * @copydoc Dali::DevelWindow::GetParent()
+ */
+ Dali::Window GetParent();
+
+ /**
+ * @copydoc Dali::DevelWindow::GetCurrentOrientation()
+ */
+ Dali::Window::WindowOrientation GetCurrentOrientation() const;
+
+ /**
+ * @copydoc Dali::DevelWindow::SetAvailableOrientations()
+ */
+ void SetAvailableOrientations( const Dali::Vector<Dali::Window::WindowOrientation>& orientations );
+
public: // Dali::Internal::Adaptor::SceneHolder
/**
private:
/**
+ * @brief Enumeration for orietation mode.
+ * The Orientation Mode is related to screen size.
+ * If screen width is longer than height, the Orientation Mode will have LANDSCAPE.
+ * Otherwise screen width is shorter than height or same, the Orientation Mode will have PORTRAIT.
+ */
+ enum class OrientationMode
+ {
+ PORTRAIT = 0,
+ LANDSCAPE
+ };
+
+ /**
* Private constructor.
* @sa Window::New()
*/
/**
* Second stage initialization
*/
- void Initialize(const PositionSize& positionSize, const std::string& name, const std::string& className);
+ void Initialize(Any surface, const PositionSize& positionSize, const std::string& name, const std::string& className);
/**
* Called when the window becomes iconified or deiconified.
*/
void OnDeleteRequest();
+ /**
+ * Called when the window receives a Transition effect-start/end event.
+ */
+ void OnTransitionEffectEvent( DevelWindow::EffectState state, DevelWindow::EffectType type );
+
+ /**
+ * @brief Set available orientation to window base.
+ */
+ void SetAvailableAnlges( const std::vector< int >& angles );
+
+ /**
+ * @brief Convert from window orientation to angle using OrientationMode.
+ */
+ int ConvertToAngle( Dali::Window::WindowOrientation orientation );
+
+ /**
+ * @brief Convert from angle to window orientation using OrientationMode.
+ */
+ Dali::Window::WindowOrientation ConvertToOrientation( int angle ) const;
+
+ /**
+ * @brief Check available window orientation for Available orientation.
+ */
+ bool IsOrientationAvailable( Dali::Window::WindowOrientation orientation ) const;
+
private: // Dali::Internal::Adaptor::SceneHolder
/**
FocusSignalType& FocusChangedSignal() { return mFocusChangedSignal; }
/**
+ * @copydoc Dali::Window::WindowFocusChangedSignal()
+ */
+ FocusChangeSignalType& FocusChangeSignal() { return mFocusChangeSignal; }
+ /**
* @copydoc Dali::Window::ResizedSignal()
*/
ResizedSignalType& ResizedSignal() { return mResizedSignal; }
/**
- * This signal is emitted when the window is requesting to be deleted
+ * @copydoc Dali::Window::ResizedSignal()
*/
- SignalType& DeleteRequestSignal() { return mDeleteRequestSignal; }
+ ResizeSignalType& ResizeSignal() { return mResizeSignal; }
/**
- * @copydoc Dali::Window::SignalEventProcessingFinished()
+ * This signal is emitted when the window is requesting to be deleted
*/
- Dali::DevelWindow::EventProcessingFinishedSignalType& EventProcessingFinishedSignal() { return mScene.EventProcessingFinishedSignal(); };
+ SignalType& DeleteRequestSignal() { return mDeleteRequestSignal; }
/**
- * @copydoc Dali::Window::KeyEventSignal()
+ * @copydoc Dali::DevelWindow::VisibilityChangedSignal()
*/
- Dali::DevelWindow::KeyEventSignalType& KeyEventSignal() { return mScene.KeyEventSignal(); };
+ VisibilityChangedSignalType& VisibilityChangedSignal() { return mVisibilityChangedSignal; }
/**
- * @copydoc Dali::Window::TouchSignal()
- */
- Dali::DevelWindow::TouchSignalType& TouchSignal() { return mScene.TouchSignal(); };
+ * @copydoc Dali::Window::SignalEventProcessingFinished()
+ */
+ Dali::DevelWindow::EventProcessingFinishedSignalType& EventProcessingFinishedSignal() { return mScene.EventProcessingFinishedSignal(); }
/**
- * @copydoc Dali::Window::WheelEventSignal()
+ * @copydoc Dali::DevelWindow::TransitionEffectEventSignal()
*/
- Dali::DevelWindow::WheelEventSignalType& WheelEventSignal() { return mScene.WheelEventSignal(); };
+ TransitionEffectEventSignalType& TransitionEffectEventSignal() { return mTransitionEffectEventSignal; }
private:
bool mOpaqueState:1;
bool mResizeEnabled:1;
Dali::Window::Type mType;
+ Dali::Window mParentWindow;
- OrientationPtr mOrientation;
- std::vector<Dali::Window::WindowOrientation> mAvailableOrientations;
- Dali::Window::WindowOrientation mPreferredOrientation;
+ OrientationPtr mOrientation;
+ std::vector< int > mAvailableAngles;
+ int mPreferredAngle;
int mRotationAngle; ///< The angle of the rotation
int mWindowWidth; ///< The width of the window
EventHandlerPtr mEventHandler; ///< The window events handler
+ OrientationMode mOrientationMode;
+
+ int mNativeWindowId; ///< The Native Window Id
+
// Signals
IndicatorSignalType mIndicatorVisibilityChangedSignal;
FocusSignalType mFocusChangedSignal;
ResizedSignalType mResizedSignal;
SignalType mDeleteRequestSignal;
-
-
+ FocusChangeSignalType mFocusChangeSignal;
+ ResizeSignalType mResizeSignal;
+ VisibilityChangedSignalType mVisibilityChangedSignal;
+ TransitionEffectEventSignalType mTransitionEffectEventSignal;
};
} // namespace Adaptor