1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
|
#ifndef NULLSOFT_MAINH
#define NULLSOFT_MAINH
#include "..\..\General\gen_ml/ml.h"
#include "..\..\General\gen_ml/ml_ipc_0313.h"
#include "./config.h"
#include "./drivemngr.h"
#include "./drive.h"
#include "./medium.h"
#include "api__ml_disc.h"
#include "..\..\General\gen_ml/menu.h"
#include "./copyfiles.h"
#include "./copyinternal.h"
#include <shlobj.h>
#include <windows.h>
#include <commctrl.h>
#ifndef LONGX86
#ifdef _WIN64
#define LONGX86 LONG_PTR
#else /*_WIN64*/
#define LONGX86 LONG
#endif /*_WIN64*/
#endif // LONGX86
#define OLD_AAC_CODEC mmioFOURCC('A','A','C',' ')
#define BN_EX_GETTEXT 0x0FFF
#define WM_EXTRACTDISC (WM_APP + 0x010)
#define WM_SHOWFILEINFO (WM_APP + 0x11) // (wParam)(UINT)WISF_, (lParam)(LPCWSTR)file(track)name (can be NULL to reset)
#define WM_QUERYFILEINFO (WM_APP + 0x12)
#define WM_TAGUPDATED (WM_APP + 0x13) // wParam = 0, lParam = (LPCWSTR)pszFileName
#define VCM_CREATECOMMANDBAR (WM_APP + 0x20)
#define VCM_DESTROYCOMMANDBAR (WM_APP + 0x21)
#define VCM_GETCOMMANDBAR (WM_APP + 0x22)
#define VCM_GETMININFOENABLED (WM_APP + 0x23)
#define VCM_GETMININFOVISIBLE (WM_APP + 0x24)
typedef struct __CMDBARCREATESTRUCT
{
HWND hwndOwner;
UINT resourceId;
DLGPROC fnDialogProc;
ULONG_PTR uData;
} CMDBARCREATESTRUCT;
#define MSGRESULT(__hwnd, __result) { SetWindowLongPtrW((__hwnd), DWLP_MSGRESULT, ((LONGX86)(LONG_PTR)(__result))); return TRUE; }
#define ViewContainer_CreateCmdBar(/*HWND*/ __hwndViewContainer, /*HWND*/ __hwndOwner, /*INT_PTR*/ __resourceId, /*DLGPROC*/ __fnDialogProc, /*ULONG_PTR*/ __uData)\
{CMDBARCREATESTRUCT cs; cs.hwndOwner = (__hwndOwner); cs.resourceId = (__resourceId); cs.fnDialogProc = (__fnDialogProc); cs.uData = (__uData);\
((HWND)SNDMSG((__hwndViewContainer), VCM_CREATECOMMANDBAR, 0, (LPARAM)(&cs)));}
#define ViewContainer_DestroyCmdBar(/*HWND*/ __hwndViewContainer)\
((BOOL)SNDMSG((__hwndViewContainer), VCM_DESTROYCOMMANDBAR, 0, 0L))
#define ViewContainer_GetCmdBar(/*HWND*/ __hwndViewContainer)\
((HWND)SNDMSG((__hwndViewContainer), VCM_GETCOMMANDBAR, 0, 0L))
#define ViewContainer_GetMiniInfoEnabled(/*HWND*/ __hwndViewContainer)\
((HWND)SNDMSG((__hwndViewContainer), VCM_GETMININFOENABLED, 0, 0L))
#define ViewContainer_GetMiniInfoVisible(/*HWND*/ __hwndViewContainer)\
((HWND)SNDMSG((__hwndViewContainer), VCM_GETMININFOVISIBLE, 0, 0L))
extern winampMediaLibraryPlugin plugin;
extern LARGE_INTEGER freq;
void CleanupDirectoryString(LPTSTR pszDirectory);
LPWSTR GetExtensionString(LPWSTR pszBuffer, INT cchBufferMax, DWORD fourcc);
HRESULT FormatFileName(LPTSTR pszTextOut, INT cchTextMax, LPCTSTR pszFormat,
INT nTrackNo, LPCTSTR pszArtist,
LPCTSTR pszAlbum, LPCTSTR pszTitle,
LPCTSTR pszGenre, LPCTSTR pszYear,
LPCTSTR pszTrackArtist,
LPCTSTR pszFileName, LPCTSTR pszDisc);
bool RegisteredEncoder(DWORD fourcc);
extern C_Config *g_config;
extern HMENU g_context_menus;
extern C_Config *g_view_metaconf;
#define DSF_CANRECORD 0x00010000
#define DSF_PLAYING 0x00000001
#define DSF_RIPPING 0x00000002
#define DSF_BURNING 0x00000004
#define DSF_GETTINGINFO 0x00000008
typedef struct _DRIVE
{
CHAR cLetter;
CHAR cMode;
WCHAR szTitle[64];
DWORD textSize;
BOOL textOrigWidth;
WORD itemWidth;
BYTE nBtnState;
BOOL bEjectVisible;
UINT_PTR timerId;
} DRIVE;
typedef BOOL (CALLBACK *NAVITEMENUMPROC)(HNAVITEM hItem, DRIVE *pDrive, LPARAM param);
DRIVE *Plugin_GetDriveFromNavItem(HNAVITEM hItem);
HNAVITEM Plugin_GetNavItemFromLetter(CHAR cLetter);
BOOL Plugin_EnumerateNavItems(NAVITEMENUMPROC callback, LPARAM param);
void Plugin_RegisterListener(HWND hwnd, UINT uMsg, CHAR cLetter); // active view can register itself to be notified about drive/medium changes if cLetter = 0 you will be notifed for all drives
void Plugin_UnregisterListener(HWND hwnd);
void Plugin_ShowRippingPreferences(void);
BOOL Plugin_IsExtractScheduled(CHAR cLetter);
int getFileInfo(const char *filename, const char *metadata, char *dest, int len);
int getFileInfoW(const wchar_t *filename, const wchar_t *metadata, wchar_t *dest, int len);
#define HF_DOMODAL 0x0001
#define HF_ALLOWRESIZE 0x0010
HWND MLDisc_ShowHelp(HWND hParent, LPCWSTR pszWindowTitle, LPCWSTR pszCaption, LPCWSTR pszText, UINT uFlags); // returns hwnd only if not HF_DOMODAL
#define QBF_SHOW_CHECKBOX 0x00000001L
#define QBF_SHOW_EXTRA_BUTTON 0x00000002L
#define QBF_TOPMOST 0x00000100L
#define QBF_SETFOREGROUND 0x00000200L
#define QBF_BEEP 0x00000400L
#define QBF_FLASH 0x00000800L
#define QBF_DEFAULT_OK 0x00000000L
#define QBF_DEFAULT_CANCEL 0x00001000L
#define QBF_DEFAULT_EXTRA1 0x00002000L
typedef struct _QUESTIONBOX
{
HWND hParent; // [in]
LPCTSTR pszIcon; // [in]
UINT uBeepType; // [in]
LPCTSTR pszTitle; // [in] accepts MAKEINTRESOURCE() as parameters.
LPCTSTR pszMessage; // [in] accepts MAKEINTRESOURCE() as parameters.
UINT uFlags; // [in]
LPCTSTR pszBtnOkText; // [in] accepts MAKEINTRESOURCE() as parameters.
LPCTSTR pszBtnCancelText; // [in] accepts MAKEINTRESOURCE() as parameters.
LPCTSTR pszCheckboxText; // [in] accepts MAKEINTRESOURCE() as parameters.
LPCTSTR pszBtnExtraText; // [in] accepts MAKEINTRESOURCE() as parameters.
BOOL checkboxChecked; // [in][out]
} QUESTIONBOX;
INT_PTR MLDisc_ShowQuestionBox(QUESTIONBOX *pQuestionBox); // returns pressed button id;
// cdrip.cpp
BOOL CALLBACK CDRipPrefsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
typedef struct
{
char drive_letter;
wchar_t *album;
wchar_t *artist;
wchar_t *genre;
wchar_t *year;
wchar_t *publisher; // record label
wchar_t *disc; // disc ##/##
wchar_t *comment; // notes from CDDB
wchar_t **composers;
wchar_t **conductors;
wchar_t **gracenoteFileIDs;
wchar_t **gracenoteExtData;
int total_length_bytes;
int ntracks; // total number of tracks
wchar_t **tracks; // set these to NULL to not rip em
wchar_t **trackArtists;
int *lengths; // lengths, in seconds
wchar_t **filenames; // can be used internally to override output filenames
// (should always allocate, but leave NULL ptrs in the array)
wchar_t **tempFilenames; //where we are ripping to, we'll move at the end
} cdrip_params;
void cdrip_extractFiles(cdrip_params *parms);
int cdrip_isextracting(char drive);
void cdrip_stop_all_extracts();
//gracenote.cpp
void gracenoteInit();
int gracenoteQueryFile(const char *filename);
void gracenoteCancelRequest();
int gracenoteDoTimerStuff();
void gracenoteSetValues(char *artist, char *album, char *title);
char *gracenoteGetTuid();
int gracenoteIsWorking();
//view_ripburn.cpp
INT_PTR CALLBACK view_ripburnDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam,LPARAM lParam);
// view_cdrom.cpp
void saveCDToItemRecordList(CHAR cLetter, itemRecordList *obj, char *album);
int cdrom_contextMenu(HWND parent, CHAR cLetter, HNAVITEM hItem);
void cdburn_appendItemRecord(itemRecordList *obj, char driveletter);
HWND CreateContainerWindow(HWND hwndParent, CHAR cLetter, BOOL bQueryInfo);
HWND CreateWaitWindow(HWND hwndParent, CHAR cLetter);
HWND CreateInfoWindow(HWND hwndParent, CHAR cLetter);
HWND CreateCDViewWindow(HWND hwndParent, DM_NOTIFY_PARAM *phdr);
HWND CreateCDBurnWindow(HWND hwndParent, CHAR cLetter);
HWND CreateCDRipWindow(HWND hwndParent, CHAR cLetter);
HWND CreateCdDataViewWindow(HWND hwndParent, CHAR cLetter);
BOOL CALLBACK browseEnumProc(HWND hwnd, LPARAM lParam);
#endif
|