mindmapwidget.h 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #ifndef MINDMAPWIDGET_H
  2. #define MINDMAPWIDGET_H
  3. #include "api/capture/capturewindow.h"
  4. #include "api/controls/showpixmapdialog.h"
  5. #include "editcolordialog.h"
  6. #include "editmarknodedialog.h"
  7. #include "editnodedialog.h"
  8. #include "mindmapobject.h"
  9. #include "mydao.h"
  10. #include "searchandreplacedialog.h"
  11. #include "showmindlineoutdialog.h"
  12. #include <QApplication>
  13. #include <QBuffer>
  14. #include <QClipboard>
  15. #include <QDateTime>
  16. #include <QDesktopServices>
  17. #include <QDesktopWidget>
  18. #include <QElapsedTimer>
  19. #include <QEventLoop>
  20. #include <QFileDialog>
  21. #include <QMenu>
  22. #include <QMessageBox>
  23. #include <QMouseEvent>
  24. #include <QPainter>
  25. #include <QPixmap>
  26. #include <QSqlQuery>
  27. #include <QWidget>
  28. namespace Ui {
  29. class MindMapWidget;
  30. }
  31. class SearchAndReplaceDialog;
  32. class MindMapWidget : public QWidget
  33. {
  34. Q_OBJECT
  35. public:
  36. explicit MindMapWidget(QWidget *parent = nullptr);
  37. ~MindMapWidget();
  38. ///打开导图
  39. void openProject(int id);
  40. void entranceNode(int pid, int id);
  41. void backToMindMap();
  42. void paintEvent(QPaintEvent *event);
  43. void mouseDoubleClickEvent(QMouseEvent *event);
  44. void drawRemark(QPainter &painter);
  45. void clear();
  46. void addNode(int pid, int id = 0);
  47. void addNodeInfo(MindMapObject *obj, int i, QSqlQuery &qry);
  48. MindMapObject *addChildNode(MindMapObject *pobj, int id, QString name);
  49. void setMyDao(MyDao *myDao);
  50. void drawNode(int pid, int px, int py, int x, int y, QPainter &painter);
  51. void mousePressEvent(QMouseEvent *event);
  52. MindMapObject *selObject();
  53. void setSelObject(MindMapObject *obj);
  54. int getNodeNeedCount(MindMapObject *pobj);
  55. void getMindWidgetChildNum(MindMapObject *pobj);
  56. void getMindWidgetsChildNum();
  57. void getNodeCount(MindMapObject *pobj, int &n);
  58. void mouseReleaseEvent(QMouseEvent *event);
  59. void getChilds(int pid, QList<int> &ids);
  60. void wheelEvent(QWheelEvent *event);
  61. void mouseMoveEvent(QMouseEvent *event);
  62. void editNode(MindMapObject *selObj, QString name);
  63. void delSelObject();
  64. void deleteNodeById(int id);
  65. int projectId();
  66. void deleteProject();
  67. void showSelPopMenu();
  68. void showPopMenu();
  69. void releaseMouseFlag();
  70. void showEditMarkNodeDialog();
  71. ///为结点增加图标
  72. void addMarkNodes(MindMapObject *obj);
  73. void saveDataAsPng();
  74. void saveDataAsMarkdown();
  75. void saveDataAsTxtFile();
  76. void saveDataAsCsvFile();
  77. void drawImage(QPaintDevice *paintDevice, int imgWidth, int imgHeight, int factor = 1);
  78. void getDrawRect(int &w, int &h);
  79. void reSetOrder(int pid);
  80. void setBackGroundId(int backGroundId);
  81. int backGroundId();
  82. void onAddChildNodeEvent();
  83. void onAddChildNodeEvent(QString name);
  84. int getNewMaxSxh(int pid);
  85. void showMindLineOut();
  86. void showMindLineOutInfo(int pid, QString prefix, QStringList &infos, QString sign = "·", QString space = "");
  87. void showMindLineOutInfoWithRemark(int pid, QString prefix, QStringList &infos, QString sign = "·",
  88. QString space = "");
  89. void getSelectRect(QRect &rc, QPoint pt1, QPoint pt2);
  90. QColor numColor(int sxh);
  91. void setNodeFontStyle(int setType);
  92. void setFontStyle();
  93. void applyFontStyle();
  94. int b2i(bool b);
  95. void setNodeNameFont(MindMapObject *obj, QPainter &painter, QFont &font);
  96. void setFontAsDefault(QFont &font);
  97. void showBackColorEditDialog();
  98. void showFontColorEditDialog();
  99. void saveMindMapAsNewProject();
  100. QList<MindMapObject *> &mindMapObjects();
  101. MyDao *myDao();
  102. void setEditEnable(bool enable) { editEnable = enable; };
  103. public slots:
  104. void onPopMenuTrigger();
  105. void onAddColorIndex(int colorIndex);
  106. Q_SIGNALS:
  107. void onDoubleClick();
  108. private:
  109. Ui::MindMapWidget *ui;
  110. QList<MindMapObject *> m_mindMapObjects;
  111. MyDao *m_myDao;
  112. MindMapObject *m_selObject;
  113. MindMapObject *m_cutObject;
  114. QPoint m_rootPoint;
  115. bool m_mousedownFlag;
  116. QPoint m_mousedownPoint;
  117. int m_projectId;
  118. int getMaxLen(QStringList &stl);
  119. int m_backgroundId;
  120. QPixmap m_backGroundPix;
  121. bool m_screenshotFlag;
  122. bool m_saveshotToFile;
  123. QPoint m_startShot;
  124. bool m_hasEntranceNode;
  125. void loadBackground();
  126. int getQryValue(QSqlQuery &qry, int index, int defaultValue);
  127. int getQryValue(QSqlQuery &qry, QString fieldName, int defaultValue);
  128. bool getQryValueBool(QSqlQuery &qry, QString fieldName, bool defaultValue = false);
  129. bool editEnable = true;
  130. };
  131. #endif // MINDMAPWIDGET_H