// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause #ifndef DIALOG_H #define DIALOG_H #include #include QT_FORWARD_DECLARE_CLASS(QDialogButtonBox) QT_FORWARD_DECLARE_CLASS(QFile) QT_FORWARD_DECLARE_CLASS(QGroupBox) QT_FORWARD_DECLARE_CLASS(QLineEdit) QT_FORWARD_DECLARE_CLASS(QModelIndex) QT_FORWARD_DECLARE_CLASS(QSpinBox) QT_FORWARD_DECLARE_CLASS(QSqlRelationalTableModel) class Dialog : public QDialog { Q_OBJECT public: Dialog(QSqlRelationalTableModel *albums, const QDomDocument &details, QFile *output, QWidget *parent = nullptr); static void setInitialAlbumAndArtistId(int albumId, int artistId); private slots: void revert(); void submit(); private: int addNewAlbum(const QString &title, int artistId); int addNewArtist(const QString &name); void addTracks(int albumId, const QStringList &tracks); QDialogButtonBox *createButtons(); QGroupBox *createInputWidgets(); int findArtistId(const QString &artist); void increaseAlbumCount(const QModelIndex &artistIndex); QModelIndex indexOfArtist(const QString &artist) const; QSqlRelationalTableModel *model; QDomDocument albumDetails; QFile *outputFile; QLineEdit *artistEditor; QLineEdit *titleEditor; QSpinBox *yearEditor; QLineEdit *tracksEditor; static int generateAlbumId(); static int generateArtistId(); static int s_artistId; static int s_albumId; }; #endif