#ifndef HEADWORDSMODEL_H #define HEADWORDSMODEL_H #include "dictionary.hh" #include #include class HeadwordListModel : public QAbstractListModel { Q_OBJECT public: HeadwordListModel( QObject * parent = nullptr ); int rowCount( const QModelIndex & parent = QModelIndex() ) const override; int totalCount() const; int wordCount() const; bool isFinish() const; QVariant data( const QModelIndex & index, int role = Qt::DisplayRole ) const override; QString getRow( int row ); void setFilter( QRegularExpression ); int getCurrentIndex(); QSet< QString > getRemainRows( int & nodeIndex ); signals: void numberPopulated( int number ); void finished( int number ); public slots: void setDict( Dictionary::Class * dict ); void requestFinished(); protected: bool canFetchMore( const QModelIndex & parent ) const override; void fetchMore( const QModelIndex & parent ) override; private: QStringList words; QStringList filterWords; bool filtering; QStringList fileSortedList; long totalSize; Dictionary::Class * _dict; int index; char * ptr; Mutex lock; std::list< sptr< Dictionary::WordSearchRequest > > queuedRequests; }; #endif // HEADWORDSMODEL_H