rainmeter-studio/Plugins/PluginFolderInfo/FolderInfo.h

85 lines
1.3 KiB
C++

#pragma once
#include <string>
#include <vector>
#include <windows.h>
#include "..\..\Library\pcre-8.10\pcre.h"
namespace PluginFolderInfo {
struct FileInfo
{
std::wstring Name;
bool IsFolder;
UINT64 Size;
FileInfo()
{
IsFolder = false;
Size = 0;
}
};
class FolderInfo
{
private:
bool mySubFolderFlag;
bool myHiddenFileFlag;
bool mySystemFileFlag;
std::wstring myPath;
UINT64 mySize;
unsigned int myFileCount;
unsigned int myFolderCount;
pcre* myRegExpFilter;
pcre_extra* myRegExpFilterExtra;
DWORD myLastUpdateTime;
private:
void Clear();
void CalculateSize();
void SetPath(const wchar_t* aPath);
public:
DWORD GetLastUpdateTime()
{
return myLastUpdateTime;
}
void SetRegExpFilter(const wchar_t* aFilter);
void IncludeSubFolders(bool aFlag)
{
mySubFolderFlag = aFlag;
}
void IncludeHiddenFiles(bool aFlag)
{
myHiddenFileFlag = aFlag;
}
void IncludeSystemFiles(bool aFlag)
{
mySystemFileFlag = aFlag;
}
UINT64 GetSize()
{
return mySize;
}
int GetFileCount()
{
return myFileCount;
}
int GetFolderCount()
{
return myFolderCount;
}
FolderInfo(const wchar_t* aPath);
void Update();
}; // class FolderInfo
} // namespace PluginFolderInfo