#ifndef MPROGRAMMANAGERA_H
#define MPROGRAMMANAGERA_H

#include <QWidget>
#include <QStyleOption>
#include <QPainter>
#include <QFile>
#include <QAction>
#include <QTreeWidgetItem>
#include <QCheckBox>
#include <QPushButton>
#include <QDebug>
#include <QLabel>
#include <QDateTime>
#include <QList>
#include <QDir>
#include <QFile>
#include <QStandardPaths>
#include <QStringList>
#include <QJsonValue>
#include <QJsonObject>
#include <QJsonDocument>

#include "loappconfig.h"
#include <LoQClass/loqpushbutton.h>
#include <LoQClass/loqtreewidget.h>

namespace Ui {
class mProgramManagerA;
}

class mProgramManagerA : public QWidget
{
    Q_OBJECT

public:
    explicit mProgramManagerA(QWidget *parent = nullptr);
    ~mProgramManagerA();

public:
    virtual void paintEvent(QPaintEvent *);
    void refreshLable();
    QTreeWidgetItem *m_headerItem=nullptr;

protected:
    bool checkIfNameRepeated(const QString &name, QTreeWidgetItem *skip = nullptr);

protected slots:
    void onCheckStateChanged(int f);
    void onNewClicked(bool f);
    void onEditClicked(bool f);
    void onDeleteClicked(bool f);
    void onRestoreProgram(const QJsonDocument &pro);
    void onCreateNewProgram(QString name, QSize res, QString remarks);
    void onEditHead(const QString &name, QSize res, const QString &remarks);

signals:
    void sigCheckAll(bool);

private:
    Ui::mProgramManagerA *ui;
    QString              m_strProgramItemPath;
};

#endif // MPROGRAMMANAGERA_H
