#ifndef CLIENTMAINWINDOW_H
#define CLIENTMAINWINDOW_H

#include <QMainWindow>
#include <QTableWidget>
#include "auditproject.h"
#include "auditworkload.h"
#include "problemmoney.h"
#include "problemcount.h"
#include "problemrectification.h"
#include "problemnotmoney.h"
#include "punish.h"
#include "caseclue.h"
#include "coverinfo.h"
#include "searchinfo.h"
#include "problemrectstandingbook.h"
#include "converinfo2.h"

#include "xlsxdocument.h"
#include "problemlist.h"
#include "problemrectificationresult.h"
#include "tableitemdelegate.h"
#include <QItemDelegate>
#include "threemergeproblemlist.h"

namespace Ui {
class ClientMainWindow;
}

class ClientMainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit ClientMainWindow(QWidget *parent = 0);
    ~ClientMainWindow();

    void initUi();
    void readDataFromExcel(QString path);
    bool readDataFromSQL(QString name);
    void calc(); // 统计结果,多处地方触发了自动调用
    void searchComName();

private slots:
    void on_pushButton_auditPro_clicked();

    void on_pushButton_auditWorkload_clicked();

    void on_pushButton_problemMoney_clicked();

    void on_pushButton_problemCount_clicked();

    void on_pushButton_problemRectification_clicked();

    void on_pushButton_problemNotMoney_clicked();

    void on_pushButton_punish_clicked();

    void on_pushButton_caseClue_clicked();

    void on_pushButton_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_openXlsxFile_clicked();

    void on_pushButton_importExcel_clicked();

    void on_dateEdit_dateChanged(const QDate &date);

    void on_tableWidget_activated(const QModelIndex &index);

    void on_tableWidget_clicked(const QModelIndex &index);

    void on_tableWidget_itemEntered(QTableWidgetItem *item);

    void on_tableWidget_cellEntered(int row, int column);

    void on_tableWidget_cellClicked(int row, int column);

    void on_pushButton_save_clicked();

    void on_comboBox_currentIndexChanged(const QString &arg1);

    void on_pushButton_reset_clicked();

signals:
    void sendDataToAuditProject(QVariantList);
    void sendDataToAuditWorkLoad(QVariantList);
    void sendDataToProblemMoney(QVariantList);
    void sendDataToProblemCount(QVariantList);
    void sendDataToProblemRectification(QVariantList);
    void sendDataToProblemNoMoney(QVariantList);
    void sendDataToPunish(QVariantList);
    void sendDataToCaseClue(QVariantList);

private:
    Ui::ClientMainWindow *ui;
    AuditProject *m_auditPro;
    AuditWorkload *m_auditworkload;
    ProblemMoney *m_problemMon;
    ProblemCount *m_problemCnt;
    ProblemRectification *m_probleRect;
    ProblemNotMoney *m_problemNotMon;
    ProblemRectStandingBook *m_proRecStandingBook;
    Punish *m_punish;
    CaseClue *m_caseClue;
    CoverInfo *m_coverInfo;
    SearchInfo *m_searchInfo;
    QMap<QString,int> m_comInfo;

    // 新版本
    ConverInfo2* m_conInfo2;
    ProblemList *m_problemList;
    ProblemRectificationResult *m_problemRectifResult;
    TableItemDelegate *m_tableItemDelegate;
    QItemDelegate *m_editDelegate; // 可编辑

    // 3合一
    ThreeMergeProblemList *m_threeMPList;

};

#endif // CLIENTMAINWINDOW_H