コード例 #1
0
ファイル: Controller.cs プロジェクト: zxsean/YuriAVGEngine
        /// <summary>
        /// 新增一篇文章
        /// </summary>
        /// <param name="parentId">上级id</param>
        /// <param name="name">文章的名字</param>
        /// <returns>新增的文章的唯一标识符</returns>
        public string AddArticle(string parentId, string name)
        {
            if (parentId.StartsWith("HBook"))
            {
                parentId = this.BookVector.Find(t => t.BookRef.Id == parentId).BookRef.HomePage.Id;
            }
            var parent = this.ArticleDict[parentId];
            // 记录时间戳
            var createTime = DateTime.Now;
            // 构造主页文章
            FlowDocument flowDoc  = new FlowDocument();
            TextRange    st       = new TextRange(flowDoc.ContentStart, flowDoc.ContentEnd);
            MemoryStream metadata = new MemoryStream();

            st.Save(metadata, System.Windows.DataFormats.XamlPackage);
            HArticle ao = new HArticle()
            {
                Id                = "HArticle#" + Guid.NewGuid(),
                ParentId          = parentId,
                Name              = name,
                CreateTimeStamp   = createTime,
                LastEditTimeStamp = createTime,
                DocumentMetadata  = metadata,
                BookId            = parent.BookId
            };

            this.ArticleDict[ao.Id] = ao;
            parent.ChildrenList.Add(ao);
            // 提交到稳定储存器
            this.BookCommit(parent.BookId);
            return(ao.Id);
        }
コード例 #2
0
        internal static int GetSimpleWordCountByMetadata(HArticle ao)
        {
            var dict = StatisticsWindow.core.mainWndRef.RTBPageCacheDict;

            if (dict.ContainsKey(ao.Id))
            {
                return(StatisticsWindow.GetSimpleWordCount(dict[ao.Id].GetText()));
            }
            else
            {
                RTBPage np = new RTBPage()
                {
                    ArticalRef = ao
                };
                TextRange t = new TextRange(np.RichTextBox_TextArea.Document.ContentStart, np.RichTextBox_TextArea.Document.ContentEnd);
                t.Load(ao.DocumentMetadata, DataFormats.XamlPackage);
                np.UpdateRTBStyle();
                dict[ao.Id] = np;
                return(StatisticsWindow.GetSimpleWordCount(np.GetText()));
            }
        }
コード例 #3
0
ファイル: Controller.cs プロジェクト: zxsean/YuriAVGEngine
        /// <summary>
        /// 添加一本书籍
        /// </summary>
        /// <param name="bookName">书籍的名字</param>
        /// <returns>所添加的书籍的唯一标识符</returns>
        public string AddBook(string bookName)
        {
            // 记录时间戳
            var createTime = DateTime.Now;
            // 构造主页文章
            FlowDocument flowDoc  = new FlowDocument();
            TextRange    st       = new TextRange(flowDoc.ContentStart, flowDoc.ContentEnd);
            MemoryStream metadata = new MemoryStream();

            st.Save(metadata, System.Windows.DataFormats.XamlPackage);
            HArticle homePage = new HArticle()
            {
                Id                = "HArticle#" + Guid.NewGuid(),
                ParentId          = "HArticle#ROOT",
                Name              = bookName,
                CreateTimeStamp   = createTime,
                LastEditTimeStamp = createTime,
                DocumentMetadata  = metadata
            };

            this.ArticleDict[homePage.Id] = homePage;
            // 构造书籍对象
            var   bookId = "HBook#" + Guid.NewGuid();
            HBook hb     = new HBook()
            {
                Id                = bookId,
                Name              = bookName,
                HomePage          = homePage,
                CreateTimeStamp   = createTime,
                LastEditTimeStamp = createTime,
                FileName          = $"{bookId}.{App.AppBookDataExtension}"
            };

            this.BookVector.Add(new BookCacheDescriptor(hb, true));
            homePage.BookId = bookId;
            // 提交到稳定储存器
            this.FullCommit();
            return(bookId);
        }