Guitar
IncrementalSearch.h
Go to the documentation of this file.
1 #ifndef INCREMENTALSEARCH_H
2 #define INCREMENTALSEARCH_H
3 
4 #include <string>
5 #include <optional>
6 #include <QString>
7 #include <memory>
8 
9 class QRect;
10 class QPainter;
11 class QStyleOptionViewItem;
12 
14 private:
15  struct M;
16  M *m;
17 public:
20  void init();
21  bool open();
22  void close();
23  std::optional<std::string> queryMigemo(const char *word);
24 
25  static bool migemoEnabled();
26  static std::string migemoDictDir();
27  static std::string migemoDictPath();
28  static bool setupMigemoDict();
29  static void deleteMigemoDict();
30 
31  static IncrementalSearch *instance();
32 };
33 
34 struct MigemoFilter {
35  QString text;
36  std::shared_ptr<QRegularExpression> re_;
37  MigemoFilter() = default;
38  MigemoFilter(const QString &text);
39  bool isEmpty() const;
40  void makeFilter(const QString &filtertext);
41  bool match(QString text);
42 
43  static QString normalizeText(QString s);
44 
45  static int u16ncmp(const ushort *s1, const ushort *s2, int n);
46 
47  static void fillFilteredBG(QPainter *painter, QRect const &rect);
48 
49  static void drawText(QPainter *painter, QStyleOptionViewItem const &opt, QRect r, QString const &text);
50  static void drawText_filted(QPainter *painter, QStyleOptionViewItem const &opt, QRect const &rect, MigemoFilter const &filter);
51 };
52 
53 #endif // INCREMENTALSEARCH_H
Definition: IncrementalSearch.h:13
bool open()
Definition: IncrementalSearch.cpp:45
void init()
Definition: IncrementalSearch.cpp:40
void close()
Definition: IncrementalSearch.cpp:68
static bool migemoEnabled()
Definition: IncrementalSearch.cpp:94
static std::string migemoDictPath()
Definition: IncrementalSearch.cpp:105
~IncrementalSearch()
Definition: IncrementalSearch.cpp:34
M * m
Definition: IncrementalSearch.h:15
static IncrementalSearch * instance()
Definition: IncrementalSearch.cpp:89
static void deleteMigemoDict()
Definition: IncrementalSearch.cpp:170
IncrementalSearch()
Definition: IncrementalSearch.cpp:29
static bool setupMigemoDict()
Definition: IncrementalSearch.cpp:110
static std::string migemoDictDir()
Definition: IncrementalSearch.cpp:99
std::optional< std::string > queryMigemo(const char *word)
Definition: IncrementalSearch.cpp:76
Definition: IncrementalSearch.cpp:24
Definition: IncrementalSearch.h:34
static void drawText_filted(QPainter *painter, QStyleOptionViewItem const &opt, QRect const &rect, MigemoFilter const &filter)
Definition: IncrementalSearch.cpp:269
static int u16ncmp(const ushort *s1, const ushort *s2, int n)
Definition: IncrementalSearch.cpp:216
MigemoFilter()=default
static void fillFilteredBG(QPainter *painter, QRect const &rect)
Definition: IncrementalSearch.cpp:230
QString text
Definition: IncrementalSearch.h:35
bool isEmpty() const
Definition: IncrementalSearch.cpp:186
static void drawText(QPainter *painter, QStyleOptionViewItem const &opt, QRect r, QString const &text)
Definition: IncrementalSearch.cpp:235
static QString normalizeText(QString s)
Definition: IncrementalSearch.cpp:247
bool match(QString text)
Definition: IncrementalSearch.cpp:204
std::shared_ptr< QRegularExpression > re_
Definition: IncrementalSearch.h:36
void makeFilter(const QString &filtertext)
Definition: IncrementalSearch.cpp:191