Parent: [cecd1b] (diff)

Child: [2176d8] (diff)

Download this file

rclmain_w.h    280 lines (253 with data), 9.1 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
/*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef RCLMAIN_W_H
#define RCLMAIN_W_H
#include "autoconfig.h"
#include <qvariant.h>
#include <qmainwindow.h>
#include <QFileSystemWatcher>
#include "sortseq.h"
#include "preview_w.h"
#include "recoll.h"
#include "advsearch_w.h"
#include "uiprefs_w.h"
#include "rcldb.h"
#include "searchdata.h"
#include "spell_w.h"
#include <memory>
#include "pathut.h"
#include "guiutils.h"
#include "rclutil.h"
class SnippetsW;
class IdxSchedW;
class ExecCmd;
class Preview;
class ResTable;
class CronToolW;
class RTIToolW;
class FragButs;
class SpecIdxW;
class WebcacheEdit;
#include "ui_rclmain.h"
namespace confgui {
class ConfIndexW;
}
using confgui::ConfIndexW;
class RclTrayIcon;
class RclMain : public QMainWindow, public Ui::RclMainBase {
Q_OBJECT;
public:
RclMain(QWidget * parent = 0)
: QMainWindow(parent),
curPreview(0),
asearchform(0),
uiprefs(0),
indexConfig(0),
indexSched(0),
cronTool(0),
rtiTool(0),
spellform(0),
fragbuts(0),
specidx(0),
periodictimer(0),
webcache(0),
restable(0),
displayingTable(0),
m_idNoStem(0),
m_idAllStem(0),
m_toolsTB(0), m_resTB(0),
m_filtFRM(0), m_filtCMB(0), m_filtBGRP(0), m_filtMN(0),
m_idxproc(0),
m_idxkilled(false),
m_catgbutvecidx(0),
m_sortspecnochange(false),
m_indexerState(IXST_UNKNOWN),
m_queryActive(false),
m_firstIndexing(false),
m_searchIsSimple(false),
m_pidfile(0) {
setupUi(this);
init();
}
~RclMain() {}
QString getQueryDescription();
/** This is only called from main() to set an URL to be displayed (using
recoll as a doc extracter for embedded docs */
virtual void setUrlToView(const QString& u) {
m_urltoview = u;
}
/** Same usage: actually display the current urltoview */
virtual void viewUrl();
bool lastSearchSimple() {
return m_searchIsSimple;
}
// Takes copies of the args instead of refs. Lazy and safe.
void newDupsW(const Rcl::Doc doc, const std::vector<Rcl::Doc> dups);
enum IndexerState {IXST_UNKNOWN, IXST_NOTRUNNING,
IXST_RUNNINGMINE, IXST_RUNNINGNOTMINE};
IndexerState indexerState() const {
return m_indexerState;
}
public slots:
virtual void fileExit();
virtual void periodic100();
virtual void toggleIndexing();
#ifndef _WIN32
virtual void bumpIndexing();
#endif
virtual void rebuildIndex();
virtual void specialIndex();
virtual void startSearch(std::shared_ptr<Rcl::SearchData> sdata,
bool issimple);
virtual void previewClosed(Preview *w);
virtual void showAdvSearchDialog();
virtual void showSpellDialog();
virtual void showWebcacheDialog();
virtual void showIndexStatistics();
virtual void showFragButs();
virtual void showSpecIdx();
virtual void showAboutDialog();
virtual void showMissingHelpers();
virtual void showActiveTypes();
virtual void startManual();
virtual void startManual(const string&);
virtual void showDocHistory();
virtual void showExtIdxDialog();
virtual void setSynEnabled(bool);
virtual void showUIPrefs();
virtual void showIndexConfig();
virtual void execIndexConfig();
virtual void showCronTool();
virtual void execCronTool();
virtual void showRTITool();
virtual void execRTITool();
virtual void showIndexSched();
virtual void execIndexSched();
virtual void setUIPrefs();
virtual void enableNextPage(bool);
virtual void enablePrevPage(bool);
virtual void docExpand(Rcl::Doc);
virtual void showSubDocs(Rcl::Doc);
virtual void showSnippets(Rcl::Doc);
virtual void startPreview(int docnum, Rcl::Doc doc, int keymods);
virtual void startPreview(Rcl::Doc);
virtual void startNativeViewer(Rcl::Doc, int pagenum = -1,
QString term = QString());
virtual void openWith(Rcl::Doc, string);
virtual void saveDocToFile(Rcl::Doc);
virtual void previewNextInTab(Preview *, int sid, int docnum);
virtual void previewPrevInTab(Preview *, int sid, int docnum);
virtual void previewExposed(Preview *, int sid, int docnum);
virtual void resetSearch();
virtual void eraseDocHistory();
virtual void eraseSearchHistory();
virtual void saveLastQuery();
virtual void loadSavedQuery();
virtual void setStemLang(QAction *id);
virtual void adjustPrefsMenu();
virtual void catgFilter(int);
virtual void catgFilter(QAction *);
virtual void onFragmentsChanged();
virtual void initDbOpen();
virtual void toggleFullScreen();
virtual void on_actionSortByDateAsc_toggled(bool on);
virtual void on_actionSortByDateDesc_toggled(bool on);
virtual void on_actionShowResultsAsTable_toggled(bool on);
virtual void onSortDataChanged(DocSeqSortSpec);
virtual void resultCount(int);
virtual void applyStyleSheet();
virtual void setFilterCtlStyle(int stl);
virtual void showTrayMessage(const QString& text);
private slots:
virtual void updateIdxStatus();
virtual void onWebcacheDestroyed(QObject *);
signals:
void docSourceChanged(std::shared_ptr<DocSequence>);
void stemLangChanged(const QString& lang);
void sortDataChanged(DocSeqSortSpec);
void resultsReady();
void searchReset();
protected:
virtual void closeEvent(QCloseEvent *);
virtual void showEvent(QShowEvent *);
private:
SnippetsW *m_snippets{0};
Preview *curPreview;
AdvSearch *asearchform;
UIPrefsDialog *uiprefs;
ConfIndexW *indexConfig;
IdxSchedW *indexSched;
CronToolW *cronTool;
RTIToolW *rtiTool;
SpellW *spellform;
FragButs *fragbuts;
SpecIdxW *specidx;
QTimer *periodictimer;
WebcacheEdit *webcache;
ResTable *restable;
bool displayingTable;
QAction *m_idNoStem;
QAction *m_idAllStem;
QToolBar *m_toolsTB;
QToolBar *m_resTB;
QFrame *m_filtFRM;
QComboBox *m_filtCMB;
QButtonGroup *m_filtBGRP;
QMenu *m_filtMN;
QFileSystemWatcher m_watcher;
vector<ExecCmd*> m_viewers;
ExecCmd *m_idxproc; // Indexing process
bool m_idxkilled; // Killed my process
TempFileInternal *m_idxreasontmp{nullptr};
map<QString, QAction*> m_stemLangToId;
vector<string> m_catgbutvec;
int m_catgbutvecidx;
DocSeqFiltSpec m_filtspec;
bool m_sortspecnochange;
DocSeqSortSpec m_sortspec;
std::shared_ptr<DocSequence> m_source;
IndexerState m_indexerState;
bool m_queryActive;
bool m_firstIndexing;
bool m_searchIsSimple; // Last search was started from simple
// If set on init, will be displayed either through ext app, or
// preview (if no ext app set)
QString m_urltoview;
RclTrayIcon *m_trayicon;
// We sometimes take the indexer lock (e.g.: when editing the webcache)
Pidfile *m_pidfile;
virtual void init();
virtual void setupResTB(bool combo);
virtual void previewPrevOrNextInTab(Preview *, int sid, int docnum,
bool next);
// flags may contain ExecCmd::EXF_xx values
virtual void execViewer(const map<string, string>& subs, bool enterHistory,
const string& execpath, const vector<string>& lcmd,
const string& cmd, Rcl::Doc doc, int flags=0);
virtual void setStemLang(const QString& lang);
virtual void onSortCtlChanged();
virtual void showIndexConfig(bool modal);
virtual void showIndexSched(bool modal);
virtual void showCronTool(bool modal);
virtual void showRTITool(bool modal);
virtual void updateIdxForDocs(vector<Rcl::Doc>&);
virtual void initiateQuery();
virtual bool containerUpToDate(Rcl::Doc& doc);
virtual void setFiltSpec();
virtual bool checkIdxPaths();
};
#endif // RCLMAIN_W_H