예제 #1
0
        private bool CheckActionValid(DS4Windows.SpecialAction action,
                                      DS4Windows.SpecialAction.ActionTypeId typeId)
        {
            bool valid = false;

            switch (typeId)
            {
            case DS4Windows.SpecialAction.ActionTypeId.Macro:
                valid = macroActVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.Program:
                valid = launchProgVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.Profile:
                valid = loadProfileVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.Key:
                valid = pressKeyVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.DisconnectBT:
                valid = disconnectBtVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.BatteryCheck:
                valid = checkBatteryVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.MultiAction:
                valid = multiActButtonVM.IsValid(action);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.SASteeringWheelEmulationCalibrate:
                valid = saSteeringWheelVM.IsValid(action);
                break;
            }

            return(valid);
        }
예제 #2
0
        private void SaveBtn_Click(object sender, RoutedEventArgs e)
        {
            DS4Windows.SpecialAction.ActionTypeId typeId = specialActVM.TypeAssoc[specialActVM.ActionTypeIndex];
            DS4Windows.SpecialAction tempAct             = new DS4Windows.SpecialAction("null", "null", "null", "null");
            bool valid = specialActVM.IsValid(tempAct);

            if (valid)
            {
                specialActVM.SetAction(tempAct);
                valid = CheckActionValid(tempAct, typeId);
            }
            else if (specialActVM.ExistingName)
            {
                MessageBox.Show(Properties.Resources.ActionExists);
            }

            if (valid)
            {
                bool editMode = specialActVM.EditMode;
                if (editMode && specialActVM.SavedAction.name != specialActVM.ActionName)
                {
                    DS4Windows.Global.RemoveAction(specialActVM.SavedAction.name);
                    editMode = false;
                }

                switch (typeId)
                {
                case DS4Windows.SpecialAction.ActionTypeId.Macro:
                    macroActVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.Program:
                    launchProgVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.Profile:
                    loadProfileVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.Key:
                    pressKeyVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.DisconnectBT:
                    disconnectBtVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.BatteryCheck:
                    checkBatteryVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.MultiAction:
                    multiActButtonVM.SaveAction(tempAct, editMode);
                    break;

                case DS4Windows.SpecialAction.ActionTypeId.SASteeringWheelEmulationCalibrate:
                    saSteeringWheelVM.SaveAction(tempAct, editMode);
                    break;
                }

                Saved?.Invoke(this, tempAct.name);
            }
        }