fb2main.hpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #ifndef FB2MAIN_H
  2. #define FB2MAIN_H
  3. #include <QMainWindow>
  4. #include <QDockWidget>
  5. QT_BEGIN_NAMESPACE
  6. class QAction;
  7. class QFile;
  8. class QMenu;
  9. class QModelIndex;
  10. class QTextEdit;
  11. class QTreeView;
  12. class QWebInspector;
  13. QT_END_NAMESPACE
  14. class FbMainDock;
  15. class FbMessage;
  16. class FbLogDock: public QDockWidget
  17. {
  18. Q_OBJECT
  19. public:
  20. explicit FbLogDock(const QString &title, QWidget *parent = 0, Qt::WindowFlags flags = 0)
  21. : QDockWidget(title, parent, flags) {}
  22. QSize sizeHint() const {
  23. QSize sh = QDockWidget::sizeHint();
  24. sh.setHeight(40);
  25. return sh;
  26. }
  27. };
  28. class FbMainWindow : public QMainWindow
  29. {
  30. Q_OBJECT
  31. public:
  32. enum ViewMode { FB2, XML };
  33. explicit FbMainWindow(const QString &filename = QString(), ViewMode mode = FB2);
  34. protected:
  35. void closeEvent(QCloseEvent *event);
  36. signals:
  37. void showInspectorChecked(bool);
  38. public slots:
  39. void log(const FbMessage &msg);
  40. void logMessage(const QString &message);
  41. void status(const QString &text);
  42. private slots:
  43. void fileNew();
  44. void fileOpen();
  45. bool fileSave();
  46. bool fileSaveAs();
  47. void about();
  48. void documentWasModified();
  49. void logDestroyed();
  50. void logShowed();
  51. void openSettings();
  52. private:
  53. QString appTitle() const;
  54. private:
  55. void createHead();
  56. void createTree();
  57. void createImgs();
  58. void createActions();
  59. void createStatusBar();
  60. void readSettings();
  61. void writeSettings();
  62. void setModified(bool modified);
  63. bool maybeSave();
  64. bool saveFile(const QString &fileName, const QString &codec = QString());
  65. void setCurrentFile(const QString &fileName = QString());
  66. FbMainWindow *findFbMainWindow(const QString &fileName);
  67. FbMainDock *mainDock;
  68. QTextEdit *noteEdit;
  69. QToolBar *toolEdit;
  70. QWebInspector *inspector;
  71. QTextEdit *messageEdit;
  72. QString curFile;
  73. bool isSwitched;
  74. bool isUntitled;
  75. };
  76. #endif // FB2MAIN_H