Beispiel #1
0
        private static void AddControl(uint[] data, byte[] blob, MultiValuedProperty <Page> pages, MAPIPropertiesDictionary propertiesDictionary)
        {
            int  x         = (int)data[0];
            int  y         = (int)data[2];
            int  width     = (int)data[1];
            int  height    = (int)data[3];
            int  num       = (int)data[8];
            int  maxLength = (int)data[7];
            uint num2      = data[6];

            DetailsTemplateControl.ControlFlags controlFlags = (DetailsTemplateControl.ControlFlags)data[5];
            string attributeName = propertiesDictionary[(int)(num2 >> 16 & 65535U)] ?? string.Empty;
            string @string       = Encoding.Unicode.GetString(blob, num, DetailsTemplateAdapter.GetNullTerminatedStringLength(blob, num));
            DetailsTemplateControl detailsTemplateControl = null;

            switch (data[4])
            {
            case 0U:
                detailsTemplateControl = new LabelControl();
                break;

            case 1U:
                detailsTemplateControl = new EditControl(controlFlags);
                break;

            case 2U:
                detailsTemplateControl = new ListboxControl(controlFlags);
                break;

            case 5U:
                detailsTemplateControl = new CheckboxControl();
                break;

            case 6U:
                detailsTemplateControl = new GroupboxControl();
                break;

            case 7U:
                detailsTemplateControl = new ButtonControl();
                break;

            case 8U:
                pages.Add(new Page
                {
                    Text        = @string,
                    HelpContext = (int)controlFlags
                });
                break;

            case 11U:
                detailsTemplateControl = new MultiValuedListboxControl();
                break;

            case 12U:
                detailsTemplateControl = new MultiValuedDropdownControl();
                break;
            }
            if (detailsTemplateControl != null)
            {
                if (pages.Count == 0)
                {
                    throw new ParsingException(DirectoryStrings.NoPagesSpecified);
                }
                detailsTemplateControl.X               = x;
                detailsTemplateControl.Y               = y;
                detailsTemplateControl.Width           = width;
                detailsTemplateControl.Height          = height;
                detailsTemplateControl.m_MaxLength     = maxLength;
                detailsTemplateControl.m_AttributeName = attributeName;
                detailsTemplateControl.m_Text          = @string;
                detailsTemplateControl.OriginalFlags   = controlFlags;
                pages[pages.Count - 1].Controls.Add(detailsTemplateControl);
            }
        }