Пример #1
0
        // assumes the ReferenceItem has already been built
        public List<ReferenceItem> BuildVerseListFromRange(ReferenceItem item, BackEndInitializer backend)
        {
            if (item.Range)
            {
                List<ReferenceItem> expandedReferenceList = new List<ReferenceItem>();

                // get list of the books
                int startBookIndex = Array.IndexOf(backend.CurrentBooks, item.StartBook);
                int endBookIndex = Array.IndexOf(backend.CurrentBooks, item.EndBook);
                int startingChapter;
                int endingChapter;
                int startingVerse;
                int endingVerse;
                string book;
                // cycle through the books selected
                for (int bookIndex = startBookIndex; bookIndex <= endBookIndex; bookIndex++)
                {
                    book = backend.CurrentBooks[bookIndex];

                    if (book == item.StartBook) // get starting chapter and verse
                    { startingChapter = (int)item.StartChapter; }
                    else
                    { startingChapter = 1; }
                    if (book == item.EndBook) // get ending chapter and verse
                    { endingChapter = (int)item.EndChapter; }
                    else
                    { endingChapter = backend.CurrentChapters(book).Count(); }

                    // cycle through chapters for current book
                    for (int chapter = startingChapter; chapter <= endingChapter; chapter++)
                    {
                        if (book == item.StartBook && chapter == item.StartChapter)
                        { startingVerse = (int)item.StartVerse; }
                        else
                        { startingVerse = 1; }
                        if (book == item.EndBook && chapter == item.EndChapter)
                        { endingVerse = (int)item.EndVerse; }
                        else
                        { endingVerse = backend.CurrentVerses(book, chapter).Count; }

                        // cycle through verses for currect chapter
                        for (int verse = startingVerse; verse <= endingVerse; verse++)
                        {
                            expandedReferenceList.Add(new ReferenceItem(book, chapter,
                                verse, false, backend.GetVerse(book, chapter, verse)));
                        }
                    }
                }

                return expandedReferenceList;
            }
            else
            {
                return null;
            }
        }
Пример #2
0
        // copy over full reference data on each item
        public void CompleteReferences(BackEndInitializer backend)
        {
            ReferenceItem reference;
            for (int i = 0; i < _referenceList.Count; i++)
            {
                reference = _referenceList[i];
                // handle missing starting references
                if (reference.StartChapter == null) // whole book listed
                {
                    reference.StartChapter = 1;
                    if (reference.Range == false)
                    {
                        reference.EndBook = reference.StartBook;
                        reference.EndChapter = backend.CurrentChapters(reference.StartBook).Last();
                    }
                }
                if (reference.StartVerse == null) // whole chapter listed
                {
                    reference.StartVerse = 1;
                    if (reference.Range == false)
                    {
                        reference.EndBook = reference.StartBook;
                        if (reference.EndChapter == null)
                        {
                            reference.EndChapter = reference.StartChapter;
                        }
                        reference.EndVerse = backend.CurrentVerses(reference.StartBook, (int)reference.EndChapter).Count;
                    }
                }

                // handle missing ending references
                if (reference.Range == true)
                {
                    if (reference.EndBook == null) // no book -- john 3-4
                    {
                        reference.EndBook = reference.StartBook;
                    }

                    if(reference.EndChapter == null && reference.StartBook != reference.EndBook) // 1 john - 2 john
                    {
                        reference.EndChapter = backend.CurrentChapters(reference.EndBook).Last();
                    }
                    else if (reference.EndChapter == null) // no chapter --> john 3:3-5
                    {// so same chapter for start as end
                        reference.EndChapter = reference.StartChapter;
                    }
                    if (reference.EndVerse == null) // no verse --> john 3 - john 4 or john 3 - 4
                    {// so last verse of endChapter
                        reference.EndVerse = backend.CurrentVerses(reference.EndBook, (int)reference.EndChapter).Count;
                    }
                }

                // set reff range to true if range items have been filled in
                if (reference.EndBook != null)
                {
                    reference.Range = true;
                }
            }
        }