123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- #ifndef NULLOSFT_MEDIALIBRARY_FILEVIEW_CONTROL_INTERNAL_HEADER
- #define NULLOSFT_MEDIALIBRARY_FILEVIEW_CONTROL_INTERNAL_HEADER
- #if defined(_MSC_VER) && (_MSC_VER >= 1020)
- #pragma once
- #endif
- #include <windows.h>
- #include "../winamp/gen.h"
- #include "api__gen_ml.h"
- #include "./ml_ipc_0313.h"
- #include "../nu/trace.h"
- #include "./ml_imagelist.h"
- #include "./ml_imagefilter.h"
- #include "./skinning.h"
- #ifndef LONGX86
- #ifdef _WIN64
- #define LONGX86 LONG_PTR
- #else /*_WIN64*/
- #define LONGX86 LONG
- #endif /*_WIN64*/
- #endif // LONGX86
- #define METADATA_SOURCE_UNKNOWN 0
- #define METADATA_SOURCE_FILEINFO 1
- #define METADATA_SOURCE_MLDB 2
- #define FVM_GETIDEALHEIGHT (MLFVM_FIRST + 101) // internal use
- #define CSTR_INVARIANT MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)
- #define METATYPE_AUDIO 0
- #define METATYPE_VIDEO 1
- #define METATYPE_PLAYLIST 2
- #define MF_NAME 0
- #define MF_SIZE 1
- #define MF_TYPE 2
- #define MF_MODIFIED 3
- #define MF_CREATED 4
- #define MF_EXTENSION 5
- #define MF_ATTRIBUTES 6
- #define MF_ARTIST 7
- #define MF_ALBUM 8
- #define MF_TITLE 9
- #define MF_INMLDB 10
- #define MF_GENRE 11
- #define MF_COMMENT 12
- #define MF_LENGTH 13
- #define MF_BITRATE 14
- #define MF_TRACKNUM 15
- #define MF_TRACKCOUNT 16
- #define MF_DISCNUM 17
- #define MF_DISCCOUNT 18
- #define MF_YEAR 19
- #define MF_PUBLISHER 20
- #define MF_COMPOSER 21
- #define MF_ALBUMARTIST 22
- #define MF_SOURCE 23
- typedef struct __AUDIOMETA
- {
- UINT nSource;
- LPWSTR pszArtist;
- LPWSTR pszTitle;
- LPWSTR pszAlbum;
- LPWSTR pszGenre;
- LPWSTR pszComment;
- INT nLength;
- INT nBitrate;
- INT nTrackNum;
- INT nTrackCount;
- INT nDiscNum;
- INT nDiscCount;
- INT nYear;
- LPWSTR pszAlbumArtist;
- LPWSTR pszPublisher;
- LPWSTR pszComposer;
- } AUDIOMETA;
- typedef __AUDIOMETA VIDEOMETA;
- #define MAX_PLAYLIST_ENTRIES 20
- typedef struct __PLENTRY
- {
- LPWSTR pszTitle;
- INT nLength;
- } PLENTRY;
- typedef struct __PLAYLISTMETA
- {
- UINT nCount;
- LPWSTR pszTitle;
- INT nLength;
- PLENTRY szEntries[MAX_PLAYLIST_ENTRIES];
- } PLAYLISTMETA;
- typedef struct _FILEMETARECORD
- {
- DWORD type;
- union
- {
- AUDIOMETA audio;
- VIDEOMETA video;
- PLAYLISTMETA playlist;
- };
- }FILEMETARECORD;
- typedef struct _FILERECORD
- {
- WIN32_FIND_DATAW Info;
- INT fileType;
- size_t extOffset;
- FILEMETARECORD *pMeta;
- } FILERECORD;
- typedef struct _FILEDATA
- {
- size_t count;
- size_t allocated;
- FILERECORD *pRec;
- size_t *pSort;
- ULONGLONG folderSize;
- WCHAR szPath[MAX_PATH*2];
- } FILEDATA;
- #ifdef __cplusplus
- extern "C" {
- #endif
- extern winampGeneralPurposePlugin plugin;
- #ifdef __cplusplus
- }
- #endif
- extern HWND g_hwnd;
- extern HMLIMGFLTRMNGR hmlifMngr; // default gen_ml fitler manager
- // toolbar
- HWND FileViewToolbar_Create(HWND hwndParent);
- // filesystem
- size_t FileView_ReadFileData(FILEDATA *pfd, LPCWSTR pszPath, UINT fStyle, FILESYSTEMINFO *pfsi);
- LPCWSTR FileView_GetTypeFamily(LPCWSTR pszExtension);
- // metadata
- typedef void (CALLBACK *DISCOVERCALLBACK)(LPCWSTR /*pszFileName*/, ULONG_PTR /*param*/);
- void FileViewMeta_InitializeStorage(HWND hView);
- void FileViewMeta_ReleaseStorage(HWND hView);
- FILEMETARECORD *FileViewMeta_GetFromCache(LPCWSTR pszPath, FILERECORD *pfr);
- BOOL FileViewMeta_Discover(LPCWSTR pszPath, FILERECORD *pfr, DISCOVERCALLBACK fnCallback, ULONG_PTR param, INT queueMax);
- void FileViewMeta_TruncateQueue(size_t max);
- BOOL FileViewMeta_GetString(FILEMETARECORD *pMeta, UINT uMetaField, LPCWSTR *ppszOut);
- BOOL FileViewMeta_GetInt(FILEMETARECORD *pMeta, UINT uMetaField, INT *pOut);
- // formatting
- INT FileView_FormatFileTime(FILETIME *pft, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatType(UINT fileType, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatAttributes(UINT uAttributes, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatYesNo(BOOL bValue, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatYear(INT nYear, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatBitrate(INT nBitrate, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatLength(INT nLength, LPWSTR pszDest, INT cchDest);
- INT FileView_FormatIntSlashInt(INT part1, INT part2, LPWSTR pszDest, INT cchDest);
- #define FIF_TOOLTIP 0
- #define FIF_STATUS 1
- void FileView_FormatFileInfo(FILERECORD *pfr, LPWSTR pszText, size_t cchTextMax, UINT mode);
- void FileView_FormatAudioTip(FILERECORD *pfr, LPWSTR pszText, size_t cchTextMax, LPCWSTR pszSeparator);
- void FileView_FormatDefaultTip(FILERECORD *pfr, LPWSTR pszText, size_t cchTextMax, LPCWSTR pszSeparator);
- // sorting
- void FileView_SortByColumn(FILEDATA *pFileData, UINT uColumn);
- void FileView_SortByColumnEx(FILEDATA *pFileData, UINT uColumn, size_t *pOrder, size_t count);
- // menu
- HMENU FileViewMenu_Initialize();
- HMENU FileViewMenu_GetSubMenu(HWND hView, HMENU hViewMenu, UINT uMenuType);
- UINT FileViewMenu_GetMenuType(HWND hView, HMENU hViewMenu, HMENU hMenu);
- // view
- void FileView_DisplayPopupMenu(HWND hdlg, UINT uMenu, UINT uFlags, POINT pt);
- // registered columns
- typedef struct _FILEVIEWCOLUMN
- {
- UINT id;
- LPWSTR pszText;
- INT width;
- UINT format;
- INT order;
- INT widthMin;
- INT widthMax;
- } FILEVIEWCOLUMN;
- extern const FILEVIEWCOLUMN szRegisteredColumns[];
- extern const INT RegisteredColumnsCount;
- #endif // NULLOSFT_MEDIALIBRARY_FILEVIEW_CONTROL_INTERNAL_HEADER
|