Пример #1
0
        /// <summary>
        /// Method fired when the user clicks on compare
        /// </summary>
        private void Compare_Click(object sender, RoutedEventArgs e)
        {
            BookDiff baseFile   = ParseBook(Convert.ToString(this.baseFile.ToolTip));
            BookDiff timingFile = ParseBook(Convert.ToString(this.timingFile.ToolTip));

            this.difference = CompareBooks(baseFile, timingFile);

            this.statusTxt.Text    = "save differences";
            this.saveBtn.IsEnabled = true;
        }
Пример #2
0
        /// <summary>
        /// Helper for parsing the book.
        /// </summary>
        /// <param name="file">The file to parse.</param>
        /// <returns>The parsed book.</returns>
        private BookDiff ParseBook(string file)
        {
            BookDiff book = new BookDiff();

            XmlDocument doc = new XmlDocument();

            doc.Load(file);

            book.CompletedTime = TimeSpan.Parse(((XmlElement)doc.GetElementsByTagName("Book").Item(0)).GetAttribute("CompletedTime"));

            XmlNodeList chapters     = doc.GetElementsByTagName("Chapter");
            int         chapterIndex = 0;

            foreach (XmlElement chapter in chapters)
            {
                book.Chapters.Add(new ChapterDiff());

                int         sentenceIndex = 0;
                XmlNodeList sentences     = chapter.GetElementsByTagName("Sentence");
                foreach (XmlElement sentence in sentences)
                {
                    book.Chapters[chapterIndex].Sentences.Add(new AudioPosition());
                    book.Chapters[chapterIndex].Sentences[sentenceIndex] = new AudioPosition();

                    book.Chapters[chapterIndex].Sentences[sentenceIndex].Position = TimeSpan.Parse(sentence.GetAttribute("AudioPosition"));
                    book.Chapters[chapterIndex].Sentences[sentenceIndex].Duration = TimeSpan.Parse(sentence.GetAttribute("Duration"));

                    /*
                     * book.Chapters[chapterIndex].Sentences[sentenceIndex] = new AudioPosition()
                     * {
                     *  Position = TimeSpan.Parse(sentence.GetAttribute("AudioPosition")),
                     *  Duration = TimeSpan.Parse(sentence.GetAttribute("Duration"))
                     * };*/

                    sentenceIndex++;
                }

                chapterIndex++;
            }

            return(book);
        }
Пример #3
0
        /// <summary>
        /// Helper for comparing two books.
        /// </summary>
        /// <param name="a">The baseline book.</param>
        /// <param name="b">The book to compare.</param>
        /// <returns>The differences.</returns>
        private BookDiff CompareBooks(BookDiff a, BookDiff b)
        {
            BookDiff value = new BookDiff();

            value.CompletedTime = a.CompletedTime - b.CompletedTime;

            for (int i = 0; i < a.Chapters.Count; i++)
            {
                value.Chapters.Add(new ChapterDiff());

                for (int j = 0; j < a.Chapters[i].Sentences.Count; j++)
                {
                    value.Chapters[i].Sentences.Add(new AudioPosition());
                    value.Chapters[i].Sentences[j] =
                        b.Chapters[i].Sentences[j] - a.Chapters[i].Sentences[j];
                }
            }

            return(value);
        }