1
// IconOverlay.h : Declaration of the CIconOverlay
4
#include "resource.h" // main symbols
8
class ATL_NO_VTABLE CIconOverlayBase :
9
public CComObjectRootEx<CComMultiThreadModel>,
10
public IShellIconOverlayIdentifier
14
static const DWORD STATE_NOTHING = 0;
15
static const DWORD STATE_UNVERSIONED = 1;
16
static const DWORD STATE_IGNORED = 2;
17
static const DWORD STATE_UNCHANGED = 3;
18
static const DWORD STATE_MODIFIED = 4;
19
static const DWORD STATE_ADDED = 5;
20
static const DWORD STATE_DELETED = 6;
21
static const DWORD STATE_MISSING = 7;
22
static const DWORD STATE_CONFLICT = 8;
24
virtual DWORD GetMyState() = 0;
25
virtual const TCHAR *GetMyStateName() = 0;
32
BEGIN_COM_MAP(CIconOverlayBase)
33
COM_INTERFACE_ENTRY(IShellIconOverlayIdentifier)
38
DECLARE_PROTECT_FINAL_CONSTRUCT()
40
HRESULT FinalConstruct()
49
// IIconOverlay implementation
50
STDMETHOD(IsMemberOf)(LPCWSTR pwszPath, DWORD dwAttrib);
51
STDMETHOD(GetOverlayInfo)(LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags);
52
STDMETHOD(GetPriority)(int * pIPriority);
54
DWORD CIconOverlayBase::GetFileStatus(LPCWSTR pwszPath);
56
// As each of the overlay classes will generally be called one after
57
// another for the same filename, we keep a quick cache of the last
58
// thing we were asked for.
59
static CCriticalSection m_last_request_lock;
60
static DWORD m_last_request_tick;
61
static std::wstring m_last_request_path;
62
static DWORD m_last_request_value;
69
#define MAKE_OVERLAY_CLASS(TYPE, STATE) \
70
class ATL_NO_VTABLE CIconOverlay##TYPE : \
71
public CIconOverlayBase, \
72
public CComCoClass<CIconOverlay##TYPE, &CLSID_IconOverlay##TYPE> \
75
DECLARE_NOT_AGGREGATABLE(CIconOverlay##TYPE) \
76
static HRESULT WINAPI UpdateRegistry(BOOL bRegister) \
78
return TortoiseUpdateRegistryFromResource(IDR_ICONOVERLAY, \
83
virtual DWORD GetMyState() { return STATE; } \
84
virtual const TCHAR *GetMyStateName() { return _T(#TYPE); } \
86
OBJECT_ENTRY_AUTO(CLSID_IconOverlay##TYPE, CIconOverlay##TYPE)
88
MAKE_OVERLAY_CLASS(Added, STATE_ADDED);
89
MAKE_OVERLAY_CLASS(Normal, STATE_UNCHANGED);
90
MAKE_OVERLAY_CLASS(Modified, STATE_MODIFIED);
91
MAKE_OVERLAY_CLASS(Conflict, STATE_CONFLICT);
92
//MAKE_OVERLAY_CLASS(Locked, STATE_LOCKED);
93
//MAKE_OVERLAY_CLASS(ReadOnly, STATE_READONLY);
94
MAKE_OVERLAY_CLASS(Deleted, STATE_DELETED);
95
MAKE_OVERLAY_CLASS(Ignored, STATE_IGNORED);
96
// MAKE_OVERLAY_CLASS(Invalid);
97
MAKE_OVERLAY_CLASS(Unversioned, STATE_UNVERSIONED);
1
// IconOverlay.h : Declaration of the CIconOverlay
4
#include "resource.h" // main symbols
8
class ATL_NO_VTABLE CIconOverlayBase :
9
public CComObjectRootEx<CComMultiThreadModel>,
10
public IShellIconOverlayIdentifier
14
static const DWORD STATE_NOTHING = 0;
15
static const DWORD STATE_UNVERSIONED = 1;
16
static const DWORD STATE_IGNORED = 2;
17
static const DWORD STATE_UNCHANGED = 3;
18
static const DWORD STATE_MODIFIED = 4;
19
static const DWORD STATE_ADDED = 5;
20
static const DWORD STATE_DELETED = 6;
21
static const DWORD STATE_MISSING = 7;
22
static const DWORD STATE_CONFLICT = 8;
24
virtual DWORD GetMyState() = 0;
25
virtual const TCHAR *GetMyStateName() = 0;
32
BEGIN_COM_MAP(CIconOverlayBase)
33
COM_INTERFACE_ENTRY(IShellIconOverlayIdentifier)
38
DECLARE_PROTECT_FINAL_CONSTRUCT()
40
HRESULT FinalConstruct()
49
// IIconOverlay implementation
50
STDMETHOD(IsMemberOf)(LPCWSTR pwszPath, DWORD dwAttrib);
51
STDMETHOD(GetOverlayInfo)(LPWSTR pwszIconFile, int cchMax, int * pIndex, DWORD * pdwFlags);
52
STDMETHOD(GetPriority)(int * pIPriority);
54
DWORD CIconOverlayBase::GetFileStatus(LPCWSTR pwszPath);
56
// As each of the overlay classes will generally be called one after
57
// another for the same filename, we keep a quick cache of the last
58
// thing we were asked for.
59
static CCriticalSection m_last_request_lock;
60
static DWORD m_last_request_tick;
61
static std::wstring m_last_request_path;
62
static DWORD m_last_request_value;
69
#define MAKE_OVERLAY_CLASS(TYPE, STATE) \
70
class ATL_NO_VTABLE CIconOverlay##TYPE : \
71
public CIconOverlayBase, \
72
public CComCoClass<CIconOverlay##TYPE, &CLSID_IconOverlay##TYPE> \
75
DECLARE_NOT_AGGREGATABLE(CIconOverlay##TYPE) \
76
static HRESULT WINAPI UpdateRegistry(BOOL bRegister) \
78
return TortoiseUpdateRegistryFromResource(IDR_ICONOVERLAY, \
83
virtual DWORD GetMyState() { return STATE; } \
84
virtual const TCHAR *GetMyStateName() { return _T(#TYPE); } \
86
OBJECT_ENTRY_AUTO(CLSID_IconOverlay##TYPE, CIconOverlay##TYPE)
88
MAKE_OVERLAY_CLASS(Added, STATE_ADDED);
89
MAKE_OVERLAY_CLASS(Normal, STATE_UNCHANGED);
90
MAKE_OVERLAY_CLASS(Modified, STATE_MODIFIED);
91
MAKE_OVERLAY_CLASS(Conflict, STATE_CONFLICT);
92
//MAKE_OVERLAY_CLASS(Locked, STATE_LOCKED);
93
//MAKE_OVERLAY_CLASS(ReadOnly, STATE_READONLY);
94
MAKE_OVERLAY_CLASS(Deleted, STATE_DELETED);
95
MAKE_OVERLAY_CLASS(Ignored, STATE_IGNORED);
96
// MAKE_OVERLAY_CLASS(Invalid);
97
MAKE_OVERLAY_CLASS(Unversioned, STATE_UNVERSIONED);