summaryrefslogtreecommitdiff
path: root/src/frontend/keychooser/ckeychooser.h
blob: 4441df0e9a2116cbcac61972b100c91028fb9aa8 (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
/*********
*
* 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 CKEYCHOOSER_H
#define CKEYCHOOSER_H

#include <QWidget>


class BTHistory;
class CSwordKey;
class CSwordModuleInfo;
class QAction;

/**
 * The base class for the KeyChooser.
 * Do not use directly, create a KeyChooser with
 * @ref #createInstance , this will create the proper one
 * of the classes that inherit from @ref CKeyChooser
 *
  * @author The BibleTime team
  */
class CKeyChooser : public QWidget {
        Q_OBJECT
    public:

        /**
        * Creates a proper Instance, either
        *
        @ref CLexiconKeyChooser or
        * @ref CBibleKeyChooser
        * @param info the @ref CModuleInfo to be represented by the KeyChooser
        * @param key if not NULL, the @ref CKey the KeyChooser should be set to
        * @param parent the parent of the widget to create
        */
        static CKeyChooser* createInstance(QList<CSwordModuleInfo*> modules, CSwordKey *key, QWidget *parent);


    public slots:
        /**
        * sets the @ref CKey
        * @param key the key which the widget should be set to
        */
        virtual void setKey(CSwordKey* key) = 0;
        /**
        * sets the @ref CKey
        * @param key the key which the widget should be set to
        */
        virtual void updateKey(CSwordKey* key) = 0;
        /**
        * gets the current @ref CKey
        *
        * @return the current @ref CKey
        */
        virtual CSwordKey* key() = 0;
        /**
        * Sets the module of this keychooser and refreshes the comboboxes
        */
        virtual void setModules( const QList<CSwordModuleInfo*>& modules, const bool refresh = true ) = 0;
        /**
        * Freshes the content of the different key chooser parts.
        */
        virtual void refreshContent() = 0;

        /**
        * Returns the history object of this keychooser.
        */
        BTHistory* history();

    signals:

        /**
        * is emitted if the @ref CKey was changed by the user
        */
        void keyChanged(CSwordKey* newKey);
        /**
        * Is emitted before the key is changed!
        */
        void beforeKeyChange(const QString& key);

    protected:

        /**
        * the constructor - DO NOT USE! -- use @ref #createInstance instead!
        */
        CKeyChooser(QList<CSwordModuleInfo*> info, CSwordKey *key = 0, QWidget *parent = 0);
        virtual ~CKeyChooser();
        /**
        * Set the appropriate font do display the modules
        */
        virtual void adjustFont() = 0;

    protected slots:
        virtual void setKey(QString& newKey) = 0;

    private:
        BTHistory* m_history;

};

#endif