| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 | #include "../Agave/Language/api_language.h"#include "config.h"#include "preferences.h"#include "../Winamp/wa_ipc.h"#include <windows.h>#include <assert.h>#include "resource.h"#include "link_control.h"#include "../nu/ComboBox.h"#include "../nu/Slider.h"#include <strsafe.h>extern HWND winampwnd;INT_PTR CALLBACK Preferences_MP4_DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam){	switch(msg)	{	case WM_INITDIALOG:		{			AACConfigurationFile *cfg = (AACConfigurationFile *)lParam;			cfg->changing = false;			SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)cfg);				ComboBox mode_list(hwnd, IDC_MODE);				mode_list.AddString(WASABI_API_LNGSTRINGW(IDS_VBR), AAC_MODE_VBR); assert(AAC_MODE_VBR == 0);				mode_list.AddString(WASABI_API_LNGSTRINGW(IDS_CBR), AAC_MODE_CBR); assert(AAC_MODE_CBR == 1);				mode_list.SelectItem(cfg->config.mode);			ComboBox profile_list(hwnd, IDC_PROFILE);			profile_list.AddString(WASABI_API_LNGSTRINGW(IDS_AUTOMATIC), AAC_PROFILE_AUTOMATIC); assert(AAC_PROFILE_AUTOMATIC == 0);			profile_list.AddString(L"AAC LC", AAC_PROFILE_LC); assert(AAC_PROFILE_LC == 1);			profile_list.AddString(L"HE-AAC", AAC_PROFILE_HE); assert(AAC_PROFILE_HE == 2);			profile_list.AddString(L"HE-AAC v2", AAC_PROFILE_HE_V2); assert(AAC_PROFILE_HE_V2 == 3);			UpdateUI(hwnd, cfg);			UpdateInfo(hwnd, &cfg->config);			link_startsubclass(hwnd, IDC_URL);			link_startsubclass(hwnd, IDC_LOGO);			link_startsubclass(hwnd, IDC_HELPLINK);			char temp[128] = {0};			if (Preferences_GetEncoderVersion(temp, sizeof(temp)/sizeof(*temp)) == 0)			{				SetDlgItemTextA(hwnd, IDC_VERSION, temp);			}			// this will make sure that we've got the aacplus logo shown even when using a localised version			SendDlgItemMessage(hwnd,IDC_LOGO,STM_SETIMAGE,IMAGE_BITMAP, (LPARAM)LoadImage(WASABI_API_ORIG_HINST?WASABI_API_ORIG_HINST:enc_fhg_HINST,MAKEINTRESOURCE(IDB_FHGLOGO),IMAGE_BITMAP,0,0,LR_SHARED));		}		break;	case WM_COMMAND:		switch (LOWORD(wParam))		{		case IDC_HELPLINK:			SendMessage(winampwnd, WM_WA_IPC, (WPARAM)"http://help.winamp.com/", IPC_OPEN_URL);			break;		case IDC_LOGO:		case IDC_URL:			SendMessage(winampwnd, WM_WA_IPC, (WPARAM)"http://www.iis.fraunhofer.de/en/bf/amm", IPC_OPEN_URL);			break;		case IDC_MODE:			if (HIWORD(wParam) ==  CBN_SELCHANGE)			{				AACConfigurationFile *cfg = (AACConfigurationFile *)GetWindowLongPtr(hwnd, GWLP_USERDATA);				cfg->config.mode = (unsigned int)ComboBox(hwnd, IDC_MODE).GetSelection();				UpdateUI(hwnd, cfg);				UpdateInfo(hwnd, &cfg->config);				AACConfig_Save(cfg);			}			break;		case IDC_EDIT_PRESET:			if (HIWORD(wParam) == EN_CHANGE)			{				AACConfigurationFile *cfg = (AACConfigurationFile *)GetWindowLongPtr(hwnd, GWLP_USERDATA);				if (!cfg->changing)				{					BOOL s=0;					unsigned int t=GetDlgItemInt(hwnd,IDC_EDIT_PRESET,&s,0);					if (s)					{						if (cfg->config.mode == AAC_MODE_VBR)						{							cfg->config.preset= t;						}						else						{							cfg->config.bitrate = t;						}						UpdateUI(hwnd, cfg);						UpdateInfo(hwnd, &cfg->config);						AACConfig_Save(cfg);					}				}			}			break;		case IDC_PROFILE:			if (HIWORD(wParam) ==  CBN_SELCHANGE)			{				AACConfigurationFile *cfg = (AACConfigurationFile *)GetWindowLongPtr(hwnd, GWLP_USERDATA);				cfg->config.profile = (unsigned int)ComboBox(hwnd, IDC_PROFILE).GetSelection();				UpdateUI(hwnd, cfg);				UpdateInfo(hwnd, &cfg->config);				AACConfig_Save(cfg);			}			break;		}		break;	case WM_HSCROLL:		if (GetDlgItem(hwnd, IDC_SLIDER_PRESET) == (HWND)lParam)		{			wchar_t temp[128] = {0};			AACConfigurationFile *cfg = (AACConfigurationFile *)GetWindowLongPtr(hwnd, GWLP_USERDATA);			if (cfg->config.mode == AAC_MODE_VBR)			{				cfg->config.preset = (unsigned int)SendMessage(GetDlgItem(hwnd,IDC_SLIDER_PRESET),TBM_GETPOS,0,0);				StringCbPrintf(temp, sizeof(temp), L"%u", cfg->config.preset);				SetDlgItemText(hwnd, IDC_EDIT_PRESET, temp);				UpdateInfo(hwnd, &cfg->config);				AACConfig_Save(cfg);			}			else			{				cfg->config.bitrate = GetSliderBitrate(hwnd);				StringCbPrintf(temp, sizeof(temp), L"%u", cfg->config.bitrate);				SetDlgItemText(hwnd, IDC_EDIT_PRESET, temp);				UpdateInfo(hwnd, &cfg->config);				AACConfig_Save(cfg);			}		}		break;	}	link_handledraw(hwnd,msg,wParam,lParam);	const int controls[] = 	{		IDC_SLIDER_PRESET,	};	if (FALSE != WASABI_API_APP->DirectMouseWheel_ProcessDialogMessage(hwnd, msg, wParam, lParam, controls, ARRAYSIZE(controls)))	{		return 1;	}	return 0;}
 |