#ifndef HISTORYDATA_H
#define HISTORYDATA_H

#include <QMainWindow>
#include <QMap>
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QSqlDatabase>
#include <QSqlError>
#include <QSqlQuery>
#include <QStandardItemModel>
#include "customsortproxymodel.h"
#include <QTimer>

namespace Ui {
class HistoryData;
}

class HistoryData : public QMainWindow
{
    Q_OBJECT

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

    void initMySQL();

signals:
    void sendHistoryModel(QVector<QVector<QString>> &); // 将模型发给信息展示
    void sendHistoryModel(QStandardItemModel *); // 将模型发给信息展示

private slots:
    void on_pushButton_clicked();

    void on_pushButton_update_clicked();

    void putCodeNames(QMap<QString,QString> &codeNames);

    void showAplyData(QNetworkReply* reply);
    void getOneStock(QByteArray &buffer);
    
    void on_pushButton_search_clicked();

    void on_pushButton_2_clicked();

    void on_pushButton_addStock_clicked();

    void poolTimerSlot(); // 股票池刷新的定时器槽

    void on_checkBox_clicked();

private:
    Ui::HistoryData *ui;

    QSqlDatabase db;

    QMap<QString,QString> m_codeNames; // 股票代号和名字

    QNetworkRequest m_request; // 用于管理请求头的
    QString m_cookie; // 缓存
    QNetworkAccessManager m_manager; // 用于管理http请求及响应的

    QStandardItemModel *m_model;
    CustomSortProxyModel *m_customModel; // 用于排序的自定义模型
    QStandardItemModel *m_poolModel; // 股票池模型

    QVector<QVector<QString>> m_modelDatas; // 行列存储

    QTimer *m_poolTimer; // 刷新股票池的定时器

    int m_days=0; // 上次更新到现在经过的天数
};

#endif // HISTORYDATA_H