/// <summary>
 /// Пытается добавить текст автора в очередь закачки.
 /// Если уже есть в кеше, то не добавляет, а возвращает из кеша.
 /// </summary>
 /// <param name="author">Автор</param>
 /// <param name="text">Текст</param>
 /// <returns>Элемент очереди, либо из кеша</returns>
 public static DownloadTextItem Add(Author author, AuthorText text)
 {
     foreach (DownloadTextItem downloadTextItem in DownloadTextItems)
     {
         if (downloadTextItem.GetHashCode() == (new DownloadTextItem(author, text)).GetHashCode())
             return downloadTextItem;
     }
     DownloadTextItem item = new DownloadTextItem(author, text) {Logger = _logger};
     if (item.Text == null)
         DownloadTextItems.Add(item);
     ChangeVisibility();
     return item;
 }
        /// <summary>
        /// Пытается добавить текст автора в очередь закачки.
        /// Если уже есть в кеше, то не добавляет, а возвращает из кеша.
        /// </summary>
        /// <param name="author">Автор</param>
        /// <param name="text">Текст</param>
        /// <returns>Элемент очереди, либо из кеша</returns>
        public static DownloadTextItem Add(Author author, AuthorText text)
        {
            foreach (DownloadTextItem downloadTextItem in DownloadTextItems)
            {
                if (downloadTextItem.GetHashCode() == (new DownloadTextItem(author, text)).GetHashCode())
                {
                    return(downloadTextItem);
                }
            }
            DownloadTextItem item = new DownloadTextItem(author, text)
            {
                Logger = _logger
            };

            if (item.Text == null)
            {
                DownloadTextItems.Add(item);
            }
            ChangeVisibility();
            return(item);
        }
        public void ShowReader(string xamlFileName, DownloadTextItem downloadTextItem )
        {
            _downloadTextItem = downloadTextItem;
            SwitchTextsButton.DataContext = downloadTextItem.AuthorText; // для байндинга енейблинга или нет кнопки
            downloadTextItem.AuthorText.UpdateHasDiff(downloadTextItem.GetAuthor()); // проверим наличие файла различий, если он есть кнопка показа автоматом разблокируется

            string title = downloadTextItem.AuthorText.Name;
            string xamlText = File.ReadAllText(xamlFileName, Encoding.GetEncoding(1251));
            StringReader input = new StringReader(xamlText);
            XmlTextReader reader = new XmlTextReader(input);
            content = System.Windows.Markup.XamlReader.Load(reader) as FlowDocument;

            if (content != null)
            {
                XamlReaderControl.Document = content;
                XamlReaderControl.Document.ColumnWidth = 800;
            }
            reader.Close();
            Title = title;
            Show();
            //if (XamlReaderControl.CanGoToPage(2))
            //    NavigationCommands.GoToPage.Execute(2, XamlReaderControl);
        }
示例#4
0
        public void ShowReader(string xamlFileName, DownloadTextItem downloadTextItem)
        {
            _downloadTextItem             = downloadTextItem;
            SwitchTextsButton.DataContext = downloadTextItem.AuthorText;             // для байндинга енейблинга или нет кнопки
            downloadTextItem.AuthorText.UpdateHasDiff(downloadTextItem.GetAuthor()); // проверим наличие файла различий, если он есть кнопка показа автоматом разблокируется

            string        title    = downloadTextItem.AuthorText.Name;
            string        xamlText = File.ReadAllText(xamlFileName, Encoding.GetEncoding(1251));
            StringReader  input    = new StringReader(xamlText);
            XmlTextReader reader   = new XmlTextReader(input);

            content = System.Windows.Markup.XamlReader.Load(reader) as FlowDocument;

            if (content != null)
            {
                XamlReaderControl.Document             = content;
                XamlReaderControl.Document.ColumnWidth = 800;
            }
            reader.Close();
            Title = title;
            Show();
            //if (XamlReaderControl.CanGoToPage(2))
            //    NavigationCommands.GoToPage.Execute(2, XamlReaderControl);
        }
 private void ItemDownloadTextComplete(DownloadTextItem sender, DownloadDataCompletedEventArgs e)
 {
     if (sender.ReaderType == null) sender.ReaderType = MainWindow.GetSettings().DefaultReader;
     sender.DownloadTextComplete -= ItemDownloadTextComplete;
     if ((e == null) || ((e.Error == null) && (!e.Cancelled)))
     {
         switch (sender.ReaderType)
         {
             case 1: // внутренняя читалка
                 sender.Logger.Add(string.Format("Открывается книга '{0}'.", sender.AuthorText.Name));
                 SIXamlReader reader = new SIXamlReader(MainWindow.GetSettings());
                 if (!File.Exists(sender.GetCachedFileName()+".xaml"))
                 {
                     File.WriteAllText(sender.GetCachedFileName() + ".xaml", sender.Xaml, Encoding.GetEncoding(1251));
                 }
                 UpdateView(false);
                 reader.ShowReader(sender.GetCachedFileName() + ".xaml", sender);
                 break;
             case 3: // другая читалка
                 if (MainWindow.GetSettings().AlternativeReader.Trim().Length == 0)
                 {
                     sender.Logger.Add("Не задана внешняя читалка");
                     break;
                 }
                 if (!File.Exists(MainWindow.GetSettings().AlternativeReader.Trim()))
                 {
                     sender.Logger.Add(string.Format("Не найдена внешняя читалка '{0}'",
                                                     MainWindow.GetSettings().AlternativeReader.Trim()));
                     break;
                 }
                 if ((MainWindow.GetSettings().BookConverter.Trim().Length != 0) && (!File.Exists(MainWindow.GetSettings().BookConverter.Trim())))
                 {
                     sender.Logger.Add(string.Format("Не найден конвертер '{0}'", MainWindow.GetSettings().BookConverter.Trim()));
                     break;
                 }
                 UpdateView(false);
                 StartReader(MainWindow.GetSettings(), sender);
                 break;
             default:
                 break;
         }
     }
 }
 private void ItemDownloadSaveComplete(DownloadTextItem sender, DownloadDataCompletedEventArgs args)
 {
     sender.DownloadTextComplete -= ItemDownloadTextComplete;
     if ((args == null) || ((args.Error == null) && (!args.Cancelled)))
     {
         if (sender.Text != null)
         {
             SaveFileDialog dialog = new SaveFileDialog
                                         {
                                             AddExtension = true,
                                             Filter = "HTML-файлы|*.html|Все файлы|*.*",
                                             ValidateNames = true,
                                             OverwritePrompt = true,
                                             FileName = sender.AuthorText.Link
                                         };
             if (dialog.ShowDialog() == true)
             {
                 File.WriteAllText(dialog.FileName, sender.Text, Encoding.GetEncoding(1251));
             }
         }
     }
 }
 private static void StartReader(Setting setting, DownloadTextItem sender)
 {
     Thread thread = new Thread(StartReaderPP) { IsBackground = true };
     thread.Start(new StartReaderThreadParam
                      {Context = SynchronizationContext.Current, Setting = setting, DownloadTextItem = sender});
 }
示例#8
0
 private void ItemDownloadTextComplete(DownloadTextItem sender, DownloadDataCompletedEventArgs args)
 {
     _manualEvent.Set();
 }
 public static void Remove(DownloadTextItem item)
 {
     DownloadTextItems.Remove(item);
     ChangeVisibility();
 }
 public static void Remove(DownloadTextItem item)
 {
     DownloadTextItems.Remove(item);
     ChangeVisibility();
 }