1
0

fb2view.cpp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "fb2view.h"
  2. #include "fb2read.h"
  3. #include <QtDebug>
  4. #include <QNetworkReply>
  5. #include <QNetworkRequest>
  6. //---------------------------------------------------------------------------
  7. // Fb2NetworkAccessManager
  8. //
  9. // http://doc.trolltech.com/qq/32/qq32-webkit-protocols.html
  10. //---------------------------------------------------------------------------
  11. Fb2NetworkAccessManager::Fb2NetworkAccessManager(QObject *parent)
  12. : QNetworkAccessManager(parent)
  13. {
  14. }
  15. QNetworkReply * Fb2NetworkAccessManager::createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
  16. {
  17. qCritical() << request.url().toString();
  18. return QNetworkAccessManager::createRequest(op, request, outgoingData);
  19. }
  20. void Fb2NetworkAccessManager::insert(const QString &file, const QByteArray &data)
  21. {
  22. m_images.insert(file, data);
  23. }
  24. //---------------------------------------------------------------------------
  25. // Fb2WebView
  26. //---------------------------------------------------------------------------
  27. Fb2WebView::Fb2WebView(QWidget *parent)
  28. : Fb2BaseWebView(parent)
  29. , m_thread(0)
  30. {
  31. page()->setContentEditable(true);
  32. QWebSettings *settings = page()->settings();
  33. settings->setAttribute(QWebSettings::JavaEnabled, false);
  34. settings->setAttribute(QWebSettings::JavascriptEnabled, true);
  35. settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);
  36. settings->setAttribute(QWebSettings::PluginsEnabled, false);
  37. settings->setAttribute(QWebSettings::ZoomTextOnly, true);
  38. page()->setNetworkAccessManager(&m_network);
  39. }
  40. bool Fb2WebView::load(const QString &filename)
  41. {
  42. if (m_thread) return false;
  43. m_thread = new Fb2ReadThread(this, filename);
  44. connect(m_thread, SIGNAL(image(QString, QByteArray)), SLOT(image(QString, QByteArray)));
  45. connect(m_thread, SIGNAL(html(QString)), SLOT(html(QString)));
  46. m_thread->start();
  47. }
  48. void Fb2WebView::image(QString file, QByteArray data)
  49. {
  50. m_network.insert(file, data);
  51. qCritical() << file;
  52. }
  53. void Fb2WebView::html(QString html)
  54. {
  55. setHtml(html, QUrl("fb2://s/"));
  56. if (m_thread) m_thread->deleteLater();
  57. m_thread = 0;
  58. }
  59. void Fb2WebView::zoomIn()
  60. {
  61. qreal zoom = zoomFactor();
  62. setZoomFactor(zoom * 1.1);
  63. }
  64. void Fb2WebView::zoomOut()
  65. {
  66. qreal zoom = zoomFactor();
  67. setZoomFactor(zoom * 0.9);
  68. }
  69. void Fb2WebView::zoomOrig()
  70. {
  71. setZoomFactor(1);
  72. }