diff options
Diffstat (limited to 'src/frontend/displaywindow/cbuttons.cpp')
-rw-r--r-- | src/frontend/displaywindow/cbuttons.cpp | 185 |
1 files changed, 0 insertions, 185 deletions
diff --git a/src/frontend/displaywindow/cbuttons.cpp b/src/frontend/displaywindow/cbuttons.cpp deleted file mode 100644 index 46c262a..0000000 --- a/src/frontend/displaywindow/cbuttons.cpp +++ /dev/null @@ -1,185 +0,0 @@ -/********* -* -* 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. -* -**********/ - -#include "frontend/displaywindow/cbuttons.h" - -#include <QHash> -#include <QMenu> -#include <QString> -#include <QToolTip> -#include <QToolButton> -#include "util/directory.h" -#include "util/cpointers.h" -#include "util/cresmgr.h" - - -CDisplaySettingsButton::CDisplaySettingsButton(CSwordBackend::DisplayOptions *displaySettings, CSwordBackend::FilterOptions *moduleSettings, const QList<CSwordModuleInfo*>& useModules, QWidget *parent ) - : QToolButton(parent) { - namespace DU = util::directory; - - // qWarning("CDisplaySettingsButton::CDisplaySettingsButton"); - QToolButton::setIcon(DU::getIcon(CResMgr::displaywindows::displaySettings::icon)); - - m_displaySettings = displaySettings; - m_moduleSettings = moduleSettings; - m_modules = useModules; - - m_popup = new QMenu(this); - setMenu(m_popup); - setPopupMode(QToolButton::InstantPopup); - setToolTip(tr("Display options")); - - connect(m_popup, SIGNAL(triggered(QAction*)), this, SLOT(optionToggled(QAction*))); - populateMenu(); -} - -void CDisplaySettingsButton::reset(const QList<CSwordModuleInfo*>& useModules) { - m_modules = useModules; - populateMenu(); - //disable the settings button if no options are available - if (!populateMenu()) { - setEnabled(false); - setToolTip(tr("Display settings: No options available")); - } - else { - setEnabled(true); - setToolTip(tr("Display settings")); - } -} - - -void CDisplaySettingsButton::optionToggled(QAction* /*action*/) { - //Take each Action and set the corresponding setting. - //Using QAction (QObject) property and OptionType enum is a dirty way to do this. - //See populateMenu(). - foreach (QAction* act, m_popup->actions()) { - int optionType = act->property("OptionType").toInt(); - bool checked = act->isChecked(); - switch (optionType) { - case Linebreak: - m_displaySettings->lineBreaks = checked; - break; - case Versenum: - m_displaySettings->verseNumbers = checked; - break; - case Variant: - m_moduleSettings->textualVariants = checked; - break; - case Vowel: - m_moduleSettings->hebrewPoints = checked; - break; - case Accents: - m_moduleSettings->greekAccents = checked; - break; - case Cantillation: - m_moduleSettings->hebrewCantillation = checked; - break; - case Headings: - m_moduleSettings->headings = checked; - break; - case Morphseg: - m_moduleSettings->morphSegmentation = checked; - break; - case Xref: - m_moduleSettings->scriptureReferences = checked; - break; - case WordsofJ: - m_moduleSettings->redLetterWords = checked; - break; - } - } - - emit sigChanged(); -} - -/** No descriptions */ -int CDisplaySettingsButton::populateMenu() { - int ret = 0; - - m_popup->clear(); - - // See also optionToggled() - - ret += addMenuEntry(tr("Use linebreaks after each verse"), Linebreak, &m_displaySettings->lineBreaks, (m_modules.first()->type() == CSwordModuleInfo::Bible)); - - //show the verse numbers option only for bible modules - ret += addMenuEntry(tr("Show verse numbers"), Versenum, &m_displaySettings->verseNumbers, (m_modules.first()->type() == CSwordModuleInfo::Bible)); - - ret += addMenuEntry(tr("Show headings"), Headings, &m_moduleSettings->headings, - isOptionAvailable(CSwordModuleInfo::headings)); - - ret += addMenuEntry(tr("Highlight words of Jesus"), WordsofJ, &m_moduleSettings->redLetterWords, - isOptionAvailable(CSwordModuleInfo::redLetterWords )); - - ret += addMenuEntry(tr("Show Hebrew vowel points"), Vowel, &m_moduleSettings->hebrewPoints, - isOptionAvailable(CSwordModuleInfo::hebrewPoints )); - - ret += addMenuEntry(tr("Show Hebrew cantillation marks"), Cantillation, &m_moduleSettings->hebrewCantillation, - isOptionAvailable(CSwordModuleInfo::hebrewCantillation )); - - ret += addMenuEntry(tr("Show Greek accents"), Accents, &m_moduleSettings->greekAccents, - isOptionAvailable(CSwordModuleInfo::greekAccents )); - - ret += addMenuEntry(tr("Use alternative textual variant"), Variant, &m_moduleSettings->textualVariants, - isOptionAvailable(CSwordModuleInfo::textualVariants )); - - ret += addMenuEntry(tr("Show scripture cross-references"), Xref, &m_moduleSettings->scriptureReferences, - isOptionAvailable(CSwordModuleInfo::scriptureReferences )); - - ret += addMenuEntry(tr("Show morph segmentation"), Morphseg, &m_moduleSettings->morphSegmentation, - isOptionAvailable(CSwordModuleInfo::morphSegmentation )); - - return ret; -} - -/** Adds an entry to m_popup. */ -int CDisplaySettingsButton::addMenuEntry( const QString name, OptionType type, const int* option, const bool available) { - int ret = 0; - - if (available) { - QAction* a = m_popup->addAction(name); - //see optionToggled() - a->setProperty("OptionType", type); - a->setCheckable(true); - a->setChecked(*option); - ret = 1; - } - - return ret; -} - -bool CDisplaySettingsButton::isOptionAvailable( const CSwordModuleInfo::FilterTypes option ) { - bool ret = false; - QList<CSwordModuleInfo*>::iterator end_it = m_modules.end(); - for (QList<CSwordModuleInfo*>::iterator it(m_modules.begin()); it != end_it; ++it) { - ret = ret || (*it)->has(option); - } - return ret; -} - -/** Returns the number of usable menu items in the settings menu. */ -int CDisplaySettingsButton::menuItemCount() { - return m_popup->actions().count(); -} - -/** Sets the item at position pos to the state given as 2nd paramter. */ -void CDisplaySettingsButton::setItemStatus( const int index, const bool checked ) { - QAction* action = m_popup->actions().at(index); - action->setChecked(checked); -} - -/** Returns the status of the item at position "index" */ -bool CDisplaySettingsButton::itemStatus( const int index ) { - return m_popup->actions().at(index)->isChecked(); -} - -/** Sets the status to changed. The signal changed will be emitted. */ -void CDisplaySettingsButton::setChanged() { - optionToggled(0); -} |