예제 #1
0
 private void _TouchTapped(object sender, TappedRoutedEventArgs e)
 {
     if (e.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Mouse)
     {
         e.Handled = true;
         var position = e.GetPosition(this);
         TouchTapped?.Invoke(this, new PositionEventArgs(position));
     }
 }
        private void _TouchTapped(object sender, TappedRoutedEventArgs e)
        {
            if (e.PointerDeviceType != Windows.Devices.Input.PointerDeviceType.Mouse)
            {
                e.Handled = true;
            }
            else
            {
                var temp = _displayBlock.GetPositionFromPoint(new Point(0, 0));
                _displayBlock.Select(temp, temp);
            }
            var position = e.GetPosition(this);

            TouchTapped?.Invoke(this, new PositionEventArgs(position, e.PointerDeviceType));
        }
예제 #3
0
 protected override void OnApplyTemplate()
 {
     _contentContainer                 = GetTemplateChild("ContentContainer") as Grid;
     _readerView                       = GetTemplateChild("ReaderView") as ReaderView;
     _readerView.PrevPageSelected     += OnPrevPageSelected;
     _readerView.NextPageSelected     += OnNextPageSelected;
     _readerView.LoadingStatusChanged += OnLoad;
     _readerView.ProgressChanged      += OnProgressChanged;
     _readerView.TouchHolding         += OnTouchHolding;
     _readerView.TouchTapped          += (_s, _e) => { TouchTapped?.Invoke(_s, _e); };
     _readerView.Loaded               += (_s, _e) =>
     {
         _readerView.SingleColumnMaxWidth = SingleColumnMaxWidth;
         _readerView.ReaderFlyout         = ReaderFlyout;
         ViewLoaded?.Invoke(this, EventArgs.Empty);
     };
     _readerView.LinkTapped  += (_s, _e) => { LinkTapped?.Invoke(this, _e); };
     _readerView.ImageTapped += (_s, _e) => { ImageTapped?.Invoke(this, _e); };
     _rootGrid = GetTemplateChild("RootGrid") as Grid;
     base.OnApplyTemplate();
 }
예제 #4
0
        /// <summary>
        /// 加载自定义视图(通常用于在线阅读)
        /// </summary>
        /// <param name="chapters">目录列表</param>
        /// <param name="style">视图样式</param>
        /// <param name="details">目录详情列表(其中包含单个章节的内容)</param>
        public void LoadCustomView(List <Chapter> chapters, TxtViewStyle style, List <ChapterDetail> details = null)
        {
            if (chapters == null || chapters.Count == 0 || style == null)
            {
                throw new ArgumentNullException();
            }

            ReaderType = Enums.ReaderType.Custom;
            Chapters   = chapters;
            if (_mainPresenter.Content == null || !(_mainPresenter.Content is TxtView))
            {
                if (_txtView == null)
                {
                    _txtView = new TxtView();
                    _txtView.PrevPageSelected     += OnPrevPageSelected;
                    _txtView.NextPageSelected     += OnNextPageSelected;
                    _txtView.LoadingStatusChanged += OnLoad;
                    _txtView.ProgressChanged      += OnProgressChanged;
                    _txtView.TouchHolding         += OnTouchHolding;
                    _txtView.TouchTapped          += (_s, _e) => { TouchTapped?.Invoke(_s, _e); };
                    _txtView.Loaded += (_s, _e) =>
                    {
                        _txtView.SingleColumnMaxWidth = SingleColumnMaxWidth;
                        _txtView.ReaderFlyout         = ReaderFlyout;
                        ViewLoaded?.Invoke(this, EventArgs.Empty);
                    };
                }
                _mainPresenter.Content = _txtView;
            }
            _txtView.ViewStyle = style;
            if (details != null)
            {
                CustomChapterDetailList = details;
            }
            else
            {
                CustomChapterDetailList = new List <ChapterDetail>();
            }
        }
예제 #5
0
        /// <summary>
        /// 打开书籍文件
        /// </summary>
        /// <param name="bookFile">书籍文件</param>
        /// <param name="style">阅读器样式</param>
        /// <returns></returns>
        public async Task OpenAsync(StorageFile bookFile, ReaderStyle style)
        {
            if (bookFile == null)
            {
                throw new ArgumentNullException();
            }

            string extension = Path.GetExtension(bookFile.Path).ToLower();

            if (extension != ".epub" && extension != ".txt")
            {
                throw new NotSupportedException("File type not support (Currently only support txt and epub file)");
            }
            OpenStarting?.Invoke(this, EventArgs.Empty);
            if (extension == ".txt")
            {
                if (!(style is TxtViewStyle))
                {
                    throw new ArgumentException("Open txt file need TxtViewStyle argument");
                }
                ReaderType = Enums.ReaderType.Txt;
                Chapters   = await GetTxtChapters(bookFile);

                ChapterLoaded?.Invoke(this, Chapters);
                if (_mainPresenter.Content == null || !(_mainPresenter.Content is TxtView))
                {
                    if (_txtView == null)
                    {
                        _txtView = new TxtView();
                        _txtView.PrevPageSelected     += OnPrevPageSelected;
                        _txtView.NextPageSelected     += OnNextPageSelected;
                        _txtView.LoadingStatusChanged += OnLoad;
                        _txtView.ProgressChanged      += OnProgressChanged;
                        _txtView.TouchHolding         += OnTouchHolding;
                        _txtView.TouchTapped          += (_s, _e) => { TouchTapped?.Invoke(_s, _e); };
                        _txtView.Loaded += (_s, _e) =>
                        {
                            _txtView.SingleColumnMaxWidth = SingleColumnMaxWidth;
                            _txtView.ReaderFlyout         = ReaderFlyout;
                            ViewLoaded?.Invoke(this, EventArgs.Empty);
                        };
                    }
                    _mainPresenter.Content = _txtView;
                }
                _txtContent = await GetTxtContent(bookFile);

                _txtView.ViewStyle = style as TxtViewStyle;
            }
            else
            {
                if (!(style is EpubViewStyle))
                {
                    throw new ArgumentException("Open epub file need EpubViewStyle argument");
                }
                ReaderType   = Enums.ReaderType.Epub;
                _epubContent = await EpubReader.Read(bookFile, Encoding.Default);

                Chapters = GetEpubChapters(_epubContent);
                ChapterLoaded?.Invoke(this, Chapters);
                if (_mainPresenter.Content == null || !(_mainPresenter.Content is EpubView))
                {
                    if (_epubView == null)
                    {
                        _epubView = new EpubView();
                        _epubView.PrevPageSelected     += OnPrevPageSelected;
                        _epubView.NextPageSelected     += OnNextPageSelected;
                        _epubView.LoadingStatusChanged += OnLoad;
                        _epubView.ProgressChanged      += OnProgressChanged;
                        _epubView.TouchHolding         += OnTouchHolding;
                        _epubView.TouchTapped          += (_s, _e) => { TouchTapped?.Invoke(_s, _e); };
                        _epubView.Loaded += (_s, _e) =>
                        {
                            _epubView.SingleColumnMaxWidth = SingleColumnMaxWidth;
                            _epubView.ReaderFlyout         = ReaderFlyout;
                            ViewLoaded?.Invoke(this, EventArgs.Empty);
                        };
                        _epubView.LinkTapped  += (_s, _e) => { LinkTapped?.Invoke(this, _e); };
                        _epubView.ImageTapped += (_s, _e) => { ImageTapped?.Invoke(this, _e); };
                    }

                    _mainPresenter.Content = _epubView;
                }
                _epubView.Init(_epubContent, style as EpubViewStyle);
            }
            OpenCompleted?.Invoke(this, EventArgs.Empty);
        }