50 lines
1.4 KiB
C
50 lines
1.4 KiB
C
|
|
#ifndef QBIGORDERMANAGER_H
|
||
|
|
#define QBIGORDERMANAGER_H
|
||
|
|
#include <QObject>
|
||
|
|
#include <QList>
|
||
|
|
#include <QMap>
|
||
|
|
#include <QMutex>
|
||
|
|
#include <QSharedPointer>
|
||
|
|
#include <QDateTime>
|
||
|
|
#include <QFile>
|
||
|
|
#include <QTimer>
|
||
|
|
#include <atomic>
|
||
|
|
#include <BZStruct.h>
|
||
|
|
#include "qeventbus.h"
|
||
|
|
class QBigOrderManager : public QObject
|
||
|
|
{
|
||
|
|
Q_OBJECT
|
||
|
|
public:
|
||
|
|
static QBigOrderManager* instance();
|
||
|
|
static void destroy();
|
||
|
|
bool addBigOrder(const BigOrderInfo &order);
|
||
|
|
QList<QSharedPointer<BigOrderInfo>> getAllBigOrders() const;
|
||
|
|
QList<QSharedPointer<BigOrderInfo>> getBigOrdersByStock(const QString &stockCode) const;
|
||
|
|
QList<QSharedPointer<BigOrderInfo>> getBigOrdersByType(const QString &orderType) const;
|
||
|
|
void setAutoSave(bool enabled);
|
||
|
|
void setAutoSavePath(const QString &path);
|
||
|
|
void setAutoSaveInterval(int hours);
|
||
|
|
QString m_historyPath;
|
||
|
|
signals:
|
||
|
|
void bigOrderAdded(const BigOrderInfo &order);
|
||
|
|
void saveOverRefreshView();
|
||
|
|
void markBigOrderSignal();
|
||
|
|
protected:
|
||
|
|
explicit QBigOrderManager(QObject *parent = nullptr);
|
||
|
|
~QBigOrderManager();
|
||
|
|
private:
|
||
|
|
static std::atomic<QBigOrderManager*> s_instance;
|
||
|
|
static QMutex s_mutex;
|
||
|
|
mutable QMutex m_orderMutex;
|
||
|
|
QList<QSharedPointer<BigOrderInfo>> m_bigOrders;
|
||
|
|
QSet<QString> m_bigOrderID;
|
||
|
|
QTimer* m_autoSaveTimer;
|
||
|
|
QString m_autoSavePath;
|
||
|
|
int m_autoSaveInterval = 5;
|
||
|
|
bool m_autoSaveEnabled = true;
|
||
|
|
void saveToFile();
|
||
|
|
void loadFromFile();
|
||
|
|
void autoSave();
|
||
|
|
void cleanupOldData(int maxDays = 30);
|
||
|
|
};
|
||
|
|
#endif
|