Пример #1
0
        private void AppendTroparion(Ymnos troparion)
        {
            var view = ViewModelItemFactory.Create(troparion, handler, serializer);

            appendModelAction(new ElementViewModel()
            {
                view
            });
        }
Пример #2
0
        private void AppendHeader(CreateViewModelRequest <KanonasRule> req)
        {
            TextHolder header = GetHeaders(req)[0];

            req.AppendModelAction(new ElementViewModel()
            {
                ViewModelItemFactory.Create(header, req.Handler, Serializer)
            });
        }
Пример #3
0
        protected virtual void ConstructWithCommonRule(CreateViewModelRequest <YmnosStructureRule> req, string key)
        {
            List <RuleElement> children = req.Handler.Settings.Rule.Owner.GetCommonRuleChildren(
                new CommonRuleServiceRequest()
            {
                Key = key, RuleSerializer = Serializer
            }).ToList();

            if (req.Element.Structure.Groups.Count > 0)
            {
                //заполняем header - вставляем номер гласа
                ItemText header     = (children[0] as TextHolder).Paragraphs[0];
                string   headerText = header.StringExpression;
                header.StringExpression = headerText.Replace("[ihos]",
                                                             req.Handler.Settings.Language.IntConverter.ToString(req.Element.Structure.Groups[0].Ihos));

                //а теперь отсчитываем от последней стихиры и добавляем к ней стих из псалма
                //сам стих удаляем из псалма

                TextHolder psalm = new TextHolder(children[2] as TextHolder);

                for (int i = req.Element.Structure.Groups.Count - 1; i >= 0; i--)
                {
                    YmnosGroup group = req.Element.Structure.Groups[i];

                    for (int n = group.Ymnis.Count - 1; n >= 0; n--)
                    {
                        Ymnos ymnos = group.Ymnis[n];

                        ItemTextNoted stihos = psalm.Paragraphs.Last();

                        ymnos.Stihoi.Add(stihos);

                        psalm.Paragraphs.Remove(stihos);
                    }
                }
            }

            //теперь вставляем шапку
            AppendItem(children[0] as TextHolder);
            AppendItem(children[1] as TextHolder);

            //вставляем псалмы
            if ((req.Element as KekragariaRule).ShowPsalm)
            {
                AppendItem(children[2] as TextHolder);
            }

            void AppendItem(TextHolder textHolder)
            {
                req.AppendModelAction(new ElementViewModel()
                {
                    ViewModelItemFactory.Create(textHolder, req.Handler, Serializer)
                });
            }
        }
Пример #4
0
        /// <summary>
        /// Добавляет "Хвалим, благословим..."
        /// </summary>
        private void AppendStihosOdi8(CreateViewModelRequest <KanonasRule> req)
        {
            TextHolder odi8TextHolder = GetHeaders(req)[5];
            var        viewModel      = ViewModelItemFactory.Create(odi8TextHolder, req.Handler, Serializer);

            req.AppendModelAction(new ElementViewModel()
            {
                viewModel
            });
        }
Пример #5
0
 public static void AppendViewModel(this ItemText text, IRuleHandler handler, ElementViewModel viewModel)
 {
     if (text?.IsEmpty == false)
     {
         viewModel.Add(ViewModelItemFactory.Create(TextHolderKind.Text,
                                                   new List <ParagraphViewModel> {
             ParagraphVMFactory.Create(text, handler.Settings.Language.Name)
         }));
     }
 }
Пример #6
0
        private void AppendText(CreateViewModelRequest <PsalmRule> req, BookReading psalmReading)
        {
            //List<string> paragraphs = psalmReading.Text.Select(c => c[req.Handler.Settings.Language.Name]).ToList();
            var paragraphs = ParagraphVMFactory.CreateList(psalmReading.Text, req.Handler.Settings.Language.Name);

            req.AppendModelAction(new ElementViewModel()
            {
                ViewModelItemFactory.Create(TextHolderKind.Lector, paragraphs)
            });
        }
Пример #7
0
        private void AppenOdiHeader(CreateViewModelRequest <KanonasRule> req, int i)
        {
            TextHolder odiTextHolder = GetHeaders(req)[1];

            var viewModel = ViewModelItemFactory.Create(odiTextHolder, req.Handler, Serializer);

            viewModel.Paragraphs[0].
            Replace("[odinumber]", req.Handler.Settings.Language.IntConverter.ToString(i));

            req.AppendModelAction(new ElementViewModel()
            {
                viewModel
            });
        }
Пример #8
0
        protected virtual void InnerAppendCustomForm(CreateViewModelRequest <YmnosStructureRule> req, string key)
        {
            TextHolder header = req.Handler.Settings.Rule.Owner.GetCommonRuleChildren(
                new CommonRuleServiceRequest()
            {
                Key = key, RuleSerializer = Serializer
            })
                                .FirstOrDefault() as TextHolder;

            req.AppendModelAction(new ElementViewModel()
            {
                ViewModelItemFactory.Create(header, req.Handler, Serializer)
            });
        }
Пример #9
0
        public override void Create(CreateViewModelRequest <TextHolder> req)
        {
            if (req.Element == null)
            {
                //TODO: просто ничего не делаем, хотя надо бы это обрабатывать
                return;
            }

            ViewModelItem item = ViewModelItemFactory.Create(req.Element, req.Handler, Serializer);

            req.AppendModelAction(new ElementViewModel()
            {
                item
            });
        }
Пример #10
0
        private void AppendChorus(Odi odi, bool isLastKanonas, bool isOdi8, int i, ItemText defaultChorus)
        {
            var troparion = odi.Troparia[i];

            var kind = ChorusKind.Common;

            if (isLastKanonas)
            {
                //проверяем, если последний канон,
                if (i == odi.Troparia.Count - 2)
                {
                    if (!isOdi8)
                    {
                        //если предпоследний тропарь - Слава
                        kind = ChorusKind.Slava;
                    }
                    else
                    {
                        //если 8-ая песня - Благословим
                        kind = ChorusKind.Blagoslovim;
                    }
                }
                else if (i == odi.Troparia.Count - 1)
                {
                    //если последний - И ныне
                    kind = ChorusKind.Inyne;
                }
            }

            ItemText text = GetChorus(kind, troparion, defaultChorus);

            if ((text?.IsEmpty == false)
                //добавляем пустой припев к Ирмосу в любом случае
                || troparion.Kind == YmnosKind.Irmos)
            {
                //добавляем припев
                var view = ViewModelItemFactory.Create((kind == ChorusKind.Common) ? ViewModelItemKind.Chorus : ViewModelItemKind.Text,
                                                       new List <ParagraphViewModel>()
                {
                    ParagraphVMFactory.Create(text, handler.Settings.Language.Name)
                }, handler, serializer);

                appendModelAction(new ElementViewModel()
                {
                    view
                });
            }
        }
Пример #11
0
        private void AppendKanonasHeader(CreateViewModelRequest <KanonasRule> req, Kanonas kanonas)
        {
            int hash = kanonas.GetHashCode();

            ViewModelItem view = null;

            if (!kanonasHeaders.ContainsKey(hash))
            {
                TextHolder holder = null;
                string     name   = "";
                if (kanonas.Name != null)
                {
                    holder = GetHeaders(req)[2];
                    name   = kanonas.Name[req.Handler.Settings.Language.Name];
                }
                else
                {
                    holder = GetHeaders(req)[3];
                }

                var kanonasP = ParagraphVMFactory.Create(holder.Paragraphs[0], req.Handler.Settings.Language.Name);
                kanonasP.Replace("[kanonas]", name);
                kanonasP.Replace("[ihos]", req.Handler.Settings.Language.IntConverter.ToString(kanonas.Ihos));

                view = ViewModelItemFactory.Create(TextHolderKind.Text, new List <ParagraphViewModel>()
                {
                    kanonasP
                });


                //string kanonasString = holder.Paragraphs[0][req.Handler.Settings.Language.Name];
                //kanonasString = kanonasString.Replace("[kanonas]", name).
                //                              Replace("[ihos]", req.Handler.Settings.Language.IntConverter.ToString(kanonas.Ihos));
                //view = ViewModelItemFactory.Create(TextHolderKind.Text, new List<string> { kanonasString });

                kanonasHeaders.Add(hash, view);
            }
            else
            {
                view = kanonasHeaders[hash];
            }

            req.AppendModelAction(new ElementViewModel()
            {
                view
            });
        }
Пример #12
0
        private (ViewModelItem Kontakion, ViewModelItem Ikos) GetHeaders(CreateViewModelRequest <KontakionRule> req, YmnosStructure kontakion)
        {
            List <TextHolder> headers = req.Handler.Settings.Rule.Owner.GetCommonRuleChildren(
                new CommonRuleServiceRequest()
            {
                Key = CommonRuleConstants.Kontakion, RuleSerializer = Serializer
            }).Cast <TextHolder>().ToList();

            var viewKontakion = ViewModelItemFactory.Create(headers[0], req.Handler, Serializer);

            viewKontakion.Paragraphs[0].Replace(IHOS_STRING,
                                                req.Handler.Settings.Language.IntConverter.ToString(kontakion.Ihos));

            var viewIkos = ViewModelItemFactory.Create(headers[1], req.Handler, Serializer);

            return(viewKontakion, viewIkos);
        }
Пример #13
0
        private void AppendHeader(CreateViewModelRequest <PsalmRule> req)
        {
            TextHolder header = req.Handler.Settings.Rule.Owner.GetCommonRuleChildren(
                new CommonRuleServiceRequest()
            {
                Key = CommonRuleConstants.Psalm, RuleSerializer = Serializer
            })
                                .FirstOrDefault() as TextHolder;

            var viewHeader = ViewModelItemFactory.Create(header, req.Handler, Serializer);

            //вставляем номер Псалма
            viewHeader.Paragraphs[0].Replace(NUMBER, req.Handler.Settings.Language.IntConverter.ToString(req.Element.Number));

            req.AppendModelAction(new ElementViewModel()
            {
                viewHeader
            });
        }
Пример #14
0
        private static void AppendYmnis(List <Ymnos> ymnis, IRuleHandler handler,
                                        IRuleSerializerRoot serializer, ElementViewModel viewModel)
        {
            var text = GetStringValues(handler, serializer);

            foreach (Ymnos ymnos in ymnis)
            {
                //добавляем стих и песнопение как отдельные объекты
                foreach (ItemText stihos in ymnos.Stihoi)
                {
                    viewModel.Add(ViewModelItemFactory.Create(TextHolderKind.Stihos, text.StihosText,
                                                              new List <ParagraphViewModel> {
                        ParagraphVMFactory.Create(stihos, handler.Settings.Language.Name)
                    }));
                }

                viewModel.Add(ViewModelItemFactory.Create(TextHolderKind.Choir, text.ChoirText,
                                                          new List <ParagraphViewModel> {
                    ParagraphVMFactory.Create(ymnos.Text, handler.Settings.Language.Name)
                }));
            }
        }
Пример #15
0
        public static void AppendViewModel(this Prosomoion prosomoion, IRuleHandler handler,
                                           IRuleSerializerRoot serializer, ElementViewModel viewModel, int?ihos = null)
        {
            TypiconEntity            typ = handler.Settings.Rule.Owner;
            CommonRuleServiceRequest req = new CommonRuleServiceRequest()
            {
                RuleSerializer = serializer
            };

            string str = "";

            if (ihos != null)
            {
                //текст "Глас"
                req.Key = CommonRuleConstants.IhosText;
                string ihosString = handler.Settings.Language.IntConverter.ToString((int)ihos);
                str += $"{typ.GetCommonRuleTextValue(req, handler.Settings.Language.Name)} {ihosString}. ";
            }

            //самоподобен?
            if (prosomoion?.Self == true)
            {
                req.Key = CommonRuleConstants.SelfText;
                str    += typ.GetCommonRuleTextValue(req, handler.Settings.Language.Name);
            }
            //если подобен
            else if (prosomoion?.IsEmpty == false)
            {
                req.Key = CommonRuleConstants.ProsomoionText;
                string p = typ.GetCommonRuleTextValue(req, handler.Settings.Language.Name);

                str += $"{p}: \"{ prosomoion[handler.Settings.Language.Name] }\"";
            }

            viewModel.Add(ViewModelItemFactory.Create(TextHolderKind.Text,
                                                      new List <ParagraphViewModel> {
                ParagraphVMFactory.Create(str)
            }));
        }
Пример #16
0
        private void AppendKatavasiaHeader(CreateViewModelRequest <KanonasRule> req, int ihos)
        {
            if (katavasiaHeader == null)
            {
                var katavasiaP = ParagraphVMFactory.Create(GetHeaders(req)[4].Paragraphs[0], req.Handler.Settings.Language.Name);
                katavasiaP.Replace("[ihos]", req.Handler.Settings.Language.IntConverter.ToString(ihos));

                katavasiaHeader = ViewModelItemFactory.Create(TextHolderKind.Text, new List <ParagraphViewModel>()
                {
                    katavasiaP
                });

                //string str = GetHeaders(req)[4].Paragraphs[0][req.Handler.Settings.Language.Name];
                //str = str.Replace("[ihos]", req.Handler.Settings.Language.IntConverter.ToString(ihos));

                //katavasiaHeader = ViewModelItemFactory.Create(TextHolderKind.Text, new List<string> { str });
            }

            req.AppendModelAction(new ElementViewModel()
            {
                katavasiaHeader
            });
        }