Ejemplo n.º 1
0
        private void lbSearchVerses_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lbSearchVerses.SelectedIndex == -1)
            {
                return;
            }
            BibleSearchResult si = (BibleSearchResult)lbSearchVerses.Items[lbSearchVerses.SelectedIndex];

            // Map search version to primary version
            int    chap      = si.bibVerse.RefChapter;
            int    verse     = si.bibVerse.RefVerse;
            string primTrans = Program.ConfigHelper.BiblePrimaryTranslation;

            if (si.bibVerse.RefVersion != primTrans)
            {
                if (((si.bibVerse.RefVersion == "RST" || si.bibVerse.RefVersion == "UK") && primTrans == "KJV") ||
                    ((primTrans == "RST" || primTrans == "UK") && si.bibVerse.RefVersion == "KJV"))
                {
                    chap  = si.bibVerse.SecondaryChapter;
                    verse = si.bibVerse.SecondaryVerse;
                }
            }

            // Select verse in the list
            SelectVerse(si.bibVerse.RefBook, chap, verse);
            UpdateStartButtons();
        }
Ejemplo n.º 2
0
        public static List <BibleSearchResult> Search(List <string> searchTerms)
        {
            if (searchTerms.Count < 1)
            {
                throw (new ApplicationException("No search terms"));
            }

            // Double check sql
            string p = ",./<>?[]\\{}|!@#$%^&*()-=_+:;'\"";

            foreach (string str in searchTerms)
            {
                if (str.IndexOfAny(p.ToCharArray()) != -1)
                {
                    throw (new ApplicationException("Malformed sql passed to Search"));
                }
            }

            // Build the query
            string query = "SELECT \"VERSION\", \"REFBOOK\", \"REFCHAPTER\", \"REFVERSE\", \"DATA\", \"BOOK\", \"CHAPTER\", \"VERSE\" FROM \"BIBLEVERSES\" WHERE ";

            foreach (string s in searchTerms)
            {
                query += "(\"DATA\" LIKE '%" + s + "%') AND ";
            }
            query = query.Remove(query.Length - 4);

            // Query the database
            List <BibleSearchResult> lResults = new List <BibleSearchResult>();

            using (FBirdTask t = new FBirdTask())
            {
                t.CommandText = query;
                t.ExecuteReader();
                int cutoff = 250;

                while (t.DR.Read() && cutoff > 0)
                {
                    cutoff--;

                    BibleSearchResult r  = new BibleSearchResult();
                    BibleVerse        bv = new BibleVerse();
                    bv.RefVersion       = t.GetString(0);
                    bv.RefBook          = t.GetString(1);
                    bv.RefChapter       = t.GetInt32(2);
                    bv.RefVerse         = t.GetInt32(3);
                    bv.Text             = t.GetString(4);
                    bv.SecondaryBook    = t.GetString(5);
                    bv.SecondaryChapter = t.GetInt32(6);
                    bv.SecondaryVerse   = t.GetInt32(7);
                    r.bibVerse          = bv;
                    r.searchResult      = bv.Text;
                    lResults.Add(r);
                }
            }

            return(lResults);
        }
Ejemplo n.º 3
0
        private void lbSearchVerses_MeasureItem(object sender, MeasureItemEventArgs e)
        {
            if (e.Index < 0)
            {
                return;
            }
            BibleSearchResult si = (BibleSearchResult)lbSearchVerses.Items[e.Index];

            e.ItemHeight = (int)e.Graphics.MeasureString(si.ToString(), lbSearchVerses.Font, lbSearchVerses.Width - 15).Height + 6;
        }
Ejemplo n.º 4
0
 public int Compare(BibleSearchResult x, BibleSearchResult y)
 {
     if (x.score == y.score)
     {
         return(new BibleVerseComparer().Compare(x, y));
     }
     else
     {
         return(x.score.CompareTo(y.score));
     }
 }
Ejemplo n.º 5
0
        private void lbSearchVerses_DrawItem(object sender, DrawItemEventArgs e)
        {
            if (e.Index < 0)
            {
                return;
            }

            // Init
            BibleSearchResult si            = (BibleSearchResult)lbSearchVerses.Items[e.Index];
            string            txt           = si.ToString();
            SolidBrush        brushNormal   = new SolidBrush(Color.FromArgb(223, 223, 223));
            SolidBrush        brushSelected = new SolidBrush(Color.FromArgb(255, 204, 91));
            StringFormat      sf            = new StringFormat();

            sf.SetMeasurableCharacterRanges(SearchHelper.FindCharacterRanges(txt, searchTerms));
            int       h = (int)e.Graphics.MeasureString(txt, lbSearchVerses.Font, lbSearchVerses.Width - 15).Height;
            Rectangle r = new Rectangle(e.Bounds.X + 7, e.Bounds.Y + 3, lbSearchVerses.Width - 15, h);

            // Draw the background
            if ((e.State & DrawItemState.Selected) == DrawItemState.Selected)
            {
                e.Graphics.FillRectangle(brushSelected, e.Bounds.X + 1, e.Bounds.Y + 1, e.Bounds.Width - 2, e.Bounds.Height - 2);
            }
            else
            {
                e.Graphics.FillRectangle(brushNormal, e.Bounds.X + 1, e.Bounds.Y + 1, e.Bounds.Width - 2, e.Bounds.Height - 2);
            }

            // Fill in the highlights
            foreach (Region rg in e.Graphics.MeasureCharacterRanges(txt, lbSearchVerses.Font, r, sf))
            {
                e.Graphics.FillRegion(new SolidBrush(Color.FromArgb(100, Color.Yellow)), rg);
            }

            // Draw text
            if (si.score > 600)
            {
                e.Graphics.DrawString(txt, lbSearchVerses.Font, new SolidBrush(Color.FromArgb(80, 80, 80)), r, sf);
            }
            else
            {
                e.Graphics.DrawString(txt, lbSearchVerses.Font, Brushes.Black, r, sf);
            }
        }