fb2view.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #ifndef FB2VIEW_H
  2. #define FB2VIEW_H
  3. #include <QHash>
  4. #include <QResizeEvent>
  5. #include <QTimer>
  6. #include <QThread>
  7. #include <QWebView>
  8. class Fb2BaseWebView : public QWebView
  9. {
  10. Q_OBJECT
  11. public:
  12. Fb2BaseWebView(QWidget* parent = 0)
  13. : QWebView(parent)
  14. {
  15. m_timer.setInterval(100);
  16. m_timer.setSingleShot(true);
  17. connect(&m_timer, SIGNAL(timeout()), SLOT(doResize()));
  18. }
  19. protected slots:
  20. void doResize() {
  21. QResizeEvent event(size(), m_size);
  22. QWebView::resizeEvent(&event);
  23. QWebView::update();
  24. }
  25. protected:
  26. void resizeEvent(QResizeEvent* event) {
  27. if (!m_timer.isActive()) m_size = event->oldSize();
  28. m_timer.start();
  29. }
  30. private:
  31. QTimer m_timer;
  32. QSize m_size;
  33. };
  34. class Fb2WebView : public Fb2BaseWebView
  35. {
  36. Q_OBJECT
  37. public:
  38. explicit Fb2WebView(QWidget *parent = 0);
  39. virtual ~Fb2WebView();
  40. void load(const QString &filename);
  41. QString toXml();
  42. bool UndoEnabled();
  43. bool RedoEnabled();
  44. bool CutEnabled();
  45. bool CopyEnabled();
  46. bool BoldChecked();
  47. bool ItalicChecked();
  48. bool StrikeChecked();
  49. bool SubChecked();
  50. bool SupChecked();
  51. signals:
  52. public slots:
  53. void file(QString name, QString path);
  54. void html(QString name, QString html);
  55. /*
  56. void Undo();
  57. void Redo();
  58. void Cut();
  59. void Copy();
  60. void Paste();
  61. void Bold();
  62. void Italic();
  63. void Strike();
  64. */
  65. void zoomIn();
  66. void zoomOut();
  67. void zoomOrig();
  68. private slots:
  69. void fixContents();
  70. private:
  71. typedef QHash<QString, QString> StringHash;
  72. StringHash m_files;
  73. QThread *m_thread;
  74. };
  75. #endif // FB2VIEW_H