mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-17 06:03:02 +00:00
1
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
//=========== Copyright Valve Corporation, All rights reserved. ===============//
|
||||
//
|
||||
// Purpose:
|
||||
//=============================================================================//
|
||||
|
||||
#ifndef LIST_SEGMENT_VIEW_H
|
||||
#define LIST_SEGMENT_VIEW_H
|
||||
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "panel2d.h"
|
||||
|
||||
DECLARE_PANEL_EVENT0( ListSegmentViewRetreat );
|
||||
DECLARE_PANEL_EVENT0( ListSegmentViewAdvance );
|
||||
|
||||
DECLARE_PANORAMA_EVENT0( ListSegmentViewChanged );
|
||||
|
||||
|
||||
namespace panorama
|
||||
{
|
||||
/*
|
||||
|
||||
A class that handles displaying X sequential elements from its children. Similar to a carousel, but more
|
||||
minimal -- you handle advancing/retreating yourself. Supports up to 10 visible elements.
|
||||
|
||||
Things you need to do:
|
||||
- Specify "items-displayed:" in the xml, which is how many elements are shown at once.
|
||||
- Specify "step-size:" in the xml, which is how many steps it'll move when advancing or retreating. Cannot be bigger than items-displayed.
|
||||
- Define these classes, which will be added to the child elements (X is always 1 through 10):
|
||||
.ListSegmentDisplayedX, one for each of the elements you intend to display.
|
||||
.ListSegmentHiddenBeforeX, one for each hidden element that's off the "top/left" of the display. These guys are prior to the displayed window.
|
||||
.ListSegmentHiddenAfterX, one for each hidden element that's off the "bottom/right" of the display. These guys are after the displayed window.
|
||||
.ListSegmentSnap, which eliminates any transitions you're using in your element class, so that elements just go directly to their displayed/hidden states immediately.
|
||||
|
||||
Then you just need to add children (in order) to it, and call AdvancePosition and RetreatPosition to move through them.
|
||||
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Purpose: List Segment View
|
||||
//-----------------------------------------------------------------------------
|
||||
class CListSegmentView : public CPanel2D
|
||||
{
|
||||
DECLARE_PANEL2D( CListSegmentView, CPanel2D );
|
||||
|
||||
public:
|
||||
CListSegmentView( CPanel2D *parent, const char * pchPanelID );
|
||||
virtual ~CListSegmentView();
|
||||
|
||||
virtual bool BSetProperty( CPanoramaSymbol symName, const char *pchValue ) OVERRIDE;
|
||||
virtual void GetDebugPropertyInfo( CUtlVector< DebugPropertyOutput_t *> *pvecProperties ) OVERRIDE;
|
||||
|
||||
virtual void OnStylesChanged() OVERRIDE { UpdateChildrenStyles( false ); BaseClass::OnStylesChanged(); }
|
||||
virtual void OnAfterChildrenChanged() OVERRIDE { UpdateChildrenStyles( false ); BaseClass::OnAfterChildrenChanged(); }
|
||||
|
||||
virtual bool BRequiresContentClipLayer() OVERRIDE { return true; }
|
||||
|
||||
bool RetreatPosition( const CPanelPtr< IUIPanel > &panelPtr );
|
||||
bool AdvancePosition( const CPanelPtr< IUIPanel > &panelPtr );
|
||||
|
||||
int GetCurrentPage( void );
|
||||
int GetNumPages( void );
|
||||
|
||||
bool IsAtStart( void );
|
||||
bool IsAtEnd( void );
|
||||
|
||||
void ResetPosition( void );
|
||||
|
||||
private:
|
||||
|
||||
void UpdateChildrenStyles( bool bSnap );
|
||||
|
||||
int m_nItemsDisplayed;
|
||||
int m_nStepSize;
|
||||
|
||||
int m_nCurrentChildIndex;
|
||||
};
|
||||
|
||||
|
||||
} // namespace panorama
|
||||
|
||||
#endif // LIST_SEGMENT_VIEW_H
|
||||
Reference in New Issue
Block a user