mirror of
https://github.com/WinampDesktop/winamp.git
synced 2024-09-24 15:54:12 +00:00
207 lines
No EOL
5.1 KiB
C
207 lines
No EOL
5.1 KiB
C
#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
|