/* * 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 #include #include #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 "refcntr.h" #include "pathut.h" class IdxSchedW; class ExecCmd; class Preview; class ResTable; class CronToolW; class RTIToolW; #include "ui_rclmain.h" namespace confgui { class ConfIndexW; } using confgui::ConfIndexW; class RclMain : public QMainWindow, public Ui::RclMainBase { Q_OBJECT public: enum IndexerState {IXST_NOTRUNNING, IXST_RUNNINGMINE, IXST_RUNNINGNOTMINE}; RclMain(QWidget * parent = 0) : QMainWindow(parent), curPreview(0), asearchform(0), uiprefs(0), indexConfig(0), indexSched(0), cronTool(0), rtiTool(0), spellform(0), periodictimer(0), restable(0), displayingTable(0), m_idNoStem(0), m_idAllStem(0), m_idxproc(0), m_sortspecnochange(false), m_indexerState(IXST_RUNNINGNOTMINE), m_queryActive(false), m_firstIndexing(false), m_searchIsSimple(false) { setupUi(this); init(); } ~RclMain() {} virtual bool eventFilter(QObject *target, QEvent *event); 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 dups); public slots: virtual bool close(); virtual void fileExit(); virtual void idxStatus(); virtual void periodic100(); virtual void toggleIndexing(); virtual void rebuildIndex(); virtual void startSearch(RefCntr sdata, bool issimple); virtual void previewClosed(Preview *w); virtual void showAdvSearchDialog(); virtual void showSpellDialog(); 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 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 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 setStemLang(QAction *id); virtual void adjustPrefsMenu(); virtual void catgFilter(int); 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(); signals: void docSourceChanged(RefCntr); void stemLangChanged(const QString& lang); void sortDataChanged(DocSeqSortSpec); void resultsReady(); void searchReset(); protected: virtual void closeEvent( QCloseEvent * ); private: Preview *curPreview; AdvSearch *asearchform; UIPrefsDialog *uiprefs; ConfIndexW *indexConfig; IdxSchedW *indexSched; CronToolW *cronTool; RTIToolW *rtiTool; SpellW *spellform; QTimer *periodictimer; ResTable *restable; bool displayingTable; QAction *m_idNoStem; QAction *m_idAllStem; QFileSystemWatcher m_watcher; vector m_viewers; ExecCmd *m_idxproc; // Indexing process map m_stemLangToId; vector m_catgbutvec; DocSeqFiltSpec m_filtspec; bool m_sortspecnochange; DocSeqSortSpec m_sortspec; RefCntr 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; virtual void init(); virtual void previewPrevOrNextInTab(Preview *, int sid, int docnum, bool next); 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&); virtual void initiateQuery(); }; #endif // RCLMAIN_W_H