public Recording(XmlNode node)
        {
            int      intValue;
            DateTime dtValue;

            foreach (XmlNode child in node.ChildNodes)
            {
                switch (child.Name)
                {
                case "oid":
                    if (int.TryParse(child.InnerText, out intValue))
                    {
                        this.mOID = intValue;
                    }
                    break;

                case "name":
                    this.mName = child.InnerText;
                    break;

                case "channel":
                    this.mChannel = child.InnerText;
                    break;

                case "filename":
                    this.mFileName = child.InnerText;
                    break;

                case "status":
                    this.mStatus = child.InnerText;
                    break;

                case "startTime":
                    if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                    {
                        this.mStartTime = dtValue;
                    }
                    break;

                case "endTime":
                    if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                    {
                        this.mEndTime = dtValue;
                    }
                    break;

                case "Event":
                    this.mEvent = new RecordingEvent(child);
                    break;

                default:
                    this.mExtraFields.Add(child.OuterXml);
                    break;
                }
            }
        }
        public void Serialize(System.IO.TextWriter writer)
        {
            int i;
            writer.WriteLine("<Event>");
            writer.WriteLine(string.Concat("  <OID>", this.mOID.ToString(), "</OID>"));
            writer.WriteLine(string.Concat("  <Title>", this.mTitle, "</Title>"));
            writer.WriteLine(string.Concat("  <SubTitle>", this.mSubTitle, "</SubTitle>"));
            writer.WriteLine(string.Concat("  <Description>", this.mDescription, "</Description>"));
            writer.WriteLine(string.Concat("  <ChannelOID>", this.mChannelOID.ToString(), "</ChannelOID>"));
            writer.WriteLine(string.Concat("  <StartTime>", NextPvrDateTime.Serialize(this.mStartTime), "</StartTime>"));
            writer.WriteLine(string.Concat("  <EndTime>", NextPvrDateTime.Serialize(this.mEndTime), "</EndTime>"));
            writer.WriteLine(string.Concat("  <FirstRun>", this.mFirstRun ? "true" : "false", "</FirstRun>"));

            if (this.mOriginalAirDate != DateTime.MinValue)
                writer.WriteLine(string.Concat("  <OriginalAirDate>", NextPvrDateTime.Serialize(this.mOriginalAirDate, true), "</OriginalAirDate>"));
            if (this.mRating != null)
                writer.WriteLine(string.Concat("  <Rating>", this.mRating, "</Rating>"));
            if (this.mAudio != null)
                writer.WriteLine(string.Concat("  <Audio>", this.mAudio, "</Audio>"));
            if (this.mAspect != null)
                writer.WriteLine(string.Concat("  <Aspect>", this.mAspect, "</Aspect>"));
            if (this.mQuality != null)
                writer.WriteLine(string.Concat("  <Quality>", this.mQuality, "</Quality>"));

            if (this.mExtraFields.Count > 0)
            {
                for (i = 0; i < this.mExtraFields.Count; i++)
                    writer.WriteLine(string.Concat("  ", this.mExtraFields[i]));
            }
            if (this.mGenres != null)
            {
                writer.WriteLine("  <Genres>");
                for (i = 0; i < this.mGenres.Count; i++)
                    writer.WriteLine(string.Concat("    <Genre>", this.mGenres[i], "</Genre>"));
                writer.WriteLine("  </Genres>");
            }
            if (this.mCast != null)
            {
                writer.WriteLine("  <Cast>");
                for (i = 0; i < this.mCast.Count; i++)
                    writer.WriteLine(string.Concat("    <Member>", this.mCast[i], "</Member>"));
                writer.WriteLine("  </Cast>");
            }
            if (this.mCrew != null)
            {
                writer.WriteLine("  <Crew>");
                for (i = 0; i < this.mCrew.Count; i++)
                    writer.WriteLine(string.Concat("    <Member>", this.mCrew[i], "</Member>"));
                writer.WriteLine("  </Crew>");
            }
            writer.WriteLine(string.Concat("  <UniqueID>", this.mUniqueID, "</UniqueID>"));
            writer.WriteLine("</Event>");
        }
 public void Serialize(System.IO.TextWriter writer)
 {
     writer.WriteLine("  <recurring>");
     writer.WriteLine(string.Concat("    <oid>", this.mOID.ToString(), "</oid>"));
     writer.WriteLine(string.Concat("    <name>", this.mName, "</name>"));
     writer.WriteLine("    <matchrules>");
     writer.WriteLine("<Rules>");
     writer.WriteLine(string.Concat("  <EPGTitle>", this.mEPGTitle, "</EPGTitle>"));
     writer.WriteLine(string.Concat("  <ChannelOID>", this.mChannelOID.ToString(), "</ChannelOID>"));
     writer.WriteLine(string.Concat("  <ChannelName>", this.mChannelName, "</ChannelName>"));
     writer.WriteLine(string.Concat("  <StartTime>", NextPvrDateTime.Serialize(this.mStartTime), "</StartTime>"));
     writer.WriteLine(string.Concat("  <EndTime>", NextPvrDateTime.Serialize(this.mEndTime), "</EndTime>"));
     writer.WriteLine(string.Concat("  <PrePadding>", this.mPrePadding.ToString(), "</PrePadding>"));
     writer.WriteLine(string.Concat("  <PostPadding>", this.mPostPadding.ToString(), "</PostPadding>"));
     writer.WriteLine(string.Concat("  <Quality>", this.mQuality.ToString(), "</Quality>"));
     writer.WriteLine(string.Concat("  <Keep>", this.mKeep.ToString(), "</Keep>"));
     if (this.mOnlyNewEpisodes)
     {
         writer.WriteLine("  <OnlyNewEpisodes>true</OnlyNewEpisodes");
     }
     if (this.mDays != null)
     {
         string days = this.mDays[0].ToString().ToUpper();
         for (int j = 1; j < this.mDays.Length; j++)
         {
             days = string.Concat(days, ",", this.mDays[j].ToString().ToUpper());
         }
         writer.WriteLine(string.Concat("  <Days>", days, "</Days>"));
     }
     for (int i = 0; i < this.mExtraRules.Count; i++)
     {
         writer.WriteLine(string.Concat("  ", this.mExtraRules[i]));
     }
     writer.WriteLine("</Rules>");
     writer.WriteLine();
     writer.WriteLine("    </matchrules>");
     writer.WriteLine("  </recurring>");
 }
 public void Serialize(System.IO.TextWriter writer)
 {
     writer.WriteLine("  <recording>");
     writer.WriteLine(string.Concat("    <oid>", this.mOID.ToString(), "</oid>"));
     writer.WriteLine(string.Concat("    <name>", this.mName, "</name>"));
     writer.WriteLine(string.Concat("    <channel>", this.mChannel, "</channel>"));
     writer.WriteLine(string.Concat("    <filename>", this.mFileName, "</filename>"));
     writer.WriteLine(string.Concat("    <status>", this.mStatus, "</status>"));
     writer.WriteLine(string.Concat("    <startTime>", NextPvrDateTime.Serialize(this.mStartTime), "</startTime>"));
     writer.WriteLine(string.Concat("    <endTime>", NextPvrDateTime.Serialize(this.mEndTime), "</endTime>"));
     if (this.mExtraFields.Count > 0)
     {
         for (int i = 0; i < this.mExtraFields.Count; i++)
         {
             writer.WriteLine(string.Concat("  ", this.mExtraFields[i]));
         }
     }
     if (this.mEvent != null)
     {
         this.mEvent.Serialize(writer);
     }
     writer.WriteLine("  </recording>");
 }
        private void parseMatchRules(XmlNode rules)
        {
            int      intValue;
            DateTime dtValue;

            foreach (XmlNode child in rules.ChildNodes)
            {
                switch (child.Name)
                {
                case "EPGTitle":
                    this.mEPGTitle = child.InnerText;
                    break;

                case "ChannelOID":
                    if (int.TryParse(child.InnerText, out intValue))
                    {
                        this.mChannelOID = intValue;
                    }
                    break;

                case "ChannelName":
                    this.mChannelName = child.InnerText;
                    break;

                case "StartTime":
                    if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                    {
                        this.mStartTime = dtValue;
                    }
                    break;

                case "EndTime":
                    if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                    {
                        this.mEndTime = dtValue;
                    }
                    break;

                case "PrePadding":
                    if (int.TryParse(child.InnerText, out intValue))
                    {
                        this.mPrePadding = intValue;
                    }
                    break;

                case "PostPadding":
                    if (int.TryParse(child.InnerText, out intValue))
                    {
                        this.mPostPadding = intValue;
                    }
                    break;

                case "Quality":
                    if (int.TryParse(child.InnerText, out intValue))
                    {
                        this.mQuality = intValue;
                    }
                    break;

                case "Keep":
                    if (int.TryParse(child.InnerText, out intValue))
                    {
                        this.mKeep = intValue;
                    }
                    break;

                case "OnlyNewEpisodes":
                    bool onlyNewEpisodes;
                    if (bool.TryParse(child.InnerText, out onlyNewEpisodes))
                    {
                        this.mOnlyNewEpisodes = onlyNewEpisodes;
                    }
                    break;

                case "Days":
                    DayOfWeek        day;
                    string[]         dayStrs = child.InnerText.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                    List <DayOfWeek> days    = new List <DayOfWeek>(dayStrs.Length);
                    for (int i = 0; i < dayStrs.Length; i++)
                    {
                        if (Enum.TryParse <DayOfWeek>(dayStrs[i], true, out day))
                        {
                            days.Add(day);
                        }
                    }
                    if (days.Count > 0)
                    {
                        this.mDays = days.ToArray();
                    }
                    break;

                default:
                    this.mExtraRules.Add(child.OuterXml);
                    break;
                }
            }
        }
 public RecordingEvent(XmlNode node)
 {
     int intValue;
     DateTime dtValue;
     foreach (XmlNode child in node.ChildNodes)
     {
         switch (child.Name)
         {
             case "OID":
                 if (int.TryParse(child.InnerText, out intValue))
                     this.mOID = intValue;
                 break;
             case "Title":
                 this.mTitle = child.InnerText;
                 break;
             case "SubTitle":
                 this.mSubTitle = child.InnerText;
                 break;
             case "Description":
                 this.mDescription = child.InnerText;
                 break;
             case "ChannelOID":
                 if (int.TryParse(child.InnerText, out intValue))
                     this.mChannelOID = intValue;
                 break;
             case "StartTime":
                 if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                     this.mStartTime = dtValue;
                 break;
             case "EndTime":
                 if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                     this.mEndTime = dtValue;
                 break;
             case "FirstRun":
                 bool firstRun;
                 if (bool.TryParse(child.InnerText, out firstRun))
                     this.mFirstRun = firstRun;
                 break;
             case "OriginalAirDate":
                 if (NextPvrDateTime.TryParse(child.InnerText, out dtValue))
                     this.mOriginalAirDate = dtValue;
                 break;
             case "Rating":
                 this.mRating = child.InnerText;
                 break;
             case "Audio":
                 this.mAudio = child.InnerText;
                 break;
             case "Aspect":
                 this.mAspect = child.InnerText;
                 break;
             case "Quality":
                 this.mQuality = child.InnerText;
                 break;
             case "Genres":
                 this.mGenres = new List<string>(child.ChildNodes.Count);
                 foreach (XmlNode genre in child.ChildNodes)
                     this.mGenres.Add(genre.InnerText);
                 break;
             case "Cast":
                 this.mCast = new List<string>(child.ChildNodes.Count);
                 foreach (XmlNode member in child.ChildNodes)
                     this.mCast.Add(member.InnerText);
                 break;
             case "Crew":
                 this.mCrew = new List<string>(child.ChildNodes.Count);
                 foreach (XmlNode member in child.ChildNodes)
                     this.mCrew.Add(member.InnerText);
                 break;
             case "UniqueID":
                 this.mUniqueID = child.InnerText;
                 break;
             default:
                 this.mExtraFields.Add(child.OuterXml);
                 break;
         }
     }
 }