|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
//=======================================================================================//
#ifndef REPLAYLISTITEMPANEL_H
#define REPLAYLISTITEMPANEL_H
#ifdef _WIN32
#pragma once
#endif
#include "replaybrowserbasepanel.h"
#include "replaybrowseritemmanager.h"
#include "replay/genericclassbased_replay.h"
#include "game_controls/slideshowpanel.h"
using namespace vgui;
//-----------------------------------------------------------------------------
// Purpose: Slideshow panel that adds all screenshots associated
// with a given replay.
//-----------------------------------------------------------------------------
class CReplayScreenshotSlideshowPanel : public CSlideshowPanel { DECLARE_CLASS_SIMPLE( CReplayScreenshotSlideshowPanel, CSlideshowPanel ); public: CReplayScreenshotSlideshowPanel( Panel *pParent, const char *pName, ReplayHandle_t hReplay );
virtual void PerformLayout();
private: ReplayHandle_t m_hReplay; };
//-----------------------------------------------------------------------------
// Purpose: An individual Replay thumbnail, with download button, title, etc.
//-----------------------------------------------------------------------------
class CExButton; class CExLabel; class IReplayItemManager; class CMoviePlayerPanel;
class CReplayBrowserThumbnail : public CReplayBasePanel { DECLARE_CLASS_SIMPLE( CReplayBrowserThumbnail, CReplayBasePanel ); public: CReplayBrowserThumbnail( Panel *pParent, const char *pName, QueryableReplayItemHandle_t hReplayItem, IReplayItemManager *pReplayItemManager ); ~CReplayBrowserThumbnail();
virtual void ApplySchemeSettings( IScheme *pScheme ); virtual void PerformLayout(); virtual void OnMousePressed( MouseCode code );
virtual void OnTick();
virtual void OnCommand( const char *pCommand );
void UpdateTitleText();
void SetReplayItem( QueryableReplayItemHandle_t hReplayItem ); CGenericClassBasedReplay *GetReplay(); IQueryableReplayItem *GetReplayItem();
MESSAGE_FUNC_PARAMS( OnDownloadClicked, "Download", pParams ); MESSAGE_FUNC_PARAMS( OnDeleteReplay, "delete_replayitem", pParams );
CCrossfadableImagePanel *m_pScreenshotThumb; QueryableReplayItemHandle_t m_hReplayItem;
private: void SetupReplayItemUserData( void *pUserData ); void UpdateProgress( bool bDownloadPhase, const CReplay *pReplay );
Label *m_pTitle; Label *m_pDownloadLabel; Label *m_pRecordingInProgressLabel; ProgressBar *m_pDownloadProgress; CExButton *m_pDownloadButton; CExButton *m_pDeleteButton; Label *m_pErrorLabel; CMoviePlayerPanel *m_pMoviePlayer; Panel *m_pDownloadOverlay; EditablePanel *m_pBorderPanel; Color m_clrHighlight; Color m_clrDefaultBg; bool m_bMouseOver; IReplayItemManager *m_pReplayItemManager; float m_flLastMovieScrubTime; float m_flHoverStartTime; float m_flLastProgressChangeTime; };
//-----------------------------------------------------------------------------
// Purpose: A row of Replay thumbnails (CReplayBrowserThumbnail's)
//-----------------------------------------------------------------------------
class CReplayBrowserThumbnailRow : public EditablePanel { DECLARE_CLASS_SIMPLE( CReplayBrowserThumbnailRow, EditablePanel ); public: CReplayBrowserThumbnailRow( Panel *pParent, const char *pName, IReplayItemManager *pReplayItemManager );
void AddReplayThumbnail( const IQueryableReplayItem *pReplay ); void AddReplayThumbnail( QueryableReplayItemHandle_t hReplayItem ); void DeleteReplayItemThumbnail( const IQueryableReplayItem *pReplayItem ); int GetNumReplayItems() const { return m_vecThumbnails.Count(); } int GetNumVisibleReplayItems() const;
virtual void ApplySchemeSettings( IScheme *pScheme ); virtual void PerformLayout();
CReplayBrowserThumbnail *FindThumbnail( const IQueryableReplayItem *pReplay );
CUtlVector< CReplayBrowserThumbnail * > m_vecThumbnails; IReplayItemManager *m_pReplayItemManager; };
//-----------------------------------------------------------------------------
// Purpose: A collection of CReplayBrowserThumbnailRows containing replays
// recorded on a given day.
//-----------------------------------------------------------------------------
class CExLabel; class CExButton; class CReplayListPanel;
class CBaseThumbnailCollection : public EditablePanel { DECLARE_CLASS_SIMPLE( CBaseThumbnailCollection, EditablePanel ); public: CBaseThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager );
void AddReplay( const IQueryableReplayItem *pItem );
virtual bool IsMovieCollection() const = 0;
void CleanupUIForReplayItem( ReplayItemHandle_t hReplayItem );
virtual void PerformLayout(); virtual void ApplySchemeSettings( IScheme *pScheme );
void RemoveEmptyRows(); void RemoveAll();
void OnUpdated();
void OnCommand( const char *pCommand );
CReplayBrowserThumbnailRow *FindReplayItemThumbnailRow( const IQueryableReplayItem *pReplayItem );
inline int GetNumRows() const { return m_vecRows.Count(); }
typedef CUtlVector< CReplayBrowserThumbnailRow * > RowContainer_t; RowContainer_t m_vecRows;
protected: // Called from PerformLayout() - layout any panels that should appear at the top (vertically)-most position
virtual void LayoutUpperPanels( int nStartY, int nBgWidth ) = 0; virtual void LayoutBackgroundPanel( int nWide, int nTall ) {} virtual Panel *GetLowestPanel( int &nVerticalBuffer ) = 0;
void UpdateViewingPage( void );
int m_nStartX;
protected: CExLabel *m_pNoReplayItemsLabel; IReplayItemManager *m_pReplayItemManager;
CExButton *m_pShowNextButton; CExButton *m_pShowPrevButton; CUtlVector<ReplayItemHandle_t> m_vecReplays; int m_iViewingPage;
int m_nReplayThumbnailsPerRow; int m_nMaxRows;
CExLabel *m_pCaratLabel; CExLabel *m_pTitleLabel; CExButton *m_pRenderAllButton;
private: int GetRowStartY();
CReplayListPanel *m_pParentListPanel; // Parent gets altered so we keep this cached ptr around
};
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CReplayThumbnailCollection : public CBaseThumbnailCollection { DECLARE_CLASS_SIMPLE( CReplayThumbnailCollection, CBaseThumbnailCollection ); public: CReplayThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager );
virtual bool IsMovieCollection() const;
virtual void PerformLayout(); virtual void ApplySchemeSettings( IScheme *pScheme );
virtual void LayoutUpperPanels( int nStartY, int nBgWidth ); virtual void LayoutBackgroundPanel( int nWide, int nTall ); virtual Panel *GetLowestPanel( int &nVerticalBuffer );
Panel *m_pLinePanel; CExLabel *m_pWarningLabel; Panel *m_pUnconvertedBg; };
#define OLDER_MOVIES_COLLECTION -2
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
class CMovieThumbnailCollection : public CBaseThumbnailCollection { DECLARE_CLASS_SIMPLE( CMovieThumbnailCollection, CBaseThumbnailCollection ); public: CMovieThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager, int nDay, int nMonth, int nYear, bool bShowSavedMoviesLabel ); CMovieThumbnailCollection( CReplayListPanel *pParent, const char *pName, IReplayItemManager *pReplayItemManager, bool bShowSavedMoviesLabel );
bool DoesDateMatch( int nDay, int nMonth, int nYear ); virtual bool IsMovieCollection() const;
private: void Init( int nDay, int nMonth, int nYear, bool bShowSavedMoviesLabel ); virtual void PerformLayout(); virtual void ApplySchemeSettings( IScheme *pScheme );
Panel *GetLowestPanel( int &nVerticalBuffer ); void LayoutUpperPanels( int nStartY, int nBgWidth );
int m_nDay, m_nMonth, m_nYear; CExLabel *m_pDateLabel; bool m_bShowSavedMoviesLabel; };
#endif // REPLAYLISTITEMPANEL_H
|