KVIrc 5.2.0
Developer APIs
HelpIndex.h
Go to the documentation of this file.
1/****************************************************************************
2**
3** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information (qt-info@nokia.com)
5**
6** This file is part of the Qt Assistant of the Qt Toolkit.
7**
8** Commercial Usage
9** Licensees holding valid Qt Commercial licenses may use this file in
10** accordance with the Qt Commercial License Agreement provided with the
11** Software or, alternatively, in accordance with the terms contained in
12** a written agreement between you and Nokia.
13**
14**
15** GNU General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU
17** General Public License versions 2.0 or 3.0 as published by the Free
18** Software Foundation and appearing in the file LICENSE.GPL included in
19** the packaging of this file. Please review the following information
20** to ensure GNU General Public Licensing requirements will be met:
21** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
22** http://www.gnu.org/copyleft/gpl.html. In addition, as a special
23** exception, Nokia gives you certain additional rights. These rights
24** are described in the Nokia Qt GPL Exception version 1.3, included in
25** the file GPL_EXCEPTION.txt in this package.
26**
27** Qt for Windows(R) Licensees
28** As a special exception, Nokia, as the sole copyright holder for Qt
29** Designer, grants users of the Qt/Eclipse Integration plug-in the
30** right for the Qt/Eclipse Integration to link to functionality
31** provided by Qt Designer and its related libraries.
32**
33** If you are unsure which license is appropriate for your use, please
34** contact the sales department at qt-sales@nokia.com.
35**
36****************************************************************************/
37
38#ifndef INDEX_H
39#define INDEX_H
40
41#include <QStringList>
42#include <QHash>
43#include <QDataStream>
44#include <QObject>
45#include <QList>
46#include <QFile>
47#include <QVector>
48
49class QTimer;
50
51QT_BEGIN_NAMESPACE
52
54{
55 Document() = default;
56 Document(int d, int f) : docNumber(d), frequency(f) {}
57 bool operator==(const Document & doc) const
58 {
59 return docNumber == doc.docNumber;
60 }
61 bool operator<(const Document & doc) const
62 {
63 return frequency > doc.frequency;
64 }
65 bool operator<=(const Document & doc) const
66 {
67 return frequency >= doc.frequency;
68 }
69 bool operator>(const Document & doc) const
70 {
71 return frequency < doc.frequency;
72 }
73 qint16 docNumber = -1;
74 qint16 frequency = 0;
75};
76
77QDataStream & operator>>(QDataStream & s, Document & l);
78QDataStream & operator<<(QDataStream & s, const Document & l);
79
80class HelpIndex : public QObject
81{
82 Q_OBJECT
83public:
84 struct Entry
85 {
86 Entry(int d) { documents.append(Document(d, 1)); }
87 Entry(QVector<Document> l) : documents(l) {}
88 QVector<Document> documents;
89 };
90 struct PosEntry
91 {
92 PosEntry(int p) { positions.append(p); }
93 QList<uint> positions;
94 };
95
96 HelpIndex(QString dp, const QString & hp);
97 HelpIndex(QStringList dl, const QString & hp);
98 void writeDict();
99 void readDict();
100 void makeIndex();
101 QStringList query(const QStringList &, const QStringList &, const QStringList &);
102 QString getDocumentTitle(const QString &);
103 void setDictionaryFile(const QString &);
104 void setDocListFile(const QString &);
105 void setDocList(const QStringList &);
106
107 const QStringList & documentList() const { return docList; };
108 const QStringList & titlesList() const { return titleList; };
109
110signals:
111 void indexingStart(int);
114
115private slots:
116 void setLastWinClosed();
117 void filterNext();
118
119private:
120 void setupDocumentList();
121 void parseDocument(const QString &, int);
122 void insertInDict(const QString &, int);
123 void writeDocumentList();
124 void readDocumentList();
125 QStringList getWildcardTerms(const QString &);
126 QStringList split(const QString &);
127 QVector<Document> setupDummyTerm(const QStringList &);
128 bool searchForPattern(const QStringList &, const QStringList &, const QString &);
129 void buildMiniDict(const QString &);
130
131 QStringList docList;
132 QStringList titleList;
133 QHash<QString, Entry *> dict;
134 QHash<QString, PosEntry *> miniDict;
135 uint wordNum = 0;
136 QString docPath;
137 QString dictFile;
138 QString docListFile;
140 bool lastWindowClosed = false;
141 QHash<QString, QString> documentTitleCache;
142 QTimer * m_pTimer = nullptr;
143 int m_iCurItem = 0;
144};
145
146#endif
147
148QT_END_NAMESPACE
QDataStream & operator<<(QDataStream &s, const Document &l)
Definition HelpIndex.cpp:83
QDataStream & operator>>(QDataStream &s, Document &l)
Definition HelpIndex.cpp:76
Definition HelpIndex.h:81
const QStringList & documentList() const
Definition HelpIndex.h:107
uint wordNum
Definition HelpIndex.h:135
void setDictionaryFile(const QString &)
Definition HelpIndex.cpp:118
void indexingEnd()
void buildMiniDict(const QString &)
Definition HelpIndex.cpp:533
void setupDocumentList()
Definition HelpIndex.cpp:161
bool searchForPattern(const QStringList &, const QStringList &, const QString &)
Definition HelpIndex.cpp:540
QString docListFile
Definition HelpIndex.h:138
void writeDocumentList()
Definition HelpIndex.cpp:279
void readDocumentList()
Definition HelpIndex.cpp:317
QStringList titleList
Definition HelpIndex.h:132
bool alreadyHaveDocList
Definition HelpIndex.h:139
bool lastWindowClosed
Definition HelpIndex.h:140
QString docPath
Definition HelpIndex.h:136
void indexingProgress(int)
void parseDocument(const QString &, int)
Definition HelpIndex.cpp:197
QVector< Document > setupDummyTerm(const QStringList &)
Definition HelpIndex.cpp:509
void setDocListFile(const QString &)
Definition HelpIndex.cpp:123
void filterNext()
Definition HelpIndex.cpp:145
QString dictFile
Definition HelpIndex.h:137
QStringList getWildcardTerms(const QString &)
Definition HelpIndex.cpp:431
QStringList docList
Definition HelpIndex.h:131
void setLastWinClosed()
Definition HelpIndex.cpp:113
QHash< QString, Entry * > dict
Definition HelpIndex.h:133
QString getDocumentTitle(const QString &)
Definition HelpIndex.cpp:396
void indexingStart(int)
QStringList query(const QStringList &, const QStringList &, const QStringList &)
Definition HelpIndex.cpp:331
void makeIndex()
Definition HelpIndex.cpp:133
const QStringList & titlesList() const
Definition HelpIndex.h:108
QStringList split(const QString &)
Definition HelpIndex.cpp:482
QHash< QString, QString > documentTitleCache
Definition HelpIndex.h:141
void writeDict()
Definition HelpIndex.cpp:262
QHash< QString, PosEntry * > miniDict
Definition HelpIndex.h:134
int m_iCurItem
Definition HelpIndex.h:143
void insertInDict(const QString &, int)
Definition HelpIndex.cpp:176
void setDocList(const QStringList &)
Definition HelpIndex.cpp:128
QTimer * m_pTimer
Definition HelpIndex.h:142
void readDict()
Definition HelpIndex.cpp:294
#define d
Definition detector.cpp:69
#define l
Definition detector.cpp:77
#define f
Definition detector.cpp:71
#define s
Definition detector.cpp:84
#define p
Definition detector.cpp:81
Definition HelpIndex.h:54
Document(int d, int f)
Definition HelpIndex.h:56
qint16 frequency
Definition HelpIndex.h:74
bool operator>(const Document &doc) const
Definition HelpIndex.h:69
bool operator<(const Document &doc) const
Definition HelpIndex.h:61
qint16 docNumber
Definition HelpIndex.h:73
bool operator==(const Document &doc) const
Definition HelpIndex.h:57
bool operator<=(const Document &doc) const
Definition HelpIndex.h:65
Document()=default
Definition HelpIndex.h:85
QVector< Document > documents
Definition HelpIndex.h:88
Entry(int d)
Definition HelpIndex.h:86
Entry(QVector< Document > l)
Definition HelpIndex.h:87
Definition HelpIndex.h:91
QList< uint > positions
Definition HelpIndex.h:93
PosEntry(int p)
Definition HelpIndex.h:92