You.i Engine
YiListItem.h
Go to the documentation of this file.
1 // © You i Labs Inc. 2000-2017. All rights reserved.
2 #ifndef _YI_LIST_ITEM_H_
3 #define _YI_LIST_ITEM_H_
4 
9 
10 class CYISceneView;
11 class CYITimeline;
12 class CYITimelineTrack;
13 
14 namespace yi
15 {
16 namespace deprecated
17 {
18 class CYIListView;
19 }
20 }
21 
22 namespace yi
23 {
24 
30 namespace deprecated
31 {
32 
47 {
48 public:
50  {
51  VALIGN_CENTER = 0,
53  VALIGN_BOTTOM
54  };
55 
57  {
58  HALIGN_CENTER = 0,
60  HALIGN_LEFT
61  };
62 
63 public:
64 
65  CYIListItem();
66  virtual ~CYIListItem();
67 
71  void SetListView(CYIListView *pListView);
72 
76  CYIListView *GetListView() const;
77 
81  void SetItemOwnsView(bool bIsViewOwner);
82 
86  void SetIndexInList(int32_t nIndex);
90  int32_t GetIndexInList() const;
91 
95  void SetPosition(float fX, float fY, bool bAnimate);
96 
100  void SetCellsRect(const YI_RECT_REL &rRect);
101 
105  void SetCellsRectVAlign(CELLS_VALIGN_TYPE eCellsRectVAlign);
106 
110  CELLS_VALIGN_TYPE GetCellsRectVAlign() const;
111 
115  void SetCellsRectHAlign(CELLS_HALIGN_TYPE eCellsRectHAlign);
116 
120  CELLS_HALIGN_TYPE GetCellsRectHAlign() const;
121 
125  void SetCellsRectPadding(float fHPadding, float fVPadding);
126 
132  void GetCellsRectPadding(float &rfHPadding, float &rfVPadding);
133 
137  float GetPositionX() const;
141  float GetPositionY() const;
142 
146  virtual float GetHeight() const;
147 
151  virtual float GetWidth() const;
152 
156  virtual const YI_RECT_REL *GetCellsRect() const;
157 
181  virtual void IsInRange(float fPos, float fRangeWidth, bool &bIsInVisibleRange, bool &bIsInStreamInRange, bool &bIsInLoadRange) const override;
185  virtual void StreamIn() override;
189  virtual void StreamOut() override;
193  virtual void LoadIn() override;
194 
198  virtual void LoadOut() override;
202  virtual void VisibleIn() override;
206  virtual void VisibleOut() override;
211  virtual void Highlight(bool bHighlight);
215  bool IsHighlighted() const;
216 
220  void GenerateView();
224  CYISceneView *GetView() const;
225 
231  virtual CYITimeline *GetMoveTimeline() const;
237  virtual CYITimelineTrack *GetPositionTrack() const;
238 
244  virtual void OnScrolled(const glm::vec3 &fDelta, float fNewPosition);
245 
251  virtual std::unique_ptr<CYISceneView> CreateView(CYISceneManager *pSceneManager);
252 
256  float GetStreamingRangeFactor() const;
257 
262  void SetStreamingRangeFactor(float fStreamingRangeFactor);
263 
267  float GetLoadRangeFactor() const;
268 
273  void SetLoadRangeFactor(float fStreamingRangeFactor);
274 
278  void SetListItemTemplate(const std::shared_ptr<CYIAssetViewTemplate> &pAssetViewTemplate);
279 
283  const std::shared_ptr<CYIAssetViewTemplate> &GetListItemTemplate() const;
284 
285 protected:
286 
290  virtual void OnStreamIn();
294  virtual void OnStreamOut();
298  virtual void OnLoadIn();
302  virtual void OnLoadOut();
306  virtual void OnVisibleIn();
310  virtual void OnVisibleOut();
311 
317  virtual void OnAnimate(CYIAnimation *pAnimation, float fDataPosition) override;
318 
322  void SetViewPosition();
327  void OnFocusLost();
328 
334  void DeleteViewLater();
335 
336  std::shared_ptr<CYIAssetViewTemplate> m_pListItemTemplate;
340  float m_fX;
341  float m_fY;
342  float m_fWidth;
343  float m_fHeight;
349  int32_t m_nIndex;
354 
355  glm::vec3 m_MoveFrom;
356  glm::vec3 m_MoveTo;
357 
361 
362  static const int32_t s_nDefaultAnimDuration = 500;
363 
364 private:
365  void ApplyMoveTimeline(float fPosition);
366 };
367 
368 } // namespace deprecated
369 
372 } // namespace yi
373 
375 
377 {
378  return m_fStreamRangeFactor;
379 }
380 
381 inline void yi::deprecated::CYIListItem::SetStreamingRangeFactor(float fStreamingRangeFactor)
382 {
383  m_fStreamRangeFactor = fStreamingRangeFactor < 1.0f ? 1.0f : fStreamingRangeFactor;
384 }
385 
387 {
388  return m_fLoadRangeFactor;
389 }
390 
391 inline void yi::deprecated::CYIListItem::SetLoadRangeFactor(float fLoadRangeFactor)
392 {
393  m_fLoadRangeFactor = fLoadRangeFactor < m_fStreamRangeFactor ? m_fStreamRangeFactor : fLoadRangeFactor;
394 }
395 
396 #endif // _YI_LIST_ITEM_H_
Definition: YiAbstractSignalTransition.h:7
float m_fAnimItemMoveMin
Definition: YiListItem.h:350
Definition: YiStreamedItem.h:18
float m_fHeight
Definition: YiListItem.h:343
Definition: YiListItem.h:52
float m_fX
Definition: YiListItem.h:340
Scene trees composed of CYISceneNode objects are registered with the scene manager in order for them ...
Definition: YiSceneManager.h:73
Definition: YiPredef.h:234
A timeline which sources its data from a backing store.
Definition: YiTimeline.h:54
The base class for all view types. Views are containers of renderable elements that often define inte...
Definition: YiSceneView.h:47
CELLS_VALIGN_TYPE m_eCellsRectVAlign
Definition: YiListItem.h:345
float m_fCellsRectHPadding
Definition: YiListItem.h:348
A representation of a single track of a CYITimeline.
Definition: YiTimelineTrack.h:26
YI_RECT_REL m_cellsRect
Definition: YiListItem.h:344
CELLS_HALIGN_TYPE
Definition: YiListItem.h:56
float GetStreamingRangeFactor() const
Definition: YiListItem.h:376
yi::deprecated::CYIListView is a view that lays out its elements programatically using a CYIListLayou...
Definition: YiListView.h:52
float GetLoadRangeFactor() const
Definition: YiListItem.h:386
The base class for an object accessible from script source code.
Definition: YiScriptableObject.h:28
bool m_bIsViewOwner
Definition: YiListItem.h:360
CELLS_VALIGN_TYPE
Definition: YiListItem.h:49
CELLS_HALIGN_TYPE m_eCellsRectHAlign
Definition: YiListItem.h:346
A class that provides streaming functionality in a scrolling view.
Definition: YiListView.h:35
float m_fCellsRectVPadding
Definition: YiListItem.h:347
bool m_bTimelineDirectionReverse
Definition: YiListItem.h:358
float m_fWidth
Definition: YiListItem.h:342
int32_t m_nIndex
Definition: YiListItem.h:349
glm::vec3 m_MoveFrom
Definition: YiListItem.h:355
std::shared_ptr< CYIAssetViewTemplate > m_pListItemTemplate
Definition: YiListItem.h:336
CYIListView * m_pListView
Definition: YiListItem.h:337
float m_fAnimItemMoveMax
Definition: YiListItem.h:351
bool m_bHighlighted
Definition: YiListItem.h:359
Definition: YiSignalHandler.h:174
Used to create animations programatically.
Definition: YiAnimation.h:32
CYISceneView * m_pView
Definition: YiListItem.h:338
float m_fStreamRangeFactor
Definition: YiListItem.h:352
float m_fLoadRangeFactor
Definition: YiListItem.h:353
CYIAnimation * m_pMoveAnimation
Definition: YiListItem.h:339
void SetLoadRangeFactor(float fStreamingRangeFactor)
Definition: YiListItem.h:391
float m_fY
Definition: YiListItem.h:341
Logical representation of a view within yi::deprecated::CYIListView.
Definition: YiListItem.h:46
Base class used to listen to one or more CYIAnimations as they update over time.
Definition: YiAnimation.h:65
void SetStreamingRangeFactor(float fStreamingRangeFactor)
Definition: YiListItem.h:381
glm::vec3 m_MoveTo
Definition: YiListItem.h:356