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)); }
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(); }
/// <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>(); } }
/// <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); }