BibleTime
btmodulechoosermenu.h
Go to the documentation of this file.
1/*********
2*
3* In the name of the Father, and of the Son, and of the Holy Spirit.
4*
5* This file is part of BibleTime's source code, https://bibletime.info/
6*
7* Copyright 1999-2025 by the BibleTime developers.
8* The BibleTime source code is licensed under the GNU General Public License
9* version 2.0.
10*
11**********/
12
13#pragma once
14
15#include "../btmenuview.h"
16
17#include <QFlags>
18#include <QObject>
19#include <QString>
20#include "../../backend/drivers/cswordmoduleinfo.h"
21#include "../../backend/drivers/btmodulelist.h"
22
23
24class QAction;
25class QActionGroup;
26class QMenu;
27class QModelIndex;
28class QWidget;
29
30class BtModuleChooserMenu final: public BtMenuView {
31
32 Q_OBJECT
33
34public: // types:
35
41 Q_DECLARE_FLAGS(Flags, Flag)
42
43public: // methods:
44
45 BtModuleChooserMenu(QString const & title,
47 Flags flags,
48 QWidget * parent = nullptr);
49
50 void update(BtModuleList newModulesToUse,
51 CSwordModuleInfo * newSelectedModule,
52 int newButtonIndexIndex,
53 int newLeftLikeModules);
54
56 { return m_selectedModule; }
57
58 QIcon buttonIcon() const;
59
60 void setSelectedModule(CSwordModuleInfo * const newSelectedModule) noexcept;
61
62 int buttonIndex() const noexcept { return m_buttonIndex; }
63
64Q_SIGNALS:
65
67
68private: // methods:
69
70 void preBuildMenu(QActionGroup * actionGroup) final override;
71
72 QAction * newAction(QMenu * parentMenu,
73 QModelIndex const & itemIndex) final override;
74
75public: // fields:
76
78 void * const m_sortedModel;
79 Flags const m_flags;
84
85};
86
87Q_DECLARE_OPERATORS_FOR_FLAGS(BtModuleChooserMenu::Flags)
QList< CSwordModuleInfo * > BtModuleList
CSwordModuleInfo * selectedModule() const noexcept
QAction * newAction(QMenu *parentMenu, QModelIndex const &itemIndex) final override
void update(BtModuleList newModulesToUse, CSwordModuleInfo *newSelectedModule, int newButtonIndexIndex, int newLeftLikeModules)
void preBuildMenu(QActionGroup *actionGroup) final override
void sigModuleChosen(CSwordModuleInfo *module)
CSwordModuleInfo * m_selectedModule
void setSelectedModule(CSwordModuleInfo *const newSelectedModule) noexcept
CSwordModuleInfo::ModuleType const m_moduleType
int buttonIndex() const noexcept