123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- #include "main.h"
- #ifndef IGNORE_API_GRACENOTE
- #include "cddb.h"
- #else
- extern char config_use_cddb;
- //char config_use_cddb = 0;
- #endif
- #include "api__in_cdda.h"
- #include "../winamp/wa_ipc.h"
- //int config_sample=1;
- //int config_use_veritas=1;
- //int config_rip_veritas=1;
- //int config_maxextractspeed=4;
- //int config_offset=0;
- //int config_read_leadin=0;
- //int config_rip_buffersize=24;
- //int config_rip_buffers=256;
- //int config_play_buffersize=1;
- //int config_play_buffers=256;
- char *INI_FILE = 0;
- char app_name[] = "CDDA/Line Input Driver";
- static int _r_i(char *name, int def)
- {
- name += 7;
- return GetPrivateProfileIntA(app_name, name, def, INI_FILE);
- }
- #define RI(x) (( x ) = _r_i(#x,( x )))
- static void _w_i(char *name, int d)
- {
- char str[120] = {0};
- wsprintfA(str, "%d", d);
- name += 7;
- WritePrivateProfileStringA(app_name, name, str, INI_FILE);
- }
- #define WI(x) _w_i(#x,( x ))
- void config_read()
- {
- INI_FILE = (char*)SendMessage(line.hMainWindow, WM_WA_IPC, 0, IPC_GETINIFILE);
- //RI(config_sample);
- RI(config_use_cddb);
- /*RI(config_use_veritas);
- config_rip_veritas=config_use_veritas;
- RI(config_rip_veritas);*/
- //RI(config_maxextractspeed);
- //RI(config_offset);
- //RI(config_rip_buffersize);
- //RI(config_rip_buffers);
- //RI(config_play_buffersize);
- //RI(config_play_buffers);
- //RI(config_read_leadin);
- }
- void config_write()
- {
- //WI(config_sample);
- WI(config_use_cddb);
- //WI(config_use_veritas);
- //WI(config_rip_veritas);
- //WI(config_maxextractspeed);
- }
- // TODO need to review all of this!!!
- #if 0
- BOOL CALLBACK ripConfigProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_INITDIALOG:
- //if (config_rip_veritas) CheckDlgButton(hwndDlg,IDC_VERITAS,BST_CHECKED);
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)L"0.5x");
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)L"1x");
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)L"2x");
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)L"4x");
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)L"8x");
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)L"16x");
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_UNLIMITED));
- if (config_maxextractspeed<0)config_maxextractspeed=0;
- if (config_maxextractspeed>6)config_maxextractspeed=6;
- //if (config_maxextractspeed > 4 && getRegVer() < 1) config_maxextractspeed=4;
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_SETCURSEL,config_maxextractspeed,0);
- return 0;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- /*case IDC_VERITAS:
- config_rip_veritas = IsDlgButtonChecked(hwndDlg,IDC_VERITAS)?1:0;
- break;*/
- case IDC_COMBO1:
- {
- int x=(INT)SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_GETCURSEL,0,0);
- if (x != CB_ERR)
- {
- if (x<0)x=0;
- if (x>6)x=6;
- /*if (x > 4 && getRegVer() < 1)
- {
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_SETCURSEL,4,0);
- x=4;
- config_maxextractspeed=x;
- wchar_t title[64] = {0};
- if (MessageBoxW(hwndDlg,WASABI_API_LNGSTRINGW(IDS_PURCHASE_WINAMP_PRO_PROMPT),
- WASABI_API_LNGSTRINGW_BUF(IDS_WINAMP_PRO_FEATURE,title,64),MB_YESNO) == IDYES)
- {
- SendMessage(line.hMainWindow,WM_WA_IPC,0,IPC_GETREGISTEREDVERSION);
- }
- }
- else*/ config_maxextractspeed=x;
- }
- }
- break;
- }
- return FALSE;
- case WM_DESTROY:
- config_write();
- return FALSE;
- }
- return 0;
- }
- #endif
- static long cddbResourceID=202;
- static long cddbMaxFrames=46;
- static long cddbHeight=80, cddbWidth=80;
- static HMODULE cddbUI = 0;
- static bool GetUI()
- {
- #ifndef IGNORE_API_GRACENOTE
- ICddbUIOptions *pUIOptions;
- if (SUCCEEDED(Cddb_GetIUIOptions((void**)&pUIOptions)))
- {
- if (SUCCEEDED(pUIOptions->GetCurrent(UI_DISP_PROGRESS))) // not sure what this does, but it seems to be required
- {
- pUIOptions->get_ProgressResourceID(&cddbResourceID);
- pUIOptions->get_Frames(&cddbMaxFrames);
- pUIOptions->get_Bottom(&cddbHeight);
- pUIOptions->get_Right(&cddbWidth);
- pUIOptions->get_ResourceHINSTANCE((long *)&cddbUI);
- }
- pUIOptions->Release();
- return true;
- }
- #endif
- return false;
- }
- static HANDLE cddbImage =0;
- static int cddbFrame = 0;
- BOOL CALLBACK ConfigProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_DRAWITEM:
- if (wParam == IDC_CDDBICON)
- {
- DRAWITEMSTRUCT *drawItem = (DRAWITEMSTRUCT *) lParam;
- if (cddbImage)
- {
- HDC hdcbm = CreateCompatibleDC(drawItem->hDC);
- HGDIOBJ old = SelectObject(hdcbm, cddbImage);
- BitBlt(drawItem->hDC, 0, 0, cddbWidth, cddbHeight, hdcbm, (cddbFrame * cddbWidth), 0, SRCCOPY);
- SelectObject(hdcbm, old);
- DeleteDC(hdcbm);
- }
- else
- {
- RECT r={0,0,cddbWidth,cddbHeight};
- FillRect(drawItem->hDC, &r, (HBRUSH)GetStockObject(GRAY_BRUSH));
- }
- return TRUE;
- }
- break;
- case WM_DESTROY:
- cddbImage=0;
- break;
- case WM_INITDIALOG:
- cddbFrame=0;
- cddbImage=0;
- {
- IUnknown *pUnknown = NULL;
- #ifndef IGNORE_API_GRACENOTE
- Cddb_GetIControl((void**)&pUnknown);
- #endif
- if (!pUnknown)
- {
- ShowWindow(GetDlgItem(hwndDlg,IDC_CDDBNOTE),SW_SHOWNA);
- ShowWindow(GetDlgItem(hwndDlg,IDC_CDDB),SW_HIDE);
- ShowWindow(GetDlgItem(hwndDlg,IDC_CDDBICON),SW_HIDE);
- }
- else pUnknown->Release();
- }
- //if (config_sample) CheckDlgButton(hwndDlg,IDC_SAMPLE,BST_CHECKED);
- if (config_use_cddb&1) CheckDlgButton(hwndDlg,IDC_CDDB,BST_CHECKED);
- //if (config_use_veritas) CheckDlgButton(hwndDlg,IDC_VERITAS,BST_CHECKED);
- if ((config_use_cddb&1) && GetUI())
- {
- cddbImage = LoadImage(cddbUI, MAKEINTRESOURCE(cddbResourceID), IMAGE_BITMAP, 0, 0, LR_DEFAULTSIZE);
- SetTimer(hwndDlg, 2, 65, NULL);
- }
- SetWindowPos(GetDlgItem(hwndDlg, IDC_CDDBICON), 0, 0, 0, cddbWidth, cddbHeight, SWP_NOACTIVATE|SWP_NOMOVE|SWP_NOZORDER);
- return TRUE;
- case WM_TIMER:
- switch (wParam)
- {
- case 2:
- if (cddbFrame < cddbMaxFrames-1)
- {
- cddbFrame++;
- InvalidateRect(GetDlgItem(hwndDlg, IDC_CDDBICON), 0, TRUE);
- }
- else
- KillTimer(hwndDlg, 2);
- break;
- }
- return 0;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDC_CDDBICON:
- if (HIWORD(wParam) == STN_CLICKED) SendMessage(line.hMainWindow, WM_WA_IPC, (WPARAM)L"http://www.cddb.com/", IPC_OPEN_URL);
- return 0;
- case IDOK:
- //config_sample = IsDlgButtonChecked(hwndDlg,IDC_SAMPLE)?1:0;
- config_use_cddb = IsDlgButtonChecked(hwndDlg,IDC_CDDB)?1:0;
- //config_use_veritas = IsDlgButtonChecked(hwndDlg,IDC_VERITAS)?1:0;
- config_write();
- case IDCANCEL:
- EndDialog(hwndDlg,1);
- return FALSE;
- }
- return FALSE;
- }
- return 0;
- }
- void config(HWND hwndParent)
- {
- WASABI_API_DIALOGBOXW(IDD_DIALOG1,hwndParent,ConfigProc);
- }
|