fb2view.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. #ifndef FB2VIEW_H
  2. #define FB2VIEW_H
  3. #include <QNetworkAccessManager>
  4. #include <QResizeEvent>
  5. #include <QTimer>
  6. #include <QWebView>
  7. class Fb2NetworkAccessManager : public QNetworkAccessManager
  8. {
  9. Q_OBJECT
  10. public:
  11. explicit Fb2NetworkAccessManager(QObject *parent = 0);
  12. protected:
  13. virtual QNetworkReply *createRequest(Operation op, const QNetworkRequest &request, QIODevice *outgoingData = 0);
  14. };
  15. class Fb2BaseWebView : public QWebView
  16. {
  17. Q_OBJECT
  18. public:
  19. Fb2BaseWebView(QWidget* parent = 0)
  20. : QWebView(parent)
  21. {
  22. m_timer.setInterval(100);
  23. m_timer.setSingleShot(true);
  24. connect(&m_timer, SIGNAL(timeout()), SLOT(doResize()));
  25. }
  26. protected slots:
  27. void doResize() {
  28. QResizeEvent event(size(), m_size);
  29. QWebView::resizeEvent(&event);
  30. QWebView::update();
  31. }
  32. protected:
  33. void resizeEvent(QResizeEvent* event) {
  34. if (!m_timer.isActive()) m_size = event->oldSize();
  35. m_timer.start();
  36. }
  37. private:
  38. QTimer m_timer;
  39. QSize m_size;
  40. };
  41. class Fb2WebView : public Fb2BaseWebView
  42. {
  43. Q_OBJECT
  44. public:
  45. explicit Fb2WebView(QWidget *parent = 0);
  46. signals:
  47. public slots:
  48. void zoomIn();
  49. void zoomOut();
  50. void zoomOrig();
  51. private:
  52. Fb2NetworkAccessManager m_network;
  53. };
  54. #endif // FB2VIEW_H