示例#1
0
        private void UnpackContent()
        {
            // creating children
            List <FieldList> children = Content.GetItems <FieldList>(NaviAgentFieldID.BlockData);

            for (int i = 0; i < children.Count; i++)
            {
                int            childDefinitionID = children[i][MessageOutFieldID.DefinitionID].AsInteger() ?? 0;
                DefinitionBase definition        = Core.Definitions.Find(ParentNode.ApplicationID, childDefinitionID, true);

                if ((definition != null) && (definition is BlockDefinition))
                {
                    BlockBase newBlock = Core.UIFactory.CreateAndInitialiseBlock(Host, ParentNode, this, definition as BlockDefinition, children[i], false);

                    if (newBlock != null)
                    {
                        AtomicBlock           newAtomic     = newBlock as AtomicBlock;
                        AtomicBlockDefinition newDefinition = definition as AtomicBlockDefinition;

                        if ((newAtomic != null) && (newDefinition != null))
                        {
                            if (newDefinition.HintedType == UIHintedType.ActionSheetTitle)
                            {
                                titleBlock = newAtomic;
                            }
                            else
                            {
                                actionBlocks.Add(newAtomic);
                            }
                        }
                    }
                }
            }
        }
示例#2
0
        public TabBarButtonBlock(View hostView, Node parentNode, BlockBase parentBlock, BlockDefinition definition, FieldList content, bool isRoot)
            : base(hostView, parentNode, parentBlock, definition, content, isRoot)
        {
            Text = String.Empty;
            Icon = null;

            // parse server display data
            serverDisplayData = DisplayData.Parse(content);

            // extract text and icon
            AtomicBlockDefinition data = Definition as AtomicBlockDefinition;

            if (data != null)
            {
                for (int i = 0; i < serverDisplayData.Count; i++)
                {
                    if (data.SlotHints.Length > i)
                    {
                        ProcessHintDataPair(data.SlotHints[i], serverDisplayData[i]);
                    }
                }
            }
        }
示例#3
0
        private DefinitionBase CreateDefinition(FieldList source)
        {
            if (source == null)
            {
                return(null);
            }

            int   defID                   = source[MessageOutFieldID.DefinitionID].AsInteger() ?? 0;
            short primitiveType           = source[DefAgentFieldID.DefinitionType].AsShort() ?? 0;
            short secondaryCharacteristic = 0;

            DefinitionBase res = null;

            switch ((DefinitionType)primitiveType)
            {
            case DefinitionType.AtomicBlock:
            {
                FieldList firstStateData = (FieldList)source[DefAgentFieldID.DataPerComponentState];

                if (firstStateData != null)
                {
                    secondaryCharacteristic = firstStateData[DefAgentFieldID.LayoutType].AsByte() ?? 0;

                    switch ((LayoutType)secondaryCharacteristic)
                    {
                    case LayoutType.Table:
                        AtomicBlockDefinition ab = new AtomicBlockDefinition();
                        ab.Unpack(source);

                        res = ab;
                        break;

                    case LayoutType.SingleSlot:
                        SingleSlotBlockDefinition ssb = new SingleSlotBlockDefinition();
                        ssb.Unpack(source);

                        res = ssb;
                        break;

                    case LayoutType.ScrollingText:
                        ScrollingTextBlockDefinition stbd = new ScrollingTextBlockDefinition();
                        stbd.Unpack(source);

                        res = stbd;
                        break;

                    default:
                        DebugHelper.Out("Unsupported layout type for atomic: {0}", ((LayoutType)secondaryCharacteristic).ToString());
                        break;
                    }
                }

                break;
            }

            case DefinitionType.Container:
            {
                secondaryCharacteristic = source[DefAgentFieldID.LayoutType].AsByte() ?? 0;

                switch ((LayoutType)secondaryCharacteristic)
                {
                case LayoutType.Box:
                    BoxLayoutBlockDefinition bx = new BoxLayoutBlockDefinition();
                    bx.Unpack(source);

                    res = bx;
                    break;

                case LayoutType.Flow:
                    ListBlockDefinition fl = new ListBlockDefinition();
                    fl.Unpack(source);

                    res = fl;
                    break;

                case LayoutType.Grid:
                    GridBlockDefinition gr = new GridBlockDefinition();
                    gr.Unpack(source);

                    res = gr;
                    break;

                default:
                    DebugHelper.Out("Unsupported layout type for container: {0}", ((LayoutType)secondaryCharacteristic).ToString());
                    break;
                }

                break;
            }

            case DefinitionType.Frame:
            {
                FrameDefinition fd = new FrameDefinition();
                fd.Unpack(source);

                res = fd;
                break;
            }

            case DefinitionType.Plugin:
            {
                secondaryCharacteristic = source[DefAgentFieldID.PluginType].AsByte() ?? 0;

                switch ((PluginType)secondaryCharacteristic)
                {
                case PluginType.Map:
                    MapPluginBlockDefinition mpbd = new MapPluginBlockDefinition();
                    mpbd.Unpack(source);

                    res = mpbd;
                    break;

                default:
                    DebugHelper.Out("Unsupported plug-in type: {0}", ((PluginType)secondaryCharacteristic).ToString());
                    break;
                }

                break;
            }

            case DefinitionType.Palette:
            {
                PaletteDefinition palette = new PaletteDefinition();
                palette.Unpack(source);

                res = palette;
                break;
            }

            case DefinitionType.Font:
            {
                FontDefinition font = new FontDefinition();
                font.Unpack(source);

                res = font;
                break;
            }

            case DefinitionType.ApplicationEvents:
            {
                ApplicationEventsDefinition appEvents = new ApplicationEventsDefinition();
                appEvents.Unpack(source);

                res = appEvents;
                break;
            }

            default:
                DebugHelper.Out("Unsupported definition type: {0}", ((DefinitionType)primitiveType).ToString());
                break;
            }

            if ((res != null) && res.IsUnpacked)
            {
                return(res);
            }
            else
            {
                return(null);
            }
        }