notebookinfowidget.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. #ifndef NOTEBOOKINFOWIDGET_H
  2. #define NOTEBOOKINFOWIDGET_H
  3. #include <QWidget>
  4. class QComboBox;
  5. class QPushButton;
  6. class QLineEdit;
  7. class QGroupBox;
  8. namespace vnotex
  9. {
  10. class Notebook;
  11. class LineEditWithSnippet;
  12. class NotebookInfoWidget : public QWidget
  13. {
  14. Q_OBJECT
  15. public:
  16. enum Mode { Create, CreateFromFolder, Edit, Import, CreateFromLegacy };
  17. explicit NotebookInfoWidget(NotebookInfoWidget::Mode p_mode, QWidget *p_parent = nullptr);
  18. QLineEdit *getNameLineEdit() const;
  19. QLineEdit *getRootFolderPathLineEdit() const;
  20. void setRootFolderPath(const QString &p_path);
  21. QString getName() const;
  22. QString getDescription() const;
  23. QString getRootFolderPath() const;
  24. QIcon getIcon() const;
  25. QString getType() const;
  26. QString getConfigMgr() const;
  27. QString getVersionController() const;
  28. QString getBackend() const;
  29. void clear(bool p_skipRootFolder = false, bool p_skipBackend = false);
  30. void setMode(Mode p_mode);
  31. const Notebook *getNotebook() const;
  32. public slots:
  33. void setNotebook(const Notebook *p_notebook);
  34. signals:
  35. // Give caller a chance to change the name according to the root folder.
  36. void rootFolderEdited();
  37. // Emit when name, description, or root folder path is edited.
  38. void basicInfoEdited();
  39. void notebookBackendEdited();
  40. private:
  41. void setupUI();
  42. void setStateAccordingToMode();
  43. QGroupBox *setupBasicInfoGroupBox(QWidget *p_parent = nullptr);
  44. void setupNotebookTypeComboBox(QWidget *p_parent = nullptr);
  45. QLayout *setupNotebookRootFolderPath(QWidget *p_parent = nullptr);
  46. QGroupBox *setupAdvancedInfoGroupBox(QWidget *p_parent = nullptr);
  47. void setupConfigMgrComboBox(QWidget *p_parent = nullptr);
  48. void setupVersionControllerComboBox(QWidget *p_parent = nullptr);
  49. void setupBackendComboBox(QWidget *p_parent = nullptr);
  50. QLineEdit *getDescriptionLineEdit() const;
  51. QComboBox *getTypeComboBox() const;
  52. QComboBox *getConfigMgrComboBox() const;
  53. QComboBox *getVersionControllerComboBox() const;
  54. QComboBox *getBackendComboBox() const;
  55. Mode m_mode = Mode::Create;
  56. const Notebook *m_notebook = nullptr;
  57. LineEditWithSnippet *m_nameLineEdit = nullptr;
  58. QLineEdit *m_descriptionLineEdit = nullptr;
  59. QComboBox *m_typeComboBox = nullptr;
  60. QComboBox *m_configMgrComboBox = nullptr;
  61. QComboBox *m_versionControllerComboBox = nullptr;
  62. QComboBox *m_backendComboBox = nullptr;
  63. QLineEdit *m_rootFolderPathLineEdit = nullptr;
  64. QPushButton *m_rootFolderPathBrowseButton = nullptr;
  65. };
  66. } // ns vnotex
  67. #endif // NOTEBOOKINFOWIDGET_H