123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322 |
- /** (c) Nullsoft, Inc. C O N F I D E N T I A L
- ** Filename:
- ** Project:
- ** Description:
- ** Author:
- ** Created:
- **/
- #include "Main.h"
- #include "menuv5.h"
- #include "resource.h"
- extern "C"
- {
- int g_main_created = 0;
- }
- static INT_PTR CALLBACK tmpProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
- {
- return 0;
- }
- BOOL InitApplication(HINSTANCE hInstance) // register Winamp's window class, returns TRUE on success
- {
- HICON hIcon;
- WNDCLASSW wc = {0, };
- wc.style = CS_DBLCLKS;
- wc.hInstance = hInstance;
- hIcon = wc.hIcon = LoadIconW(hInstance, MAKEINTRESOURCE(ICON_XP));
- wc.hCursor = NULL;
-
- //wc.lpfnWndProc = Main_WndProc;
- //wc.lpszClassName = L"Winamp";;
- //if (!RegisterClassW( &wc ))
- // return 0;
- wc.lpfnWndProc = VIS_WndProc;
- wc.lpszClassName = L"WinampVis";
- if (!RegisterClassW(&wc))
- return 0;
- wc.lpfnWndProc = video_WndProc;
- wc.lpszClassName = L"Winamp Video";
- if (!RegisterClassW(&wc))
- return 0;
- #ifdef WA2
- #ifndef NETSCAPE
- wc.style = CS_DBLCLKS;
- wc.lpfnWndProc = MB_WndProc;
- wc.lpszClassName = "Winamp MB";
- if (!RegisterClassW(&wc))
- return 0;
- #endif
- #endif
- /* now register unicode windows */
- WNDCLASSW wcW = {0, };
- wcW.style = CS_DBLCLKS;
- wcW.hInstance = hInstance;
- hIcon = wcW.hIcon = LoadIconW(hInstance, MAKEINTRESOURCE(ICON_XP));
- wcW.hCursor = NULL;
- wcW.lpfnWndProc = emb_WndProc;
- wcW.lpszClassName = L"Winamp Gen";
- if (!RegisterClassW(&wcW))
- return 0;
- wcW.style |= CS_VREDRAW | CS_HREDRAW;
- wcW.lpfnWndProc = EQ_WndProc;
- wcW.lpszClassName = L"Winamp EQ";
- if (!RegisterClassW(&wcW))
- return 0;
- wcW.lpfnWndProc = PE_WndProc;
- wcW.lpszClassName = L"Winamp PE";
- if (!RegisterClassW(&wcW))
- return 0;
- // make other people's dialogs show the winamp icon
- HWND h = CreateDialogW(hMainInstance, MAKEINTRESOURCE(IDD_OPENLOC), NULL, tmpProc);
- SetClassLongPtrW(h, GCLP_HICON, (LONG_PTR)hIcon);
- DestroyWindow(h);
- return 1;
- }
- void ConvertRatingMenuStar(HMENU menu, UINT menu_id)
- {
- MENUITEMINFOW mi = {sizeof(mi), MIIM_DATA | MIIM_TYPE, MFT_STRING};
- wchar_t rateBuf[32], *rateStr = rateBuf;
- mi.dwTypeData = rateBuf;
- mi.cch = 32;
- if(GetMenuItemInfoW(menu, menu_id, FALSE, &mi))
- {
- while(rateStr && *rateStr)
- {
- if(*rateStr == L'*') *rateStr = L'\u2605';
- rateStr=CharNextW(rateStr);
- }
- SetMenuItemInfoW(menu, menu_id, FALSE, &mi);
- }
- }
- void main_Create()
- {
- static int t = 0;
- g_main_created = 1;
- SetWindowTextW(hMainWindow, caption);
- hVisWindow = CreateWindowExW(0, L"WinampVis", L"", WS_CHILD, 0, 0, 0, 0,
- hMainWindow, NULL, hMainInstance, NULL);
- ShowWindow(hVisWindow, SW_SHOWNA);
- SetWindowLong(hMainWindow, GWLP_USERDATA, (config_keeponscreen&2) ? 0x49474541 : 0);
- hTooltipWindow = CreateWindowW(TOOLTIPS_CLASSW, (LPCWSTR)NULL, TTS_ALWAYSTIP | TTS_NOPREFIX,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- hMainWindow, NULL, hMainInstance, NULL);
- SendMessageW(hTooltipWindow, TTM_SETDELAYTIME, TTDT_INITIAL, 375);
- SendMessageW(hTooltipWindow, TTM_SETDELAYTIME, TTDT_AUTOPOP, 2000);
- SendMessageW(hTooltipWindow, TTM_SETDELAYTIME, TTDT_RESHOW, 1000);
- hEQTooltipWindow = CreateWindowW(TOOLTIPS_CLASSW, (LPCWSTR)NULL, TTS_ALWAYSTIP | TTS_NOPREFIX,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- hEQWindow, NULL, hMainInstance, NULL);
- SendMessageW(hEQTooltipWindow, TTM_SETDELAYTIME, TTDT_INITIAL, 125);
- SendMessageW(hEQTooltipWindow, TTM_SETDELAYTIME, TTDT_AUTOPOP, 2000);
- SendMessageW(hEQTooltipWindow, TTM_SETDELAYTIME, TTDT_RESHOW, 1000);
- hVideoTooltipWindow = CreateWindowW(TOOLTIPS_CLASSW, (LPCWSTR)NULL, TTS_ALWAYSTIP | TTS_NOPREFIX,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- hVideoWindow, NULL, hMainInstance, NULL);
- SendMessageW(hVideoTooltipWindow, TTM_SETDELAYTIME, TTDT_INITIAL, 125);
- SendMessageW(hVideoTooltipWindow, TTM_SETDELAYTIME, TTDT_AUTOPOP, 2000);
- SendMessageW(hVideoTooltipWindow, TTM_SETDELAYTIME, TTDT_RESHOW, 1000);
- hPLTooltipWindow = CreateWindowW(TOOLTIPS_CLASSW, (LPCWSTR)NULL, TTS_ALWAYSTIP | TTS_NOPREFIX,
- CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
- hPLWindow, NULL, hMainInstance, NULL);
- SendMessageW(hPLTooltipWindow, TTM_SETDELAYTIME, TTDT_INITIAL, 125);
- SendMessageW(hPLTooltipWindow, TTM_SETDELAYTIME, TTDT_AUTOPOP, 2000);
- SendMessageW(hPLTooltipWindow, TTM_SETDELAYTIME, TTDT_RESHOW, 1000);
- /*hPL2TooltipWindow = CreateWindowW(TOOLTIPS_CLASSW, (LPCWSTR)NULL, TTS_ALWAYSTIP | TTS_NOPREFIX,
- 0, 0, 0, 0, hPLWindow, NULL, hMainInstance, NULL);*/
- // TODO attempt to make this more like the listview timings
- /*SendMessageW(hPL2TooltipWindow, TTM_SETDELAYTIME, TTDT_INITIAL, 125);
- SendMessageW(hPL2TooltipWindow, TTM_SETDELAYTIME, TTDT_AUTOPOP, 2000);
- SendMessageW(hPL2TooltipWindow, TTM_SETDELAYTIME, TTDT_RESHOW, 1000);*/
- SetPriorityClass(GetCurrentProcess(), NORMAL_PRIORITY_CLASS);
- top_menu = LPLoadMenu(WINAMP_MAIN);
- #ifdef NETSCAPE
- EnableMenuItem(top_menu, WINAMP_OPTIONS_MINIBROWSER, MF_BYCOMMAND | MF_GRAYED);
- #endif
- main_menu = GetSubMenu(top_menu, 0);
- g_submenus_play = GetSubMenu(main_menu, 2);
- g_submenus_bookmarks1 = GetSubMenu(main_menu, 4);
- g_submenus_bookmarks2 = GetSubMenu(GetSubMenu(main_menu, 2), 4 + (g_audiocdletters ? g_audiocdletters + 1 : 0));
- g_submenus_skins1 = GetSubMenu(main_menu, MAINMENU_OPTIONS_BASE + 3);
- g_submenus_skins2 = GetSubMenu(GetSubMenu(main_menu, MAINMENU_OPTIONS_BASE), 1);
- g_submenus_vis = GetSubMenu(main_menu, MAINMENU_OPTIONS_BASE + 2);
- g_submenus_options = GetSubMenu(main_menu, MAINMENU_OPTIONS_BASE);
- if (config_wlz_menu)
- {
- MENUITEMINFOW mii = {sizeof(mii), MIIM_SUBMENU | MIIM_TYPE | MIIM_ID, MFT_STRING, };
- mii.hSubMenu = g_submenus_lang = CreatePopupMenu();
- mii.dwTypeData = getStringW(IDS_LANGUAGEPACKS_MENU, NULL, 0);
- mii.cch = (UINT)wcslen(mii.dwTypeData);
- g_submenus_lang_id = mii.wID = unique_loword_command++;
- InsertMenuItemW(main_menu, MAINMENU_OPTIONS_BASE+4, TRUE, &mii);
- }
- HMENU rating_menu = GetSubMenu(GetSubMenu(GetSubMenu(top_menu,2),5),10);
- ConvertRatingMenuStar(rating_menu, ID_PL_RATING5);
- ConvertRatingMenuStar(rating_menu, ID_PL_RATING4);
- ConvertRatingMenuStar(rating_menu, ID_PL_RATING3);
- ConvertRatingMenuStar(rating_menu, ID_PL_RATING2);
- ConvertRatingMenuStar(rating_menu, ID_PL_RATING1);
- rating_menu = GetSubMenu(GetSubMenu(GetSubMenu(top_menu,3),0),5);
- ConvertRatingMenuStar(rating_menu, ID_RATING5);
- ConvertRatingMenuStar(rating_menu, ID_RATING4);
- ConvertRatingMenuStar(rating_menu, ID_RATING3);
- ConvertRatingMenuStar(rating_menu, ID_RATING2);
- ConvertRatingMenuStar(rating_menu, ID_RATING1);
- Skin_Random();
- Skin_Load();
- g_skinloadedmanually = 0;
- set_aot(0);
- set_taskbar();
- CheckMenuItem(main_menu, WINAMP_OPTIONS_EASYMOVE, config_easymove ? MF_CHECKED : MF_UNCHECKED);
- CheckMenuItem(main_menu, WINAMP_FILE_SHUFFLE, config_shuffle ? MF_CHECKED : MF_UNCHECKED);
- CheckMenuItem(main_menu, WINAMP_FILE_REPEAT, config_repeat ? MF_CHECKED : MF_UNCHECKED);
- CheckMenuItem(GetSubMenu(GetSubMenu(top_menu, 3), 13), ID_VIDEOWND_VERTICALLYFLIP, (config_video_fliprgb ? MF_CHECKED: MF_UNCHECKED));
- if (!config_timeleftmode)
- CheckMenuItem(main_menu, WINAMP_OPTIONS_ELAPSED, MF_CHECKED);
- else
- CheckMenuItem(main_menu, WINAMP_OPTIONS_REMAINING, MF_CHECKED);
- draw_setnoupdate(1);
- draw_init();
- draw_shuffle(config_shuffle, 0);
- draw_eqplbut(config_eq_open, 0, config_pe_open, 0);
- draw_repeat(config_repeat, 0);
- draw_eject(0);
- draw_buttonbar( -1);
- draw_volumebar(config_volume, 0);
- draw_panbar(config_pan, 0);
- draw_songname(L"", &t, 0);
- draw_playicon(2);
- draw_clutterbar(0);
- draw_monostereo(0);
- draw_tbar(1, config_windowshade, 0);
- draw_setnoupdate(0);
- InsertMenuW(GetSystemMenu(hMainWindow, FALSE), 0, MF_POPUP | MF_BYPOSITION, (UINT_PTR) main_menu, L"Winamp");
- InsertMenu(GetSystemMenu(hMainWindow, FALSE), 1, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
- if (config_autoscrollname) SetTimer(hMainWindow, UPDATE_DISPLAY_TIMER + 1, 200, NULL);
- if (config_shuffle) PlayList_randpos( -BIGINT);
- dsp_init();
- newversioncheck();
- SetTimer(hMainWindow, STATS_TIMER, 1000, NULL);
- }
- BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) // create the main Winamp window
- {
- int sc = config_minimized; // config_minimized gets trashed in WM_CREATE
- deferring_show = 1;
- main_Create();
- out_setwnd();
-
- if (!CreateWindowExW(0, L"Winamp EQ", getStringW(IDS_EQCAPTION, NULL, 0), WS_OVERLAPPED,
- config_eq_wx, config_eq_wy, 0, 0, // WM_CREATE will size it
- hMainWindow, NULL, hInstance, NULL)) return FALSE;
-
- if (!CreateWindowExW(WS_EX_ACCEPTFILES, L"Winamp PE", getStringW(IDS_PECAPTION, NULL, 0), WS_OVERLAPPED,
- config_pe_wx, config_pe_wy, 0, 0, // WM_CREATE will size it
- hMainWindow, NULL, hInstance, NULL)) return FALSE;
- if (!video_Create())
- return FALSE;
- hPLVisWindow = CreateWindowExW(0, L"WinampVis", L"", WS_CHILD,
- 0, 0, 0, 0,
- hPLWindow, NULL, hMainInstance, NULL);
- ShowWindow(hPLVisWindow, SW_SHOWNA);
- eq_startuphack = pe_startuphack = 1;
- if (config_eq_open)
- {
- config_eq_open = 0;
- eq_dialog(hMainWindow,sc);
- }
- // MessageBox(NULL,"p4","0",0);
- if (config_pe_open)
- {
- config_pe_open = 0;
- pleditDlg(hMainWindow,sc);
- }
- if (config_video_open)
- {
- config_video_open = 0;
- ShowVideoWindow(sc);
- }
- // MessageBox(NULL,"p5","0",0);
- if (!config_mw_open)
- {
- MoveOffscreen(hMainWindow);
- Ipc_WindowToggle(IPC_CB_WND_MAIN, config_mw_open);
- //config_mw_open=1;
- //SendMessageW(hMainWindow,WM_COMMAND,WINAMP_MAIN_WINDOW,0);
- }
- else
- CheckMenuItem(main_menu, WINAMP_MAIN_WINDOW, MF_CHECKED);
- eq_startuphack = pe_startuphack = 0;
- /*
- Browser_init();
- if (config_si_open)
- OpenBrowser();
- */
- if (sc)
- g_showcode = SW_SHOWMINIMIZED;
- else if (nCmdShow == SW_SHOWMAXIMIZED || nCmdShow == SW_MAXIMIZE)
- g_showcode = SW_SHOWNORMAL;
- else
- g_showcode = nCmdShow;
- v5_top_menu = LPLoadMenu(WINAMP5_MENUBAR);
- if (config_wlz_menu)
- {
- MENUITEMINFOW mii = {sizeof(mii), MIIM_SUBMENU | MIIM_TYPE | MIIM_ID, MFT_STRING, };
- mii.hSubMenu = g_submenus_lang;
- mii.dwTypeData = getStringW(IDS_LANGUAGEPACKS_MENU, NULL, 0);
- mii.cch = (UINT)wcslen(mii.dwTypeData);
- mii.wID = g_submenus_lang_id;
- InsertMenuItemW(GetSubMenu(v5_top_menu, 2), 1, TRUE, &mii);
- g_mm_ffoptionsbase_adj++;
- }
- SetTimer(hMainWindow, 200, 5, NULL); // defer main window showing
- BeginFullscreenAppMonitor();
- return TRUE;
- }
|