예제 #1
0
 public bool IsModified()
 {
     if (Verse.IsNotNull() && Verse.Text.IsNullOrEmpty())
     {
         return(true);
     }
     foreach (var item in flowLayoutPanel.Controls)
     {
         if (item is VerseWordEditorControl)
         {
             if ((item as VerseWordEditorControl).Modified)
             {
                 return(true);
             }
         }
     }
     return(default);
예제 #2
0
        public void LoadData(Verse verse, bool loadOtherTranslations = true)
        {
            Verse = verse;
            Words = new List <VerseWordInfo>();
            if (verse.IsNotNull())
            {
                foreach (var item in verse.VerseWords.OrderBy(x => x.NumberOfVerseWord))
                {
                    Words.Add(new VerseWordInfo(item));
                }
            }
            gridControl.DataSource = Words;

            cbStartFromNewLine.Checked = Verse.StartFromNewLine;

            txtStoryTextLevel1.Text = String.Empty;
            txtStoryTextLevel2.Text = String.Empty;

            var subtitles = Verse.ParentChapter.Subtitles.Where(x => x.BeforeVerseNumber == Verse.NumberOfVerse);

            foreach (var subtitle in subtitles)
            {
                if (subtitle.Level == 1)
                {
                    txtStoryTextLevel1.Text = subtitle.Text;
                }
                else if (subtitle.Level == 2)
                {
                    txtStoryTextLevel2.Text = subtitle.Text;
                }
            }

            if (loadOtherTranslations)
            {
                var getTranslations = Task.Factory.StartNew(() => {
                    var index = new VerseIndex(Verse.Index);
                    var list  = new List <TranslationVerseInfo>();
                    var view  = new XPView(Verse.Session, typeof(Translation))
                    {
                        CriteriaString = "(([Type] = 4) OR ([Type] = 2)) AND [Hidden] = 0"
                    };
                    view.Properties.Add(new ViewProperty("Oid", SortDirection.None, "[Oid]", false, true));
                    view.Properties.Add(new ViewProperty("Name", SortDirection.None, "[Name]", false, true));
                    view.Properties.Add(new ViewProperty("Type", SortDirection.None, "[Type]", false, true));

                    var indexes = new List <string>();
                    foreach (ViewRecord item in view)
                    {
                        var name   = item["Name"].ToString();
                        var _index = $"{name.Replace("'", "").Replace("+", "")}.{index.NumberOfBook}.{index.NumberOfChapter}.{index.NumberOfVerse}";
                        indexes.Add(_index);

                        var tvi = new TranslationVerseInfo()
                        {
                            TranslationName = name.Replace("'", "").Replace("+", ""),
                            SortIndex       = ((TranslationType)item["Type"]).GetCategory().ToInt()
                        };
                        list.Add(tvi);
                    }

                    var _view = new XPView(Verse.Session, typeof(Verse))
                    {
                        Criteria = new DevExpress.Data.Filtering.InOperator("Index", indexes)
                    };

                    _view.Properties.Add(new ViewProperty("Index", SortDirection.None, "[Index]", false, true));
                    _view.Properties.Add(new ViewProperty("Text", SortDirection.None, "[Text]", false, true));

                    foreach (ViewRecord item in _view)
                    {
                        var idx = new VerseIndex(item["Index"].ToString());
                        var tvi = list.Where(x => x.TranslationName == idx.TranslationName).FirstOrDefault();
                        if (tvi.IsNotNull())
                        {
                            tvi.VerseText = item["Text"].ToString().Replace("<pb/>", "").Replace("<t>", "").Replace("<m>", "").Replace("</t>", "").Replace("</m>", "").Replace("<e>", "").Replace("</e>", "");
                        }
                        ;
                    }

                    //foreach (ViewRecord item in view) {
                    //    var id = item["Oid"].ToInt();
                    //    var name = item["Name"].ToString();
                    //    var tvi = new TranslationVerseInfo() {
                    //        TranslationName = name
                    //    };

                    //    var _index = $"{name.Replace("'", "").Replace("+", "")}.{index.NumberOfBook}.{index.NumberOfChapter}.{index.NumberOfVerse}";

                    //    var _view = new XPView(Verse.Session, typeof(Verse)) {
                    //        CriteriaString = $"[Index] = '{_index}'"
                    //    };
                    //    _view.Properties.Add(new ViewProperty("Text", SortDirection.None, "[Text]", false, true));
                    //    foreach (ViewRecord _item in _view) {
                    //        tvi.VerseText = _item["Text"].ToString().Replace("<pb/>", "").Replace("<t>", "").Replace("<m>", "").Replace("</t>", "").Replace("</m>", "").Replace("<e>", "").Replace("</e>", "");
                    //    }
                    //    if (tvi.VerseText.IsNotNullOrEmpty()) {
                    //        list.Add(tvi);
                    //    }
                    //}

                    return(list.Where(x => x.VerseText.IsNotNullOrEmpty()).OrderBy(x => x.SortIndex).ToList());
                });

                getTranslations.ContinueWith((x) => {
                    this.SafeInvoke(f => {
                        f.gridTranslations.DataSource = x.Result;
                        f.viewTranslations.BestFitColumns();
                        f.viewTranslations.LoadingPanelVisible = false;
                    });
                });
            }
            else
            {
                tabVerseTranslations.PageVisible     = false;
                viewTranslations.LoadingPanelVisible = false;
            }
        }