goldendict-ng/src/ui/dictheadwords.hh
xiaoyifang c4caec7d68
opt: headwords dialog (#1600)
* opt: headword dialog optimization

Changes:

- when the headword count < 500000(arbitrary number) ,load all at once.
- opt: remove unused signal
-  headword dialog ui add max filter results


---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2024-06-25 15:24:33 +08:00

69 lines
1.6 KiB
C++

#ifndef __DICTHEADWORDS_H_INCLUDED__
#define __DICTHEADWORDS_H_INCLUDED__
#include <QDialog>
#include <QSet>
#include <QString>
#include <QStringList>
#include <QStringListModel>
#include <QSortFilterProxyModel>
#include <QAction>
#include <qprogressdialog.h>
#include "config.hh"
#include "ui_dictheadwords.h"
#include "dict/dictionary.hh"
#include "delegate.hh"
#include "headwordsmodel.hh"
class DictHeadwords: public QDialog
{
Q_OBJECT
public:
explicit DictHeadwords( QWidget * parent, Config::Class & cfg_, Dictionary::Class * dict_ );
virtual ~DictHeadwords();
void setup( Dictionary::Class * dict_ );
protected:
Config::Class & cfg;
Dictionary::Class * dict;
std::shared_ptr< HeadwordListModel > model;
QSortFilterProxyModel * proxy;
WordListItemDelegate * delegate;
QString dictId;
QAction helpAction;
void saveHeadersToFile();
bool eventFilter( QObject * obj, QEvent * ev );
private:
Ui::DictHeadwords ui;
// QStringList sortedWords;
QMutex mutex;
static void writeWordToFile( QTextStream & out, const QString & word );
private slots:
void savePos();
void filterChangedInternal();
QRegularExpression getFilterRegex() const;
void filterChanged();
void exportButtonClicked();
void okButtonClicked();
void itemClicked( const QModelIndex & index );
void autoApplyStateChanged( int state );
void showHeadwordsNumber();
void exportAllWords( QProgressDialog & progress, QTextStream & out );
void loadRegex( QProgressDialog & progress, QTextStream & out );
virtual void reject();
signals:
void headwordSelected( QString const &, QString const & );
void closeDialog();
};
#endif // __DICTHEADWORDS_H_INCLUDED__