1 #pragma once 2 3 #include <atlsimpcoll.h> // for CSimpleArray 4 5 ////////////////////////////////////////////////////////////////////////////// 6 7 // A pathname with info 8 class CDirectoryItem 9 { 10 public: 11 CDirectoryItem() : m_pszPath(NULL) 12 { 13 } 14 15 CDirectoryItem(LPCWSTR pszPath) 16 { 17 m_pszPath = _wcsdup(pszPath); 18 } 19 20 CDirectoryItem(const CDirectoryItem& item) 21 : m_pszPath(_wcsdup(item.m_pszPath)) 22 { 23 } 24 25 CDirectoryItem& operator=(const CDirectoryItem& item) 26 { 27 if (this != &item) 28 { 29 free(m_pszPath); 30 m_pszPath = _wcsdup(item.m_pszPath); 31 } 32 return *this; 33 } 34 35 ~CDirectoryItem() 36 { 37 free(m_pszPath); 38 } 39 40 BOOL IsEmpty() const 41 { 42 return m_pszPath == NULL; 43 } 44 45 LPCWSTR GetPath() const 46 { 47 return m_pszPath; 48 } 49 50 void SetPath(LPCWSTR pszPath) 51 { 52 free(m_pszPath); 53 m_pszPath = _wcsdup(pszPath); 54 } 55 56 BOOL EqualPath(LPCWSTR pszPath) const 57 { 58 return m_pszPath != NULL && lstrcmpiW(m_pszPath, pszPath) == 0; 59 } 60 61 protected: 62 LPWSTR m_pszPath; // A full path, malloc'ed 63 }; 64 65 // the directory list 66 class CDirectoryList 67 { 68 public: 69 CDirectoryList() : m_fRecursive(FALSE) 70 { 71 } 72 73 CDirectoryList(LPCWSTR pszDirectoryPath, BOOL fRecursive) 74 : m_fRecursive(fRecursive) 75 { 76 AddPathsFromDirectory(pszDirectoryPath); 77 } 78 79 BOOL ContainsPath(LPCWSTR pszPath) const; 80 BOOL AddPath(LPCWSTR pszPath); 81 BOOL AddPathsFromDirectory(LPCWSTR pszDirectoryPath); 82 BOOL RenamePath(LPCWSTR pszPath1, LPCWSTR pszPath2); 83 BOOL DeletePath(LPCWSTR pszPath); 84 85 void RemoveAll() 86 { 87 m_items.RemoveAll(); 88 } 89 90 protected: 91 BOOL m_fRecursive; 92 CSimpleArray<CDirectoryItem> m_items; 93 }; 94