summaryrefslogtreecommitdiff
path: root/src/frontend/searchdialog/csearchdialog.h
blob: de46ad35ad5ab2003c637524414680925c482d96 (plain)
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
/*********
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2008 by the BibleTime developers.
* The BibleTime source code is licensed under the GNU General Public License version 2.0.
*
**********/

#ifndef CSEARCHDIALOG_H
#define CSEARCHDIALOG_H

//BibleTime includes
#include "backend/managers/cswordbackend.h"
#include "backend/cswordmodulesearch.h"

#include "util/cpointers.h"

//Qt includes
#include <QString>
#include <QDialog>


//forward declarations
namespace Search {
	class BtSearchResultArea;
	class BtSearchOptionsArea;
}

class QWidget;
class QPushButton;


namespace Search {

/**
  *@author The BibleTime team
  */
class CSearchDialog : public QDialog  {
	Q_OBJECT

public:
	static void openDialog(const QList<CSwordModuleInfo*> modules, const QString& searchText = QString::null, QWidget* parentDialog = 0);

protected:
	friend class CSearchAnalysisScene;
	friend class CSearchResultArea;
	friend class BtSearchResultArea;
	friend class BibleTime;

	/**
	* Only interesting for the class members! Useful to get the searched text etc.
	*/
	static CSearchDialog* getSearchDialog();

	/**
	* The constructor of the dialog. It's protected because you should use the static public function openDialog.
	* The dialog destroys itself if it was closed.
	*/
	CSearchDialog(QWidget *parent);
	~CSearchDialog();

	/**
	 * Initializes this object.
	 */
	void initView();
	/**
	* Starts the search with the given module list and given search text.
	* Doesn't wait for the start button press, starts immediately
	*/
	void startSearch( const QList<CSwordModuleInfo*> modules, const QString& searchText);
	/**Prepares the search string given by user for a specific search type */
	QString prepareSearchText(const QString& orig);
	/**
	* Sets the list of modules for the search.
	*/
	void setModules( const QList<CSwordModuleInfo*> modules );
	/**
	* Returns the list of used modules.
	*/
	QList<CSwordModuleInfo*> modules() const;
	/**
	* Sets the search text which is used for the search.
	*/
	void setSearchText( const QString searchText );
	/**
	* Returns the search text which is set currently.
	*/
	QString searchText() const;
	/**
	* Returns the used search scope as a list key
	*/
	sword::ListKey searchScope();
	
	/**
	* Resets the parts to the default.
	*/
	void reset();
	/**
	* Load the settings from the resource file
	*/
	void loadDialogSettings();
	/**
	* Save the settings to the resource file
	*/
	void saveDialogSettings();

protected slots:
	/**
	* Starts the search with the set modules and the set search text.
	*/
	void startSearch();
	void searchFinished();
	void showModulesSelector();
	/**
	* Initializes the signal slot connections
	*/
	void initConnections();

    void closeButtonClicked();

private:
	QPushButton* m_analyseButton;
	QPushButton* m_closeButton;
	BtSearchResultArea* m_searchResultArea;
	BtSearchOptionsArea* m_searchOptionsArea;

	CSwordModuleSearch m_searcher;
};


} //end of namespace Search

#endif