summaryrefslogtreecommitdiff
path: root/src/frontend/searchdialog/csearchdialog.h
blob: dd2fcd2c56175dd25b5ce1283666764306523120 (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
135
136
137
138
139
/*********
*
* This file is part of BibleTime's source code, http://www.bibletime.info/.
*
* Copyright 1999-2011 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

#include <QDialog>

#include <QString>
#include "backend/cswordmodulesearch.h"
#include "backend/managers/cswordbackend.h"
#include "frontend/searchdialog/btsearchoptionsarea.h"

namespace Search {
class BtSearchResultArea;
}
class QPushButton;
class QWidget;

namespace Search {

/**
  \note destroys itself on close
*/
class CSearchDialog : public QDialog {
        Q_OBJECT
    public:
        static void openDialog(const QList<const CSwordModuleInfo*> modules,
                               const QString &searchText = QString::null,
                               QWidget *parentDialog = 0);

        static void closeDialog();

    protected:

        friend class CSearchAnalysisScene;
        friend class BtSearchResultArea;

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

        CSearchDialog(QWidget *parent);
        ~CSearchDialog();

        /**
         * Initializes this object.
         */
        void initView();

        /**
          Starts the search with the given module list and given search text.
        */
        void startSearch(const QList<const 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<const CSwordModuleInfo*> modules) {
            m_searchOptionsArea->setModules(modules);
        }

        /**
          Returns the list of used modules.
        */
        inline QList<const CSwordModuleInfo*> modules() const {
            return m_searchOptionsArea->modules();
        }

        /**
        * 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 {
            return m_searchOptionsArea->searchText();
        }

        /**
          \returns the used search scope as a list key
        */
        inline sword::ListKey searchScope() const {
            return m_searchOptionsArea->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() const;

    protected slots:
        /**
          Starts the search with the set modules and the set search text.
        */
        void startSearch();

        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