text: #ifndef NODEINFOWIDGET_H
  #define NODEINFOWIDGET_H
  
  #include <QWidget>
  
  #include <notebook/node.h>
  
  class QLineEdit;
  class QLabel;
  class QFormLayout;
  class QComboBox;
  
  namespace vnotex
  {
      class Notebook;
      class LevelLabelWithUpButton;
      class LineEditWithSnippet;
  
      class NodeInfoWidget : public QWidget
      {
          Q_OBJECT
      public:
          enum Mode { Create, Edit };
  
          NodeInfoWidget(const Node *p_node, QWidget *p_parent = nullptr);
  
          NodeInfoWidget(const Node *p_parentNode,
                         Node::Flags p_flags,
                         QWidget *p_parent = nullptr);
  
          QLineEdit *getNameLineEdit() const;
  
          QString getName() const;
  
          const Notebook *getNotebook() const;
  
          const Node *getParentNode() const;
  
          // Allow upper level to add more widgets to the layout.
          QFormLayout *getMainLayout() const;
  
          QString getFileType() const;
          void setFileType(const QString &p_typeName);
  
      signals:
          void inputEdited();
  
      private:
          void setupUI(const Node *p_parentNode, Node::Flags p_newNodeFlags);
  
          void setupFileTypeComboBox(QWidget *p_parent);
  
          void setupNameLineEdit(QWidget *p_parent);
  
          void setNode(const Node *p_node);
  
          Mode m_mode = Mode::Create;
  
          QFormLayout *m_mainLayout = nullptr;
  
          QComboBox *m_fileTypeComboBox = nullptr;
  
          LineEditWithSnippet *m_nameLineEdit = nullptr;
  
          LevelLabelWithUpButton *m_parentNodeLabel = nullptr;
  
          QLabel *m_createdDateTimeLabel = nullptr;
  
          QLabel *m_modifiedDateTimeLabel = nullptr;
  
          const Node *m_node = nullptr;
  
          bool m_fileTypeComboBoxMuted = false;
      };
  } // ns vnotex
  
  #endif // NODEINFOWIDGET_H
  