diff options
Diffstat (limited to 'src/frontend/displaywindow/cdisplaywindow.cpp')
-rw-r--r-- | src/frontend/displaywindow/cdisplaywindow.cpp | 205 |
1 files changed, 104 insertions, 101 deletions
diff --git a/src/frontend/displaywindow/cdisplaywindow.cpp b/src/frontend/displaywindow/cdisplaywindow.cpp index 4ba567a..3900a92 100644 --- a/src/frontend/displaywindow/cdisplaywindow.cpp +++ b/src/frontend/displaywindow/cdisplaywindow.cpp @@ -21,8 +21,8 @@ #include "frontend/display/cdisplay.h" #include "frontend/displaywindow/bttoolbarpopupaction.h" #include "frontend/displaywindow/btactioncollection.h" -#include "frontend/displaywindow/cmodulechooserbar.h" -#include "frontend/displaywindow/cbuttons.h" +#include "frontend/displaywindow/btmodulechooserbar.h" +#include "frontend/displaywindow/btdisplaysettingsbutton.h" #include "frontend/keychooser/ckeychooser.h" #include "frontend/keychooser/bthistory.h" #include "frontend/profile/cprofilewindow.h" @@ -36,8 +36,6 @@ using namespace Profile; CDisplayWindow::CDisplayWindow(QList<CSwordModuleInfo*> modules, CMDIArea *parent) : QMainWindow(parent), m_mdi(parent), - m_filterOptions(), - m_displayOptions(), m_displaySettingsButton(0), m_keyChooser(0), m_swordKey(0), @@ -53,7 +51,14 @@ CDisplayWindow::CDisplayWindow(QList<CSwordModuleInfo*> modules, CMDIArea *paren setModules(modules); // Connect this to the backend module list changes - connect(CPointers::backend(), SIGNAL(sigSwordSetupChanged(CSwordBackend::SetupChangedReason)), SLOT(reload(CSwordBackend::SetupChangedReason))); + connect(CPointers::backend(), + SIGNAL(sigSwordSetupChanged(CSwordBackend::SetupChangedReason)), + SLOT(reload(CSwordBackend::SetupChangedReason))); + BibleTime* mainwindow = dynamic_cast<BibleTime*>(m_mdi->parent()); + connect(mainwindow, SIGNAL(toggledTextWindowHeader(bool)), SLOT(slotShowHeader(bool)) ); + connect(mainwindow, SIGNAL(toggledTextWindowNavigator(bool)), SLOT(slotShowNavigator(bool)) ); + connect(mainwindow, SIGNAL(toggledTextWindowToolButtons(bool)), SLOT(slotShowToolButtons(bool)) ); + connect(mainwindow, SIGNAL(toggledTextWindowModuleChooser(bool)), SLOT(slotShowModuleChooser(bool)) ); } CDisplayWindow::~CDisplayWindow() { @@ -61,10 +66,6 @@ CDisplayWindow::~CDisplayWindow() { m_swordKey = 0; } -CMDIArea* CDisplayWindow::mdi() const { - return m_mdi; -} - /** Returns the right window caption. */ const QString CDisplayWindow::windowCaption() { if (!m_modules.count()) { @@ -74,18 +75,11 @@ const QString CDisplayWindow::windowCaption() { return QString(key()->key()).append(" (").append(m_modules.join(" | ")).append(")"); } -/** Returns the used modules as a QPtrList */ +/** Returns the used modules as a pointer list */ QList<CSwordModuleInfo*> CDisplayWindow::modules() { - QList<CSwordModuleInfo*> mods; + //qDebug() << "CDisplayWindow::modules"; - for (QStringList::iterator it = m_modules.begin(); it != m_modules.end(); ++it) { - Q_ASSERT(backend()->findModuleByName(*it)); - if (CSwordModuleInfo* m = backend()->findModuleByName(*it)) { - mods.append(m); - } - } - - return mods; + return CPointers::backend()->getPointerList(m_modules); } void CDisplayWindow::insertKeyboardActions( BtActionCollection* a ) { @@ -101,10 +95,6 @@ void CDisplayWindow::insertKeyboardActions( BtActionCollection* a ) { actn->setShortcut(QKeySequence::ZoomOut); a->addAction("zoomOut", actn); - actn = new QAction(QIcon(), tr("Close"), a); - actn->setShortcut(QKeySequence::Close); - a->addAction("closeWindow", actn); - actn = new QAction(QIcon(), tr("Select all"), a); actn->setShortcut(QKeySequence::SelectAll); a->addAction("selectAll", actn); @@ -167,10 +157,6 @@ void CDisplayWindow::initActions() { QObject::connect(actn, SIGNAL(triggered()), conn, SLOT(zoomOut())); addAction(actn); - actn = ac->action("closeWindow"); - QObject::connect(actn, SIGNAL(triggered()), this, SLOT(close())); - addAction(actn); - actn = ac->action("selectAll"); QObject::connect(actn, SIGNAL(triggered()), conn, SLOT(selectAll())); addAction(actn); @@ -198,6 +184,7 @@ void CDisplayWindow::initActions() { /** Refresh the settings of this window. */ void CDisplayWindow::reload(CSwordBackend::SetupChangedReason) { + qDebug() << "CDisplayWindow::reload"; //first make sure all used Sword modules are still present QMutableStringListIterator it(m_modules); while (it.hasNext()) { @@ -213,43 +200,51 @@ void CDisplayWindow::reload(CSwordBackend::SetupChangedReason) { if (keyChooser()) keyChooser()->setModules( modules(), false ); - if (m_moduleChooserBar) { //necessary for edit windows which have now chooser bar - m_moduleChooserBar->setModules(modules()); - } - modulesChanged(); lookup(); CBTConfig::setupAccelSettings(CBTConfig::allWindows, actionCollection()); CBTConfig::setupAccelSettings(CBTConfig::readWindow, actionCollection()); + qDebug() << "CDisplayWindow::reload emits sigModuleListSet..."; + emit sigModuleListSet(m_modules); +} + +void CDisplayWindow::slotAddModule(int index, QString module) { + qDebug() << "CDisplayWindow::slotAddModule"; + m_modules.insert(index, module); + lookup(); + modulesChanged(); + emit sigModuleListChanged(); } -/** Returns the filter options used by this window. */ -CSwordBackend::FilterOptions& CDisplayWindow::filterOptions() { - return m_filterOptions; +void CDisplayWindow::slotReplaceModule(int index, QString newModule) { + qDebug() << "CDisplayWindow::slotReplaceModule" << m_modules.at(index) << "with" << newModule; + m_modules.replace(index, newModule); + qDebug() << "window's new module list:" << m_modules; + lookup(); + modulesChanged(); + emit sigModuleListChanged(); } -/** Returns the display options used by this display window. */ -CSwordBackend::DisplayOptions& CDisplayWindow::displayOptions() { - return m_displayOptions; +void CDisplayWindow::slotRemoveModule(int index) { + qDebug() << "CDisplayWindow::slotRemoveModule"; + m_modules.removeAt(index); + lookup(); + modulesChanged(); + emit sigModuleListChanged(); } /** Sets the new display options for this window. */ -void CDisplayWindow::setDisplayOptions( const CSwordBackend::DisplayOptions& displayOptions ) { +void CDisplayWindow::setDisplayOptions(const CSwordBackend::DisplayOptions &displayOptions) { m_displayOptions = displayOptions; } /** Sets the new filter options of this window. */ -void CDisplayWindow::setFilterOptions( CSwordBackend::FilterOptions& filterOptions ) { +void CDisplayWindow::setFilterOptions(const CSwordBackend::FilterOptions &filterOptions) { m_filterOptions = filterOptions; } -/** Returns true if the widget is ready for use. */ -bool CDisplayWindow::isReady() const { - return m_isReady; -} - /** Set the ready status */ -void CDisplayWindow::setReady( const bool& ready ) { +void CDisplayWindow::setReady(bool ready) { m_isReady = ready; } @@ -258,22 +253,11 @@ bool CDisplayWindow::queryClose() { return true; } -/** Returns the keychooser widget of this display window. */ -CKeyChooser* CDisplayWindow::keyChooser() const { - return m_keyChooser; -} - /** Sets the keychooser widget for this display window. */ void CDisplayWindow::setKeyChooser( CKeyChooser* ck ) { m_keyChooser = ck; } -/** Returns the key of this display window. */ -CSwordKey* CDisplayWindow::key() const { - Q_ASSERT( m_swordKey ); - return m_swordKey; -} - /** Sets the new sword key. */ void CDisplayWindow::setKey( CSwordKey* key ) { Q_ASSERT( key ); @@ -281,16 +265,16 @@ void CDisplayWindow::setKey( CSwordKey* key ) { } void CDisplayWindow::modulesChanged() { - if (moduleChooserBar()) { //necessary for write windows - setModules( m_moduleChooserBar->getModuleList() ); - } - - if (!modules().count()) { + // this would only set the stringlist again + //if (moduleChooserBar()) { //necessary for write windows + //setModules( m_moduleChooserBar->getModuleList() ); + //} + if (modules().isEmpty()) { close(); } else { if (displaySettingsButton()) { - displaySettingsButton()->reset(modules()); + displaySettingsButton()->setModules(modules()); } key()->module(modules().first()); @@ -298,24 +282,30 @@ void CDisplayWindow::modulesChanged() { } } -/** Returns the module chooser bar. */ -CModuleChooserBar* CDisplayWindow::moduleChooserBar() const { - return m_moduleChooserBar; -} - /** Sets the module chooser bar. */ -void CDisplayWindow::setModuleChooserBar( CModuleChooserBar* bar ) { +void CDisplayWindow::setModuleChooserBar( BtModuleChooserBar* bar ) { + qDebug() << "CDisplayWindow::setModuleChooserBar"; if (m_moduleChooserBar) { - disconnect(m_moduleChooserBar, SIGNAL(sigChanged()), this, SLOT(modulesChanged())); + m_moduleChooserBar->deleteLater(); } //if a new bar should be set! if (bar) { m_moduleChooserBar = bar; - connect(bar, SIGNAL(sigChanged()), SLOT(modulesChanged())); + bar->setWindowTitle(tr("Work chooser buttons")); + bar->setLayoutDirection(Qt::LeftToRight); + bar->setVisible(CBTConfig::get(CBTConfig::showTextWindowModuleSelectorButtons)); } } +/** Sets the module header of text area. */ +void CDisplayWindow::setHeaderBar( QToolBar* header ) { + m_headerBar = header; + header->setMovable(false); + header->setWindowTitle(tr("Text area header")); + header->setVisible(CBTConfig::get(CBTConfig::showTextWindowHeaders)); +} + /** Sets the modules. */ void CDisplayWindow::setModules( const QList<CSwordModuleInfo*>& newModules ) { qDebug() << "CDisplayWindow::setModules"; @@ -344,45 +334,67 @@ bool CDisplayWindow::init() { m_filterOptions = CBTConfig::getFilterOptionDefaults(); m_displayOptions = CBTConfig::getDisplayOptionDefaults(); if (displaySettingsButton()) { - displaySettingsButton()->reset(modules()); + displaySettingsButton()->setFilterOptions(m_filterOptions, false); + displaySettingsButton()->setDisplayOptions(m_displayOptions, false); + displaySettingsButton()->setModules(modules()); } setReady(true); return true; } -/** Returns the main toolbar. */ -QToolBar* CDisplayWindow::mainToolBar() const { - return m_mainToolBar; -} - -/** Returns the main toolbar. */ -QToolBar* CDisplayWindow::buttonsToolBar() const { - return m_buttonsToolBar; -} - /** Sets the main toolbar. */ void CDisplayWindow::setMainToolBar( QToolBar* bar ) { m_mainToolBar = bar; + bar->setAllowedAreas(Qt::TopToolBarArea); + bar->setFloatable(false); + bar->setWindowTitle(tr("Navigation")); + bar->setVisible(CBTConfig::get(CBTConfig::showTextWindowNavigator)); } /** Sets the main toolbar. */ void CDisplayWindow::setButtonsToolBar( QToolBar* bar ) { m_buttonsToolBar = bar; -} - -/** Returns the display settings button */ -CDisplaySettingsButton* CDisplayWindow::displaySettingsButton() const { - return m_displaySettingsButton; + bar->setAllowedAreas(Qt::TopToolBarArea); + bar->setFloatable(false); + bar->setWindowTitle(tr("Tools")); + bar->setVisible( CBTConfig::get(CBTConfig::showTextWindowToolButtons) ); } /** Sets the display settings button. */ -void CDisplayWindow::setDisplaySettingsButton( CDisplaySettingsButton* button ) { - if (m_displaySettingsButton) - disconnect(m_displaySettingsButton, SIGNAL( sigChanged() ), this, SLOT(lookup() )); +void CDisplayWindow::setDisplaySettingsButton( BtDisplaySettingsButton* button ) { + if (m_displaySettingsButton) { + m_displaySettingsButton->disconnect(this); + } m_displaySettingsButton = button; - connect(m_displaySettingsButton, SIGNAL(sigChanged()), this, SLOT(lookup())); + + button->setDisplayOptions(displayOptions(), false); + button->setFilterOptions(filterOptions(), false); + button->setModules(modules()); + + connect(button, SIGNAL(sigFilterOptionsChanged(CSwordBackend::FilterOptions)), + this, SLOT(setFilterOptions(CSwordBackend::FilterOptions))); + connect(button, SIGNAL(sigDisplayOptionsChanged(CSwordBackend::DisplayOptions)), + this, SLOT(setDisplayOptions(CSwordBackend::DisplayOptions))); + connect(button, SIGNAL(sigChanged()), + this, SLOT(lookup())); +} + +void CDisplayWindow::slotShowHeader(bool show) { + headerBar()->setVisible(show); +} + +void CDisplayWindow::slotShowNavigator(bool show) { + mainToolBar()->setVisible(show); +} + +void CDisplayWindow::slotShowToolButtons(bool show) { + buttonsToolBar()->setVisible(show); +} + +void CDisplayWindow::slotShowModuleChooser(bool show) { + moduleChooserBar()->setVisible(show); } /** Lookup the current key. Used to refresh the display. */ @@ -423,12 +435,13 @@ void CDisplayWindow::lookupKey( const QString& keyName ) { */ Q_ASSERT(modules().first()); - //qDebug("CDisplayWindow::lookup: %s", keyName.latin1()); + qDebug() << "CDisplayWindow::lookupKey: " << keyName; lookupModKey(modules().first()->name(), keyName); } /** Update the status of the popup menu entries. */ void CDisplayWindow::updatePopupMenu() { + /// \todo Verify this should be empty and comment. } @@ -448,12 +461,6 @@ QMenu* CDisplayWindow::popup() { return m_popupMenu; } -/** Returns the display widget used by this implementation of CDisplayWindow. */ -CDisplay* CDisplayWindow::displayWidget() const { - Q_ASSERT(m_displayWidget); - return m_displayWidget; -} - /** Sets the display widget used by this display window. */ void CDisplayWindow::setDisplayWidget( CDisplay* newDisplay ) { m_displayWidget = newDisplay; @@ -480,10 +487,6 @@ void CDisplayWindow::printAnchorWithText() { m_displayWidget->connectionsProxy()->printAnchorWithText( m_displayOptions, m_filterOptions); } -BtActionCollection* CDisplayWindow::actionCollection() { - return m_actionCollection; -} - void CDisplayWindow::setFocusKeyChooser() { keyChooser()->setFocus(); } |