Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//=========== 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
|