fb2view.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #include "fb2view.h"
  2. #include "fb2read.h"
  3. #include <QAction>
  4. #include <QtDebug>
  5. //---------------------------------------------------------------------------
  6. // Fb2WebView
  7. //---------------------------------------------------------------------------
  8. Fb2WebView::Fb2WebView(QWidget *parent)
  9. : Fb2BaseWebView(parent)
  10. , m_thread(0)
  11. {
  12. page()->setContentEditable(true);
  13. QWebSettings *settings = page()->settings();
  14. settings->setAttribute(QWebSettings::AutoLoadImages, true);
  15. settings->setAttribute(QWebSettings::JavaEnabled, false);
  16. settings->setAttribute(QWebSettings::JavascriptEnabled, true);
  17. settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
  18. settings->setAttribute(QWebSettings::PluginsEnabled, false);
  19. settings->setAttribute(QWebSettings::ZoomTextOnly, true);
  20. settings->setUserStyleSheetUrl(QUrl::fromLocalFile(":/res/style.css"));
  21. }
  22. Fb2WebView::~Fb2WebView()
  23. {
  24. foreach (QString value, m_files) QFile::remove(value);
  25. }
  26. bool Fb2WebView::load(const QString &filename)
  27. {
  28. if (m_thread) return false;
  29. m_thread = new Fb2ReadThread(this, filename);
  30. connect(m_thread, SIGNAL(file(QString, QString)), SLOT(file(QString, QString)));
  31. connect(m_thread, SIGNAL(html(QString, QString)), SLOT(html(QString, QString)));
  32. m_thread->start();
  33. }
  34. void Fb2WebView::file(QString name, QString path)
  35. {
  36. m_files.insert(name, path);
  37. }
  38. void Fb2WebView::html(QString name, QString html)
  39. {
  40. setHtml(html, QUrl::fromLocalFile(name));
  41. if (m_thread) m_thread->deleteLater();
  42. m_thread = 0;
  43. }
  44. void Fb2WebView::zoomIn()
  45. {
  46. qreal zoom = zoomFactor();
  47. setZoomFactor(zoom * 1.1);
  48. }
  49. void Fb2WebView::zoomOut()
  50. {
  51. qreal zoom = zoomFactor();
  52. setZoomFactor(zoom * 0.9);
  53. }
  54. void Fb2WebView::zoomOrig()
  55. {
  56. setZoomFactor(1);
  57. }
  58. bool Fb2WebView::UndoEnabled()
  59. {
  60. return pageAction(QWebPage::Undo)->isEnabled();
  61. }
  62. bool Fb2WebView::RedoEnabled()
  63. {
  64. return pageAction(QWebPage::Redo)->isEnabled();
  65. }
  66. bool Fb2WebView::CutEnabled()
  67. {
  68. return pageAction(QWebPage::Cut)->isEnabled();
  69. }
  70. bool Fb2WebView::CopyEnabled()
  71. {
  72. return pageAction(QWebPage::Copy)->isEnabled();
  73. }
  74. bool Fb2WebView::BoldChecked()
  75. {
  76. return pageAction(QWebPage::ToggleBold)->isChecked();
  77. }
  78. bool Fb2WebView::ItalicChecked()
  79. {
  80. return pageAction(QWebPage::ToggleItalic)->isChecked();
  81. }
  82. bool Fb2WebView::StrikeChecked()
  83. {
  84. return pageAction(QWebPage::ToggleStrikethrough)->isChecked();
  85. }
  86. bool Fb2WebView::SubChecked()
  87. {
  88. return pageAction(QWebPage::ToggleSubscript)->isChecked();
  89. }
  90. bool Fb2WebView::SupChecked()
  91. {
  92. return pageAction(QWebPage::ToggleSuperscript)->isChecked();
  93. }