Revision control
++ // Copyright (C) 2016 The Qt Company Ltd.
++ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
++
++ #ifndef MAINWINDOW_H
++ #define MAINWINDOW_H
++
++ #include <QDomDocument>
++ #include <QMainWindow>
++ #include <QModelIndex>
++
++ QT_FORWARD_DECLARE_CLASS(QComboBox)
++ QT_FORWARD_DECLARE_CLASS(QFile)
++ QT_FORWARD_DECLARE_CLASS(QGroupBox)
++ QT_FORWARD_DECLARE_CLASS(QLabel)
++ QT_FORWARD_DECLARE_CLASS(QListWidget)
++ QT_FORWARD_DECLARE_CLASS(QSqlRelationalTableModel)
++ QT_FORWARD_DECLARE_CLASS(QTableView)
++
++ class MainWindow : public QMainWindow
++ {
++ Q_OBJECT
++
++ public:
++ MainWindow(const QString &artistTable, const QString &albumTable,
++ QFile *albumDetails, QWidget *parent = nullptr);
++
++ private slots:
++ void about();
++ void addAlbum();
++ void changeArtist(int row);
++ void deleteAlbum();
++ void showAlbumDetails(const QModelIndex &index);
++ void showArtistProfile(const QModelIndex &index);
++ void adjustHeader();
++
++ private:
++ QGroupBox *createAlbumGroupBox();
++ QGroupBox *createArtistGroupBox();
++ QGroupBox *createDetailsGroupBox();
++ void createMenuBar();
++ void decreaseAlbumCount(const QModelIndex &artistIndex);
++ void getTrackList(QDomNode album);
++ QModelIndex indexOfArtist(const QString &artist) const;
++ void readAlbumData();
++ void removeAlbumFromDatabase(const QModelIndex &album);
++ void removeAlbumFromFile(int id);
++ void showImageLabel();
++
++ QTableView *albumView;
++ QComboBox *artistView;
++ QListWidget *trackList;
++
++ QLabel *iconLabel;
++ QLabel *imageLabel;
++ QLabel *profileLabel;
++ QLabel *titleLabel;
++
++ QDomDocument albumData;
++ QFile *file;
++ QSqlRelationalTableModel *model;
++ };
++
++ #endif