125 lines
3.3 KiB
C
125 lines
3.3 KiB
C
#ifndef NULLOSFT_MEDIALIBRARY_MLDISC_COPYFILES_INTERNAL_HEADER
|
|
#define NULLOSFT_MEDIALIBRARY_MLDISC_COPYFILES_INTERNAL_HEADER
|
|
|
|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
|
#pragma once
|
|
#endif
|
|
|
|
#include <windows.h>
|
|
#include "../Agave/Metadata/api_metadata.h"
|
|
#include "../ml_local/api_mldb.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
#define STRCOMP_INVARIANT MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)
|
|
|
|
#define CPM_UPDATEDISKSIZE (WM_APP + 2)
|
|
|
|
|
|
typedef struct _COPYDATA
|
|
{
|
|
LONG ref;
|
|
HWND hDialog;
|
|
HWND hOwner;
|
|
HANDLE hThread;
|
|
BOOL bCancel;
|
|
DWORD errorCode;
|
|
UINT errorMsgId;
|
|
LPWSTR *ppszFiles;
|
|
ULONGLONG *pFSizes;
|
|
INT count;
|
|
UINT uFlags;
|
|
api_metadata *pMetaReader;
|
|
api_mldb *pMlDb;
|
|
WCHAR szDestination[MAX_PATH];
|
|
WCHAR szTitleFormat[128];
|
|
} COPYDATA;
|
|
|
|
#define FCF_ADDTOMLDB 0x00000002L
|
|
#define FCF_USETITLEFMT 0x00000004L
|
|
#define FCF_SKIPFILE 0x00010000L
|
|
#define FCF_OVERWRITEFILE 0x00020000L
|
|
#define FCF_DELETEREADONLY 0x00040000L
|
|
|
|
|
|
|
|
INT_PTR CALLBACK CopyPrepare_DialogProc(HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
INT_PTR CALLBACK CopyProgress_DialogProc(HWND hdlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
|
|
LONG CopyFiles_AddRef(COPYDATA *pcd);
|
|
LONG CopyFiles_Release(COPYDATA *pcd);
|
|
BOOL CopyFiles_StartCopy(COPYDATA *pcd);
|
|
BOOL CopyFiles_CancelCopy(COPYDATA *pcd);
|
|
|
|
BOOL CopyFiles_CreateDirectory(LPCTSTR pszDirectory);
|
|
BOOL CopyFiles_FormatFileName(LPTSTR pszNewFileName, INT cchBufferMax, LPCTSTR pszFileToRename, LPCTSTR pszOrigFileName, LPCTSTR pszDestination, LPCTSTR pszFormat, api_metadata *pMetaReader);
|
|
|
|
HBITMAP CopyFiles_LoadResourcePng(LPCTSTR pszResource);
|
|
|
|
#define CFM_NOTIFY (WM_APP + 3)
|
|
|
|
// notify task
|
|
#define CFT_INITIALIZING 0x0001
|
|
#define CFT_COPYING 0x0002
|
|
#define CFT_FINISHED 0x0003
|
|
#define CFT_CONFLICT 0x0004 // conflicts always use SendMessage
|
|
|
|
|
|
// init task operations code
|
|
#define CFO_INIT 0x0000
|
|
#define CFO_CACLSIZE 0x0001
|
|
#define CFO_CHECKDESTINATION 0x0002
|
|
|
|
|
|
// copy task operations code
|
|
#define CFO_INIT 0x0000 // time to set tast text
|
|
#define CFO_NEXTFILE 0x0001 // lParam - MAKELPARAM(file index, total count)
|
|
#define CFO_PROGRESS 0x0002 // lParam - percent
|
|
#define CFO_POSTCOPY 0x0003
|
|
|
|
|
|
// conflicts
|
|
|
|
#define EXISTFILE_CANCELCOPY 0x0001 // almost like return FALSE but will not produce error
|
|
#define EXISTFILE_SKIP 0x0002 // skip
|
|
#define EXISTFILE_OVERWRITE 0x0003 // overwrite
|
|
#define EXISTFILE_APPLY_ONCE 0x0000 // apply only once
|
|
#define EXISTFILE_APPLY_TO_ALL 0x0100 // apply to all files with the same conflict
|
|
|
|
#define READONLY_CANCELCOPY 0x0001
|
|
#define READONLY_DELETE 0x0002
|
|
#define READONLY_DELETEALL 0x0003
|
|
|
|
typedef struct _FILECONFLICT
|
|
{
|
|
LPCTSTR pszNameExisting;
|
|
LPCTSTR pszNameNew;
|
|
} FILECONFLICT;
|
|
|
|
|
|
#define CFO_DESTNOTEXIST 0x0000 // return FALSE to create destination or TRUE to cancel copy operation. param -pszDestionation
|
|
#define CFO_FILEALREDYEXIST 0x0001 // return FALSE to fail with access denied, or EXISTFILE_XXX, param = (FILECONFLICT*)
|
|
#define CFO_READONLY 0x0002 // return FALSE to fail, or RADONLY_XXX, param = (LPCTSTR)pszFileName
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// finished task operations code
|
|
#define CFO_FAILED 0x0001
|
|
#define CFO_SUCCESS 0x0002
|
|
#define CFO_CANCELLED 0x0003
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
|
|
|
|
#endif // NULLOSFT_MEDIALIBRARY_MLDISC_COPYFILES_INTERNAL_HEADER
|