goldendict-ng/headwordsmodel.h
Xiao YiFang 7c30b89336 opt: headwords dialog filtering optimization
when in filtering process, fetch more return false.
2022-10-02 19:53:54 +08:00

51 lines
1.2 KiB
C++

#ifndef HEADWORDSMODEL_H
#define HEADWORDSMODEL_H
#include "dictionary.hh"
#include <QAbstractListModel>
#include <QStringList>
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