Example #1
0
        /// <summary>
        /// Return a list of all currently added devices that are not assigned to any user.
        /// </summary>
        /// <returns>A (possibly empty) list of devices that are currently not assigned to a user.</returns>
        /// <seealso cref="InputSystem.devices"/>
        /// <seealso cref="InputUser.AssignInputDevice"/>
        /// <remarks>
        /// The resulting list uses <see cref="Allocator.Temp"> temporary, unmanaged memory</see>. If not disposed of
        /// explicitly, the list will automatically be deallocated at the end of the frame and will become unusable.
        /// </remarks>
        public static InputControlList <InputDevice> GetUnassignedInputDevices()
        {
            var unusedDevices = new InputControlList <InputDevice>(Allocator.Temp);

            foreach (var device in InputSystem.devices)
            {
                // If it's in s_AllDevices, there is *some* user that is using the device.
                // We don't care which one it is here.
                if (ArrayHelpers.ContainsReferenceTo(s_AllDevices, s_AllDeviceCount, device))
                {
                    continue;
                }

                unusedDevices.Add(device);
            }

            return(unusedDevices);
        }
    public void Controls_CanKeepListsOfControls_WithoutAllocatingGCMemory()
    {
        InputSystem.AddDevice <Mouse>(); // Noise.
        var gamepad  = InputSystem.AddDevice <Gamepad>();
        var keyboard = InputSystem.AddDevice <Keyboard>();

        var list = new InputControlList <InputControl>();

        try
        {
            Assert.That(list.Count, Is.Zero);
            Assert.That(list.ToArray(), Is.Empty);
            Assert.That(() => list[0], Throws.TypeOf <ArgumentOutOfRangeException>());

            list.Capacity = 10;

            list.Add(gamepad.leftStick);
            list.Add(null); // Permissible to add null entry.
            list.Add(keyboard.spaceKey);
            list.Add(keyboard);

            Assert.That(list.Count, Is.EqualTo(4));
            Assert.That(list.Capacity, Is.EqualTo(6));
            Assert.That(list[0], Is.SameAs(gamepad.leftStick));
            Assert.That(list[1], Is.Null);
            Assert.That(list[2], Is.SameAs(keyboard.spaceKey));
            Assert.That(list[3], Is.SameAs(keyboard));
            Assert.That(() => list[4], Throws.TypeOf <ArgumentOutOfRangeException>());
            Assert.That(list.ToArray(),
                        Is.EquivalentTo(new InputControl[] { gamepad.leftStick, null, keyboard.spaceKey, keyboard }));
            Assert.That(list.Contains(gamepad.leftStick));
            Assert.That(list.Contains(null));
            Assert.That(list.Contains(keyboard.spaceKey));
            Assert.That(list.Contains(keyboard));

            list.RemoveAt(1);
            list.Remove(keyboard);

            Assert.That(list.Count, Is.EqualTo(2));
            Assert.That(list.Capacity, Is.EqualTo(8));
            Assert.That(list[0], Is.SameAs(gamepad.leftStick));
            Assert.That(list[1], Is.SameAs(keyboard.spaceKey));
            Assert.That(() => list[2], Throws.TypeOf <ArgumentOutOfRangeException>());
            Assert.That(list.ToArray(), Is.EquivalentTo(new InputControl[] { gamepad.leftStick, keyboard.spaceKey }));
            Assert.That(list.Contains(gamepad.leftStick));
            Assert.That(!list.Contains(null));
            Assert.That(list.Contains(keyboard.spaceKey));
            Assert.That(!list.Contains(keyboard));

            list.AddRange(new InputControl[] { keyboard.aKey, keyboard.bKey }, count: 1, destinationIndex: 0);

            Assert.That(list.Count, Is.EqualTo(3));
            Assert.That(list.Capacity, Is.EqualTo(7));
            Assert.That(list,
                        Is.EquivalentTo(new InputControl[]
                                        { keyboard.aKey, gamepad.leftStick, keyboard.spaceKey }));

            list.AddRange(new InputControl[] { keyboard.bKey, keyboard.cKey });

            Assert.That(list.Count, Is.EqualTo(5));
            Assert.That(list.Capacity, Is.EqualTo(5));
            Assert.That(list,
                        Is.EquivalentTo(new InputControl[]
                                        { keyboard.aKey, gamepad.leftStick, keyboard.spaceKey, keyboard.bKey, keyboard.cKey }));

            using (var toAdd = new InputControl[] { gamepad.buttonNorth, gamepad.buttonEast, gamepad.buttonWest }.ToControlList())
                list.AddSlice(toAdd, count: 1, destinationIndex: 1, sourceIndex: 2);

            Assert.That(list.Count, Is.EqualTo(6));
            Assert.That(list.Capacity, Is.EqualTo(4));
            Assert.That(list,
                        Is.EquivalentTo(new InputControl[]
                                        { keyboard.aKey, gamepad.buttonWest, gamepad.leftStick, keyboard.spaceKey, keyboard.bKey, keyboard.cKey }));

            list[0] = keyboard.zKey;

            Assert.That(list,
                        Is.EquivalentTo(new InputControl[]
                                        { keyboard.zKey, gamepad.buttonWest, gamepad.leftStick, keyboard.spaceKey, keyboard.bKey, keyboard.cKey }));

            list.Clear();

            Assert.That(list.Count, Is.Zero);
            Assert.That(list.Capacity, Is.EqualTo(10));
            Assert.That(list.ToArray(), Is.Empty);
            Assert.That(() => list[0], Throws.TypeOf <ArgumentOutOfRangeException>());
            Assert.That(!list.Contains(gamepad.leftStick));
            Assert.That(!list.Contains(null));
            Assert.That(!list.Contains(keyboard.spaceKey));
            Assert.That(!list.Contains(keyboard));
        }
        finally
        {
            list.Dispose();
        }
    }
Example #3
0
        private void SetGridData()
        {
            var checkCell         = new CheckBoxCell();
            var textCellName      = new GcTextBoxCell();
            var numberCellOrder   = new GcNumberCell();
            var checkCellIndex    = 0;
            var numberCellIndex   = 2;
            var useContractNumber = UseLongTermAdvanceReceived && RegisterContractInAdvance;
            var tableName         = InputGridTypeId == InputGridType.Billing ? nameof(Billing) : nameof(Receipt);

            var note1 = "備考1";
            var note2 = "備考2";
            var note3 = "備考3";
            var note4 = "備考4";

            foreach (var names in ColumnNameList.Where(x => x.TableName == tableName))
            {
                if (names.ColumnName == "Note1")
                {
                    note1 = names.DisplayColumnName;
                }
                if (names.ColumnName == "Note2")
                {
                    note2 = names.DisplayColumnName;
                }
                if (names.ColumnName == "Note3")
                {
                    note3 = names.DisplayColumnName;
                }
                if (names.ColumnName == "Note4")
                {
                    note4 = names.DisplayColumnName;
                }
            }

            if (InputControlList.Count > 0)
            {
                foreach (var input in InputControlList)
                {
                    if (input.ColumnName == "Note1")
                    {
                        input.ColumnNameJp = note1;
                    }
                    if (input.ColumnName == "Note2")
                    {
                        input.ColumnNameJp = note2;
                    }
                    if (input.ColumnName == "Note3")
                    {
                        input.ColumnNameJp = note3;
                    }
                    if (input.ColumnName == "Note4")
                    {
                        input.ColumnNameJp = note4;
                    }
                }

                if (!UseDiscount && InputGridTypeId.Equals(InputGridType.Billing))
                {
                    var discountIndex = InputControlList.FindIndex(
                        x => x.ColumnName.Equals(DiscountName) &&
                        x.ColumnNameJp.Equals(DiscountJpName));

                    InputControlList.RemoveAt(discountIndex);
                }

                if (!useContractNumber && InputGridTypeId.Equals(InputGridType.Billing))
                {
                    var contractIndex = InputControlList.FindIndex(
                        x => x.ColumnName.Equals(ContractName) &&
                        x.ColumnNameJp.Equals(ContractJpName));

                    InputControlList.RemoveAt(contractIndex);
                }

                grid.RowCount = InputControlList.Count;

                for (var i = 0; i < InputControlList.Count; i++)
                {
                    var inputControl = new InputControl();
                    inputControl = InputControlList[i];

                    checkCell       = (CheckBoxCell)grid.Rows[i].Cells[0];
                    checkCell.Value = inputControl.TabStop;

                    textCellName       = (GcTextBoxCell)grid.Rows[i].Cells[1];
                    textCellName.Value = inputControl.ColumnNameJp;

                    numberCellOrder       = (GcNumberCell)grid.Rows[i].Cells[2];
                    numberCellOrder.Value = inputControl.TabIndex;

                    OnCheckedChanged(i, checkCellIndex, numberCellIndex);
                }
            }
            else
            {
                var columnBillingName = new List <string> {
                    nameof(Billing.SalesAt),
                    nameof(Billing.BillingCategoryId),
                    nameof(Billing.TaxClassId),
                    nameof(Billing.DebitAccountTitleId),
                    nameof(Billing.UseDiscount),
                    nameof(Billing.Note1),
                    nameof(Billing.ContractNumber),
                    nameof(Billing.Quantity),
                    nameof(Billing.UnitSymbol),
                    nameof(Billing.UnitPrice),
                    nameof(Billing.Price),
                    nameof(Billing.TaxAmount),
                    nameof(Billing.BillingAmount),
                };

                var columnBillingNameJp = new List <string>
                {
                    "売上日", "請求区分", "税区", "債権科目", "歩引計算",
                    note1, "契約番号", "数量", "単位", "単価",
                    "金額(抜)", "消費税", "請求額"
                };

                var columnReceiptName = new List <string>
                {
                    "ReceiptCategory", "Note1", "DueAt", "ReceiptAmount", "BillNumber",
                    "BillBankCode", "BillBranchCode", "BillDrawAt", "BillDrawer",
                    "Note2", "Note3", "Note4"
                };

                var columnReceiptNameJp = new List <string>
                {
                    "入金区分", note1, "期日", "金額", "手形番号",
                    "銀行コード", "支店コード", "振出日", "振出人",
                    note2, note3, note4
                };

                if (!UseDiscount && InputGridTypeId == InputGridType.Billing)
                {
                    var nameIndex   = columnBillingName.FindIndex(x => x.Equals(DiscountName));
                    var jpNameIndex = columnBillingNameJp.FindIndex(x => x.Equals(DiscountJpName));
                    columnBillingName.RemoveAt(nameIndex);
                    columnBillingNameJp.RemoveAt(jpNameIndex);
                }

                if (!useContractNumber && InputGridTypeId == InputGridType.Billing)
                {
                    var nameIndex   = columnBillingName.FindIndex(x => x.Equals(ContractName));
                    var jpNameIndex = columnBillingNameJp.FindIndex(x => x.Equals(ContractJpName));
                    columnBillingName.RemoveAt(nameIndex);
                    columnBillingNameJp.RemoveAt(jpNameIndex);
                }

                var columnName = InputGridTypeId == InputGridType.Billing
                    ? columnBillingName : columnReceiptName;
                var columnNameJp = InputGridTypeId == InputGridType.Billing
                    ? columnBillingNameJp : columnReceiptNameJp;

                grid.RowCount = columnName.Count;

                for (var i = 0; i < grid.RowCount; i++)
                {
                    checkCell       = (CheckBoxCell)grid.Rows[i].Cells[0];
                    checkCell.Value = true;

                    textCellName       = (GcTextBoxCell)grid.Rows[i].Cells[1];
                    textCellName.Value = columnNameJp[i];

                    numberCellOrder       = (GcNumberCell)grid.Rows[i].Cells[2];
                    numberCellOrder.Value = i + 1;

                    OnCheckedChanged(i, checkCellIndex, numberCellIndex);

                    var inputControl = new InputControl();
                    inputControl.CompanyId       = CompanyId;
                    inputControl.LoginUserId     = Login.UserId;
                    inputControl.InputGridTypeId = InputGridTypeId;
                    inputControl.ColumnName      = columnName[i];
                    inputControl.ColumnNameJp    = columnNameJp[i];
                    inputControl.ColumnOrder     = i + 1;
                    inputControl.TabIndex        = i + 1;
                    inputControl.TabStop         = 1;
                    InputControlList.Add(inputControl);
                }
            }
        }
Example #4
0
    public void Controls_CanKeepListsOfControls_WithoutAllocatingGCMemory()
    {
        InputSystem.AddDevice <Mouse>(); // Noise.
        var gamepad  = InputSystem.AddDevice <Gamepad>();
        var keyboard = InputSystem.AddDevice <Keyboard>();

        var list = new InputControlList <InputControl>();

        try
        {
            Assert.That(list.Count, Is.Zero);
            Assert.That(list.ToArray(), Is.Empty);
            Assert.That(() => list[0], Throws.TypeOf <ArgumentOutOfRangeException>());

            list.Capacity = 10;

            list.Add(gamepad.leftStick);
            list.Add(null); // Permissible to add null entry.
            list.Add(keyboard.spaceKey);
            list.Add(keyboard);

            Assert.That(list.Count, Is.EqualTo(4));
            Assert.That(list.Capacity, Is.EqualTo(6));
            Assert.That(list[0], Is.SameAs(gamepad.leftStick));
            Assert.That(list[1], Is.Null);
            Assert.That(list[2], Is.SameAs(keyboard.spaceKey));
            Assert.That(list[3], Is.SameAs(keyboard));
            Assert.That(() => list[4], Throws.TypeOf <ArgumentOutOfRangeException>());
            Assert.That(list.ToArray(),
                        Is.EquivalentTo(new InputControl[] { gamepad.leftStick, null, keyboard.spaceKey, keyboard }));
            Assert.That(list.Contains(gamepad.leftStick));
            Assert.That(list.Contains(null));
            Assert.That(list.Contains(keyboard.spaceKey));
            Assert.That(list.Contains(keyboard));

            list.RemoveAt(1);
            list.Remove(keyboard);

            Assert.That(list.Count, Is.EqualTo(2));
            Assert.That(list.Capacity, Is.EqualTo(8));
            Assert.That(list[0], Is.SameAs(gamepad.leftStick));
            Assert.That(list[1], Is.SameAs(keyboard.spaceKey));
            Assert.That(() => list[2], Throws.TypeOf <ArgumentOutOfRangeException>());
            Assert.That(list.ToArray(), Is.EquivalentTo(new InputControl[] { gamepad.leftStick, keyboard.spaceKey }));
            Assert.That(list.Contains(gamepad.leftStick));
            Assert.That(!list.Contains(null));
            Assert.That(list.Contains(keyboard.spaceKey));
            Assert.That(!list.Contains(keyboard));

            list.Clear();

            Assert.That(list.Count, Is.Zero);
            Assert.That(list.Capacity, Is.EqualTo(10));
            Assert.That(list.ToArray(), Is.Empty);
            Assert.That(() => list[0], Throws.TypeOf <ArgumentOutOfRangeException>());
            Assert.That(!list.Contains(gamepad.leftStick));
            Assert.That(!list.Contains(null));
            Assert.That(!list.Contains(keyboard.spaceKey));
            Assert.That(!list.Contains(keyboard));
        }
        finally
        {
            list.Dispose();
        }
    }