DALi Version 2.1.23
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / devel-api / controls / navigation-view / navigation-view.h
1 #ifndef DALI_TOOLKIT_NAVIGATION_VIEW_H
2 #define DALI_TOOLKIT_NAVIGATION_VIEW_H
3
4 /*
5  * Copyright (c) 2020 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // INTERNAL INCLUDES
22 #include <dali-toolkit/public-api/controls/control.h>
23 #include <dali/public-api/animation/alpha-function.h>
24
25 namespace Dali
26 {
27 namespace Toolkit
28 {
29 namespace Internal DALI_INTERNAL
30 {
31 // Forward declarations
32 class NavigationView;
33 } // namespace DALI_INTERNAL
34
35 /**
36  * @brief NavigationView implements a view that manages the navigation of hierarchical contents.
37  *
38  * An Actor is pushed onto the NavigationView, itself and its children are added to the stage.
39  * The actors currently shown are replaced.
40  * When pop is called on the NavigationView, the current tree of Actors are removed and the previous set added back.
41  * If pop is called on the last set of Actors then they remain, nothing is popped.
42  */
43 class DALI_TOOLKIT_API NavigationView : public Control
44 {
45 public:
46   /**
47    * @brief Create a NavigationView handle; this can be initialize with NavigationView::New().
48    *
49    * @note Calling member function with an uninitialized handle is not allowed.
50    */
51   NavigationView();
52
53   /**
54    * @brief Copy Constructor.
55    * @param[in] handle Handle to copy.
56    */
57   NavigationView(const NavigationView& handle);
58
59   /**
60   * @brief Assignment operator.
61   * @param handle The handle to copy from.
62   * @return reference to this
63   */
64   NavigationView& operator=(const NavigationView& handle);
65
66   /**
67    * @brief Destructor
68    *
69    * This is non-virtual since derived Handle types must not contain data or virtual methods.
70    */
71   ~NavigationView();
72
73   /**
74    * @brief  Create an initialized NavigationView.
75    *
76    * @return A handle to a newly allocated Dali resource.
77    */
78   static NavigationView New();
79
80   /**
81    * @brief Downcast an object handle to NavigationView.
82    *
83    * @details If handle points to a NavigationView, the downcast produces a valid handle.
84    * If not, the returned handle is left uninitialized.
85    * @param[in] handle Handle to an object.
86    * @return handle to a NavigationView of an uninitialized handle.
87    */
88   static NavigationView DownCast(BaseHandle handle);
89
90   /**
91    * @brief Push a new actor tree to the top of the NavigationView stack and show it.
92    * @param[in] item An actor tree.
93    */
94   void Push(Actor item);
95
96   /**
97    * @brief Pop the actor tree that is on the top of the NavigationView stack and make it disappear.
98    *
99    * @return The Actor tree popped out.
100    *
101    * @note It does not pop out the last item in the stack.
102    * It returns an uninitialized item handle if there is no item or only one item in the stack.
103    */
104   Actor Pop();
105
106 public: // Not intended for application developers
107         /// @cond internal
108   /**
109    * Creates a handle using the Toolkit::Internal implementation.
110    * @param[in]  implementation  The Control implementation.
111    */
112   DALI_INTERNAL NavigationView(Internal::NavigationView& implementation);
113
114   /**
115    * Allows the creation of this Control from an Internal::CustomActor pointer.
116    * @param[in]  internal  A pointer to the internal CustomActor.
117    */
118   explicit DALI_INTERNAL NavigationView(Dali::Internal::CustomActor* internal);
119   /// @endcond
120 }; // class NavigationView
121
122 } // namespace Toolkit
123
124 } // namespace Dali
125
126 #endif // DALI_TOOLKIT_NAVIGATION_VIEW_H