Пример #1
0
	virtual void apply()
	{
		song_length = get_time_input();
		silence_seconds = get_silence_input();
		play_loops = get_loops_input();
		mute_mask = get_mute_input();
		input_asap::g_set_mute_mask(mute_mask);
		g_callback->on_state_changed();
	}
Пример #2
0
	virtual t_uint32 get_state()
	{
		if (song_length != get_time_input()
		 || silence_seconds != get_silence_input()
		 || play_loops != get_loops_input())
			return preferences_state::changed /* | preferences_state::needs_restart_playback */ | preferences_state::resettable;
		if (mute_mask != get_mute_input())
			return preferences_state::changed | preferences_state::resettable;
		return preferences_state::resettable;
	}
Пример #3
0
static INT_PTR CALLBACK settings_dialog_proc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
	int i;
	WORD wCtrl;
	switch (uMsg) {
	case WM_INITDIALOG:
		if (song_length <= 0) {
			CheckRadioButton(hDlg, IDC_UNLIMITED, IDC_LIMITED, IDC_UNLIMITED);
			SetDlgItemInt(hDlg, IDC_MINUTES, DEFAULT_SONG_LENGTH / 60, FALSE);
			SetDlgItemInt(hDlg, IDC_SECONDS, DEFAULT_SONG_LENGTH % 60, FALSE);
			enable_time_input(hDlg, FALSE);
		}
		else {
			CheckRadioButton(hDlg, IDC_UNLIMITED, IDC_LIMITED, IDC_LIMITED);
			SetDlgItemInt(hDlg, IDC_MINUTES, (UINT) song_length / 60, FALSE);
			SetDlgItemInt(hDlg, IDC_SECONDS, (UINT) song_length % 60, FALSE);
			enable_time_input(hDlg, TRUE);
		}
		if (silence_seconds <= 0) {
			CheckDlgButton(hDlg, IDC_SILENCE, BST_UNCHECKED);
			SetDlgItemInt(hDlg, IDC_SILSECONDS, DEFAULT_SILENCE_SECONDS, FALSE);
			EnableWindow(GetDlgItem(hDlg, IDC_SILSECONDS), FALSE);
		}
		else {
			CheckDlgButton(hDlg, IDC_SILENCE, BST_CHECKED);
			SetDlgItemInt(hDlg, IDC_SILSECONDS, (UINT) silence_seconds, FALSE);
			EnableWindow(GetDlgItem(hDlg, IDC_SILSECONDS), TRUE);
		}
		CheckRadioButton(hDlg, IDC_LOOPS, IDC_NOLOOPS, play_loops ? IDC_LOOPS : IDC_NOLOOPS);
		for (i = 0; i < 8; i++)
			CheckDlgButton(hDlg, IDC_MUTE1 + i, ((mute_mask >> i) & 1) != 0 ? BST_CHECKED : BST_UNCHECKED);
		return TRUE;
	case WM_COMMAND:
		wCtrl = LOWORD(wParam);
		BOOL enabled;
		switch (wCtrl) {
		case IDC_UNLIMITED:
		case IDC_LIMITED:
			enabled = (wCtrl == IDC_LIMITED);
			enable_time_input(hDlg, enabled);
			if (!enabled)
				song_length = -1;
			else {
				set_focus_and_select(hDlg, IDC_MINUTES);
				get_time_input(hDlg);
			}
			return TRUE;
		case IDC_SILENCE:
			enabled = (IsDlgButtonChecked(hDlg, IDC_SILENCE) == BST_CHECKED);
			EnableWindow(GetDlgItem(hDlg, IDC_SILSECONDS), enabled);
			if (!enabled)
				silence_seconds = -1;
			else {
				set_focus_and_select(hDlg, IDC_SILSECONDS);
				get_silence_input(hDlg);
			}
			return TRUE;
		case IDC_MINUTES:
		case IDC_SECONDS:
			if (HIWORD(wParam) == EN_CHANGE && IsDlgButtonChecked(hDlg, IDC_LIMITED) == BST_CHECKED)
				get_time_input(hDlg);
			return TRUE;
		case IDC_SILSECONDS:
			if (HIWORD(wParam) == EN_CHANGE && IsDlgButtonChecked(hDlg, IDC_SILENCE) == BST_CHECKED)
				get_silence_input(hDlg);
			return TRUE;
		case IDC_LOOPS:
		case IDC_NOLOOPS:
			play_loops = (IsDlgButtonChecked(hDlg, IDC_LOOPS) == BST_CHECKED);
			return TRUE;
		case IDC_MUTE1:
		case IDC_MUTE1 + 1:
		case IDC_MUTE1 + 2:
		case IDC_MUTE1 + 3:
		case IDC_MUTE1 + 4:
		case IDC_MUTE1 + 5:
		case IDC_MUTE1 + 6:
		case IDC_MUTE1 + 7:
			i = 1 << (wCtrl - IDC_MUTE1);
			if (IsDlgButtonChecked(hDlg, wCtrl) == BST_CHECKED)
				mute_mask = mute_mask | i;
			else
				mute_mask = mute_mask & ~i;
			input_asap::g_set_mute_mask(mute_mask);
			return TRUE;
		default:
			break;
		}
	default:
		break;
	}
	return FALSE;
}