123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- /** (c) Nullsoft, Inc. C O N F I D E N T I A L
- ** Filename:
- ** Project:
- ** Description:
- ** Author:
- ** Created:
- **/
- #include <windowsx.h>
- #include "Main.h"
- #include "resource.h"
- #include "Options.h"
- #include "SkinCOM.h"
- #include "ExternalCOM.h"
- #include "../nu/combobox.h"
- #include "../nu/ns_wc.h"
- #include <malloc.h>
- static int CALLBACK EnumFontsProc( LOGFONT *lplf, TEXTMETRIC *lptm, DWORD dwType, LPARAM lpData )
- {
- ComboBox_AddString( (HWND)lpData, lplf->lfFaceName );
- return TRUE;
- }
- void UpdatePlaylistFontSizeText( void )
- {
- HWND plpref = GetDlgItem( prefs_hwnd, IDC_RECT );
- plpref = GetWindow( plpref, GW_HWNDNEXT );
- if ( IsWindow( plpref ) )
- SetDlgItemInt( plpref, IDC_PLFONTSIZE, config_pe_fontsize, 0 );
- }
- void UpdateManualAdvanceState( void )
- {
- HWND plpref = GetDlgItem( prefs_hwnd, IDC_RECT );
- plpref = GetWindow( plpref, GW_HWNDNEXT );
- if ( IsWindow( plpref ) )
- CheckDlgButton( plpref, IDC_MANUALPLAYLISTADVANCE, config_pladv ? 0 : 1 );
- }
- // shuffle tab procedure
- INT_PTR CALLBACK PlaybackOptionsProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- static int pl_prefs_init;
- hi helpinfo[] = {
- {IDC_PREFS_SHUFFLE_MORPH_RATE,IDS_P_O_SMS},
- {IDC_DEFEXT,IDS_P_O_DEFEXT},
- {IDC_RFL,IDS_P_O_RFL},
- {IDC_MANUALPLAYLISTADVANCE,IDS_P_O_MPA},
- {IDC_PLNUMS,IDS_P_DISP_TNUMS},
- {IDC_PLFONTSIZE,IDS_P_DISP_PLFONT},
- };
- DO_HELP();
- if ( uMsg == WM_INITDIALOG )
- {
- pl_prefs_init = 0;
- SetDlgItemTextA( hwndDlg, IDC_DEFEXT, config_defext );
- SendDlgItemMessage( hwndDlg, IDC_DEFEXT, EM_LIMITTEXT, sizeof( config_defext ), 0 );
- CheckDlgButton( hwndDlg, IDC_RFL, ( config_rofiob & 1 ) ? 1 : 0 );
- CheckDlgButton( hwndDlg, IDC_MANUALPLAYLISTADVANCE, config_pladv ? 0 : 1 );
- SendMessageW( GetDlgItem( hwndDlg, IDC_PREFS_SHUFFLE_MORPH_RATE ), TBM_SETRANGEMAX, 0, 50 );
- SendMessageW( GetDlgItem( hwndDlg, IDC_PREFS_SHUFFLE_MORPH_RATE ), TBM_SETRANGEMIN, 0, 0 );
- SendMessageW( GetDlgItem( hwndDlg, IDC_PREFS_SHUFFLE_MORPH_RATE ), TBM_SETPOS, 1, config_shuffle_morph_rate );
- CheckDlgButton( hwndDlg, IDC_PLNUMS, config_shownumsinpl ? 1 : 0 );
- CheckDlgButton( hwndDlg, IDC_PLZEROPAD, config_zeropadplnum ? 1 : 0 );
- EnableWindow( GetDlgItem( hwndDlg, IDC_PLZEROPAD ), config_shownumsinpl );
- SendDlgItemMessage( hwndDlg, IDC_SPIN1, UDM_SETRANGE, 0, MAKELONG( 999, 1 ) );
- SetDlgItemInt( hwndDlg, IDC_PLFONTSIZE, config_pe_fontsize, 0 );
- SendDlgItemMessageW( hwndDlg, IDC_PLDIRECTION, CB_ADDSTRING, 0, (LPARAM)getStringW( IDS_P_PLDIRECTION_AUTO, NULL, 0 ) );
- SendDlgItemMessageW( hwndDlg, IDC_PLDIRECTION, CB_ADDSTRING, 0, (LPARAM)getStringW( IDS_P_PLDIRECTION_L2R, NULL, 0 ) );
- SendDlgItemMessageW( hwndDlg, IDC_PLDIRECTION, CB_ADDSTRING, 0, (LPARAM)getStringW( IDS_P_PLDIRECTION_R2L, NULL, 0 ) );
- SendDlgItemMessage( hwndDlg, IDC_PLDIRECTION, CB_SETCURSEL, config_pe_direction, 0 );
- HWND fontcombo = GetDlgItem( hwndDlg, IDC_CUSTOMFONT );
- HDC dc = GetDC( NULL );
- EnumFonts( dc, NULL, (FONTENUMPROC)EnumFontsProc, (LPARAM)fontcombo );
- ReleaseDC( NULL, dc );
- // select the font, but fall back to Arial if it doesn't exist
- ComboBox combobox( fontcombo );
- if ( combobox.SelectString( playlist_custom_fontW ) == CB_ERR )
- {
- StringCbCopyW( playlist_custom_fontW, sizeof( playlist_custom_fontW ), FALLBACK_FONT );
- combobox.SelectString( playlist_custom_fontW );
- }
- CheckDlgButton( hwndDlg, IDC_NOCUSTOMFONT, config_custom_plfont ? 0 : 1 );
- if ( !config_custom_plfont )
- {
- EnableWindow( GetDlgItem( hwndDlg, IDC_CUSTOMFONT ), FALSE );
- EnableWindow( GetDlgItem( hwndDlg, IDC_STATIC_CUSTOMFONT ), FALSE );
- }
- //WI(plscrollsize);
- //WI(plmw2xscroll);
- SetDlgItemInt( hwndDlg, IDC_PLSCROLL, config_plscrollsize, 0 );
- SendDlgItemMessage( hwndDlg, IDC_SPIN3, UDM_SETRANGE, 0, MAKELONG( 100, 1 ) );
- CheckDlgButton( hwndDlg, IDC_MOUSE_SCROLL_DOUBLE_LINES, config_plmw2xscroll ? 1 : 0 );
- pl_prefs_init = 1;
- }
- else if ( uMsg == WM_COMMAND )
- switch ( LOWORD( wParam ) )
- {
- case IDC_PLDIRECTION:
- if ( HIWORD( wParam ) == CBN_SELCHANGE )
- {
- int l = SendDlgItemMessage( hwndDlg, IDC_PLDIRECTION, CB_GETCURSEL, 0, 0 );
- if ( l != CB_ERR )
- config_pe_direction = l;
- InvalidateRect( hPLWindow, NULL, FALSE );
- }
- return 0;
- case IDC_NOCUSTOMFONT:
- config_custom_plfont = !IsDlgButtonChecked( hwndDlg, IDC_NOCUSTOMFONT );
- EnableWindow( GetDlgItem( hwndDlg, IDC_CUSTOMFONT ), IsDlgButtonChecked( hwndDlg, IDC_NOCUSTOMFONT ) ? 0 : 1 );
- EnableWindow( GetDlgItem( hwndDlg, IDC_STATIC_CUSTOMFONT ), IsDlgButtonChecked( hwndDlg, IDC_NOCUSTOMFONT ) ? 0 : 1 );
- draw_reinit_plfont( 1 );
- InvalidateRect( hPLWindow, NULL, FALSE );
- JSAPI1_SkinChanged();
- break;
- case IDC_CUSTOMFONT:
- if ( HIWORD( wParam ) == CBN_SELCHANGE )
- {
- HWND fontcombo;
- int idx, len;
- wchar_t *t;
- fontcombo = GetDlgItem( hwndDlg, IDC_CUSTOMFONT );
- ComboBox combobox( fontcombo );
- idx = combobox.GetSelection();
- len = combobox.GetTextLen( idx );
- t = (wchar_t *)_malloca( ( len + 1 ) * sizeof( wchar_t ) );
- combobox.GetText( idx, t );
- t[ len ] = 0;
- StringCbCopyW( playlist_custom_fontW, sizeof( playlist_custom_fontW ), t );
- WideCharToMultiByteSZ( CP_ACP, 0, playlist_custom_fontW, -1, playlist_custom_font, 128, 0, 0 );
- _freea( t );
- draw_reinit_plfont( 1 );
- InvalidateRect( hPLWindow, NULL, FALSE );
- JSAPI1_SkinChanged();
- }
- break;
- case IDC_PLNUMS:
- {
- int t = config_shownumsinpl;
- config_shownumsinpl = IsDlgButtonChecked( hwndDlg, IDC_PLNUMS ) ? 1 : 0;
- if ( config_shownumsinpl != t )
- {
- _w_i( "shownumsinpl", config_shownumsinpl );
- draw_reinit_plfont( 1 );
- if ( config_pe_open )
- InvalidateRect( hPLWindow, NULL, FALSE );
- }
- EnableWindow( GetDlgItem( hwndDlg, IDC_PLZEROPAD ), config_shownumsinpl );
- }
- break;
- case IDC_PLZEROPAD:
- {
- config_zeropadplnum = IsDlgButtonChecked( hwndDlg, IDC_PLZEROPAD ) ? 1 : 0;
- InvalidateRect( hPLWindow, NULL, FALSE );
- }
- break;
- case IDC_PLFONTSIZE:
- if ( HIWORD( wParam ) == EN_CHANGE && pl_prefs_init )
- {
- int s = 0, t = GetDlgItemInt( hwndDlg, IDC_PLFONTSIZE, &s, 0 );
- if ( t < 2 )
- t = 11;
- if ( t != config_pe_fontsize && s )
- {
- config_pe_fontsize = t;
- if ( hMainWindow )
- {
- draw_reinit_plfont( 1 );
- InvalidateRect( hPLWindow, NULL, FALSE );
- }
- JSAPI1_SkinChanged();
- }
- }
- break;
- case IDC_DEFEXT:
- if ( HIWORD( wParam ) == EN_CHANGE )
- {
- GetWindowTextA( GetDlgItem( hwndDlg, IDC_DEFEXT ), config_defext, sizeof( config_defext ) );
- }
- break;
- case IDC_RFL:
- config_rofiob &= ~1;
- config_rofiob |= IsDlgButtonChecked( hwndDlg, IDC_RFL ) ? 1 : 0;
- break;
- case IDC_MANUALPLAYLISTADVANCE:
- {
- int manadv = IsDlgButtonChecked( hwndDlg, IDC_MANUALPLAYLISTADVANCE ) ? 0 : 1;
- if ( manadv != config_pladv )
- SendMessageW( hMainWindow, WM_COMMAND, WINAMP_FILE_MANUALPLADVANCE, 0 );
- break;
- }
- case IDC_MOUSE_SCROLL_DOUBLE_LINES:
- config_plmw2xscroll = IsDlgButtonChecked( hwndDlg, IDC_MOUSE_SCROLL_DOUBLE_LINES ) ? 1 : 0;
- break;
- case IDC_PLSCROLL:
- if ( HIWORD( wParam ) == EN_CHANGE && pl_prefs_init )
- {
- int s = 0, t = GetDlgItemInt( hwndDlg, IDC_PLSCROLL, &s, 0 );
- if ( t < 1 )
- t = 1;
- if ( t > 16 )
- t = 16;
- if ( t != config_plscrollsize && s )
- config_plscrollsize = t;
- }
- break;
- case IDC_SHUFFLE_HELP:
- {
- wchar_t title[ 64 ] = { 0 };
- MessageBoxW( hwndDlg, getStringW( IDS_SHUFFLE_MORPH_INFO, NULL, 0 ),
- getStringW( IDS_SHUFFLE_MORPH_RATE, title, 64 ), 0 );
- }
- break;
- }
- else if ( uMsg == WM_HSCROLL )
- {
- HWND swnd = (HWND)lParam;
- if ( swnd == GetDlgItem( hwndDlg, IDC_PREFS_SHUFFLE_MORPH_RATE ) )
- {
- config_shuffle_morph_rate = (unsigned char)SendMessageW( GetDlgItem( hwndDlg, IDC_PREFS_SHUFFLE_MORPH_RATE ), TBM_GETPOS, 0, 0 );
- }
- }
- else if ( uMsg == WM_DESTROY )
- {
- pl_prefs_init = 0;
- }
- const int controls[] =
- {
- IDC_PREFS_SHUFFLE_MORPH_RATE,
- };
- if ( FALSE != DirectMouseWheel_ProcessDialogMessage( hwndDlg, uMsg, wParam, lParam, controls, ARRAYSIZE( controls ) ) )
- return TRUE;
- return FALSE;
- } //shuffle
|