1 #ifndef QUEUEMODEL_H
2 #define QUEUEMODEL_H
3 
4 #include "sqlModel.h"
5 #include <QString>
6 #include <QQueue>
7 
8 struct QueueOrder {
9     QString searchID;
10     int visualIndex;
11 };
12 
13 class QueueModel : public SqlModel
14 {
15     Q_OBJECT
16     Q_PROPERTY(int queueSize READ getQueueSize NOTIFY queueSizeChanged)
17 public:
18     explicit QueueModel(QObject *parent = nullptr);
19     Q_INVOKABLE void setQueueQuery();
20     Q_INVOKABLE void clearQueue();
21     Q_INVOKABLE void move(const QString searchID, const int destIndex);
22     Q_INVOKABLE void markSaved(const QString searchID);
23 
24     Q_INVOKABLE void batchEnqueue(const QString searchQuery);
25     Q_INVOKABLE void batchForget();
26 
27     Q_INVOKABLE QString getNext(const QString searchID);
28     Q_INVOKABLE QString getPrev(const QString searchID);
29 
30     Q_INVOKABLE float getActivePosition(const QString searchID);
getQueueSize()31     Q_INVOKABLE int getQueueSize(){return m_queueSize;}
32 
33 public slots:
34     Q_INVOKABLE void deQueue(const QString searchID);
35     Q_INVOKABLE void enQueue(const QString searchID);
36 
37 protected:
38     int maxIndex;
39 
40     int m_queueSize;
41 
42     void resetIndex();
43     QSqlQuery modelQuery();
emitChange()44     void emitChange() {emit queueChanged();}
45 
46 signals:
47     void queueChanged();
48     void queueSizeChanged();
49     void searchTableChanged();
50 };
51 
52 #endif // QUEUEMODEL_H
53