Ejemplo n.º 1
0
// ================================= General ===================================
void Interface_t::EnterIdle() {
    State = stIdle;
    DisplayMinLvl();
    DisplayMaxLvl();
    SettingChanged();
    SettingsSave();
}
Ejemplo n.º 2
0
BOOL    CProfileAssociationPage::OnCommand(WORD wNotifyCode, WORD wid, HWND hwndControl) {

    switch (wid) {

        case AddButton :
            if  (wNotifyCode == BN_CLICKED) {
                CAddDeviceDialog cadd(this, m_hwnd);
                if (!cadd.bCanceled()) {
                    UpdateDeviceListBox();
                    EnableApplyButton();
                    SettingChanged(TRUE);
                }
                return  TRUE;
            }
            break;

        case RemoveButton :
            if  (wNotifyCode == BN_CLICKED) {
                LRESULT i = SendDlgItemMessage(m_hwnd, DeviceListControl,
                    LB_GETCURSEL, 0, 0);

                if  (i == -1)
                    return  TRUE;

                unsigned uItem = (unsigned)SendDlgItemMessage(m_hwnd, DeviceListControl,
                    LB_GETITEMDATA, i, 0);
                Dissociate(uItem);
                UpdateDeviceListBox();
                EnableApplyButton();
                SettingChanged(TRUE);
                return  TRUE;
            }
            break;

        case DeviceListControl :
            if (wNotifyCode == LBN_SELCHANGE) {
                EnableWindow(GetDlgItem(m_hwnd, RemoveButton),
                    -1 != SendDlgItemMessage(m_hwnd, DeviceListControl, LB_GETCURSEL, 0, 0));
                return  TRUE;
            }
            break;
    }

    return TRUE;
}
//----------------------------------------------------------------------------------------------
//	wmHScroll
//----------------------------------------------------------------------------------------------
VOID CActuatorPage::wmHScroll(
	 HWND	Control
	,WORD	Request )
{
	//	「左アクチュエータ」からのメッセージ
	if( Control == GetDlgItem( Wnd, IDC_LEFT_ACTUATOR_LEVEL ) )
	{
		//	現在の設定に反映する
		CurrentSetting->ActuatorLevel[INDEX_LEFT_ACTUATOR]
			= GetTrackBarPos( IDC_LEFT_ACTUATOR_LEVEL );
		//	設定の変更を通知する
		SettingChanged();
	}

	//	「右アクチュエータ」からのメッセージ
	if( Control == GetDlgItem( Wnd, IDC_RIGHT_ACTUATOR_LEVEL ) )
	{
		//	現在の設定に反映する
		CurrentSetting->ActuatorLevel[INDEX_RIGHT_ACTUATOR]
			= GetTrackBarPos( IDC_RIGHT_ACTUATOR_LEVEL );
		//	設定の変更を通知する
		SettingChanged();
	}

	//	「振動の有効範囲」からのメッセージ
	if( Control == GetDlgItem( Wnd, IDC_ACTUATOR_THRESHOLD ) )
	{
		//	現在の選択状態を退避する
		BOOL	PrevSelecting	= TrackBarSelecting;

		//	トラック バーの範囲選択を行う
		SelectTrackBar( Control, Request, &TrackBarSelecting );
		if( PrevSelecting != TrackBarSelecting )
		{
			//	現在の設定に反映する
			GetTrackBarRange(
				 IDC_ACTUATOR_THRESHOLD
				,&CurrentSetting->ActuatorMinThreshold
				,&CurrentSetting->ActuatorMaxThreshold );
			//	設定の変更を通知する
			SettingChanged();
		}
	}
}
//----------------------------------------------------------------------------------------------
//	wmHScroll
//----------------------------------------------------------------------------------------------
VOID CStickPage::wmHScroll(
	 HWND	Control
	,WORD	Request )
{
	//	「有効範囲」からのメッセージ
	if( Control == GetDlgItem( Wnd, IDC_STICK_THRESHOLD ) )
	{
		//	現在の選択状態を退避する
		BOOL	PrevSelecting	= TrackBarSelecting;

		//	トラック バーの範囲選択を行う
		SelectTrackBar( Control, Request, &TrackBarSelecting );
		if( PrevSelecting != TrackBarSelecting )
		{
			//	現在の設定に反映する
			GetTrackBarRange(
				 IDC_STICK_THRESHOLD
				,&CurrentSetting->StickMinThreshold[INDEX_LEFT_STICK]
				,&CurrentSetting->StickMaxThreshold[INDEX_LEFT_STICK] );
			CurrentSetting->StickMinThreshold[INDEX_RIGHT_STICK]
				= CurrentSetting->StickMinThreshold[INDEX_LEFT_STICK];
			CurrentSetting->StickMaxThreshold[INDEX_RIGHT_STICK]
				= CurrentSetting->StickMaxThreshold[INDEX_LEFT_STICK];
			//	設定の変更を通知する
			SettingChanged();
		}
	}

	//	「スティックの入力閾値」からのメッセージ
	if( Control == GetDlgItem( Wnd, IDC_STICK_HAT_SWITCH_THRESHOLD ) )
	{
		//	現在の設定に反映する
		CurrentSetting->StickHatSwitchThreshold[INDEX_LEFT_STICK]
			= GetTrackBarPos( IDC_STICK_HAT_SWITCH_THRESHOLD );
		CurrentSetting->StickHatSwitchThreshold[INDEX_RIGHT_STICK]
			= CurrentSetting->StickHatSwitchThreshold[INDEX_LEFT_STICK];
		//	設定の変更を通知する
		SettingChanged();
	}
}
Ejemplo n.º 5
0
BOOL    CProfileAssociationPage::OnInit() {

    m_pcpTarget = new CProfile(m_csProfile);

    if (m_pcpTarget) {

        // Set profile filename

        SetDlgItemText(m_hwnd, ProfileFilename, m_pcpTarget->GetName());

        // Update ICON to show installed/non-installed status.

        HICON hIcon = LoadIcon(CGlobals::Instance(),
                               MAKEINTRESOURCE(m_pcpTarget->IsInstalled() ? DefaultIcon : UninstalledIcon));

        if (hIcon) {
            SendDlgItemMessage(m_hwnd, StatusIcon, STM_SETICON, (WPARAM) hIcon, 0);
        }

        // Clean up add/delete list.

        m_cuaAdd.Empty();
        m_cuaDelete.Empty();

        // Build tentitive association list.

        ConstructAssociations();

        // And then, fill up device listbox

        UpdateDeviceListBox();

        // And set focus on AddButton.

        SetFocus(GetDlgItem(m_hwnd,AddButton));

        DisableApplyButton();
        SettingChanged(FALSE);

        return TRUE;

    } else {
        return FALSE;
    }
}
//----------------------------------------------------------------------------------------------
//	wmCommand
//----------------------------------------------------------------------------------------------
VOID CActuatorPage::wmCommand(
	 HWND	Control
	,WORD	ControlID
	,WORD	NotifyMessage )
{
	//	コントロールによって処理を振り分ける
	switch( ControlID )
	{
		case IDC_ACTUATOR:

			//	通知メッセージによって処理を振り分ける
			switch( NotifyMessage )
			{
				case BN_CLICKED:
					//	現在の設定に反映する
					CurrentSetting->Actuator	= GetCheckBoxState( ControlID );
					//	設定の変更を通知する
					SettingChanged();
					break;
			}
			break;
	}
}
//----------------------------------------------------------------------------------------------
//	wmCommand
//----------------------------------------------------------------------------------------------
VOID CStickPage::wmCommand(
	 HWND	Control
	,WORD	ControlID
	,WORD	NotifyMessage )
{
	//	コントロールによって処理を振り分ける
	switch( ControlID )
	{
		case IDC_LEFT_STICK_USAGE:

			//	通知メッセージによって処理を振り分ける
			switch( NotifyMessage )
			{
				case CBN_SELCHANGE:
					//	現在の設定に反映する
					CurrentSetting->StickUsage[INDEX_LEFT_STICK]
						= GetComboBoxIndex( ControlID );
					//	設定の変更を通知する
					SettingChanged();
					break;
			}
			break;

		case IDC_RIGHT_STICK_USAGE:

			//	通知メッセージによって処理を振り分ける
			switch( NotifyMessage )
			{
				case CBN_SELCHANGE:
					//	現在の設定に反映する
					CurrentSetting->StickUsage[INDEX_RIGHT_STICK]
						= GetComboBoxIndex( ControlID );
					//	設定の変更を通知する
					SettingChanged();
					break;
			}
			break;

		case IDC_LEFT_STICK_REVERSE_Y:

			//	通知メッセージによって処理を振り分ける
			switch( NotifyMessage )
			{
				case BN_CLICKED:
					//	現在の設定に反映する
					CurrentSetting->StickReverseY[INDEX_LEFT_STICK]
						= GetCheckBoxState( ControlID );
					//	設定の変更を通知する
					SettingChanged();
					break;
			}
			break;

		case IDC_RIGHT_STICK_REVERSE_Y:

			//	通知メッセージによって処理を振り分ける
			switch( NotifyMessage )
			{
				case BN_CLICKED:
					//	現在の設定に反映する
					CurrentSetting->StickReverseY[INDEX_RIGHT_STICK]
						= GetCheckBoxState( ControlID );
					//	設定の変更を通知する
					SettingChanged();
					break;
			}
			break;
	}
}
Ejemplo n.º 8
0
BOOL    CProfileAssociationPage::OnNotify(int idCtrl, LPNMHDR pnmh) {

    switch  (pnmh -> code) {

        case PSN_APPLY: {

            if (SettingChanged()) {

                //  Disable apply button, because current request are
                //  going to be "Applied".

                DisableApplyButton();

                //  We are going to update changed.

                SettingChanged(FALSE);

                //  Remove any associations we're removing

                while   (m_cuaDelete.Count()) {
                    m_pcpTarget->Dissociate(m_pcpTarget->DeviceName(m_cuaDelete[0]));
                    m_cuaDelete.Remove(0);
                }

                //  Add any associations we're adding

                while   (m_cuaAdd.Count()) {
                    m_pcpTarget->Associate(m_pcpTarget->DeviceName(m_cuaAdd[0]));
                    m_cuaAdd.Remove(0);
                }

                //  Re-create CProfile object.
                //
                //  !!! Need to be done some performance work here.

                delete m_pcpTarget;
                m_pcpTarget = new CProfile(m_csProfile);

                if (!m_pcpTarget)
                {
                    // BUGBUG proper error should happen.

                    return FALSE;
                }

                //  Re-Build tentitive association list.

                ConstructAssociations();

                UpdateDeviceListBox();

                //  check the install status to refect icon.

                HICON hIcon = LoadIcon(CGlobals::Instance(),
                                   MAKEINTRESOURCE(m_pcpTarget->IsInstalled() ? DefaultIcon : UninstalledIcon));

                if (hIcon) {
                    SendDlgItemMessage(m_hwnd, StatusIcon, STM_SETICON, (WPARAM) hIcon, 0);
                }
            }

            break;
        }
    }

    return TRUE;
}