//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ // //=============================================================================// #if !defined(AFX_FILESYSTEMOPENDLG_H__01CFDE04_321F_4F1E_94ED_933B2B32C193__INCLUDED_) #define AFX_FILESYSTEMOPENDLG_H__01CFDE04_321F_4F1E_94ED_933B2B32C193__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 // FileSystemOpenDlg.h : header file // #include "utlvector.h" #include "resource.h" #include "filesystem.h" ///////////////////////////////////////////////////////////////////////////// // CFileSystemOpenDlg dialog class CWindowAnchor { public: CWnd *m_pWnd; int m_Side; //0=left, 1=top, 2=right, 3=bottom int m_ParentSide; //which side to anchor to parent int m_OriginalDist; //original distance from the parent side }; class CFileInfo { public: CFileInfo(); ~CFileInfo(); bool m_bIsDir; CString m_Name; CBitmap *m_pBitmap; }; class CFileSystemOpenDlg : public CDialog { friend class CFileSystemOpenDialogWrapper; // Construction public: CFileSystemOpenDlg(CreateInterfaceFn factory, CWnd* pParent = NULL); // standard constructor // Dialog Data //{{AFX_DATA(CFileSystemOpenDlg) enum { IDD = IDD_FILESYSTEM_OPENDIALOG }; CEdit m_FilenameLabel; CEdit m_FilenameControl; CEdit m_LookInLabel; CListCtrl m_FileList; //}}AFX_DATA void AddFileMask( const char *pMask ); void SetInitialDir( const char *pDir, const char *pPathID = NULL ); void SetFilterMdlAndJpgFiles( bool bFilter ); CString GetFilename() const; // Get the filename they chose. // Overrides // ClassWizard generated virtual function overrides //{{AFX_VIRTUAL(CFileSystemOpenDlg) public: virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle, const RECT& rect, CWnd* pParentWnd, UINT nID, CCreateContext* pContext = NULL); protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL private: enum GetEntriesMode_t { GETENTRIES_FILES_ONLY, GETENTRIES_DIRECTORIES_ONLY }; void GetEntries( const char *pMask, CUtlVector &entries, GetEntriesMode_t mode ); void PopulateListControl(); int SetupLabelImage( CFileInfo *pInfo, CString name, bool bIsDir ); void AddAnchor( int iDlgItem, int iSide, int anchorSide ); void ProcessAnchor( CWindowAnchor *pAnchor ); // Implementation protected: const char* GetPathID(); friend int CALLBACK FileListSortCallback( LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort ); friend class CFilenameShortcut; CUtlVector m_Anchors; enum { PREVIEW_IMAGE_SIZE=96 }; IFileSystem *m_pFileSystem; // These are indexed by the lParam or userdata of each item in m_FileList. CUtlVector m_FileInfos; int m_iLabel_Folder; int m_iLabel_Mdl; int m_iLabel_File; CBitmap m_BitmapMdl; CBitmap m_BitmapFile; CBitmap m_BitmapFolder; CImageList m_ImageList; CString m_CurrentDir; CString m_Filename; CString m_PathIDString; CUtlVector m_FileMasks; // If this is true, then we get rid of .mdl files if there is a corresponding .jpg file. bool m_bFilterMdlAndJpgFiles; // Generated message map functions //{{AFX_MSG(CFileSystemOpenDlg) virtual void OnOK(); virtual BOOL OnInitDialog(); afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct); afx_msg void OnSize(UINT nType, int cx, int cy); afx_msg void OnDblclkFileList(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnUpButton(); afx_msg void OnItemchangedFileList(NMHDR* pNMHDR, LRESULT* pResult); //}}AFX_MSG DECLARE_MESSAGE_MAP() }; //{{AFX_INSERT_LOCATION}} // Microsoft Visual C++ will insert additional declarations immediately before the previous line. #endif // !defined(AFX_FILESYSTEMOPENDLG_H__01CFDE04_321F_4F1E_94ED_933B2B32C193__INCLUDED_)