123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685 |
- #include "main.h"
- #include <shlobj.h>
- #include <commctrl.h>
- #include <windows.h>
- #include "../winamp/wa_ipc.h"
- #include "config.h"
- #include "api__in_mp3.h"
- #include "resource.h"
- char g_http_tmp[MAX_PATH] = {0};
- int config_write_mode = WRITE_UTF16;
- int config_read_mode = READ_LOCAL;
- int config_parse_apev2 = 1;
- int config_parse_lyrics3 = 1;
- int config_parse_id3v1 = 1;
- int config_parse_id3v2 = 1;
- int config_write_apev2 = 1;
- int config_write_id3v1 = 1;
- int config_write_id3v2 = 1;
- int config_create_id3v1 = 1;
- int config_create_id3v2 = 1;
- int config_create_apev2 = 0;
- int config_apev2_header = RETAIN_HEADER;
- int config_lp = 0;
- BOOL CALLBACK browseEnumProc(HWND hwnd, LPARAM lParam)
- {
- wchar_t cl[32] = {0};
- GetClassNameW(hwnd, cl, ARRAYSIZE(cl));
- if (!lstrcmpiW(cl, WC_TREEVIEW))
- {
- PostMessage(hwnd, TVM_ENSUREVISIBLE, 0, (LPARAM)TreeView_GetSelection(hwnd));
- return FALSE;
- }
- return TRUE;
- }
- static int CALLBACK BrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
- {
- switch (uMsg)
- {
- case BFFM_INITIALIZED:
- {
- SetWindowText(hwnd, WASABI_API_LNGSTRINGW(IDS_SELECT_DIRECTORY_TO_SAVE_TO));
- if (g_http_tmp[0]) SendMessage(hwnd, BFFM_SETSELECTIONA, 1, (LPARAM)g_http_tmp);
- // this is not nice but it fixes the selection not working correctly on all OSes
- EnumChildWindows(hwnd, browseEnumProc, 0);
- }
- }
- return 0;
- }
- static char app_name[] = "Nullsoft MPEG Decoder";
- char *get_inifile() { return INI_FILE; }
- int _r_i(char *name, int def)
- {
- if (!_strnicmp(name, "config_", 7)) name += 7;
- return GetPrivateProfileIntA(app_name, name, def, INI_FILE);
- }
- #define RI(x) (( x ) = _r_i(#x,( x )))
- void _w_i(char *name, int d)
- {
- char str[120] = {0};
- wsprintfA(str, "%d", d);
- if (!_strnicmp(name, "config_", 7)) name += 7;
- WritePrivateProfileStringA(app_name, name, str, INI_FILE);
- }
- #define WI(x) _w_i(#x,( x ))
- void _r_s(char *name, char *data, int mlen)
- {
- char buf[2048] = {0};
- lstrcpynA(buf, data, 2048);
- if (!_strnicmp(name, "config_", 7)) name += 7;
- GetPrivateProfileStringA(app_name, name, buf, data, mlen, INI_FILE);
- }
- #define RS(x) (_r_s(#x,x,sizeof(x)))
- void _w_s(char *name, char *data)
- {
- if (!_strnicmp(name, "config_", 7)) name += 7;
- WritePrivateProfileStringA(app_name, name, data, INI_FILE);
- }
- #define WS(x) (_w_s(#x,x))
- static void config_init()
- {
- char *p;
- if (mod.hMainWindow &&
- (p = (char *)SendMessage(mod.hMainWindow, WM_WA_IPC, 0, IPC_GETINIFILE))
- && p != (char *)1)
- {
- strncpy(INI_FILE, p, MAX_PATH);
- }
- else
- {
- GetModuleFileNameA(NULL, INI_FILE, sizeof(INI_FILE));
- p = INI_FILE + strlen(INI_FILE);
- while (p >= INI_FILE && *p != '.') p--;
- strcpy(++p, "ini");
- }
- }
- #ifdef AAC_SUPPORT
- #define DEF_EXT_LIST "MP3;MP2;MP1;AAC;VLB"
- #else
- #define DEF_EXT_LIST "MP3;MP2;MP1"
- #endif
- #define __STR2WSTR(str) L##str
- #define WIDEN(str) __STR2WSTR(str)
- #define DEF_EXT_LISTW WIDEN(DEF_EXT_LIST)
- #ifdef AAC_SUPPORT
- char config_extlist_aac[129] = DEF_EXT_LIST;
- #else
- char config_extlist[129] = DEF_EXT_LIST;
- #endif
- char config_rating_email[255] = {0};
- void config_read()
- {
- config_init();
- RI(allow_scartwork);
- RI(allow_sctitles);
- RI(sctitle_format);
- RI(config_http_buffersize);
- RI(config_http_prebuffer);
- RI(config_http_prebuffer_underrun);
- RI(config_downmix);
- RI(config_downsample);
- RI(config_max_bufsize_k);
- RI(config_eqmode);
- RI(config_gapless);
- if(FAILED(SHGetFolderPathA(NULL, CSIDL_MYMUSIC, NULL, SHGFP_TYPE_CURRENT, config_http_save_dir)))
- {
- if(FAILED(SHGetFolderPathA(NULL, CSIDL_PERSONAL, NULL, SHGFP_TYPE_CURRENT, config_http_save_dir)))
- {
- lstrcpynA(config_http_save_dir, "C:\\", MAX_PATH);
- }
- }
- RS(config_http_save_dir);
- RI(config_miscopts);
- RI(config_fastvis);
- #ifdef AAC_SUPPORT
- RS(config_extlist_aac);
- #else
- RS(config_extlist);
- #endif
- RI(config_write_mode);
- RI(config_read_mode);
- RI(config_parse_apev2);
- RI(config_parse_lyrics3);
- RI(config_parse_id3v1);
- RI(config_parse_id3v2);
- RI(config_write_apev2);
- RI(config_write_id3v1);
- RI(config_write_id3v2);
- RI(config_create_apev2);
- RI(config_create_id3v1);
- RI(config_create_id3v2);
- RI(config_apev2_header);
- RI(config_lp);
- RS(config_rating_email);
- }
- void config_write()
- {
- WI(allow_scartwork);
- WI(config_fastvis);
- WI(config_miscopts);
- WI(allow_sctitles);
- WI(sctitle_format);
- WI(config_http_buffersize);
- WI(config_http_buffersize);
- WI(config_http_prebuffer);
- WI(config_http_prebuffer_underrun);
- WI(config_downmix);
- WI(config_downsample);
- WI(config_max_bufsize_k);
- WI(config_eqmode);
- WS(config_http_save_dir);
- #ifdef AAC_SUPPORT
- WS(config_extlist_aac);
- #else
- WS(config_extlist);
- #endif
- WI(config_write_mode);
- WI(config_read_mode);
- WI(config_parse_apev2);
- WI(config_parse_lyrics3);
- WI(config_parse_id3v1);
- WI(config_parse_id3v2);
- WI(config_write_apev2);
- WI(config_write_id3v1);
- WI(config_write_id3v2);
- WI(config_create_apev2);
- WI(config_create_id3v1);
- WI(config_create_id3v2);
-
- WI(config_apev2_header);
- WI(config_lp);
- WS(config_rating_email);
- }
- static INT_PTR CALLBACK prefsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK id3Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK advancedTaggingProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK httpProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- static INT_PTR CALLBACK outputProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
- #define ISSEP(x) ((x) == ' ' || (x) == ';' || (x) == ',' || (x) == ':' || (x) == '.')
- char *getfileextensions()
- {
- static char list[512];
- char *op = list;
- // char *g_fileassos="MP3;MP2;MP1\0MPEG Audio Files (*.MP3;*.MP2;*.MP1)\0";
- char *p = config_extlist;
- int s = 0;
- while (p && *p)
- {
- while (ISSEP(*p)) p++;
- if (!p || !*p) break;
- if (s) *op++ = ';';
- s = 1;
- while (p && *p && !ISSEP(*p)) *op++ = *p++;
- }
- *op++ = 0;
- strcpy(op, WASABI_API_LNGSTRING(IDS_MPEG_AUDIO_FILES));
- while (op && *op) op++;
- p = config_extlist;
- s = 0;
- while (p && *p)
- {
- while (ISSEP(*p)) p++;
- if (!p || !*p) break;
- if (s) *op++ = ';';
- s = 1;
- *op++ = '*';
- *op++ = '.';
- while (p && *p && !ISSEP(*p)) *op++ = *p++;
- }
- *op++ = ')';
- *op++ = 0;
- *op++ = 0;
- return list;
- }
- void config(HWND hwndParent)
- {
- wchar_t title[128] = {0};
- int x;
- PROPSHEETHEADER pshead;
- PROPSHEETPAGE pspage[5];
- ZeroMemory(&pshead, sizeof(PROPSHEETHEADER));
- pshead.dwSize = sizeof(PROPSHEETHEADER);
- pshead.hwndParent = hwndParent;
- pshead.dwFlags = PSH_PROPSHEETPAGE | PSH_NOAPPLYNOW | PSH_NOCONTEXTHELP;
- pshead.hInstance = WASABI_API_LNG_HINST;
- pshead.pszCaption = WASABI_API_LNGSTRINGW_BUF(IDS_MPEG_AUDIO_DECODER_SETTINGS,title,128);//"MPEG Audio Decoder Settings";
- pshead.nPages = sizeof(pspage) / sizeof(pspage[0]);
- pshead.nStartPage = config_lp;
- pshead.ppsp = pspage;
- ZeroMemory(pspage, sizeof(pspage));
- for ( x = 0; x < sizeof(pspage) / sizeof(pspage[0]); x ++)
- pspage[x].dwSize = sizeof(PROPSHEETPAGE);
- for ( x = 0; x < sizeof(pspage) / sizeof(pspage[0]); x ++)
- pspage[x].hInstance = WASABI_API_LNG_HINST;
- pspage[0].pszTemplate = MAKEINTRESOURCE(IDD_PREFS);
- pspage[1].pszTemplate = MAKEINTRESOURCE(IDD_TAGOPTS);
- pspage[2].pszTemplate = MAKEINTRESOURCE(IDD_ADVANCED_TAGGING);
- pspage[3].pszTemplate = MAKEINTRESOURCE(IDD_OUTPUT);
- pspage[4].pszTemplate = MAKEINTRESOURCE(IDD_HTTP);
- pspage[0].pfnDlgProc = prefsProc;
- pspage[1].pfnDlgProc = id3Proc;
- pspage[2].pfnDlgProc = advancedTaggingProc;
- pspage[3].pfnDlgProc = outputProc;
- pspage[4].pfnDlgProc = httpProc;
- PropertySheet((PROPSHEETHEADER*)&pshead);
- config_write();
- extern char *g_fileassos;
- mod.FileExtensions = getfileextensions();
- }
- static INT_PTR CALLBACK id3Proc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_INITDIALOG:
- if (config_parse_id3v1) CheckDlgButton(hwndDlg, IDC_READ_ID3V1, BST_CHECKED);
- if (config_parse_id3v2) CheckDlgButton(hwndDlg, IDC_READ_ID3V2, BST_CHECKED);
- if (config_write_id3v1) CheckDlgButton(hwndDlg, IDC_WRITE_ID3V1, BST_CHECKED);
- if (config_write_id3v2) CheckDlgButton(hwndDlg, IDC_WRITE_ID3V2, BST_CHECKED);
- if (config_create_id3v1) CheckDlgButton(hwndDlg, IDC_CREATE_ID3V1, BST_CHECKED);
- if (config_create_id3v2) CheckDlgButton(hwndDlg, IDC_CREATE_ID3V2, BST_CHECKED);
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_LATIN_1));
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_SYSTEM_LANGUAGE));
- SendDlgItemMessage(hwndDlg,IDC_COMBO1,CB_SETCURSEL,(config_read_mode == READ_LOCAL),0);
- SendDlgItemMessage(hwndDlg,IDC_COMBO2,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_UNICODE_UTF_16));
- SendDlgItemMessage(hwndDlg,IDC_COMBO2,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_LATIN_1));
- SendDlgItemMessage(hwndDlg,IDC_COMBO2,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_SYSTEM_LANGUAGE));
- SendDlgItemMessage(hwndDlg,IDC_COMBO2,CB_SETCURSEL,config_write_mode,0);
- SetDlgItemTextA(hwndDlg,IDC_RATING_EMAIL,(config_rating_email[0] ? config_rating_email : "[email protected]\0"));
- return FALSE;
- case WM_NOTIFY:
- {
- LPNMHDR pnmh = (LPNMHDR) lParam;
- if (pnmh->code == PSN_SETACTIVE)
- {
- config_lp = 1;
- }
- if (pnmh->code == PSN_APPLY)
- {
- config_parse_id3v1 = IsDlgButtonChecked(hwndDlg, IDC_READ_ID3V1);
- config_parse_id3v2 = IsDlgButtonChecked(hwndDlg, IDC_READ_ID3V2);
- config_write_id3v1 = IsDlgButtonChecked(hwndDlg, IDC_WRITE_ID3V1);
- config_write_id3v2 = IsDlgButtonChecked(hwndDlg, IDC_WRITE_ID3V2);
- config_create_id3v1 = IsDlgButtonChecked(hwndDlg, IDC_CREATE_ID3V1);
- config_create_id3v2 = IsDlgButtonChecked(hwndDlg, IDC_CREATE_ID3V2);
- GetDlgItemTextA(hwndDlg,IDC_RATING_EMAIL,config_rating_email,sizeof(config_rating_email));
- if (!stricmp(config_rating_email, "[email protected]\0")) config_rating_email[0] = 0;
- return TRUE;
- }
- }
- return FALSE;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDC_COMBO1:
- if(HIWORD(wParam) == CBN_SELCHANGE)
- {
- int cur = (int)SendMessage((HWND)lParam,CB_GETCURSEL,0,0);
- if(!cur) config_read_mode = READ_LATIN;
- else if(cur == 1) config_read_mode = READ_LOCAL;
- }
- break;
- case IDC_COMBO2:
- if(HIWORD(wParam) == CBN_SELCHANGE)
- {
- int cur = (int)SendMessage((HWND)lParam,CB_GETCURSEL,0,0);
- if(!cur) config_write_mode = WRITE_UTF16;
- else if(cur == 1) config_write_mode = WRITE_LATIN;
- else if(cur == 2) config_write_mode = WRITE_LOCAL;
- }
- break;
- case IDC_RATING_EMAIL_RESET:
- if(HIWORD(wParam) == BN_CLICKED)
- {
- config_rating_email[0] = 0;
- SetDlgItemTextA(hwndDlg,IDC_RATING_EMAIL,(config_rating_email[0] ? config_rating_email : "[email protected]\0"));
- }
- }
- return FALSE;
- }
- return FALSE;
- }
- static INT_PTR CALLBACK advancedTaggingProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_INITDIALOG:
- if (config_parse_apev2) CheckDlgButton(hwndDlg, IDC_READ_APEV2, BST_CHECKED);
- if (config_write_apev2) CheckDlgButton(hwndDlg, IDC_WRITE_APEV2, BST_CHECKED);
- if (config_create_apev2) CheckDlgButton(hwndDlg, IDC_CREATE_APEV2, BST_CHECKED);
- if (config_parse_lyrics3) CheckDlgButton(hwndDlg, IDC_READ_LYRICS3, BST_CHECKED);
- SendDlgItemMessage(hwndDlg,IDC_APEV2_HEADER_OPTIONS,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_APEV2_RETAIN_HEADER));
- SendDlgItemMessage(hwndDlg,IDC_APEV2_HEADER_OPTIONS,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_APEV2_ADD_HEADER));
- SendDlgItemMessage(hwndDlg,IDC_APEV2_HEADER_OPTIONS,CB_ADDSTRING,0,(LPARAM)WASABI_API_LNGSTRINGW(IDS_APEV2_REMOVE_HEADER));
- SendDlgItemMessage(hwndDlg,IDC_APEV2_HEADER_OPTIONS,CB_SETCURSEL,config_apev2_header, 0);
- return FALSE;
- case WM_NOTIFY:
- {
- LPNMHDR pnmh = (LPNMHDR) lParam;
- if (pnmh->code == PSN_SETACTIVE)
- {
- config_lp = 2;
- }
- if (pnmh->code == PSN_APPLY)
- {
- config_parse_apev2 = IsDlgButtonChecked(hwndDlg, IDC_READ_APEV2);
- config_write_apev2 = IsDlgButtonChecked(hwndDlg, IDC_WRITE_APEV2);
- config_create_apev2 = IsDlgButtonChecked(hwndDlg, IDC_CREATE_APEV2);
- config_parse_lyrics3 = IsDlgButtonChecked(hwndDlg, IDC_READ_LYRICS3);
- return TRUE;
- }
- }
- return FALSE;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDC_APEV2_HEADER_OPTIONS:
- if(HIWORD(wParam) == CBN_SELCHANGE)
- {
- int cur = (int)SendMessage((HWND)lParam,CB_GETCURSEL,0,0);
- if(!cur) config_apev2_header = RETAIN_HEADER;
- else if(cur == 1) config_apev2_header = ADD_HEADER;
- else if(cur == 2) config_apev2_header = REMOVE_HEADER;
- }
- break;
- }
- return FALSE;
- }
- return FALSE;
- }
- static INT_PTR CALLBACK prefsProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_INITDIALOG:
- SetDlgItemTextA(hwndDlg, IDC_EDIT1, config_extlist);
- SendDlgItemMessage(hwndDlg, IDC_EDIT1, EM_LIMITTEXT, 128, 0);
- {
- wchar_t str[10] = L"";
- wsprintf(str, L"%d", config_max_bufsize_k);
- SetDlgItemText(hwndDlg, IDC_BUFMAX, str);
- SendMessage(GetDlgItem(hwndDlg, IDC_BUFMAX), EM_LIMITTEXT, 5, 0);
- }
- return FALSE;
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDC_BUTTON1:
- SetDlgItemText(hwndDlg, IDC_EDIT1, DEF_EXT_LISTW);
- break;
- }
- return FALSE;
- case WM_NOTIFY:
- {
- LPNMHDR pnmh = (LPNMHDR) lParam;
- if (pnmh->code == PSN_SETACTIVE)
- {
- config_lp = 0;
- }
- if (pnmh->code == PSN_APPLY)
- {
- config_max_bufsize_k = GetDlgItemInt(hwndDlg, IDC_BUFMAX, NULL, 0);
- GetDlgItemTextA(hwndDlg, IDC_EDIT1, config_extlist, 128);
- return TRUE;
- }
- }
- return FALSE;
- }
- return FALSE;
- }
- static INT_PTR CALLBACK outputProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_INITDIALOG:
- if (config_eqmode&1) CheckDlgButton(hwndDlg, IDC_RADIO2, 1);
- else CheckDlgButton(hwndDlg, IDC_RADIO1, 1);
- if (!(config_eqmode&4)) CheckDlgButton(hwndDlg, IDC_FASTL3EQ, 1);
- if (config_eqmode&8) CheckDlgButton(hwndDlg, IDC_FASTL12EQ, 1);
- if (config_miscopts&1) CheckDlgButton(hwndDlg, IDC_CHECK1, BST_CHECKED);
- if (config_miscopts&2) CheckDlgButton(hwndDlg, IDC_CHECK2, BST_CHECKED);
- if (config_downmix == 2) CheckDlgButton(hwndDlg, IDC_REVSTEREO, BST_CHECKED);
- if (config_downsample == 1)
- CheckDlgButton(hwndDlg, IDC_HALFRATE, BST_CHECKED);
- else if (config_downsample == 2)
- CheckDlgButton(hwndDlg, IDC_QRATE, BST_CHECKED);
- else
- CheckDlgButton(hwndDlg, IDC_FULLRATE, BST_CHECKED);
- return FALSE;
- case WM_NOTIFY:
- {
- LPNMHDR pnmh = (LPNMHDR) lParam;
- if (pnmh->code == PSN_SETACTIVE)
- {
- config_lp = 3;
- }
- if (pnmh->code == PSN_APPLY)
- {
- config_miscopts &= ~3;
- config_miscopts |= IsDlgButtonChecked(hwndDlg, IDC_CHECK1) ? 1 : 0;
- config_miscopts |= IsDlgButtonChecked(hwndDlg, IDC_CHECK2) ? 2 : 0;
- config_eqmode = IsDlgButtonChecked(hwndDlg, IDC_RADIO1) ? 0 : 1;
- config_eqmode |= IsDlgButtonChecked(hwndDlg, IDC_FASTL3EQ) ? 0 : 4;
- config_eqmode |= IsDlgButtonChecked(hwndDlg, IDC_FASTL12EQ) ? 8 : 0;
- config_downmix = IsDlgButtonChecked(hwndDlg, IDC_REVSTEREO) ? 2 : 0;
- config_downsample = IsDlgButtonChecked(hwndDlg, IDC_HALFRATE) ? 1 : 0;
- config_downsample = IsDlgButtonChecked(hwndDlg, IDC_QRATE) ? 2 : config_downsample;
- return TRUE;
- }
- }
- return FALSE;
- }
- return FALSE;
- }
- void SetHTTPSaveButtonText(HWND hwndDlg, char* path)
- {
- HWND control = GetDlgItem(hwndDlg, IDC_BUTTON2);
- HDC hdc = GetDC(control);
- RECT r = {0};
- char temp[MAX_PATH] = {0};
- lstrcpynA(temp, path, MAX_PATH);
- SelectObject(hdc, (HFONT)SendMessage(control, WM_GETFONT, 0, 0));
- GetClientRect(control, &r);
- r.left += 5;
- r.right -= 5;
- DrawTextA(hdc, temp, -1, &r, DT_PATH_ELLIPSIS|DT_WORD_ELLIPSIS|DT_MODIFYSTRING);
- SetWindowTextA(control, temp);
- ReleaseDC(control, hdc);
- }
- static INT_PTR CALLBACK httpProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- switch (uMsg)
- {
- case WM_COMMAND:
- switch (LOWORD(wParam))
- {
- case IDC_CHECK2:
- EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON2), IsDlgButtonChecked(hwndDlg, IDC_CHECK2));
- break;
- case IDC_BUTTON2:
- {
- BROWSEINFO bi = {0};
- wchar_t name[MAX_PATH] = {0};
- bi.hwndOwner = hwndDlg;
- bi.pszDisplayName = name;
- bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE;
- bi.lpfn = BrowseCallbackProc;
- LPITEMIDLIST idlist = SHBrowseForFolder(&bi);
- if (idlist)
- {
- SHGetPathFromIDListA(idlist, g_http_tmp);
- IMalloc *m = 0;
- SHGetMalloc(&m);
- m->Free(idlist);
- SetHTTPSaveButtonText(hwndDlg, g_http_tmp);
- }
- }
- return 0;
- }
- return 0;
- case WM_INITDIALOG:
- SetDlgItemInt(hwndDlg, IDC_BUFFERS_NUMBUFS, config_http_buffersize, 0);
- SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER), TBM_SETRANGEMAX, 0, 50);
- SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER), TBM_SETRANGEMIN, 0, 0);
- SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER), TBM_SETPOS, 1, config_http_prebuffer / 2);
- SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER2), TBM_SETRANGEMAX, 0, 50);
- SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER2), TBM_SETRANGEMIN, 0, 0);
- SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER2), TBM_SETPOS, 1, config_http_prebuffer_underrun / 2);
- CheckDlgButton(hwndDlg, IDC_CHECK1, allow_sctitles);
- CheckDlgButton(hwndDlg, IDC_SC_ARTWORK, allow_scartwork);
- CheckDlgButton(hwndDlg, IDC_CHECK3, sctitle_format);
- if (config_miscopts&16)
- {
- CheckDlgButton(hwndDlg, IDC_CHECK2, BST_CHECKED);
- }
- EnableWindow(GetDlgItem(hwndDlg, IDC_BUTTON2), (config_miscopts&16));
- SetHTTPSaveButtonText(hwndDlg, config_http_save_dir);
- lstrcpynA(g_http_tmp, config_http_save_dir, MAX_PATH);
- return FALSE;
- case WM_NOTIFY:
- {
- LPNMHDR pnmh = (LPNMHDR) lParam;
- if (pnmh->code == PSN_SETACTIVE)
- {
- config_lp = 4;
- }
- if (pnmh->code == PSN_APPLY)
- {
- sctitle_format = !!IsDlgButtonChecked(hwndDlg, IDC_CHECK3);
- allow_sctitles = !!IsDlgButtonChecked(hwndDlg, IDC_CHECK1);
- allow_scartwork = !!IsDlgButtonChecked(hwndDlg, IDC_SC_ARTWORK);
- {
- int s;
- int t;
- t = GetDlgItemInt(hwndDlg, IDC_BUFFERS_NUMBUFS, &s, 0);
- if (s) config_http_buffersize = t;
- if (config_http_buffersize < 16) config_http_buffersize = 16;
- }
- config_http_prebuffer = (int)SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER), TBM_GETPOS, 0, 0) * 2;
- config_http_prebuffer_underrun = (int)SendMessage(GetDlgItem(hwndDlg, IDC_PREBUFSLIDER2), TBM_GETPOS, 0, 0) * 2;
- lstrcpynA(config_http_save_dir, g_http_tmp, MAX_PATH);
- if (IsDlgButtonChecked(hwndDlg, IDC_CHECK2))
- {
- config_miscopts |= 16;
- }
- else
- {
- config_miscopts &= ~16;
- }
- return TRUE;
- }
- }
- return FALSE;
- }
- const int controls[] =
- {
- IDC_PREBUFSLIDER,
- IDC_PREBUFSLIDER2,
- };
- if (FALSE != WASABI_API_APP->DirectMouseWheel_ProcessDialogMessage(hwndDlg, uMsg, wParam, lParam, controls, ARRAYSIZE(controls)))
- {
- return TRUE;
- }
- return FALSE;
- }
- int DoAboutMessageBox(HWND parent, wchar_t* title, wchar_t* message)
- {
- MSGBOXPARAMSW msgbx = {sizeof(MSGBOXPARAMSW),0};
- msgbx.lpszText = message;
- msgbx.lpszCaption = title;
- msgbx.lpszIcon = MAKEINTRESOURCE(102);
- msgbx.hInstance = GetModuleHandle(0);
- msgbx.dwStyle = MB_USERICON;
- msgbx.hwndOwner = parent;
- return MessageBoxIndirectW(&msgbx);
- }
- void about(HWND hwndParent)
- {
- wchar_t message[1024] = {0}, text[1024] = {0};
- WASABI_API_LNGSTRINGW_BUF(IDS_NULLSOFT_MPEG_AUDIO_DECODER_OLD,text,1024);
- wsprintfW(message, WASABI_API_LNGSTRINGW(IDS_ABOUT_TEXT),
- mod.description, __DATE__);
- DoAboutMessageBox(hwndParent,text,message);
- }
|