2019-10-18 05:57:19 +02:00
|
|
|
#pragma once
|
2020-04-29 22:02:18 +02:00
|
|
|
#include "pch.h"
|
2019-10-18 05:57:19 +02:00
|
|
|
#include "PowerRenameInterfaces.h"
|
|
|
|
#include "srwlock.h"
|
|
|
|
|
|
|
|
class CPowerRenameItem :
|
|
|
|
public IPowerRenameItem,
|
|
|
|
public IPowerRenameItemFactory
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
// IUnknown
|
|
|
|
IFACEMETHODIMP QueryInterface(_In_ REFIID iid, _Outptr_ void** resultInterface);
|
|
|
|
IFACEMETHODIMP_(ULONG) AddRef();
|
|
|
|
IFACEMETHODIMP_(ULONG) Release();
|
|
|
|
|
|
|
|
// IPowerRenameItem
|
2021-10-25 15:40:19 +02:00
|
|
|
IFACEMETHODIMP PutPath(_In_opt_ PCWSTR newPath);
|
2020-08-25 07:22:05 +02:00
|
|
|
IFACEMETHODIMP GetPath(_Outptr_ PWSTR* path);
|
2020-12-14 10:28:12 +01:00
|
|
|
IFACEMETHODIMP GetTime(_Outptr_ SYSTEMTIME* time);
|
2020-08-25 07:22:05 +02:00
|
|
|
IFACEMETHODIMP GetShellItem(_Outptr_ IShellItem** ppsi);
|
2021-10-25 15:40:19 +02:00
|
|
|
IFACEMETHODIMP PutOriginalName(_In_opt_ PCWSTR originalName);
|
2020-08-25 07:22:05 +02:00
|
|
|
IFACEMETHODIMP GetOriginalName(_Outptr_ PWSTR* originalName);
|
|
|
|
IFACEMETHODIMP PutNewName(_In_opt_ PCWSTR newName);
|
|
|
|
IFACEMETHODIMP GetNewName(_Outptr_ PWSTR* newName);
|
|
|
|
IFACEMETHODIMP GetIsFolder(_Out_ bool* isFolder);
|
|
|
|
IFACEMETHODIMP GetIsSubFolderContent(_Out_ bool* isSubFolderContent);
|
|
|
|
IFACEMETHODIMP GetSelected(_Out_ bool* selected);
|
|
|
|
IFACEMETHODIMP PutSelected(_In_ bool selected);
|
|
|
|
IFACEMETHODIMP GetId(_Out_ int* id);
|
|
|
|
IFACEMETHODIMP GetIconIndex(_Out_ int* iconIndex);
|
|
|
|
IFACEMETHODIMP GetDepth(_Out_ UINT* depth);
|
|
|
|
IFACEMETHODIMP PutDepth(_In_ int depth);
|
2019-10-18 05:57:19 +02:00
|
|
|
IFACEMETHODIMP Reset();
|
|
|
|
IFACEMETHODIMP ShouldRenameItem(_In_ DWORD flags, _Out_ bool* shouldRename);
|
2020-08-25 07:22:05 +02:00
|
|
|
IFACEMETHODIMP IsItemVisible(_In_ DWORD filter, _In_ DWORD flags, _Out_ bool* isItemVisible);
|
2019-10-18 05:57:19 +02:00
|
|
|
|
|
|
|
// IPowerRenameItemFactory
|
|
|
|
IFACEMETHODIMP Create(_In_ IShellItem* psi, _Outptr_ IPowerRenameItem** ppItem)
|
|
|
|
{
|
|
|
|
return CPowerRenameItem::s_CreateInstance(psi, IID_PPV_ARGS(ppItem));
|
|
|
|
}
|
|
|
|
|
|
|
|
public:
|
|
|
|
static HRESULT s_CreateInstance(_In_opt_ IShellItem* psi, _In_ REFIID iid, _Outptr_ void** resultInterface);
|
|
|
|
|
|
|
|
protected:
|
|
|
|
static int s_id;
|
|
|
|
CPowerRenameItem();
|
|
|
|
virtual ~CPowerRenameItem();
|
|
|
|
|
|
|
|
HRESULT _Init(_In_ IShellItem* psi);
|
|
|
|
|
2020-07-16 13:24:49 +02:00
|
|
|
bool m_selected = true;
|
|
|
|
bool m_isFolder = false;
|
2020-12-14 10:28:12 +01:00
|
|
|
bool m_isTimeParsed = false;
|
2020-07-22 22:27:58 +02:00
|
|
|
bool m_canRename = true;
|
2020-07-16 13:24:49 +02:00
|
|
|
int m_id = -1;
|
|
|
|
int m_iconIndex = -1;
|
|
|
|
UINT m_depth = 0;
|
|
|
|
HRESULT m_error = S_OK;
|
|
|
|
PWSTR m_path = nullptr;
|
|
|
|
PWSTR m_originalName = nullptr;
|
|
|
|
PWSTR m_newName = nullptr;
|
2020-12-14 10:28:12 +01:00
|
|
|
SYSTEMTIME m_time = {0};
|
2020-07-16 13:24:49 +02:00
|
|
|
CSRWLock m_lock;
|
|
|
|
long m_refCount = 0;
|
|
|
|
};
|