示例#1
0
        public AdEditBoxPresentationModel(IAdEditBox view, IAdViewPreview preview, IProjectService projectService, IConfigurationService configurationService)
        {
            this.View                 = view;
            this.preview              = preview;
            this.projectService       = projectService;
            this.configurationService = configurationService;

            this.CloseCommand  = new DelegateCommand <object>(this.Close);
            this.SaveCommand   = new DelegateCommand <object>(this.Save, this.CanSave);
            this.DeleteCommand = new DelegateCommand <object>(this.Delete);

            this.TemplateTypes = this.ParseTemplateTypes();

            if (this.TemplateTypes.Count > 0)
            {
                this.SelectedTemplateType = this.TemplateTypes[0];
            }

            this.adOpportunity = new AdOpportunity {
                TemplateType = this.SelectedTemplateType
            };
            this.projectService.GetCurrentProject().AdOpportunities.Add(this.adOpportunity);

            this.View.Model    = this;
            this.preview.Model = this;
        }
示例#2
0
        private static void WriteAdOpportunities(XmlWriter writer, CompositeManifestInfo manifestInfo)
        {
            if (manifestInfo.AdOpportunities.Count > 0)
            {
                StreamInfo streamInfo = WriteCompositeManifestStandardStreamIndex(manifestInfo.AdsDataStreamName, manifestInfo.AdOpportunities.Count);

                for (int i = 0; i < manifestInfo.AdOpportunities.Count; i++)
                {
                    AdOpportunity adOpportunity = manifestInfo.AdOpportunities[i];

                    StringBuilder output = new StringBuilder();

                    XmlWriter tempWriter = CreateWriter(output, true, true);

                    if (tempWriter != null)
                    {
                        tempWriter.WriteStartElement("InStreamEnvelope");
                        tempWriter.WriteAttributeString("Id", adOpportunity.ID.ToString());
                        tempWriter.WriteAttributeString("Action", "Add");
                        tempWriter.WriteAttributeString("TargetID", string.Empty);
                        tempWriter.WriteAttributeString("Priority", "1");
                        tempWriter.WriteStartElement("AdOpportunity");
                        tempWriter.WriteAttributeString("ID", adOpportunity.ID.ToString());
                        tempWriter.WriteAttributeString("Time", adOpportunity.Time.ToString(CultureInfo.InvariantCulture));
                        tempWriter.WriteAttributeString("TemplateType", adOpportunity.TemplateType);
                        tempWriter.WriteEndElement();
                        tempWriter.Close();

                        byte[] envelopeBytes = Encoding.UTF8.GetBytes(output.ToString());

                        string encodedEnvelope = Convert.ToBase64String(envelopeBytes);

                        ulong?duration = null;

                        if (i == manifestInfo.AdOpportunities.Count - 1)
                        {
                            duration = 10000000;
                        }

                        Chunk chunk = new Chunk(null, (ulong)adOpportunity.Time, duration, encodedEnvelope);

                        streamInfo.Chunks.Add(chunk);
                    }
                }

                WriteStreamIndex(writer, streamInfo, true);
            }
        }
示例#3
0
        public void SetElement(object value)
        {
            AdOpportunity newAdOpportunity = value as AdOpportunity;

            if (newAdOpportunity != null)
            {
                this.projectService.GetCurrentProject().AdOpportunities.Remove(this.adOpportunity);
                this.adOpportunity = newAdOpportunity;

                if (!this.projectService.GetCurrentProject().AdOpportunities.Contains(this.adOpportunity))
                {
                    this.projectService.GetCurrentProject().AdOpportunities.Add(this.adOpportunity);
                }

                this.SetPosition(TimeSpan.FromTicks(this.adOpportunity.Time));
                this.View.Close();
            }
        }
示例#4
0
        public void SetElement(object value, CommentMode mode)
        {
            var newAdOpportunity = value as AdOpportunity;

            if (newAdOpportunity != null)
            {
                this.sequenceRegistry.CurrentSequence.AdOpportunities.Remove(this.adOpportunity);
                this.adOpportunity = newAdOpportunity;

                if (!this.sequenceRegistry.CurrentSequence.AdOpportunities.Contains(this.adOpportunity))
                {
                    this.sequenceRegistry.CurrentSequence.AdOpportunities.Add(this.adOpportunity);
                }

                this.SetPosition(TimeSpan.FromTicks(this.adOpportunity.Time));
                this.View.Close();
            }
        }