//Search feed for Fragments
 public void DisplayResults(DocumentList sourcedocumentList, ViewPager view, SearchAdapter search, string searchTerm, int count, bool truncate)
 {
     //Syncs the document List objects together
     documentList = sourcedocumentList;
     //Calls GetItem Method from Search Adapter for Display. Required for fragments to display in viewPager
     search.GetItem(count);
     // index = count;
     shareList = "";
     //Saves current Adapter state
     search.SaveState();
     //Displays results
     view.Adapter = search;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Search Method
        /// </summary>
        /// <param name="query"> Search Term</param>
        //281 lines of code
        private void Search(string query)
        {
            #region Variable Declaration

            int  docCount = 1;
            bool truncate = false;
            Log.Info("Search()", String.Format(Resource.String.search_execution_begins + ""));
            documentList = new DocumentList();
            RadioButton radio = FindViewById <RadioButton>(Resource.Id.viewAllRadio);
            this.searchFragmentActivity = new SearchFragmentActivity();
            AssetManager asset = this.Assets;
            //string searchTerm = "";
            bool     proofs = true, answers = true, searchAll = false;
            string[] fileNames = new string[10];
            CheckBox answerCheck = FindViewById <CheckBox>(Resource.Id.AnswerBox), proofCheck = FindViewById <CheckBox>(Resource.Id.proofBox),
                     searchCheck = FindViewById <CheckBox>(Resource.Id.searchAllCheckBox);
            Spinner spinner      = FindViewById <Spinner>(Resource.Id.spinner1);
            #endregion
            Spinner spinner2 = FindViewById <Spinner>(Resource.Id.spinner2);
            spinner.ItemSelected  += new EventHandler <AdapterView.ItemSelectedEventArgs>(Spinner1_ItemSelected);
            spinner2.ItemSelected += new EventHandler <AdapterView.ItemSelectedEventArgs>(Spinner2_ItemSelected);
            //Search Options
            #region Search Options
            // Modify This section
            if (allOpen)
            {
                if (radio.Checked == false)
                {
                    if (answerCheck.Checked)
                    {
                        answers = false;
                    }
                    else
                    {
                        answers = true;
                    }
                    if (proofCheck.Checked)
                    {
                        proofs = false;
                    }
                    else
                    {
                        proofs = true;
                    }
                    if (searchCheck.Checked)
                    {
                        searchAll = true;
                        fileNames = new[] { "Westminster Confession of Faith 1646.txt", "2nd London Baptist Confession of Faith.txt", "1618 Belgic Confession Of Faith.txt",
                                            "1658 Savoy Declaration.txt", "Westminster Larger Catechism.txt", "Westminster Shorter Catechism.txt", "Heidelberg Catechism.txt", "Apostle\'s Creed.txt",
                                            "Nicene Creed.txt", "Athanasian Creed.txt" };
                        docCount = 10;
                    }
                    else
                    {
                        searchAll = false;
                    }
                }
                else
                {
                    answers   = true;
                    searchAll = false;
                    docCount  = 1; proofs = true;
                }
            }
            else if (catechismOpen)
            {
                if (radio.Checked == false)
                {
                    if (answerCheck.Checked)
                    {
                        answers = false;
                    }
                    else
                    {
                        answers = true;
                    }
                    if (proofCheck.Checked)
                    {
                        proofs = false;
                    }
                    else
                    {
                        proofs = true;
                    }
                    if (searchCheck.Checked)
                    {
                        searchAll = true;
                        fileNames = new[] { "Westminster Larger Catechism.txt", "Westminster Shorter Catechism.txt", "Heidelberg Catechism.txt" };
                        docCount  = 3;
                    }
                    else
                    {
                        searchAll = false;
                    }
                }
                else
                {
                    answers   = true;
                    searchAll = false;
                    docCount  = 1; proofs = true;
                }
            }
            else if (confessionOpen)
            {
                if (radio.Checked != true)
                {
                    if (proofCheck.Checked)
                    {
                        proofs = false;
                    }
                    else
                    {
                        proofs = true;
                    }
                    if (searchCheck.Checked)
                    {
                        searchAll = true;
                        fileNames = new[] { "Westminster Confession of Faith 1646.txt", "2nd London Baptist Confession of Faith.txt", "1618 Belgic Confession Of Faith.txt", "1658 Savoy Declaration.txt" };
                        docCount  = 4;
                    }
                    else
                    {
                        searchAll = false;
                    }
                    docCount = 1;
                }
                else
                {
                    proofs   = true; searchAll = false;
                    docCount = 1;
                }
            }
            else if (creedOpen)
            {
                if (searchCheck.Checked)
                {
                    searchAll = true;
                    docCount  = 3;
                    fileNames = new[] { "Apostle\'s Creed.txt", "Nicene Creed.txt", "Athanasian Creed.txt" };
                }
                else
                {
                    proofs   = false; searchAll = false; truncate = false;
                    docCount = 1;
                }
                answers = false;
            }
            Fill(this.documentList, 1, fileNames, answers, proofs, asset, searchAll);
            this.documentList.Truncate = truncate;

            search = query;
            //Results are truncated to the term if true
            if (FindViewById <CheckBox>(Resource.Id.truncateCheck).Checked)
            {
                truncate = true;
            }
            #endregion
            Log.Info("Search()", String.Format(Resource.String.search_status_sorting + ""));
            //If topic is filled
            if (radio.Checked != true && query != "" && FindViewById <RadioButton>(Resource.Id.topicRadio).Checked)
            {
                if (FindViewById <RadioButton>(Resource.Id.topicRadio).Checked)
                {
                    stopwatch.Start();
                    FilterResults(this.documentList, truncate, answers, proofs, searchAll, query);
                    this.documentList.Reverse();
                    stopwatch.Stop();
                }
            }
            //if Chapter is filled
            else if (FindViewById <RadioButton>(Resource.Id.chapterRadio).Checked & query != "")
            {
                int searchInt = Int32.Parse(query);
                FilterResults(this.documentList, truncate, answers, proofs, searchAll, searchInt);
            }
            //if View Document is checked
            else if (FindViewById <RadioButton>(Resource.Id.viewAllRadio).Checked)
            {
                if (!FindViewById <CheckBox>(Resource.Id.searchAllCheckBox).Checked)
                {
                    query = this.documentList.Title;
                }
                else
                {
                    query = "View All";
                }
            }
            //Display Results
            Log.Info("Search Method", "Displaying Results");
            if (documentList.Count > 1)
            {
                SetContentView(Resource.Layout.search_results);
                ViewPager     viewPager = FindViewById <ViewPager>(Resource.Id.viewpager);
                SearchAdapter adapter   = new SearchAdapter(SupportFragmentManager, this.documentList, query, truncate);
                //Sets the final state of application
                this.searchFragmentActivity.DisplayResults(this.documentList, viewPager, adapter, query, 1, truncate);
                SetTitle(Resource.String.search_results_title);
            }
            //Single result or no results found
            else
            {
                stopwatch.Stop();
                //If There are no Search Results
                if (this.documentList.Empty)
                {
                    #region Error Logging
                    Log.Info("Search()", String.Format("No Results were found for {0}", query));
                    Toast.MakeText(this, String.Format("No results were found for  {0}", query), ToastLength.Long).Show();
                    #endregion
                    #region Variable Declaration and Assignment

                    SetContentView(Resource.Layout.errorLayout);
                    TextView errorMsg = FindViewById <TextView>(Resource.Id.errorTV);
                    errorMsg.Text = String.Format("No Search Results were found for {0}\r\n\r\n" +
                                                  "Go back to home page to search for another topic", query);


                    #endregion
                    #region Dialog Box
                    Android.App.AlertDialog.Builder alert = new Android.App.AlertDialog.Builder(this);
                    alert.SetTitle(Resource.String.zero_results_title);
                    alert.SetMessage(String.Format("No Results were found for {0}.\r\n\r\n" +
                                                   "Do you want to go back and search for another topic?", query));
                    alert.SetPositiveButton("Yes", (senderAlert, args) =>
                    {
                        intent = new Intent(this, Class);
                        searchFragmentActivity = null;
                        this.OnStop();
                        this.Finish();
                        StartActivity(intent);
                    });
                    alert.SetNegativeButton("No", (senderAlert, args) => { alert.Dispose(); });

                    Dialog dialog = alert.Create();
                    dialog.Show();
                    #endregion
                    SetTitle(Resource.String.error_results);
                }
                //If there is only 1 search result
                else
                {
                    SetTitle(Resource.String.search_results_title);
                    Document document = this.documentList[this.documentList.Count];
                    //Display Catechism Results
                    if (document.Type == "CATECHISM")
                    {
                        this.SetContentView(Resource.Layout.catechism_Results);
                        TextView  questionBox = FindViewById <TextView>(Resource.Id.chapterText);
                        TextView  answerBox   = FindViewById <TextView>(Resource.Id.answerText);
                        TextView  numberBox   = FindViewById <TextView>(Resource.Id.confessionChLabel);
                        TextView  proofBox    = FindViewById <TextView>(Resource.Id.proofText);
                        TextView  proofView   = FindViewById <TextView>(Resource.Id.proofLabel);
                        TextView  docTitleBox = FindViewById <TextView>(Resource.Id.documentTitleLabel);
                        Catechism catechism   = (Catechism)document;
                        questionBox.Text = catechism.Question;
                        answerBox.Text   = catechism.Answer;
                        numberBox.Text   = String.Format("Question {0}: {1}", catechism.IDNumber.ToString(), catechism.Title);
                        proofBox.Text    = catechism.Proofs;
                        docTitleBox.Text = catechism.DocTitle;
                        ChangeColor(true, Android.Graphics.Color.Black, questionBox, answerBox, proofBox, numberBox, docTitleBox);
                        ChangeColor(false, Android.Graphics.Color.Black, proofView, FindViewById <TextView>(Resource.Id.catechismAnswerLabel));
                        shareList = docTitleBox.Text + newLine + String.Format("Question {0}:", catechism.IDNumber.ToString("d3")) + newLine + questionBox.Text + newLine + "Answer:" + newLine +
                                    answerBox.Text + newLine + "Proofs:" + newLine + proofBox.Text;
                        FloatingActionButton fab = FindViewById <FloatingActionButton>(Resource.Id.shareActionButton);
                        ChangeColor(fab, Android.Graphics.Color.Black);
                        fab.Click += ShareContent;
                    }
                    //Display Confession Results
                    else if (document.Type == "CONFESSION")
                    {
                        SetContentView(Resource.Layout.confession_results);
                        TextView   chapterBox  = FindViewById <TextView>(Resource.Id.chapterText);
                        TextView   proofBox    = FindViewById <TextView>(Resource.Id.proofText);
                        TextView   chNumbBox   = FindViewById <TextView>(Resource.Id.confessionChLabel);
                        TextView   docTitleBox = FindViewById <TextView>(Resource.Id.documentTitleLabel);
                        Confession confession  = (Confession)document;
                        chapterBox.Text  = confession.Chapter;
                        chNumbBox.Text   = String.Format("Chapter {0} : {1}", confession.IDNumber.ToString(), confession.Title);
                        proofBox.Text    = confession.Proofs;
                        docTitleBox.Text = confession.DocTitle;
                        TextView proofView = FindViewById <TextView>(Resource.Id.proofLabel);
                        ChangeColor(true, Android.Graphics.Color.Black, chapterBox, proofBox, chNumbBox, docTitleBox);
                        ChangeColor(proofView, false, Android.Graphics.Color.Black);
                        shareList = docTitleBox.Text + newLine + chNumbBox.Text + newLine + chapterBox.Text + newLine + "Proofs" + newLine + proofBox.Text;
                        FloatingActionButton fab = FindViewById <FloatingActionButton>(Resource.Id.shareActionButton);
                        ChangeColor(fab, Android.Graphics.Color.Black);

                        fab.Click += ShareContent;
                    }
                    //Display Creed Results
                    else if (document.Type == "CREED")
                    {
                        SetContentView(Resource.Layout.creed_Results);
                        Creed    creed    = (Creed)document;
                        TextView creedBox = FindViewById <TextView>(Resource.Id.chapterText);
                        TextView titleBox = FindViewById <TextView>(Resource.Id.documentTitleLabel);
                        SetTitle(Resource.String.search_results_title);
                        creedBox.Text = creed.CreedText; titleBox.Text = documentList.Title;
                        shareList     = titleBox.Text + newLine + creed.CreedText;
                        FloatingActionButton fab = FindViewById <FloatingActionButton>(Resource.Id.shareActionButton);
                        ChangeColor(fab, Android.Graphics.Color.Black);
                        ChangeColor(true, Android.Graphics.Color.Black, creedBox, titleBox);
                        fab.Click += ShareContent;
                    }
                }
            }
            Toast.MakeText(this, String.Format("Search Completed for {0}" + "\r\n" + "{1} ms Passed", query, stopwatch.ElapsedMilliseconds.ToString()), ToastLength.Long).Show();
        }