BibleTime
btmodulechooserbutton.cpp
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
14
15#include "../../backend/drivers/cswordmoduleinfo.h"
16#include "../../util/btconnect.h"
17#include "btmodulechoosermenu.h"
18
19
21 QWidget * parent)
22 : QToolButton(parent)
23 , m_popup(
25 QString(),
26 mtype,
27 BtModuleChooserMenu::DisableNonBiblesOnFirstButton
28 | BtModuleChooserMenu::AddNoneButton,
29 this))
30{
31 setIcon(m_popup->buttonIcon());
32 setMenu(m_popup);
33 setPopupMode(QToolButton::InstantPopup);
36}
37
39 CSwordModuleInfo * newSelectedModule,
40 int newButtonIndex,
41 int newLeftLikeModules)
42{
43 if (newSelectedModule) {
44 setToolTip(tr("Select a work [%1]").arg(newSelectedModule->name()));
45 } else {
46 setToolTip(tr("Select an additional work"));
47 }
48 m_popup->update(std::move(newModulesToUse),
49 newSelectedModule,
50 newButtonIndex,
51 newLeftLikeModules);
52 setIcon(m_popup->buttonIcon());
53}
54
55/** Is called after a module was selected in the popup */
57 CSwordModuleInfo * const newModule)
58{
59 if (m_popup->selectedModule()) { // If module was previously selected:
60 if (newModule) {
61 m_popup->setSelectedModule(newModule);
62 setIcon(m_popup->buttonIcon());
63 Q_EMIT sigModuleReplace(m_popup->buttonIndex(), newModule);
64 } else {
65 m_popup->setSelectedModule(nullptr);
66 setIcon(m_popup->buttonIcon());
68 }
69 } else if (newModule) {
70 m_popup->setSelectedModule(newModule);
71 setIcon(m_popup->buttonIcon());
72 Q_EMIT sigModuleAdd(m_popup->buttonIndex(), newModule);
73 }
74}
#define BT_CONNECT(...)
Definition btconnect.h:20
QList< CSwordModuleInfo * > BtModuleList
BtModuleChooserMenu * m_popup
void updateMenu(BtModuleList newModulesToUse, CSwordModuleInfo *thisModule, int newIndex, int leftLikeModules)
void sigModuleAdd(int index, CSwordModuleInfo *module)
void moduleChosen(CSwordModuleInfo *const module)
void sigModuleReplace(int index, CSwordModuleInfo *newModule)
BtModuleChooserButton(CSwordModuleInfo::ModuleType mtype, QWidget *parent=nullptr)
Constructs an new empty button.
void sigModuleRemove(int index)
CSwordModuleInfo * selectedModule() const noexcept
void update(BtModuleList newModulesToUse, CSwordModuleInfo *newSelectedModule, int newButtonIndexIndex, int newLeftLikeModules)
void sigModuleChosen(CSwordModuleInfo *module)
void setSelectedModule(CSwordModuleInfo *const newSelectedModule) noexcept
int buttonIndex() const noexcept
QString const & name() const