vnote/src/widgets/dialogs/nodeinfowidget.h

78 lines
1.7 KiB
C++

#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