porymap/include/ui/newlayoutdialog.h

50 lines
1.3 KiB
C
Raw Normal View History

2024-11-19 19:52:47 +00:00
#ifndef NEWLAYOUTDIALOG_H
#define NEWLAYOUTDIALOG_H
#include <QDialog>
#include <QString>
#include "editor.h"
#include "project.h"
#include "map.h"
#include "mapheaderform.h"
#include "newlayoutform.h"
#include "lib/collapsiblesection.h"
namespace Ui {
class NewLayoutDialog;
}
class NewLayoutDialog : public QDialog
{
Q_OBJECT
public:
2024-11-21 20:04:42 +00:00
explicit NewLayoutDialog(Project *project, QWidget *parent = nullptr);
explicit NewLayoutDialog(Project *project, const Layout *layoutToCopy, QWidget *parent = nullptr);
2024-11-19 19:52:47 +00:00
~NewLayoutDialog();
2024-11-21 20:04:42 +00:00
virtual void accept() override;
2024-11-19 19:52:47 +00:00
signals:
void applied(const QString &newLayoutId);
private:
Ui::NewLayoutDialog *ui;
Project *project;
2024-11-26 20:33:56 +00:00
const Layout *layoutToCopy;
2024-11-19 19:52:47 +00:00
// Each of these validation functions will allow empty names up until `OK` is selected,
// because clearing the text during editing is common and we don't want to flash errors for this.
bool validateLayoutID(bool allowEmpty = false);
bool validateName(bool allowEmpty = false);
2024-11-21 20:04:42 +00:00
void refresh();
2024-11-19 19:52:47 +00:00
void saveSettings();
private slots:
void dialogButtonClicked(QAbstractButton *button);
void on_lineEdit_Name_textChanged(const QString &);
void on_lineEdit_LayoutID_textChanged(const QString &);
};
#endif // NEWLAYOUTDIALOG_H