Purge underscored header file barriers
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / styling / style-manager-impl.h
index 648c11d..7ca7535 100644 (file)
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H__
-#define __DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H__
+#ifndef DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H
+#define DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2019 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.
 
 // EXTERNAL INCLUDES
 #include <string>
-#include <list>
-#include <dali/public-api/adaptor-framework/style-monitor.h>
-#include <dali/public-api/common/map-wrapper.h>
+#include <dali/public-api/common/vector-wrapper.h>
+#include <dali/devel-api/common/map-wrapper.h>
+#include <dali/devel-api/adaptor-framework/style-monitor.h>
 #include <dali/public-api/object/base-object.h>
 #include <dali/public-api/object/property-map.h>
 #include <dali/public-api/signals/connection-tracker.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/styling/style-manager.h>
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
+#include <dali-toolkit/internal/builder/style.h>
 
 namespace Dali
 {
@@ -38,13 +39,15 @@ namespace Toolkit
 
 namespace Internal
 {
+
+class FeedbackStyle;
+
 /**
  * @copydoc Toolkit::StyleManager
  */
 class StyleManager : public Dali::BaseObject, public ConnectionTracker
 {
 public:
-
   /**
    * Singleton access
    *
@@ -57,25 +60,28 @@ public:
    */
   StyleManager();
 
+protected:
   /**
-   * @copydoc Toolkit::StyleManager::SetOrientationValue
+   * @brief Destructor
    */
-  void SetOrientationValue( int orientation );
+  virtual ~StyleManager();
+
+public: // Public API
 
   /**
-   * @copydoc Toolkit::StyleManager::GetOrientationValue
+   * @copydoc Toolkit::StyleManager::ApplyTheme
    */
-  int GetOrientationValue();
+  void ApplyTheme( const std::string& themeFile );
 
   /**
-   * @copydoc Toolkit::StyleManager::SetOrientation( Orientation orientation )
+   * @copydoc Toolkit::StyleManager::ApplyDefaultTheme
    */
-  void SetOrientation( Orientation orientation );
+  void ApplyDefaultTheme();
 
   /**
-   * @copydoc Toolkit::StyleManager::GetOrientation
+   * @copydoc Toolkit::StyleManager::GetDefaultFontFamily
    */
-  Orientation GetOrientation();
+  const std::string& GetDefaultFontFamily() const;
 
   /**
    * @copydoc Toolkit::StyleManager::SetStyleConstant
@@ -88,59 +94,60 @@ public:
   bool GetStyleConstant( const std::string& key, Property::Value& valueOut );
 
   /**
-   * @copydoc Toolkit::StyleManager::RequestThemeChange
+   * @copydoc Toolkit::StyleManager::GetConfigurations
    */
-  void RequestThemeChange( const std::string& themeFile );
+  const Property::Map GetConfigurations();
 
   /**
-   * @copydoc Toolkit::StyleManager::RequestDefaultTheme
-   */
-  void RequestDefaultTheme();
-
-  /**
-   * Determine if a theme change has been requested
-   * @return Whether a theme request is pending
+   * @brief Apply the theme style to a control.
+   *
+   * @param[in] control The control to apply style.
    */
-  bool IsThemeRequestPending();
+  void ApplyThemeStyle( Toolkit::Control control );
 
   /**
-   * @brief Apply the theme style to a control.
+   * @brief Apply the theme style to a control at initialization.
    *
    * @param[in] control The control to apply style.
    */
-  void ApplyThemeStyle( Toolkit::Control control );
+  void ApplyThemeStyleAtInit( Toolkit::Control control );
 
   /**
    * @copydoc Toolkit::StyleManager::ApplyStyle
    */
   void ApplyStyle( Toolkit::Control control, const std::string& jsonFileName, const std::string& styleName );
 
+  /**
+   * Get the state/style information for the given control
+   * @param[in] control The control to get state information for
+   * @return The style information (or empty ptr if not found)
+   */
+  const StylePtr GetRecordedStyle( Toolkit::Control control );
+
 public:
   // SIGNALS
 
   /**
    * @copydoc Toolkit::StyleManager::StyleChangeSignal
+   * This signal is sent after all the controls have been updated
+   * due to style change
    */
-  Toolkit::StyleManager::StyleChangeSignalType& StyleChangeSignal();
-
-protected:
+  Toolkit::StyleManager::StyleChangedSignalType& StyleChangedSignal();
 
   /**
-   * @brief Destructor
+   * This signal is sent to the controls following a style change.
+   * It should not be exposed in the public API
    */
-  virtual ~StyleManager();
-
+  Toolkit::StyleManager::StyleChangedSignalType& ControlStyleChangeSignal();
 
-public:
+private:
+  typedef std::vector<std::string> StringList;
 
   /**
    * @brief Set the current theme. Called only once per event processing cycle.
+   * @param[in] themeFile The name of the theme file to read.
    */
-  void SetTheme();
-
-private:
-
-  typedef std::list<std::string> StringList;
+  void SetTheme( const std::string& themeFile );
 
   /**
    * @brief Internal helper method to read a file from file system.
@@ -170,24 +177,6 @@ private:
   bool LoadJSON( Toolkit::Builder builder, const std::string& jsonFileName );
 
   /**
-   * @brief Collect qualifiers (e.g. Landscape, portrait etc) for a given style
-   *
-   * @param[in,out] qualifiersOut The list to populate with qualifiers
-   */
-  void CollectQualifiers( StringList& qualifiersOut );
-
-  /**
-   * @brief Construct a qualified style name out of qualifiers
-   *
-   * A qualifed style name will be in the format: style-qualifier0-qualifier1-qualifierN
-   *
-   * @param[in] styleName The root name of the style
-   * @param[in] qualifiers List of qualifier names
-   * @param[out] qualifiedStyleOut The qualified style name
-   */
-  void BuildQualifiedStyleName( const std::string& styleName, const StringList& qualifiers, std::string& qualifiedStyleOut );
-
-  /**
    * @brief Apply a style to the control using the given builder
    *
    * @param[in] builder The builder to apply the style from
@@ -196,13 +185,6 @@ private:
   void ApplyStyle( Toolkit::Builder builder, Toolkit::Control control );
 
   /**
-   * @brief Callback for orientation changes
-   *
-   * @param[in] orientation The orientation object
-   */
-  void OnOrientationChanged( Orientation orientation );
-
-  /**
    * Search for a builder in the cache
    *
    * @param[in] key The key the builder was cached under
@@ -222,9 +204,15 @@ private:
    * Callback for when style monitor raises a signal
    *
    * @param[in] styleMonitor The style monitor object
-   * @param[in] styleChange The style change data
+   * @param[in] styleChange The style change type
+   */
+  void StyleMonitorChange( StyleMonitor styleMonitor, StyleChange::Type styleChange );
+
+  /**
+   * Emit signals to controls first, app second
    */
-  void StyleMonitorChange( StyleMonitor styleMonitor, StyleChange styleChange );
+  void EmitStyleChangeSignals( StyleChange::Type styleChange );
+
 
   // Undefined
   StyleManager(const StyleManager&);
@@ -237,10 +225,10 @@ private:
   typedef std::map< std::string, Toolkit::Builder > BuilderMap;
 
   Toolkit::Builder mThemeBuilder;     ///< Builder for all default theme properties
+  StyleMonitor mStyleMonitor;         ///< Style monitor handle
 
-  Orientation mOrientation;           ///< Handle to application orientation object
-  int mOrientationDegrees;            ///< Directly set value of orientation
-
+  int mDefaultFontSize;               ///< Logical size, not a point-size
+  std::string mDefaultFontFamily;
   std::string mThemeFile;             ///< The full path of the current theme file
 
   Property::Map mThemeBuilderConstants;   ///< Contants to give the theme builder
@@ -248,8 +236,11 @@ private:
 
   BuilderMap mBuilderCache;           ///< Cache of builders keyed by JSON file name
 
+  Toolkit::Internal::FeedbackStyle* mFeedbackStyle; ///< Feedback style
+
   // Signals
-  Toolkit::StyleManager::StyleChangeSignalType       mStyleChangeSignal;         ///< Emitted when the style( theme/font ) changes
+  Toolkit::StyleManager::StyleChangedSignalType mControlStyleChangeSignal; ///< Emitted when the style( theme/font ) changes for the controls to style themselves
+  Toolkit::StyleManager::StyleChangedSignalType mStyleChangedSignal; ///< Emitted after the controls have been styled
 };
 
 } // namespace Internal
@@ -276,5 +267,4 @@ inline const Internal::StyleManager& GetImpl( const Dali::Toolkit::StyleManager&
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H__
-
+#endif // DALI_TOOLKIT_INTERNAL_STYLE_MANAGER_H