Пример #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
        public SpecialActionEditor(int deviceNum, ProfileList profileList,
                                   DS4Windows.SpecialAction specialAction = null)
        {
            InitializeComponent();

            triggerBoxes = new List <CheckBox>()
            {
                crossTrigCk, circleTrigCk, squareTrigCk, triangleTrigCk,
                optionsTrigCk, shareTrigCk, upTrigCk, downTrigCk,
                leftTrigCk, rightTrigCk, psTrigCk, l1TrigCk,
                r1TrigCk, l2TrigCk, r2TrigCk, l3TrigCk,
                r3TrigCk, leftTouchTrigCk, upperTouchTrigCk, multitouchTrigCk,
                rightTouchTrigCk, lsuTrigCk, lsdTrigCk, lslTrigCk,
                lsrTrigCk, rsuTrigCk, rsdTrigCk, rslTrigCk,
                rsrTrigCk, swipeUpTrigCk, swipeDownTrigCk, swipeLeftTrigCk,
                swipeRightTrigCk, tiltUpTrigCk, tiltDownTrigCk, tiltLeftTrigCk,
                tiltRightTrigCk,
            };

            unloadTriggerBoxes = new List <CheckBox>()
            {
                unloadCrossTrigCk, unloadCircleTrigCk, unloadSquareTrigCk, unloadTriangleTrigCk,
                unloadOptionsTrigCk, unloadShareTrigCk, unloadUpTrigCk, unloadDownTrigCk,
                unloadLeftTrigCk, unloadRightTrigCk, unloadPsTrigCk, unloadL1TrigCk,
                unloadR1TrigCk, unloadL2TrigCk, unloadR2TrigCk, unloadL3TrigCk,
                unloadR3TrigCk, unloadLeftTouchTrigCk, unloadUpperTouchTrigCk, unloadMultitouchTrigCk,
                unloadRightTouchTrigCk, unloadLsuTrigCk, unloadLsdTrigCk, unloadLslTrigCk,
                unloadLsrTrigCk, unloadRsuTrigCk, unloadRsdTrigCk, unloadRslTrigCk,
                unloadRsrTrigCk, unloadSwipeUpTrigCk, unloadSwipeDownTrigCk, unloadSwipeLeftTrigCk,
                unloadSwipeRightTrigCk, unloadTiltUpTrigCk, unloadTiltDownTrigCk, unloadTiltLeftTrigCk,
                unloadTiltRightTrigCk,
            };

            specialActVM      = new SpecialActEditorViewModel(deviceNum, specialAction);
            macroActVM        = new MacroViewModel();
            launchProgVM      = new LaunchProgramViewModel();
            loadProfileVM     = new LoadProfileViewModel(profileList);
            pressKeyVM        = new PressKeyViewModel();
            disconnectBtVM    = new DisconnectBTViewModel();
            checkBatteryVM    = new CheckBatteryViewModel();
            multiActButtonVM  = new MultiActButtonViewModel();
            saSteeringWheelVM = new SASteeringWheelViewModel();

            // Hide tab headers. Tab content will still be visible
            blankActTab.Visibility              = Visibility.Collapsed;
            macroActTab.Visibility              = Visibility.Collapsed;
            launchProgActTab.Visibility         = Visibility.Collapsed;
            loadProfileTab.Visibility           = Visibility.Collapsed;
            pressKetActTab.Visibility           = Visibility.Collapsed;
            disconnectBTTab.Visibility          = Visibility.Collapsed;
            checkBatteryTab.Visibility          = Visibility.Collapsed;
            multiActTab.Visibility              = Visibility.Collapsed;
            sixaxisWheelCalibrateTab.Visibility = Visibility.Collapsed;

            if (specialAction != null)
            {
                LoadAction(specialAction);
            }

            actionTypeTabControl.DataContext = specialActVM;
            actionTypeCombo.DataContext      = specialActVM;
            actionNameTxt.DataContext        = specialActVM;
            triggersListView.DataContext     = specialActVM;

            macroActTab.DataContext              = macroActVM;
            launchProgActTab.DataContext         = launchProgVM;
            loadProfileTab.DataContext           = loadProfileVM;
            pressKetActTab.DataContext           = pressKeyVM;
            disconnectBTTab.DataContext          = disconnectBtVM;
            checkBatteryTab.DataContext          = checkBatteryVM;
            multiActTab.DataContext              = multiActButtonVM;
            sixaxisWheelCalibrateTab.DataContext = saSteeringWheelVM;

            SetupLateEvents();
        }
Пример #3
0
        private void LoadAction(DS4Windows.SpecialAction specialAction)
        {
            specialActVM.LoadAction(specialAction);
            string[] tempTriggers = specialActVM.ControlTriggerList.ToArray();
            foreach (string control in tempTriggers)
            {
                bool found = false;
                foreach (CheckBox box in triggerBoxes)
                {
                    if (box.Tag.ToString() == control)
                    {
                        box.IsChecked = true;
                        found         = true;
                        break;
                    }
                }

                if (!found)
                {
                    specialActVM.ControlTriggerList.Remove(control);
                }
            }

            tempTriggers = specialActVM.ControlUnloadTriggerList.ToArray();
            foreach (string control in tempTriggers)
            {
                bool found = false;
                foreach (CheckBox box in unloadTriggerBoxes)
                {
                    if (box.Tag.ToString() == control)
                    {
                        box.IsChecked = true;
                        found         = true;
                        break;
                    }
                }

                if (!found)
                {
                    specialActVM.ControlUnloadTriggerList.Remove(control);
                }
            }

            switch (specialAction.typeID)
            {
            case DS4Windows.SpecialAction.ActionTypeId.Macro:
                macroActVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.Program:
                launchProgVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.Profile:
                loadProfileVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.Key:
                pressKeyVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.DisconnectBT:
                disconnectBtVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.BatteryCheck:
                checkBatteryVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.MultiAction:
                multiActButtonVM.LoadAction(specialAction);
                break;

            case DS4Windows.SpecialAction.ActionTypeId.SASteeringWheelEmulationCalibrate:
                saSteeringWheelVM.LoadAction(specialAction);
                break;
            }
        }
Пример #4
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);
            }
        }
 public abstract bool IsValid(DS4Windows.SpecialAction action);