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-2021 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 
24 class QAction;
25 class QActionGroup;
26 class QMenu;
27 class QModelIndex;
28 class QWidget;
29 
30 class BtModuleChooserMenu final: public BtMenuView {
31 
32  Q_OBJECT
33 
34 public: // types:
35 
36  enum Flag {
40  };
41  Q_DECLARE_FLAGS(Flags, Flag)
42 
43 public: // 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_moduleType; }
57 
58  CSwordModuleInfo * selectedModule() const noexcept
59  { return m_selectedModule; }
60 
61  void setSelectedModule(CSwordModuleInfo * const newSelectedModule) noexcept;
62 
63  int buttonIndex() const noexcept { return m_buttonIndex; }
64 
65 Q_SIGNALS:
66 
68 
69 private: // methods:
70 
71  void preBuildMenu(QActionGroup * actionGroup) final override;
72 
73  QAction * newAction(QMenu * parentMenu,
74  QModelIndex const & itemIndex) final override;
75 
76 public: // fields:
77 
79  void * const m_sortedModel;
80  Flags const m_flags;
85 
86 };
87 
88 Q_DECLARE_OPERATORS_FOR_FLAGS(BtModuleChooserMenu::Flags)
QList< CSwordModuleInfo * > BtModuleList
Definition: btmodulelist.h:20
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
BtModuleChooserMenu(QString const &title, CSwordModuleInfo::ModuleType moduleType, Flags flags, QWidget *parent=nullptr)
BtModuleList m_newModulesToUse
CSwordModuleInfo * selectedModule() const noexcept
void setSelectedModule(CSwordModuleInfo *const newSelectedModule) noexcept
CSwordModuleInfo::ModuleType const m_moduleType
CSwordModuleInfo::ModuleType moduleType() const noexcept
int buttonIndex() const noexcept