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.
239 lines
7.9 KiB
239 lines
7.9 KiB
//========= 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
|
|
|