123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- #include "main.h"
- #include "config.h"
- #include "resource.h"
- char config_extensions[1024] = {0};
- bool config_upsample8bit=false;
- static int ExtensionInList(HWND hwndDlg, int id, const char *string)
- {
- return (int)SendMessageA(GetDlgItem(hwndDlg, id), LB_FINDSTRINGEXACT, 0, (LPARAM)string);
- }
- void FillExtensionList( HWND hwndDlg )
- {
- int numTypes;
- sf_command( 0, SFC_GET_FORMAT_MAJOR_COUNT, &numTypes, sizeof( numTypes ) );
- SF_FORMAT_INFO info;
- for ( int i = 0; i < numTypes; i++ )
- {
- info.format = i;
- sf_command( 0, SFC_GET_FORMAT_MAJOR, &info, sizeof( info ) );
- if ( !_strcmpi( info.extension, "mpc" ) )
- continue;
- if ( ExtensionInList( hwndDlg, IDC_EXTENSION_LIST, info.extension ) == LB_ERR )
- {
- LRESULT index = SendMessageA( GetDlgItem( hwndDlg, IDC_EXTENSION_LIST ), LB_ADDSTRING, 0, (LPARAM)info.extension );
- if ( ExtensionExists( info.extension, config_extensions ) )
- SendMessage( GetDlgItem( hwndDlg, IDC_EXTENSION_LIST ), LB_SETSEL, TRUE, index );
- }
- }
- }
- void FillExtensionsEditControl( HWND hwndDlg )
- {
- char extensions[ 256 ] = "";
- char temp[ 20 ] = { 0 };
-
- char *s = config_extensions;
- while ( s && *s )
- {
- lstrcpynA( temp, s, 20 );
-
- char *scan = temp;
- while ( scan && *scan && *scan != ';' )
- scan = CharNextA( scan );
- *scan = 0;
- if ( ExtensionInList( hwndDlg, IDC_EXTENSION_LIST, temp ) == LB_ERR )
- {
- if ( *extensions )
- lstrcatA( extensions, ";" );
- lstrcatA( extensions, temp );
- }
- s += lstrlenA( temp );
- if ( *s == ';' )
- s = CharNextA( s );
- }
- SetDlgItemTextA( hwndDlg, IDC_ADDITIONAL_EXTENSIONS, extensions );
- }
- void Preferences_Init( HWND hwndDlg )
- {
- SendMessageA( GetDlgItem( hwndDlg, IDC_OUTPUTBITS ), CB_ADDSTRING, 0, (LPARAM)"16 bit" ); // TODO: string table
- SendMessageA( GetDlgItem( hwndDlg, IDC_OUTPUTBITS ), CB_ADDSTRING, 0, (LPARAM)"32 bit" ); // TODO: string table
- FillExtensionList( hwndDlg );
- FillExtensionsEditControl( hwndDlg );
- }
- void Preferences_OnOK( HWND hwndDlg )
- {
- config_extensions[ 0 ] = 0;
- LRESULT num = SendMessage( GetDlgItem( hwndDlg, IDC_EXTENSION_LIST ), LB_GETCOUNT, 0, 0 );
- for ( int i = 0; i < num; i++ )
- {
- if ( SendMessage( GetDlgItem( hwndDlg, IDC_EXTENSION_LIST ), LB_GETSEL, i, 0 ) > 0 )
- {
- char thisExtension[ 256 ] = { 0 };
- if ( config_extensions[ 0 ] )
- lstrcatA( config_extensions, ";" );
- SendMessageA( GetDlgItem( hwndDlg, IDC_EXTENSION_LIST ), LB_GETTEXT, i, (LPARAM)thisExtension );
- lstrcatA( config_extensions, thisExtension );
- }
- }
- char additional[ 1024 ] = { 0 };
- GetDlgItemTextA( hwndDlg, IDC_ADDITIONAL_EXTENSIONS, additional, 1024 );
- if ( additional[ 0 ] )
- {
- if ( config_extensions[ 0 ] )
- lstrcatA( config_extensions, ";" );
- lstrcatA( config_extensions, additional );
- }
- SetFileExtensions( config_extensions );
- }
- BOOL CALLBACK PreferencesDialogProc( HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam )
- {
- switch ( uMsg )
- {
- case WM_INITDIALOG:
- Preferences_Init( hwndDlg );
- break;
- case WM_COMMAND:
- switch ( LOWORD( wParam ) )
- {
- case IDOK:
- Preferences_OnOK( hwndDlg );
- EndDialog( hwndDlg, 0 );
- break;
- case IDCANCEL:
- EndDialog( hwndDlg, 0 );
- break;
- }
- }
- return 0;
- }
|