aboutsummaryrefslogtreecommitdiff
path: root/Src/burnlib/uiBurnPlaylist.h
diff options
context:
space:
mode:
Diffstat (limited to 'Src/burnlib/uiBurnPlaylist.h')
-rw-r--r--Src/burnlib/uiBurnPlaylist.h133
1 files changed, 133 insertions, 0 deletions
diff --git a/Src/burnlib/uiBurnPlaylist.h b/Src/burnlib/uiBurnPlaylist.h
new file mode 100644
index 00000000..3e264355
--- /dev/null
+++ b/Src/burnlib/uiBurnPlaylist.h
@@ -0,0 +1,133 @@
+#pragma once
+
+#include "./main.h"
+#include <commctrl.h>
+
+#include "./playlist.h"
+
+#define WM_BURNER ((WM_USER) + 0x400)
+
+#define WM_BURNGETSTATUS ((WM_BURNER) + 0x001)
+#define WM_BURNGETITEMSTATUS ((WM_BURNER) + 0x002)
+#define WM_BURNUPDATEOWNER ((WM_BURNER) + 0x003) // wParam = 0; lParam = ownerWnd
+#define WM_BURNCONFIGCHANGED ((WM_BURNER) + 0x004) // wParam = changed item; lParam = new value
+
+#define WM_BURNNOTIFY ((WM_BURNER) + 0x100) // wParam = Notify code, lParam notify data
+
+// Notification types
+#define BURN_READY 0xFFF // lParam = hwnd
+#define BURN_DESTROYED 0x001
+#define BURN_WORKING 0x002
+#define BURN_FINISHED 0x003
+#define BURN_STATECHANGED 0x004
+#define BURN_CONFIGCHANGED 0x005
+
+
+#define BURN_ITEMSTATECHANGED 0x010
+#define BURN_ITEMDECODEPROGRESS 0x011
+#define BURN_ITEMBURNPROGRESS 0x012
+
+// status types
+#define BURNSTATUS_DRIVE 0x0000
+#define BURNSTATUS_ELAPSED 0x0001
+#define BURNSTATUS_ESTIMATED 0x0002
+#define BURNSTATUS_PROGRESS 0x0003
+#define BURNSTATUS_STATE 0x0004
+#define BURNSTATUS_ERROR 0x0005
+
+
+#define BURNPLAYLISTUI_SUCCESS 0x0000
+#define BURNPLAYLISTUI_PRIMOSDKNOTSET 0x0105
+
+
+//stages
+#define PLSTAGE_READY 0x00
+#define PLSTAGE_LICENSED 0x01
+#define PLSTAGE_DECODED 0x02
+#define PLSTAGE_BURNED 0x03
+
+// config items
+#define BURNCFG_AUTOCLOSE 0x01
+#define BURNCFG_AUTOEJECT 0x02
+#define BURNCFG_ADDTODB 0x03
+#define BURNCFG_HIDEVIEW 0x04
+
+class BurnPlaylistUI
+{
+public:
+ BURNLIB_API BurnPlaylistUI(void);
+ BURNLIB_API ~BurnPlaylistUI(void);
+
+public:
+ BURNLIB_API DWORD Burn(obj_primo *primoSDK, DWORD drive, DWORD maxspeed, DWORD burnFlags,
+ BurnerPlaylist *playlist, const wchar_t* tempPath, HWND ownerWnd);
+
+
+protected:
+ static DWORD CALLBACK OnLicensingPlaylist(void *sender, void *userparam, DWORD notifyCode, DWORD errorCode, ULONG_PTR param);
+ static DWORD CALLBACK OnDecodePlaylist(void *sender, void *userparam, DWORD notifyCode, DWORD errorCode, ULONG_PTR param);
+ static DWORD CALLBACK OnBurnPlaylist(void *sender, void *userparam, DWORD notifyCode, DWORD errorCode, ULONG_PTR param);
+ static LRESULT CALLBACK WndProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+ void OnLicense(void);
+ void OnDecode(void);
+ void OnBurn(void);
+ void OnInitDialog(HWND hwndDlg);
+ void OnCancel(void);
+ void OnDestroy(void);
+ void SetExtendedView(BOOL extView);
+ void SetColumns(void);
+ void FillList(void);
+ void SetProgress(int position);
+ void UpdateTime(BOOL recalcEstimates);
+ void ReportError(unsigned int stringCode, BOOL allowContinue);
+ void ReportError(const wchar_t *errorString, BOOL allowContinue);
+ DWORD DrawList(NMLVCUSTOMDRAW* cd);
+ HBITMAP CreateStripBmp(HDC compDC);
+ void SetReadyClose(BOOL ready);
+ void UpdateItemStatus(int index);
+ void SetItemStatusText(int index, unsigned int stringCode, BOOL redraw);
+ void SetCurrentOperation(unsigned int stringCode);
+ int MessageBox(unsigned int messageCode, unsigned int captionCode, unsigned int uType);
+protected:
+
+ struct aproxtime
+ {
+ DWORD license;
+ DWORD convert;
+ DWORD transition;
+ DWORD chkdisc;
+ DWORD init;
+ DWORD leadin;
+ DWORD burn;
+ DWORD leadout;
+ DWORD finish;
+ };
+
+protected:
+ HWND hwnd;
+ HWND ownerWnd;
+ DWORD drive;
+ DWORD maxspeed;
+ DWORD burnFlags;
+ BOOL extendedView;
+ DWORD errCode;
+ obj_primo *primoSDK;
+ BurnerPlaylist *playlist;
+ unsigned int startedTime;
+ unsigned int estimatedTime;
+ wchar_t *tmpfilename;
+ HANDLE hTmpFile;
+ int currentPercent;
+ DWORD prevRefresh;
+ HBITMAP stripBmp;
+ BOOL cancelOp;
+ HANDLE workDone;
+ aproxtime estimated;
+ BOOL readyClose;
+ DWORD controlTime;
+ DWORD realSpeed;
+ DWORD stage;
+ DWORD count; // count of items to process (actual)
+ DWORD processed; // count of actually processed items
+
+}; \ No newline at end of file