summaryrefslogtreecommitdiff
path: root/src/frontend/displaywindow/cmodulechooserbutton.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/displaywindow/cmodulechooserbutton.cpp')
-rw-r--r--src/frontend/displaywindow/cmodulechooserbutton.cpp306
1 files changed, 152 insertions, 154 deletions
diff --git a/src/frontend/displaywindow/cmodulechooserbutton.cpp b/src/frontend/displaywindow/cmodulechooserbutton.cpp
index dd5a9ee..14760e0 100644
--- a/src/frontend/displaywindow/cmodulechooserbutton.cpp
+++ b/src/frontend/displaywindow/cmodulechooserbutton.cpp
@@ -26,186 +26,184 @@
#include <QMenu>
#include <QtDebug>
-CModuleChooserButton::CModuleChooserButton(CSwordModuleInfo* useModule,CSwordModuleInfo::ModuleType type, const int id, CModuleChooserBar *parent)
- : QToolButton(parent),
- m_id(id), m_popup(0), m_moduleChooserBar(parent)
-{
- m_moduleType = type;
- m_module = useModule;
- m_hasModule = (m_module) ? true : false;
-
- setIcon( util::filesystem::DirectoryUtil::getIcon(iconName()) );
- setPopupMode(QToolButton::InstantPopup);
-
- populateMenu();
+CModuleChooserButton::CModuleChooserButton(CSwordModuleInfo* useModule, CSwordModuleInfo::ModuleType type, const int id, CModuleChooserBar *parent)
+ : QToolButton(parent),
+ m_id(id), m_popup(0), m_moduleChooserBar(parent) {
+ m_moduleType = type;
+ m_module = useModule;
+ m_hasModule = (m_module) ? true : false;
+
+ setIcon( util::filesystem::DirectoryUtil::getIcon(iconName()) );
+ setPopupMode(QToolButton::InstantPopup);
+
+ populateMenu();
}
CModuleChooserButton::~CModuleChooserButton() {
- qDeleteAll(m_submenus);
- m_submenus.clear();
- delete m_popup; //not necessary, because has "this" as parent?
+ qDeleteAll(m_submenus);
+ m_submenus.clear();
+ delete m_popup; //not necessary, because has "this" as parent?
}
/** Returns the icon used for the current status. */
const QString CModuleChooserButton::iconName() {
- switch (m_moduleType) {
- case CSwordModuleInfo::Bible:
- return (m_hasModule) ? CResMgr::modules::bible::icon_unlocked : CResMgr::modules::bible::icon_add;
- case CSwordModuleInfo::Commentary:
- return (m_hasModule) ? CResMgr::modules::commentary::icon_unlocked : CResMgr::modules::commentary::icon_add;
- case CSwordModuleInfo::Lexicon:
- return m_hasModule ? CResMgr::modules::lexicon::icon_unlocked : CResMgr::modules::lexicon::icon_add;
- case CSwordModuleInfo::GenericBook:
- return m_hasModule ? CResMgr::modules::book::icon_unlocked : CResMgr::modules::book::icon_add;
- default: //return as default the bible icon
- return CResMgr::modules::bible::icon_unlocked;
- }
+ switch (m_moduleType) {
+ case CSwordModuleInfo::Bible:
+ return (m_hasModule) ? CResMgr::modules::bible::icon_unlocked : CResMgr::modules::bible::icon_add;
+ case CSwordModuleInfo::Commentary:
+ return (m_hasModule) ? CResMgr::modules::commentary::icon_unlocked : CResMgr::modules::commentary::icon_add;
+ case CSwordModuleInfo::Lexicon:
+ return m_hasModule ? CResMgr::modules::lexicon::icon_unlocked : CResMgr::modules::lexicon::icon_add;
+ case CSwordModuleInfo::GenericBook:
+ return m_hasModule ? CResMgr::modules::book::icon_unlocked : CResMgr::modules::book::icon_add;
+ default: //return as default the bible icon
+ return CResMgr::modules::bible::icon_unlocked;
+ }
}
CSwordModuleInfo* CModuleChooserButton::module() {
- foreach (QMenu* popup, m_submenus) {
- foreach (QAction* action, popup->actions()) {
- if ( action->isChecked() ) { //idAt -> , isItemChecked -> QAction::isChecked
- QString mod = action->text(); //popup->text(popup->idAt(i)); //text ->
- mod.remove(QChar('&')); //remove hotkey indicators
- return backend()->findModuleByName( mod.left(mod.indexOf(" ")) );
- }
- }
- }
- return 0; //"none" selected
+ foreach (QMenu* popup, m_submenus) {
+ foreach (QAction* action, popup->actions()) {
+ if ( action->isChecked() ) { //idAt -> , isItemChecked -> QAction::isChecked
+ QString mod = action->text(); //popup->text(popup->idAt(i)); //text ->
+ mod.remove(QChar('&')); //remove hotkey indicators
+ return backend()->findModuleByName( mod.left(mod.indexOf(" ")) );
+ }
+ }
+ }
+ return 0; //"none" selected
}
/** Returns the id used for this button. */
int CModuleChooserButton::getId() const {
- return m_id;
+ return m_id;
}
/** Is called after a module was selected in the popup */
void CModuleChooserButton::moduleChosen( QAction* action ) {
-
- QListIterator<QMenu*> it(m_submenus);
- while (it.hasNext()) {
- QMenu* popup = it.next();
- foreach (QAction* a, popup->actions()) {
- a->setChecked(false);
- }
- action->setChecked(true);
- }
-
- m_noneAction->setChecked(false); //uncheck the "none" item
- if (action->text().remove(QChar('&')) == tr("NONE")) { // note: this is for m_popup, the toplevel!
- if (m_hasModule) {
- emit sigRemoveButton(m_id);
- return;
- }
- }
- else {
- if (!m_hasModule) {
- emit sigAddButton();
- }
-
- m_hasModule = true;
- m_module = module();
-
- setIcon( util::filesystem::DirectoryUtil::getIcon(iconName()) );
- emit sigChanged();
-
- if (m_module) {
- setToolTip( tr("Select a work") + " [" + m_module->name() + "]" );
- }
- else {
- setToolTip( tr("Select an additional work") );
- }
- }
+
+ QListIterator<QMenu*> it(m_submenus);
+ while (it.hasNext()) {
+ QMenu* popup = it.next();
+ foreach (QAction* a, popup->actions()) {
+ a->setChecked(false);
+ }
+ action->setChecked(true);
+ }
+
+ m_noneAction->setChecked(false); //uncheck the "none" item
+ if (action->text().remove(QChar('&')) == tr("NONE")) { // note: this is for m_popup, the toplevel!
+ if (m_hasModule) {
+ emit sigRemoveButton(m_id);
+ return;
+ }
+ }
+ else {
+ if (!m_hasModule) {
+ emit sigAddButton();
+ }
+
+ m_hasModule = true;
+ m_module = module();
+
+ setIcon( util::filesystem::DirectoryUtil::getIcon(iconName()) );
+ emit sigChanged();
+
+ if (m_module) {
+ setToolTip( tr("Select a work") + " [" + m_module->name() + "]" );
+ }
+ else {
+ setToolTip( tr("Select an additional work") );
+ }
+ }
}
/** No descriptions */
void CModuleChooserButton::populateMenu() {
- qDeleteAll(m_submenus);
- m_submenus.clear();
- delete m_popup;
- m_popup = new QMenu(this);
-
- if (m_module) {
- this->setToolTip( tr("Select a work") + " [" + m_module->name() + "]" );
- }
- else {
- this->setToolTip( tr("Select an additional work") );
- }
-
- m_noneAction = m_popup->addAction(tr("NONE"));
- m_noneAction->setCheckable(true);
- if (!m_module) m_noneAction->setChecked(true);
-
- m_popup->addSeparator();
- connect(m_popup, SIGNAL(triggered(QAction*)), this, SLOT(moduleChosen(QAction*)));
- setMenu(m_popup);
-
-
- // ******* Add languages and modules ********
-
- // Filters: add only non-hidden and right type
- BTModuleTreeItem::HiddenOff hiddenFilter;
- TypeFilter typeFilter(m_moduleType);
- QList<BTModuleTreeItem::Filter*> filters;
- if (!CBTConfig::get(CBTConfig::bookshelfShowHidden)) {
- filters.append(&hiddenFilter);
- }
- filters.append(&typeFilter);
- BTModuleTreeItem root(filters, BTModuleTreeItem::LangMod);
- // add all items recursively
- addItemToMenu(&root, m_popup);
+ qDeleteAll(m_submenus);
+ m_submenus.clear();
+ delete m_popup;
+ m_popup = new QMenu(this);
+
+ if (m_module) {
+ this->setToolTip( tr("Select a work") + " [" + m_module->name() + "]" );
+ }
+ else {
+ this->setToolTip( tr("Select an additional work") );
+ }
+
+ m_noneAction = m_popup->addAction(tr("NONE"));
+ m_noneAction->setCheckable(true);
+ if (!m_module) m_noneAction->setChecked(true);
+
+ m_popup->addSeparator();
+ connect(m_popup, SIGNAL(triggered(QAction*)), this, SLOT(moduleChosen(QAction*)));
+ setMenu(m_popup);
+
+
+ // ******* Add languages and modules ********
+
+ // Filters: add only non-hidden and right type
+ BTModuleTreeItem::HiddenOff hiddenFilter;
+ TypeFilter typeFilter(m_moduleType);
+ QList<BTModuleTreeItem::Filter*> filters;
+ if (!CBTConfig::get(CBTConfig::bookshelfShowHidden)) {
+ filters.append(&hiddenFilter);
+ }
+ filters.append(&typeFilter);
+ BTModuleTreeItem root(filters, BTModuleTreeItem::LangMod);
+ // add all items recursively
+ addItemToMenu(&root, m_popup);
}
-void CModuleChooserButton::addItemToMenu(BTModuleTreeItem* item, QMenu* menu)
-{
- foreach (BTModuleTreeItem* i, item->children()) {
-
- if (i->type() == BTModuleTreeItem::Language) {
- // argument menu was m_popup, create and add a new lang menu to it
- QMenu* langMenu = new QMenu(i->text(), this);
- menu->addMenu(langMenu);
- m_submenus.append(langMenu);
- connect(langMenu, SIGNAL(triggered(QAction*)), this, SLOT(moduleChosen(QAction*)));
- // add the module items to the lang menu
- addItemToMenu(i, langMenu);
- }
- else {
- // item must be module, create and add it to the lang menu
- QString name(i->text());
- name.append(" ").append(i->moduleInfo()->isLocked() ? tr("[locked]") : QString::null);
- QAction* modItem = new QAction(name, menu);
- modItem->setCheckable(true);
- if ( m_module && i->text() == m_module->name()) modItem->setChecked(true);
- menu->addAction(modItem);
- }
- }
+void CModuleChooserButton::addItemToMenu(BTModuleTreeItem* item, QMenu* menu) {
+ foreach (BTModuleTreeItem* i, item->children()) {
+
+ if (i->type() == BTModuleTreeItem::Language) {
+ // argument menu was m_popup, create and add a new lang menu to it
+ QMenu* langMenu = new QMenu(i->text(), this);
+ menu->addMenu(langMenu);
+ m_submenus.append(langMenu);
+ connect(langMenu, SIGNAL(triggered(QAction*)), this, SLOT(moduleChosen(QAction*)));
+ // add the module items to the lang menu
+ addItemToMenu(i, langMenu);
+ }
+ else {
+ // item must be module, create and add it to the lang menu
+ QString name(i->text());
+ name.append(" ").append(i->moduleInfo()->isLocked() ? tr("[locked]") : QString::null);
+ QAction* modItem = new QAction(name, menu);
+ modItem->setCheckable(true);
+ if ( m_module && i->text() == m_module->name()) modItem->setChecked(true);
+ menu->addAction(modItem);
+ }
+ }
}
void CModuleChooserButton::updateMenuItems() {
- QString moduleName;
- CSwordModuleInfo* module = 0;
- QList<CSwordModuleInfo*> chosenModules = m_moduleChooserBar->getModuleList();
-
- //for ( QMenu* popup = m_submenus.first(); popup; popup = m_submenus.next() ) {
- QListIterator<QMenu*> it(m_submenus);
- while (it.hasNext()) {
- QMenu* popup = it.next();
- foreach (QAction* action, popup->actions()) {
- moduleName = action->text();
- moduleName.remove(QChar('&')); //remove Hotkey indicator
- module = backend()->findModuleByName( moduleName.left(moduleName.lastIndexOf(" ")) );
-
- //Q_ASSERT(module);
- if (!module) qWarning("Can't find module with name %s", moduleName.toLatin1().data());
-
- bool alreadyChosen = chosenModules.contains( module );
- if (m_module) {
- alreadyChosen = alreadyChosen && (m_module->name() != moduleName);
- }
- //grey it out, it was chosen already
- action->setEnabled(!alreadyChosen);
- }
- }
+ QString moduleName;
+ CSwordModuleInfo* module = 0;
+ QList<CSwordModuleInfo*> chosenModules = m_moduleChooserBar->getModuleList();
+
+ //for ( QMenu* popup = m_submenus.first(); popup; popup = m_submenus.next() ) {
+ QListIterator<QMenu*> it(m_submenus);
+ while (it.hasNext()) {
+ QMenu* popup = it.next();
+ foreach (QAction* action, popup->actions()) {
+ moduleName = action->text();
+ moduleName.remove(QChar('&')); //remove Hotkey indicator
+ module = backend()->findModuleByName( moduleName.left(moduleName.lastIndexOf(" ")) );
+
+ //Q_ASSERT(module);
+ if (!module) qWarning("Can't find module with name %s", moduleName.toLatin1().data());
+
+ bool alreadyChosen = chosenModules.contains( module );
+ if (m_module) {
+ alreadyChosen = alreadyChosen && (m_module->name() != moduleName);
+ }
+ //grey it out, it was chosen already
+ action->setEnabled(!alreadyChosen);
+ }
+ }
}