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