diff options
Diffstat (limited to 'src/frontend/displaywindow')
35 files changed, 538 insertions, 757 deletions
diff --git a/src/frontend/displaywindow/btactioncollection.cpp b/src/frontend/displaywindow/btactioncollection.cpp index 55909b7..f25b972 100644 --- a/src/frontend/displaywindow/btactioncollection.cpp +++ b/src/frontend/displaywindow/btactioncollection.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -12,10 +12,8 @@ #include <QAction> #include <QDebug> #include <QKeySequence> -#include <QSettings> #include <QString> #include <QStringList> -#include "backend/config/cbtconfig.h" #include "util/directory.h" @@ -40,7 +38,7 @@ QList<QAction*> BtActionCollection::actions() { QList<QAction*> actionList; for (ActionMap::const_iterator iter = m_actions.constBegin(); iter != m_actions.constEnd(); - iter++) + ++iter) { actionList.append(iter.value()->action); } @@ -79,7 +77,7 @@ QAction* BtActionCollection::addAction(const QString &name, const QObject *recei QKeySequence BtActionCollection::getDefaultShortcut(QAction* action) { for (ActionMap::const_iterator iter = m_actions.constBegin(); iter != m_actions.constEnd(); - iter++) + ++iter) { if (iter.value()->action == action) { return iter.value()->defaultKeys; @@ -88,57 +86,26 @@ QKeySequence BtActionCollection::getDefaultShortcut(QAction* action) { return QKeySequence(); } -void BtActionCollection::readSettings() { - QSettings* settings = CBTConfig::getConfig(); - settings->beginGroup(m_groupName); - - Q_FOREACH (const QString &key, settings->childKeys()) { - QAction *a = action(key); +void BtActionCollection::readShortcuts(const QString &group) { + QHash<QString, QList <QKeySequence > > shortcuts = btConfig().getShortcuts(group); + for(QHash<QString, QList <QKeySequence> >::const_iterator iter = shortcuts.begin(); + iter != shortcuts.end(); + ++iter) + { + QAction *a = action(iter.key()); if (a == 0) continue; - - QVariant variant = settings->value(key); - // qDebug() << variant << " | " << variant.typeName(); - if (variant.type() != QVariant::List - && variant.type() != QVariant::StringList) - { - continue; - } - - QList<QKeySequence> shortcuts; - if (variant.type() == QVariant::List) { // For BibleTime before 2.9 - Q_FOREACH (const QVariant &shortcut, variant.toList()) { - shortcuts.append(shortcut.toString()); - } - } else { - Q_ASSERT(variant.type() == QVariant::StringList); - Q_FOREACH (const QString &shortcut, variant.toStringList()) { - shortcuts.append(shortcut); - } - } - a->setShortcuts(shortcuts); + action(iter.key())->setShortcuts(iter.value()); } - - settings->endGroup(); } -void BtActionCollection::writeSettings() { - QSettings* settings = CBTConfig::getConfig(); - settings->beginGroup(m_groupName); - +void BtActionCollection::writeShortcuts(const QString &group) { + QHash< QString, QList<QKeySequence> > shortcuts; for (ActionMap::const_iterator iter = m_actions.constBegin(); - iter != m_actions.constEnd(); - iter++) + iter != m_actions.constEnd(); + ++iter) { - // Write beautiful string lists (since 2.9): - QStringList varList; - Q_FOREACH (const QKeySequence &shortcut, iter.value()->action->shortcuts()) { - /// \note saving QKeySequences directly doesn't appear to work! - varList.append(shortcut.toString()); - } - settings->setValue(iter.key(), varList); - // qDebug() << ">>" << settings->value(iter.key()).typeName(); + shortcuts.insert(iter.key(), iter.value()->action->shortcuts()); } - - settings->endGroup(); + btConfig().setShortcuts(group, shortcuts); } diff --git a/src/frontend/displaywindow/btactioncollection.h b/src/frontend/displaywindow/btactioncollection.h index e99522d..a4d062f 100644 --- a/src/frontend/displaywindow/btactioncollection.h +++ b/src/frontend/displaywindow/btactioncollection.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -15,10 +17,12 @@ #include <QList> #include <QMap> +#include "backend/config/btconfig.h" class BtActionItem; class QAction; class QKeySequence; +class QString; class BtActionCollection: public QObject { @@ -40,20 +44,31 @@ class BtActionCollection: public QObject { QAction *action(const QString &name) const; - inline void setConfigGroup(const QString &group) { - m_groupName = group; - } - - void readSettings(); - - void writeSettings(); - + /*! + * \brief Read shortcuts from config. + * + * Read the shortcuts for the given group + * from the configuration and add them to + * this action collection. + * + * \param[in] group Shortcut group to read actions from. + */ + void readShortcuts(const QString &group); + + /*! + * \brief Write shortcuts to config. + * + * Write the shortcuts of this action collection + * to the given group in the configuration. + * + * \param[in] group Shortcut group to write actions to. + */ + void writeShortcuts(const QString& group); QKeySequence getDefaultShortcut(QAction* action); private: /* Fields: */ ActionMap m_actions; - QString m_groupName; }; diff --git a/src/frontend/displaywindow/btdisplaysettingsbutton.cpp b/src/frontend/displaywindow/btdisplaysettingsbutton.cpp index 597a965..bca9334 100644 --- a/src/frontend/displaywindow/btdisplaysettingsbutton.cpp +++ b/src/frontend/displaywindow/btdisplaysettingsbutton.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -14,17 +14,16 @@ #include <QString> #include <QToolTip> #include <QToolButton> -#include "util/directory.h" +#include "bibletimeapp.h" #include "util/cresmgr.h" +#include "util/geticon.h" BtDisplaySettingsButton::BtDisplaySettingsButton(QWidget *parent) : QToolButton(parent) { - namespace DU = util::directory; - initMenu(); - setIcon(DU::getIcon(CResMgr::displaywindows::displaySettings::icon)); + setIcon(util::getIcon(CResMgr::displaywindows::displaySettings::icon)); setPopupMode(QToolButton::InstantPopup); setEnabled(false); diff --git a/src/frontend/displaywindow/btdisplaysettingsbutton.h b/src/frontend/displaywindow/btdisplaysettingsbutton.h index c7c8f09..f82f682 100644 --- a/src/frontend/displaywindow/btdisplaysettingsbutton.h +++ b/src/frontend/displaywindow/btdisplaysettingsbutton.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/btmodulechooserbar.cpp b/src/frontend/displaywindow/btmodulechooserbar.cpp index 22b5ca8..e8d80cb 100644 --- a/src/frontend/displaywindow/btmodulechooserbar.cpp +++ b/src/frontend/displaywindow/btmodulechooserbar.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/btmodulechooserbar.h b/src/frontend/displaywindow/btmodulechooserbar.h index 977d3c0..024bc08 100644 --- a/src/frontend/displaywindow/btmodulechooserbar.h +++ b/src/frontend/displaywindow/btmodulechooserbar.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/btmodulechooserbutton.cpp b/src/frontend/displaywindow/btmodulechooserbutton.cpp index 200da78..4e0a5fc 100644 --- a/src/frontend/displaywindow/btmodulechooserbutton.cpp +++ b/src/frontend/displaywindow/btmodulechooserbutton.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -15,11 +15,12 @@ #include <QString> #include <QToolButton> #include <QToolTip> -#include "backend/config/cbtconfig.h" +#include "backend/config/btconfig.h" #include "backend/managers/cswordbackend.h" +#include "bibletimeapp.h" #include "frontend/displaywindow/btmodulechooserbar.h" #include "util/cresmgr.h" -#include "util/directory.h" +#include "util/geticon.h" BtModuleChooserButton::BtModuleChooserButton(BtModuleChooserBar *parent, CSwordModuleInfo::ModuleType mtype) @@ -58,7 +59,6 @@ void BtModuleChooserButton::updateMenu(QStringList newModulesToUse, QString this m_module = thisModule; m_hasModule = thisModule.isEmpty() ? false : true; - namespace DU = util::directory; //All items are iterated and the state is changed properly QListIterator<QMenu*> it(m_submenus); @@ -70,7 +70,7 @@ void BtModuleChooserButton::updateMenu(QStringList newModulesToUse, QString this } } m_noneAction->setChecked(m_hasModule ? false : true); - setIcon(DU::getIcon(iconName())); + setIcon(util::getIcon(iconName())); if (m_hasModule) { setToolTip( QString(tr("Select a work [%1]")).arg(m_module) ); @@ -141,7 +141,7 @@ void BtModuleChooserButton::populateMenu() { // Filters: add only non-hidden and right type BTModuleTreeItem::HiddenOff hiddenFilter; QList<BTModuleTreeItem::Filter*> filters; - if (!CBTConfig::get(CBTConfig::bookshelfShowHidden)) { + if (!btConfig().value<bool>("GUI/bookshelfShowHidden", false)) { filters.append(&hiddenFilter); } TypeFilter typeFilter(m_moduleType); @@ -150,7 +150,7 @@ void BtModuleChooserButton::populateMenu() { if (m_moduleType == CSwordModuleInfo::Bible) { BTModuleTreeItem root(filters, BTModuleTreeItem::CatLangMod); QList<BTModuleTreeItem::Filter*> filters2; - if (!CBTConfig::get(CBTConfig::bookshelfShowHidden)) { + if (!btConfig().value<bool>("GUI/bookshelfShowHidden", false)) { filters2.append(&hiddenFilter); } TypeFilter typeFilter2(CSwordModuleInfo::Commentary); diff --git a/src/frontend/displaywindow/btmodulechooserbutton.h b/src/frontend/displaywindow/btmodulechooserbutton.h index ba7d89e..03c2b9b 100644 --- a/src/frontend/displaywindow/btmodulechooserbutton.h +++ b/src/frontend/displaywindow/btmodulechooserbutton.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/bttextwindowheader.cpp b/src/frontend/displaywindow/bttextwindowheader.cpp index 71e98f0..6f108d7 100644 --- a/src/frontend/displaywindow/bttextwindowheader.cpp +++ b/src/frontend/displaywindow/bttextwindowheader.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/bttextwindowheader.h b/src/frontend/displaywindow/bttextwindowheader.h index 6dd4b0a..2673d78 100644 --- a/src/frontend/displaywindow/bttextwindowheader.h +++ b/src/frontend/displaywindow/bttextwindowheader.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/bttextwindowheaderwidget.cpp b/src/frontend/displaywindow/bttextwindowheaderwidget.cpp index 600bf15..a974c2c 100644 --- a/src/frontend/displaywindow/bttextwindowheaderwidget.cpp +++ b/src/frontend/displaywindow/bttextwindowheaderwidget.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -17,11 +17,17 @@ #include <QSizePolicy> #include <QLabel> -#include "backend/config/cbtconfig.h" +#include "backend/config/btconfig.h" #include "backend/managers/cswordbackend.h" +#include "bibletimeapp.h" #include "frontend/displaywindow/bttextwindowheader.h" #include "util/cresmgr.h" -#include "util/directory.h" +#include "util/geticon.h" + + +namespace { +const QString BookshelfShowHiddenKey = "GUI/bookshelfShowHidden"; +} // anonymous namespace const char* ActionType = "ActionType"; @@ -81,7 +87,6 @@ void BtTextWindowHeaderWidget::updateWidget(QStringList newModulesToUse, QString populateMenu(); m_module = thisModule; - namespace DU = util::directory; //All items are iterated and the state is changed properly QListIterator<QMenu*> it(m_submenus); @@ -147,18 +152,18 @@ void BtTextWindowHeaderWidget::populateMenu() { m_removeAction = new QAction(tr("Remove"), m_popup); m_removeAction->setProperty(ActionType, RemoveAction); - m_removeAction->setIcon(util::directory::getIcon(CResMgr::displaywindows::general::removemoduleicon)); + m_removeAction->setIcon(util::getIcon(CResMgr::displaywindows::general::removemoduleicon)); m_popup->addAction(m_removeAction); // Add Replace and Add menus, both have all modules in them QMenu* replaceItem = new QMenu(tr("Replace"), m_popup); - replaceItem->setIcon(util::directory::getIcon(CResMgr::displaywindows::general::replacemoduleicon)); + replaceItem->setIcon(util::getIcon(CResMgr::displaywindows::general::replacemoduleicon)); replaceItem->setProperty(ActionType, ReplaceAction); m_popup->addMenu(replaceItem); QMenu* addItem = new QMenu(tr("Add"), m_popup); addItem->setProperty(ActionType, AddAction); - addItem->setIcon(util::directory::getIcon(CResMgr::displaywindows::general::addmoduleicon)); + addItem->setIcon(util::getIcon(CResMgr::displaywindows::general::addmoduleicon)); m_popup->addMenu(addItem); QList<QMenu*> toplevelMenus; @@ -170,7 +175,7 @@ void BtTextWindowHeaderWidget::populateMenu() { // Filters: add only non-hidden, non-locked and correct type BTModuleTreeItem::HiddenOff hiddenFilter; QList<BTModuleTreeItem::Filter*> filters; - if (!CBTConfig::get(CBTConfig::bookshelfShowHidden)) { + if (!btConfig().value<bool>(BookshelfShowHiddenKey, false)) { filters.append(&hiddenFilter); } TypeFilter typeFilter(m_moduleType); @@ -179,7 +184,7 @@ void BtTextWindowHeaderWidget::populateMenu() { if (m_moduleType == CSwordModuleInfo::Bible) { BTModuleTreeItem root(filters, BTModuleTreeItem::CatLangMod); QList<BTModuleTreeItem::Filter*> filters2; - if (!CBTConfig::get(CBTConfig::bookshelfShowHidden)) { + if (!btConfig().value<bool>(BookshelfShowHiddenKey, false)) { filters2.append(&hiddenFilter); } if (menu == addItem || menu == replaceItem) { diff --git a/src/frontend/displaywindow/bttextwindowheaderwidget.h b/src/frontend/displaywindow/bttextwindowheaderwidget.h index 02e0310..c69bf11 100644 --- a/src/frontend/displaywindow/bttextwindowheaderwidget.h +++ b/src/frontend/displaywindow/bttextwindowheaderwidget.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/bttoolbarpopupaction.cpp b/src/frontend/displaywindow/bttoolbarpopupaction.cpp index 1a5593b..e443f8a 100644 --- a/src/frontend/displaywindow/bttoolbarpopupaction.cpp +++ b/src/frontend/displaywindow/bttoolbarpopupaction.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/bttoolbarpopupaction.h b/src/frontend/displaywindow/bttoolbarpopupaction.h index ebbc848..4999098 100644 --- a/src/frontend/displaywindow/bttoolbarpopupaction.h +++ b/src/frontend/displaywindow/bttoolbarpopupaction.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/btwindowmodulechooser.h b/src/frontend/displaywindow/btwindowmodulechooser.h index a39e7a1..40ffcf0 100644 --- a/src/frontend/displaywindow/btwindowmodulechooser.h +++ b/src/frontend/displaywindow/btwindowmodulechooser.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ diff --git a/src/frontend/displaywindow/cbiblereadwindow.cpp b/src/frontend/displaywindow/cbiblereadwindow.cpp index aa6ae6b..4d88f13 100644 --- a/src/frontend/displaywindow/cbiblereadwindow.cpp +++ b/src/frontend/displaywindow/cbiblereadwindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -16,7 +16,6 @@ #include <QMenu> #include <QTimer> #include <QWidget> -#include "backend/config/cbtconfig.h" #include "backend/drivers/cswordbiblemoduleinfo.h" #include "backend/keys/cswordversekey.h" #include "frontend/cexportmanager.h" @@ -26,44 +25,19 @@ #include "frontend/displaywindow/ccommentaryreadwindow.h" #include "frontend/displaywindow/btdisplaysettingsbutton.h" #include "frontend/keychooser/ckeychooser.h" -#include "frontend/profile/cprofilewindow.h" #include "util/directory.h" #include "util/cresmgr.h" #include "util/tool.h" -using namespace Profile; +void CBibleReadWindow::applyProfileSettings(const QString & windowGroup) { + CLexiconReadWindow::applyProfileSettings(windowGroup); -CBibleReadWindow::CBibleReadWindow(QList<CSwordModuleInfo*> moduleList, CMDIArea* parent) - : CLexiconReadWindow(moduleList, parent) { -} - -CBibleReadWindow::~CBibleReadWindow() { -} - -void CBibleReadWindow::applyProfileSettings(CProfileWindow* const settings) { - /** - \todo Make CProfileWindow properly handle these things so we wouldn't have - to mess around with bits. - */ - CLexiconReadWindow::applyProfileSettings(settings); - - int result = settings->windowSettings; - - filterOptions().footnotes = (result & 0x0001) != 0; - filterOptions().strongNumbers = (result & 0x0002) != 0; - filterOptions().headings = (result & 0x0004) != 0; - filterOptions().morphTags = (result & 0x0008) != 0; - filterOptions().lemmas = (result & 0x0010) != 0; - filterOptions().hebrewPoints = (result & 0x0020) != 0; - filterOptions().hebrewCantillation = (result & 0x0040) != 0; - filterOptions().greekAccents = (result & 0x0080) != 0; - filterOptions().textualVariants = (result & 0x0100) != 0; - filterOptions().redLetterWords = (result & 0x0200) != 0; - filterOptions().scriptureReferences = (result & 0x0400) != 0; - filterOptions().morphSegmentation = (result & 0x0800) != 0; - displayOptions().lineBreaks = (result & 0x1000) != 0; - displayOptions().verseNumbers = (result & 0x2000) != 0; + BtConfig & conf = btConfig(); + conf.beginGroup(windowGroup); + filterOptions() = conf.getFilterOptions(); + displayOptions() = conf.getDisplayOptions(); + conf.endGroup(); emit sigFilterOptionsChanged(filterOptions()); emit sigDisplayOptionsChanged(displayOptions()); @@ -72,31 +46,14 @@ void CBibleReadWindow::applyProfileSettings(CProfileWindow* const settings) { lookup(); } -void CBibleReadWindow::storeProfileSettings( CProfileWindow * const settings) { - /** - \todo Make CProfileWindow properly handle these things so we wouldn't have - to mess around with bits. - */ - - int result = 0x0000; - if (filterOptions().footnotes) result |= 0x0001; - if (filterOptions().strongNumbers) result |= 0x0002; - if (filterOptions().headings) result |= 0x0004; - if (filterOptions().morphTags) result |= 0x0008; - if (filterOptions().lemmas) result |= 0x0010; - if (filterOptions().hebrewPoints) result |= 0x0020; - if (filterOptions().hebrewCantillation) result |= 0x0040; - if (filterOptions().greekAccents) result |= 0x0080; - if (filterOptions().textualVariants) result |= 0x0100; - if (filterOptions().redLetterWords) result |= 0x0200; - if (filterOptions().scriptureReferences) result |= 0x0400; - if (filterOptions().morphSegmentation) result |= 0x0800; - if (displayOptions().lineBreaks) result |= 0x1000; - if (displayOptions().verseNumbers) result |= 0x2000; - - settings->windowSettings = result; - - CLexiconReadWindow::storeProfileSettings(settings); +void CBibleReadWindow::storeProfileSettings(const QString & windowGroup) { + BtConfig & conf = btConfig(); + conf.beginGroup(windowGroup); + conf.setFilterOptions(filterOptions()); + conf.setDisplayOptions(displayOptions()); + conf.endGroup(); + + CLexiconReadWindow::storeProfileSettings(windowGroup); } @@ -274,7 +231,7 @@ void CBibleReadWindow::initActions() { this, SLOT(printAll())); addAction(m_actions.print.chapter); - CBTConfig::setupAccelSettings(CBTConfig::bibleWindow, ac); + ac->readShortcuts("Bible shortcuts"); } void CBibleReadWindow::initConnections() { @@ -405,11 +362,11 @@ void CBibleReadWindow::copyDisplayedText() { dummy.setVerse(1); CSwordVerseKey vk(*verseKey()); - vk.LowerBound(dummy); + vk.setLowerBound(dummy); const CSwordBibleModuleInfo* bible = dynamic_cast<const CSwordBibleModuleInfo*>(modules().first()); dummy.setVerse(bible->verseCount(dummy.book(), dummy.getChapter())); - vk.UpperBound(dummy); + vk.setUpperBound(dummy); CExportManager mgr(false, tr("Copying"), filterOptions(), displayOptions()); mgr.copyKey(&vk, CExportManager::Text, true); @@ -425,10 +382,10 @@ void CBibleReadWindow::saveChapterHTML() { dummy.setVerse(1); CSwordVerseKey vk(*verseKey()); - vk.LowerBound(dummy); + vk.setLowerBound(dummy); dummy.setVerse(bible->verseCount(dummy.book(), dummy.getChapter())); - vk.UpperBound(dummy); + vk.setUpperBound(dummy); CExportManager mgr(true, tr("Saving"), filterOptions(), displayOptions()); mgr.saveKey(&vk, CExportManager::HTML, true); @@ -442,11 +399,11 @@ void CBibleReadWindow::saveChapterPlain() { CSwordVerseKey dummy(*verseKey()); dummy.setVerse(1); - vk.LowerBound(dummy); + vk.setLowerBound(dummy); const CSwordBibleModuleInfo* bible = dynamic_cast<const CSwordBibleModuleInfo*>(modules().first()); dummy.setVerse(bible->verseCount(dummy.book(), dummy.getChapter())); - vk.UpperBound(dummy); + vk.setUpperBound(dummy); CExportManager mgr(true, tr("Saving"), filterOptions(), displayOptions()); mgr.saveKey(&vk, CExportManager::Text, true); @@ -464,7 +421,7 @@ void CBibleReadWindow::reload(CSwordBackend::SetupChangedReason reason) { verseKey()->setLocale( CSwordBackend::instance()->booknameLanguage().toLatin1() ); keyChooser()->refreshContent(); - CBTConfig::setupAccelSettings(CBTConfig::bibleWindow, actionCollection()); + actionCollection()->readShortcuts("Bible shortcuts"); } /** No descriptions */ diff --git a/src/frontend/displaywindow/cbiblereadwindow.h b/src/frontend/displaywindow/cbiblereadwindow.h index 198c4fd..99c98fb 100644 --- a/src/frontend/displaywindow/cbiblereadwindow.h +++ b/src/frontend/displaywindow/cbiblereadwindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -22,28 +24,21 @@ class QEvent; class QMenu; class QObject; -/** The read display window for Bibles. - *@author The BibleTime team - */ -class CBibleReadWindow : public CLexiconReadWindow { +class CBibleReadWindow: public CLexiconReadWindow { + Q_OBJECT - public: - CBibleReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); - virtual ~CBibleReadWindow(); - /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings( Profile::CProfileWindow* const settings ); - /** - * Store the settings of this window in the given profile window. - */ - virtual void applyProfileSettings( Profile::CProfileWindow* const settings ); - /** - * Reimplementation. - */ + + public: /* Methods: */ + + inline CBibleReadWindow(const QList<CSwordModuleInfo*> & modules, CMDIArea* parent) + : CLexiconReadWindow(modules, parent) {} + + virtual void storeProfileSettings(const QString & windowGroup); + virtual void applyProfileSettings(const QString & windowGroup); static void insertKeyboardActions( BtActionCollection* const a ); - protected: + protected: /* Methods: */ + virtual void initActions(); virtual void initToolbars(); virtual void initConnections(); @@ -97,6 +92,7 @@ class CBibleReadWindow : public CLexiconReadWindow { public slots: + void nextBook(); void previousBook(); void nextChapter(); @@ -108,7 +104,8 @@ class CBibleReadWindow : public CLexiconReadWindow { */ virtual void reload(CSwordBackend::SetupChangedReason reason); - protected slots: // Protected slots + protected slots: + /** * Copies the current chapter into the clipboard. */ @@ -124,14 +121,13 @@ class CBibleReadWindow : public CLexiconReadWindow { virtual void lookupSwordKey( CSwordKey* newKey ); void syncWindows(); - private: + private: /* Methods: */ /** * Wrapper around key() to return the right type of key. */ CSwordVerseKey* verseKey(); - // CTransliterationButton* m_transliterationButton; }; -#endif +#endif /* CBIBLEREADWINDOW_H */ diff --git a/src/frontend/displaywindow/cbookreadwindow.cpp b/src/frontend/displaywindow/cbookreadwindow.cpp index ff2adf2..fade4d5 100644 --- a/src/frontend/displaywindow/cbookreadwindow.cpp +++ b/src/frontend/displaywindow/cbookreadwindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -14,41 +14,31 @@ #include <QSplitter> #include <QToolBar> #include "bibletime.h" -#include "backend/config/cbtconfig.h" #include "backend/keys/cswordtreekey.h" -#include "frontend/display/cdisplay.h" +#include "frontend/display/bthtmlreaddisplay.h" #include "frontend/displaywindow/bttoolbarpopupaction.h" #include "frontend/displaywindow/btactioncollection.h" #include "frontend/displaywindow/btmodulechooserbar.h" #include "frontend/displaywindow/btdisplaysettingsbutton.h" #include "frontend/keychooser/cbooktreechooser.h" -#include "frontend/profile/cprofilewindow.h" #include "util/cresmgr.h" #include "util/tool.h" -using namespace Profile; +void CBookReadWindow::applyProfileSettings(const QString & windowGroup) { + CLexiconReadWindow::applyProfileSettings(windowGroup); -CBookReadWindow::CBookReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent) - : CLexiconReadWindow(modules, parent), m_treeAction(0), m_treeChooser(0) { -} - -CBookReadWindow::~CBookReadWindow() { -} - -void CBookReadWindow::applyProfileSettings( CProfileWindow* profileWindow ) { - CLexiconReadWindow::applyProfileSettings(profileWindow); - - if (profileWindow->windowSettings) { + Q_ASSERT(m_treeAction); + Q_ASSERT(windowGroup.endsWith('/')); + if (btConfig().sessionValue<bool>(windowGroup + "treeShown", true) != m_treeAction->isChecked()) m_treeAction->activate(QAction::Trigger); - } } -void CBookReadWindow::storeProfileSettings( CProfileWindow* profileWindow ) { - CLexiconReadWindow::storeProfileSettings(profileWindow); +void CBookReadWindow::storeProfileSettings(const QString & windowGroup) { + CLexiconReadWindow::storeProfileSettings(windowGroup); - //store information about our show tree structure button - profileWindow->windowSettings = m_treeAction->isChecked(); + Q_ASSERT(windowGroup.endsWith('/')); + btConfig().setSessionValue(windowGroup + "treeShown", m_treeAction->isChecked()); } void CBookReadWindow::initActions() { @@ -70,7 +60,7 @@ void CBookReadWindow::initActions() { this, SLOT(treeToggled())); addAction(m_treeAction); - CBTConfig::setupAccelSettings(CBTConfig::bookWindow, ac); + ac->readShortcuts("Book shortcuts"); } void CBookReadWindow::insertKeyboardActions( BtActionCollection* const a ) { @@ -96,7 +86,7 @@ void CBookReadWindow::initConnections() { void CBookReadWindow::initView() { QSplitter* splitter = new QSplitter(this); m_treeChooser = new CBookTreeChooser(modules(), history(), key(), splitter); - setDisplayWidget( CDisplay::createReadInstance(this, splitter) ); + setDisplayWidget(new BtHtmlReadDisplay(this, splitter)); m_treeChooser->hide(); // Create Navigation toolbar diff --git a/src/frontend/displaywindow/cbookreadwindow.h b/src/frontend/displaywindow/cbookreadwindow.h index 8b85504..63f3922 100644 --- a/src/frontend/displaywindow/cbookreadwindow.h +++ b/src/frontend/displaywindow/cbookreadwindow.h @@ -2,7 +2,7 @@ * * This file is part of BibleTime's BtActionCollection code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime BtActionCollection code is licensed under the GNU General Public License version 2.0. * **********/ @@ -17,33 +17,30 @@ class BtActionCollection; class CBookTreeChooser; class QAction; -/** - * @author The BibleTime team - */ -class CBookReadWindow : public CLexiconReadWindow { +class CBookReadWindow: public CLexiconReadWindow { + Q_OBJECT - public: - static void insertKeyboardActions( BtActionCollection* const a ); - CBookReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); + public: /* Methods: */ - virtual ~CBookReadWindow(); - /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings( Profile::CProfileWindow* profileWindow ); - /** - * Store the settings of this window in the given profile window. - */ - virtual void applyProfileSettings( Profile::CProfileWindow* profileWindow ); + inline CBookReadWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent) + : CLexiconReadWindow(modules, parent) + , m_treeAction(0) + , m_treeChooser(0) {} + + virtual void storeProfileSettings(const QString & windowGroup); + virtual void applyProfileSettings(const QString & windowGroup); + static void insertKeyboardActions(BtActionCollection * const a); public slots: + /** * Refreshes the content of this display window and the content of the keychooser. */ virtual void reload(CSwordBackend::SetupChangedReason reason); - protected: + protected: /* Methods: */ + virtual void initActions(); virtual void initToolbars(); virtual void initConnections(); @@ -53,21 +50,24 @@ class CBookReadWindow : public CLexiconReadWindow { virtual void setupPopupMenu(); - protected slots: // Protected slots + protected slots: + /** * Reimplementation to take care of the tree chooser. */ virtual void modulesChanged(); - private: - QAction* m_treeAction; - CBookTreeChooser* m_treeChooser; + private slots: - private slots: // Private slots /** * Is called when the action was executed to toggle the tree view. */ void treeToggled(); + + private: /* Fields: */ + + QAction * m_treeAction; + CBookTreeChooser * m_treeChooser; }; #endif diff --git a/src/frontend/displaywindow/ccommentaryreadwindow.cpp b/src/frontend/displaywindow/ccommentaryreadwindow.cpp index f2c2c3d..1beb5c5 100644 --- a/src/frontend/displaywindow/ccommentaryreadwindow.cpp +++ b/src/frontend/displaywindow/ccommentaryreadwindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -13,25 +13,19 @@ #include <QIcon> #include <QMenu> #include <QToolBar> -#include "backend/config/cbtconfig.h" #include "backend/keys/cswordversekey.h" #include "bibletime.h" +#include "bibletimeapp.h" #include "frontend/display/cdisplay.h" #include "frontend/display/creaddisplay.h" #include "frontend/displaywindow/btactioncollection.h" #include "frontend/displaywindow/btmodulechooserbar.h" #include "frontend/keychooser/ckeychooser.h" -#include "frontend/profile/cprofilewindow.h" -#include "util/directory.h" #include "util/cresmgr.h" +#include "util/geticon.h" -using namespace Profile; - -CCommentaryReadWindow::CCommentaryReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent) : CLexiconReadWindow(modules, parent) { -} void CCommentaryReadWindow::insertKeyboardActions(BtActionCollection* const a) { - namespace DU = util::directory; QAction* qaction; qaction = new QAction(tr("Next book"), a); @@ -58,7 +52,7 @@ void CCommentaryReadWindow::insertKeyboardActions(BtActionCollection* const a) { qaction->setShortcut(CResMgr::displaywindows::bibleWindow::previousVerse::accel); a->addAction("previousVerse", qaction); - qaction = new QAction(QIcon(DU::getIcon(CResMgr::displaywindows::commentaryWindow::syncWindow::icon)), + qaction = new QAction(QIcon(util::getIcon(CResMgr::displaywindows::commentaryWindow::syncWindow::icon)), tr("Synchronize"), a); qaction->setCheckable(true); qaction->setShortcut(CResMgr::displaywindows::commentaryWindow::syncWindow::accel); @@ -120,19 +114,23 @@ void CCommentaryReadWindow::initActions() { m_syncButton = qaction; addAction(qaction); - CBTConfig::setupAccelSettings(CBTConfig::commentaryWindow, actionCollection()); + actionCollection()->readShortcuts("Commentary shortcuts"); } -void CCommentaryReadWindow::applyProfileSettings( CProfileWindow* profileWindow ) { - CLexiconReadWindow::applyProfileSettings(profileWindow); - if (profileWindow->windowSettings) { - m_syncButton->setChecked(true); - } +void CCommentaryReadWindow::applyProfileSettings(const QString & windowGroup) { + CLexiconReadWindow::applyProfileSettings(windowGroup); + + Q_ASSERT(windowGroup.endsWith('/')); + Q_ASSERT(m_syncButton); + m_syncButton->setChecked(btConfig().sessionValue<bool>(windowGroup + "syncEnabled", false)); } -void CCommentaryReadWindow::storeProfileSettings( CProfileWindow* profileWindow ) { - CLexiconReadWindow::storeProfileSettings(profileWindow); - profileWindow->windowSettings = m_syncButton->isChecked(); +void CCommentaryReadWindow::storeProfileSettings(const QString & windowGroup) { + CLexiconReadWindow::storeProfileSettings(windowGroup); + + Q_ASSERT(windowGroup.endsWith('/')); + Q_ASSERT(m_syncButton); + btConfig().setSessionValue(windowGroup + "syncEnabled", m_syncButton->isChecked()); } void CCommentaryReadWindow::initToolbars() { @@ -153,7 +151,7 @@ void CCommentaryReadWindow::reload(CSwordBackend::SetupChangedReason reason) { verseKey()->setLocale( CSwordBackend::instance()->booknameLanguage().toLatin1() ); keyChooser()->refreshContent(); - CBTConfig::setupAccelSettings(CBTConfig::commentaryWindow, actionCollection()); + actionCollection()->readShortcuts("Commentary shortcuts"); } /** rapper around key() to return the right type of key. */ diff --git a/src/frontend/displaywindow/ccommentaryreadwindow.h b/src/frontend/displaywindow/ccommentaryreadwindow.h index 679906c..06cbd93 100644 --- a/src/frontend/displaywindow/ccommentaryreadwindow.h +++ b/src/frontend/displaywindow/ccommentaryreadwindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -28,15 +30,11 @@ class CCommentaryReadWindow : public CLexiconReadWindow { */ static void insertKeyboardActions( BtActionCollection* const a ); - CCommentaryReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); - /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings( Profile::CProfileWindow* profileWindow ); - /** - * Store the settings of this window in the given profile window. - */ - virtual void applyProfileSettings( Profile::CProfileWindow* profileWindow ); + inline CCommentaryReadWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent) + : CLexiconReadWindow(modules, parent) {} + + virtual void storeProfileSettings(const QString & windowGroup); + virtual void applyProfileSettings(const QString & windowGroup); virtual bool syncAllowed() const; public slots: // Public slots diff --git a/src/frontend/displaywindow/cdisplaywindow.cpp b/src/frontend/displaywindow/cdisplaywindow.cpp index 0b9bc61..a584d6e 100644 --- a/src/frontend/displaywindow/cdisplaywindow.cpp +++ b/src/frontend/displaywindow/cdisplaywindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -11,12 +11,14 @@ #include <QCloseEvent> #include <QDebug> +#include <QMdiSubWindow> #include <QMenu> #include <QStringList> #include <QWidget> -#include "backend/config/cbtconfig.h" +#include "backend/config/btconfig.h" #include "backend/keys/cswordkey.h" #include "bibletime.h" +#include "bibletimeapp.h" #include "frontend/cmdiarea.h" #include "frontend/display/cdisplay.h" #include "frontend/displaywindow/bttoolbarpopupaction.h" @@ -25,15 +27,12 @@ #include "frontend/displaywindow/btdisplaysettingsbutton.h" #include "frontend/keychooser/ckeychooser.h" #include "frontend/keychooser/bthistory.h" -#include "frontend/profile/cprofilewindow.h" #include "frontend/searchdialog/csearchdialog.h" -#include "util/directory.h" #include "util/cresmgr.h" +#include "util/geticon.h" -using namespace Profile; - -CDisplayWindow::CDisplayWindow(QList<CSwordModuleInfo*> modules, CMDIArea *parent) +CDisplayWindow::CDisplayWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent) : QMainWindow(parent), m_actionCollection(0), m_mdi(parent), @@ -69,8 +68,17 @@ CDisplayWindow::~CDisplayWindow() { m_swordKey = 0; } +QWidget * CDisplayWindow::getProfileWindow() const { + for (QWidget * w = parentWidget(); w; w = w->parentWidget()) { + QMdiSubWindow * sw = qobject_cast<QMdiSubWindow *>(w); + if (sw) + return sw; + } + return const_cast<CDisplayWindow *>(this); +} + BibleTime* CDisplayWindow::btMainWindow() { - return dynamic_cast<BibleTime*>(m_mdi->parent()); + return dynamic_cast<BibleTime*>(m_mdi->parent()->parent()); } void CDisplayWindow::setToolBarsHidden() { @@ -110,9 +118,77 @@ const QList<const CSwordModuleInfo*> CDisplayWindow::modules() const { return CSwordBackend::instance()->getConstPointerList(m_modules); } -void CDisplayWindow::insertKeyboardActions( BtActionCollection* a ) { - namespace DU = util::directory; +/** Store the settings of this window in the given CProfileWindow object. */ +void CDisplayWindow::storeProfileSettings(const QString & windowGroup) { + BtConfig & conf = btConfig(); + + conf.beginGroup(windowGroup); + + QWidget * w = getProfileWindow(); + + /** + \note We don't use saveGeometry/restoreGeometry for MDI subwindows, + because they give slightly incorrect results with some window + managers. Might be related to Qt bug QTBUG-7634. + */ + const QRect rect(w->x(), w->y(), w->width(), w->height()); + conf.setSessionValue<QRect>("windowRect", rect); + + conf.setSessionValue("maximized", w->isMaximized()); + + bool hasFocus = (w == dynamic_cast<CDisplayWindow *>(mdi()->activeSubWindow())); + conf.setSessionValue("hasFocus", hasFocus); + // conf.setSessionValue("type", static_cast<int>(modules().first()->type())); + + // Save current key: + if (key()) { + CSwordKey * k = key(); + sword::VerseKey * vk = dynamic_cast<sword::VerseKey*>(k); + QString oldLang; + if (vk) { + // Save keys in english only: + const QString oldLang = QString::fromLatin1(vk->getLocale()); + vk->setLocale("en"); + conf.setSessionValue("key", k->key()); + vk->setLocale(oldLang.toLatin1()); + } else { + conf.setSessionValue("key", k->key()); + } + } + // Save list of modules: + QStringList mods; + Q_FOREACH (const CSwordModuleInfo * module, modules()) + mods.append(module->name()); + conf.setSessionValue("modules", mods); + + conf.endGroup(); +} + +void CDisplayWindow::applyProfileSettings(const QString & windowGroup) { + BtConfig & conf = btConfig(); + conf.beginGroup(windowGroup); + setUpdatesEnabled(false); + + QWidget * w = getProfileWindow(); + + /** + \note We don't use restoreGeometry/saveGeometry for MDI subwindows, + because they give slightly incorrect results with some window + managers. Might be related to Qt bug QTBUG-7634. + */ + const QRect rect = conf.sessionValue<QRect>("windowRect"); + w->resize(rect.width(), rect.height()); + w->move(rect.x(), rect.y()); + + if (conf.sessionValue<bool>("maximized")) + w->showMaximized(); + + setUpdatesEnabled(true); + conf.endGroup(); +} + +void CDisplayWindow::insertKeyboardActions( BtActionCollection* a ) { QAction* actn = new QAction(QIcon(), tr("Select all"), a); actn->setShortcut(QKeySequence::SelectAll); a->addAction("selectAll", actn); @@ -129,13 +205,13 @@ void CDisplayWindow::insertKeyboardActions( BtActionCollection* a ) { actn->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_L)); a->addAction("openLocation", actn); - actn = new QAction(QIcon(DU::getIcon(CResMgr::displaywindows::general::search::icon)), + actn = new QAction(QIcon(util::getIcon(CResMgr::displaywindows::general::search::icon)), tr("Search with works of this window"), a); actn->setShortcut(CResMgr::displaywindows::general::search::accel); a->addAction(CResMgr::displaywindows::general::search::actionName, actn); BtToolBarPopupAction* action = new BtToolBarPopupAction( - QIcon(DU::getIcon(CResMgr::displaywindows::general::backInHistory::icon)), + QIcon(util::getIcon(CResMgr::displaywindows::general::backInHistory::icon)), tr("Back in history"), a ); @@ -143,7 +219,7 @@ void CDisplayWindow::insertKeyboardActions( BtActionCollection* a ) { a->addAction(CResMgr::displaywindows::general::backInHistory::actionName, action); action = new BtToolBarPopupAction( - QIcon(DU::getIcon(CResMgr::displaywindows::general::forwardInHistory::icon)), + QIcon(util::getIcon(CResMgr::displaywindows::general::forwardInHistory::icon)), tr("Forward in history"), a ); @@ -201,7 +277,7 @@ void CDisplayWindow::initActions() { Q_ASSERT(ok); addAction(actn); - CBTConfig::setupAccelSettings(CBTConfig::allWindows, ac); + ac->readShortcuts("Displaywindow shortcuts"); } /** Refresh the settings of this window. */ @@ -223,8 +299,8 @@ void CDisplayWindow::reload(CSwordBackend::SetupChangedReason) { lookup(); - CBTConfig::setupAccelSettings(CBTConfig::allWindows, actionCollection()); - CBTConfig::setupAccelSettings(CBTConfig::readWindow, actionCollection()); + actionCollection()->readShortcuts("DisplayWindow shortcuts"); + actionCollection()->readShortcuts("Readwindow shortcuts"); emit sigModuleListSet(m_modules); } @@ -316,7 +392,7 @@ void CDisplayWindow::setModuleChooserBar( BtModuleChooserBar* bar ) { m_moduleChooserBar = bar; bar->setWindowTitle(tr("Work chooser buttons")); bar->setLayoutDirection(Qt::LeftToRight); - bar->setVisible(CBTConfig::get(CBTConfig::showTextWindowModuleSelectorButtons)); + bar->setVisible(btConfig().sessionValue<bool>("GUI/showTextWindowModuleSelectorButtons", true)); } } @@ -325,7 +401,7 @@ void CDisplayWindow::setHeaderBar( QToolBar* header ) { m_headerBar = header; header->setMovable(false); header->setWindowTitle(tr("Text area header")); - header->setVisible(CBTConfig::get(CBTConfig::showTextWindowHeaders)); + header->setVisible(btConfig().sessionValue<bool>("GUI/showTextWindowHeaders", true)); } /** Sets the modules. */ @@ -348,15 +424,15 @@ bool CDisplayWindow::init() { parentWidget()->setFocusPolicy(Qt::ClickFocus); initActions(); initToolbars(); - if ( ! CBTConfig::get(CBTConfig::showToolbarsInEachWindow)) + if (!btConfig().sessionValue<bool>("GUI/showToolbarsInEachWindow", true)) setToolBarsHidden(); btMainWindow()->clearMdiToolBars(); clearMainWindowToolBars(); initConnections(); setupPopupMenu(); - m_filterOptions = CBTConfig::getFilterOptionDefaults(); - m_displayOptions = CBTConfig::getDisplayOptionDefaults(); + m_filterOptions = btConfig().getFilterOptions(); + m_displayOptions = btConfig().getDisplayOptions(); emit sigDisplayOptionsChanged(m_displayOptions); emit sigFilterOptionsChanged(m_filterOptions); emit sigModulesChanged(modules()); @@ -374,13 +450,13 @@ static void prepareToolBar(QToolBar* bar, const QString& title, bool visible) { /** Setup the Navigation toolbar. */ void CDisplayWindow::setMainToolBar( QToolBar* bar ) { - prepareToolBar(bar, tr("Navigation"), CBTConfig::get(CBTConfig::showTextWindowNavigator) ); + prepareToolBar(bar, tr("Navigation"), btConfig().sessionValue<bool>("GUI/showTextWindowNavigator", true)); m_mainToolBar = bar; } /** Setup the Tools toolbar. */ void CDisplayWindow::setButtonsToolBar( QToolBar* bar ) { - prepareToolBar(bar, tr("Tool"), CBTConfig::get(CBTConfig::showTextWindowToolButtons) ); + prepareToolBar(bar, tr("Tool"), btConfig().sessionValue<bool>("GUI/showTextWindowToolButtons", true)); m_buttonsToolBar = bar; } diff --git a/src/frontend/displaywindow/cdisplaywindow.h b/src/frontend/displaywindow/cdisplaywindow.h index 4935d8f..72199d1 100644 --- a/src/frontend/displaywindow/cdisplaywindow.h +++ b/src/frontend/displaywindow/cdisplaywindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -15,7 +17,6 @@ #include <QStringList> #include "backend/managers/cswordbackend.h" #include "btglobal.h" -#include "frontend/profile/cprofilewindow.h" class BtActionCollection; @@ -25,14 +26,13 @@ class CKeyChooser; class CMDIArea; class BtModuleChooserBar; class CSwordModuleInfo; -class QCloseEvent; class QMenu; class QToolBar; class BTHistory; class BibleTime; -/** The base class for all display windows of BibleTime. - * +/** The base class for all display windows of BibleTime. + * * Inherits QMainWindow. * * Inherited by CReadWindow and CWriteWindow. @@ -46,6 +46,9 @@ class CDisplayWindow : public QMainWindow { /** Insert the keyboard accelerators of this window into the given actioncollection.*/ static void insertKeyboardActions( BtActionCollection* const a ); + /** Returns a pointer to the parent widget of type QMdiSubWindow or pointer to self if none found. */ + QWidget * getProfileWindow() const; + /** Returns pointer to the mdi area object.*/ inline CMDIArea *mdi() const { return m_mdi; @@ -63,10 +66,10 @@ class CDisplayWindow : public QMainWindow { } /** Store the settings of this window in the given CProfileWindow object.*/ - virtual void storeProfileSettings( Profile::CProfileWindow* profileWindow ) = 0; + virtual void storeProfileSettings(const QString & windowGroup); /** Load the settings the given CProfileWindow object into this window.*/ - virtual void applyProfileSettings( Profile::CProfileWindow* profileWindow ) = 0; + virtual void applyProfileSettings(const QString & windowGroup); /** Returns the display options used by this display window. */ inline const DisplayOptions &displayOptions() const { @@ -228,7 +231,7 @@ class CDisplayWindow : public QMainWindow { friend class CBibleReadWindow; - CDisplayWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); + CDisplayWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent); virtual ~CDisplayWindow(); /** diff --git a/src/frontend/displaywindow/cdisplaywindowfactory.cpp b/src/frontend/displaywindow/cdisplaywindowfactory.cpp index e280c6d..12059d1 100644 --- a/src/frontend/displaywindow/cdisplaywindowfactory.cpp +++ b/src/frontend/displaywindow/cdisplaywindowfactory.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -17,11 +17,10 @@ #include "frontend/displaywindow/clexiconreadwindow.h" #include "frontend/displaywindow/cplainwritewindow.h" #include "frontend/displaywindow/creadwindow.h" -#include "frontend/displaywindow/cwritewindow.h" #include "frontend/cmdiarea.h" -CReadWindow* CDisplayWindowFactory::createReadInstance(QList<CSwordModuleInfo*> modules, CMDIArea* parent) { +CReadWindow* CDisplayWindowFactory::createReadInstance(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent) { CReadWindow* win = 0; switch (modules.first()->type()) { case CSwordModuleInfo::Bible: @@ -43,8 +42,8 @@ CReadWindow* CDisplayWindowFactory::createReadInstance(QList<CSwordModuleInfo*> return win; } -CWriteWindow* CDisplayWindowFactory::createWriteInstance(QList<CSwordModuleInfo*> modules, CMDIArea* parent, const CWriteWindow::WriteWindowType type) { - if (type == CWriteWindow::HTMLWindow) { +CPlainWriteWindow * CDisplayWindowFactory::createWriteInstance(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent, CPlainWriteWindow::WriteWindowType type) { + if (type == CPlainWriteWindow::HTMLWindow) { return new CHTMLWriteWindow(modules, parent); } else { @@ -53,7 +52,7 @@ CWriteWindow* CDisplayWindowFactory::createWriteInstance(QList<CSwordModuleInfo* return 0; } -const CSwordModuleInfo::ModuleType CDisplayWindowFactory::getModuleType(QObject* widget) { +CSwordModuleInfo::ModuleType CDisplayWindowFactory::getModuleType(QObject* widget) { if (qobject_cast<CBibleReadWindow*>(widget) != 0 ) return CSwordModuleInfo::Bible; if (qobject_cast<CCommentaryReadWindow*>(widget) != 0 ) diff --git a/src/frontend/displaywindow/cdisplaywindowfactory.h b/src/frontend/displaywindow/cdisplaywindowfactory.h index 06d9aa4..e065e50 100644 --- a/src/frontend/displaywindow/cdisplaywindowfactory.h +++ b/src/frontend/displaywindow/cdisplaywindowfactory.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -11,20 +13,18 @@ #define CDISPLAYWINDOWFACTORY_H #include "frontend/displaywindow/cdisplaywindow.h" -#include "frontend/displaywindow/cwritewindow.h" +#include "frontend/displaywindow/cplainwritewindow.h" -class CMDIArea; class CReadWindow; class CSwordModuleInfo; -class CWriteWindow; /// \todo Make CDisplayWindowFactory a namespace instead? class CDisplayWindowFactory { public: - static CReadWindow* createReadInstance(QList<CSwordModuleInfo*> modules, CMDIArea* parent); - static CWriteWindow* createWriteInstance(QList<CSwordModuleInfo*> modules, CMDIArea* parent, const CWriteWindow::WriteWindowType type = CWriteWindow::HTMLWindow); - static const CSwordModuleInfo::ModuleType getModuleType(QObject* widget); + static CReadWindow* createReadInstance(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent); + static CPlainWriteWindow* createWriteInstance(const QList<CSwordModuleInfo*> & modules, CMDIArea * parent, CPlainWriteWindow::WriteWindowType type = CPlainWriteWindow::HTMLWindow); + static CSwordModuleInfo::ModuleType getModuleType(QObject* widget); private: CDisplayWindowFactory(); diff --git a/src/frontend/displaywindow/chtmlwritewindow.cpp b/src/frontend/displaywindow/chtmlwritewindow.cpp index 705daf0..20c8323 100644 --- a/src/frontend/displaywindow/chtmlwritewindow.cpp +++ b/src/frontend/displaywindow/chtmlwritewindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -14,26 +14,22 @@ #include "bibletime.h" #include "backend/keys/cswordkey.h" #include "frontend/display/chtmlwritedisplay.h" -#include "frontend/display/cwritedisplay.h" #include "frontend/displaywindow/btactioncollection.h" #include "frontend/displaywindow/btmodulechooserbar.h" #include "frontend/keychooser/ckeychooser.h" -#include "frontend/profile/cprofilewindow.h" +#include "frontend/messagedialog.h" #include "util/directory.h" -#include "util/dialogutil.h" #include "util/cresmgr.h" -using namespace Profile; - -CHTMLWriteWindow::CHTMLWriteWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent) +CHTMLWriteWindow::CHTMLWriteWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent) : CPlainWriteWindow(modules, parent) {} void CHTMLWriteWindow::initView() { - CWriteDisplay* writeDisplay = CDisplay::createWriteInstance(this, CDisplay::HTMLDisplay); - Q_ASSERT(writeDisplay); - setDisplayWidget( writeDisplay ); - setCentralWidget( displayWidget()->view() ); + m_writeDisplay = new CHTMLWriteDisplay(this, this); + Q_ASSERT(m_writeDisplay); + setDisplayWidget(m_writeDisplay); + setCentralWidget(m_writeDisplay->view() ); // Create Navigation toolbar setMainToolBar( new QToolBar(this) ); @@ -48,19 +44,11 @@ void CHTMLWriteWindow::initView() { addToolBar(formatToolBar()); } -void CHTMLWriteWindow::initActions() { - insertKeyboardActions(actionCollection()); - CPlainWriteWindow::initActions(); -} - -void CHTMLWriteWindow::insertKeyboardActions( BtActionCollection* const a) { -} - void CHTMLWriteWindow::initConnections() { - CWriteWindow::initConnections(); + CPlainWriteWindow::initConnections(); connect(keyChooser(), SIGNAL(keyChanged(CSwordKey*)), this, SLOT(lookupSwordKey(CSwordKey*))); - connect(displayWidget()->connectionsProxy(), SIGNAL(textChanged()), this, SLOT(textChanged()) ); + connect(m_writeDisplay->connectionsProxy(), SIGNAL(textChanged()), this, SLOT(textChanged()) ); } void CHTMLWriteWindow::initToolbars() { @@ -69,39 +57,41 @@ void CHTMLWriteWindow::initToolbars() { CPlainWriteWindow::initToolbars(); //Formatting toolbar - ((CWriteDisplay*)displayWidget())->setupToolbar( formatToolBar(), actionCollection() ); + m_writeDisplay->setupToolbar( formatToolBar(), actionCollection() ); } -void CHTMLWriteWindow::storeProfileSettings( CProfileWindow* profileWindow ) { - CWriteWindow::storeProfileSettings(profileWindow); - QAction* action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); +void CHTMLWriteWindow::storeProfileSettings(const QString & windowGroup) { + CPlainWriteWindow::storeProfileSettings(windowGroup); + + QAction * action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); Q_ASSERT(action != 0); - profileWindow->windowSettings = action->isChecked(); + Q_ASSERT(windowGroup.endsWith('/')); + btConfig().setSessionValue(windowGroup + "syncWindowEnabled", action->isChecked()); } -void CHTMLWriteWindow::applyProfileSettings( CProfileWindow* profileWindow ) { - CWriteWindow::applyProfileSettings(profileWindow); - if (profileWindow->windowSettings) { - QAction* action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); - Q_ASSERT(action != 0); - action->setChecked(true); - } +void CHTMLWriteWindow::applyProfileSettings(const QString & windowGroup) { + CPlainWriteWindow::applyProfileSettings(windowGroup); + + QAction* action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); + Q_ASSERT(action != 0); + Q_ASSERT(windowGroup.endsWith('/')); + action->setChecked(btConfig().sessionValue<bool>(windowGroup + "syncWindowEnabled", false)); } /** Is called when the current text was changed. */ void CHTMLWriteWindow::textChanged() { QAction* action = actionCollection()->action(CResMgr::displaywindows::writeWindow::saveText::actionName); Q_ASSERT(action != 0); - action->setEnabled( ((CWriteDisplay*)displayWidget())->isModified() ); + action->setEnabled(m_writeDisplay->isModified()); action = actionCollection()->action(CResMgr::displaywindows::writeWindow::restoreText::actionName); Q_ASSERT(action != 0); - action->setEnabled( ((CWriteDisplay*)displayWidget())->isModified() ); + action->setEnabled(m_writeDisplay->isModified()); } /** Loads the original text from the module. */ void CHTMLWriteWindow::restoreText() { lookupSwordKey(key()); - ((CWriteDisplay*)displayWidget())->setModified(false); + m_writeDisplay->setModified(false); textChanged(); } @@ -113,7 +103,7 @@ bool CHTMLWriteWindow::syncAllowed() const { /** Saves the text for the current key. Directly writes the changed text into the module. */ void CHTMLWriteWindow::saveCurrentText( const QString& /*key*/ ) { - QString t = ((CHTMLWriteDisplay*)displayWidget())->toHtml(); + QString t = m_writeDisplay->toHtml(); //since t is a complete HTML page at the moment, strip away headers and footers of a HTML page QRegExp re("(?:<html.*>.+<body.*>)", Qt::CaseInsensitive); //remove headers, case insensitive re.setMinimal(true); @@ -125,11 +115,11 @@ void CHTMLWriteWindow::saveCurrentText( const QString& /*key*/ ) { const_cast<CSwordModuleInfo*>(modules().first())->write(this->key(), t); this->key()->setKey(oldKey); - ((CWriteDisplay*)displayWidget())->setModified(false); + m_writeDisplay->setModified(false); textChanged(); } else { - util::showCritical( this, tr("Module not writable"), + message::showCritical( this, tr("Module not writable"), QString::fromLatin1("<qt><b>%1</b><br />%2</qt>") .arg( tr("Module is not writable.") ) .arg( tr("Either the module may not be edited, or you do not have write permission.") ) ); @@ -139,5 +129,5 @@ void CHTMLWriteWindow::saveCurrentText( const QString& /*key*/ ) { void CHTMLWriteWindow::setupMainWindowToolBars() { CPlainWriteWindow::setupMainWindowToolBars(); //Formatting toolbar - ((CWriteDisplay*)displayWidget())->setupToolbar( btMainWindow()->formatToolBar(), actionCollection() ); + m_writeDisplay->setupToolbar( btMainWindow()->formatToolBar(), actionCollection() ); } diff --git a/src/frontend/displaywindow/chtmlwritewindow.h b/src/frontend/displaywindow/chtmlwritewindow.h index 8aec012..2d2eee6 100644 --- a/src/frontend/displaywindow/chtmlwritewindow.h +++ b/src/frontend/displaywindow/chtmlwritewindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -13,9 +15,7 @@ #include "frontend/displaywindow/cplainwritewindow.h" -class QAction; - -/** +/** * The write window class which offers a WYSIWYG text editor for creating a personal commentary. * * Inherits CPlainWriteWindow. @@ -25,17 +25,10 @@ class QAction; class CHTMLWriteWindow : public CPlainWriteWindow { Q_OBJECT public: - CHTMLWriteWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); - - /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings( Profile::CProfileWindow* ); + CHTMLWriteWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent); - /** - * Store the settings of this window in the given profile window. - */ - virtual void applyProfileSettings( Profile::CProfileWindow* ); + virtual void storeProfileSettings(const QString & windowGroup); + virtual void applyProfileSettings(const QString & windowGroup); /** * Returns true if the sync toolbar is enabled. @@ -49,18 +42,12 @@ class CHTMLWriteWindow : public CPlainWriteWindow { virtual void initView(); virtual void initConnections(); virtual void initToolbars(); - virtual void initActions(); - - /** - * Insert the keyboard accelerators of this window into the given KAccel object. - */ - static void insertKeyboardActions( BtActionCollection* const a ); - virtual CWriteWindow::WriteWindowType writeWindowType() { - return CWriteWindow::HTMLWindow; + virtual WriteWindowType writeWindowType() const { + return HTMLWindow; } - /** - * Called to add actions to mainWindow toolbars + /** + * Called to add actions to mainWindow toolbars */ virtual void setupMainWindowToolBars(); @@ -77,6 +64,7 @@ class CHTMLWriteWindow : public CPlainWriteWindow { * Saves the text for the current key. Directly writes the changed text into the module. */ virtual void saveCurrentText( const QString& ); + }; #endif diff --git a/src/frontend/displaywindow/clexiconreadwindow.cpp b/src/frontend/displaywindow/clexiconreadwindow.cpp index 7d76293..3b76f38 100644 --- a/src/frontend/displaywindow/clexiconreadwindow.cpp +++ b/src/frontend/displaywindow/clexiconreadwindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -17,13 +17,10 @@ #include <QDebug> #include "bibletime.h" -#include "backend/config/cbtconfig.h" #include "backend/keys/cswordldkey.h" #include "backend/keys/cswordkey.h" #include "frontend/cexportmanager.h" #include "frontend/display/bthtmlreaddisplay.h" -#include "frontend/display/cdisplay.h" -#include "frontend/display/creaddisplay.h" #include "frontend/displaywindow/btactioncollection.h" #include "frontend/displaywindow/bttoolbarpopupaction.h" #include "frontend/displaywindow/btdisplaysettingsbutton.h" @@ -36,7 +33,7 @@ #include "util/tool.h" -CLexiconReadWindow::CLexiconReadWindow(QList<CSwordModuleInfo*> moduleList, CMDIArea* parent) +CLexiconReadWindow::CLexiconReadWindow(const QList<CSwordModuleInfo *> & moduleList, CMDIArea * parent) : CReadWindow(moduleList, parent) { moduleList.first(); setKey( CSwordKey::createInstance(moduleList.first()) ); @@ -158,7 +155,7 @@ void CLexiconReadWindow::initActions() { addAction(m_actions.print.entry); // init with the user defined settings - CBTConfig::setupAccelSettings(CBTConfig::lexiconWindow, ac); + ac->readShortcuts("Lexicon shortcuts"); } /** No descriptions */ @@ -194,7 +191,7 @@ void CLexiconReadWindow::initConnections() { void CLexiconReadWindow::initView() { // Create display widget for this window - setDisplayWidget( CDisplay::createReadInstance(this) ); + setDisplayWidget(new BtHtmlReadDisplay(this, this)); setCentralWidget( displayWidget()->view() ); setWindowIcon(util::tool::getIconForModule(modules().first())); @@ -320,7 +317,7 @@ void CLexiconReadWindow::updatePopupMenu() { void CLexiconReadWindow::reload(CSwordBackend::SetupChangedReason reason) { CReadWindow::reload(reason); - CBTConfig::setupAccelSettings(CBTConfig::lexiconWindow, actionCollection()); + actionCollection()->readShortcuts("Lexicon shortcuts"); } /** No descriptions */ diff --git a/src/frontend/displaywindow/clexiconreadwindow.h b/src/frontend/displaywindow/clexiconreadwindow.h index 36b47db..6233545 100644 --- a/src/frontend/displaywindow/clexiconreadwindow.h +++ b/src/frontend/displaywindow/clexiconreadwindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -33,7 +35,7 @@ class QMenu; class CLexiconReadWindow : public CReadWindow { Q_OBJECT public: - CLexiconReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); + CLexiconReadWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent); virtual ~CLexiconReadWindow(); /** Insert the keyboard accelerators of this window into the given actioncollection.*/ diff --git a/src/frontend/displaywindow/cplainwritewindow.cpp b/src/frontend/displaywindow/cplainwritewindow.cpp index f0af601..f4b2d0b 100644 --- a/src/frontend/displaywindow/cplainwritewindow.cpp +++ b/src/frontend/displaywindow/cplainwritewindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -14,30 +14,55 @@ #include <QRegExp> #include <QToolBar> #include "bibletime.h" -#include "backend/config/cbtconfig.h" #include "backend/keys/cswordkey.h" -#include "frontend/display/cwritedisplay.h" +#include "bibletimeapp.h" +#include "frontend/display/cplainwritedisplay.h" #include "frontend/displaywindow/btactioncollection.h" #include "frontend/displaywindow/btmodulechooserbar.h" #include "frontend/keychooser/ckeychooser.h" -#include "frontend/profile/cprofilewindow.h" +#include "frontend/messagedialog.h" +#include "util/btsignal.h" #include "util/cresmgr.h" -#include "util/directory.h" -#include "util/dialogutil.h" +#include "util/geticon.h" -using namespace Profile; - -CPlainWriteWindow::CPlainWriteWindow(QList<CSwordModuleInfo*> moduleList, CMDIArea* parent) : - CWriteWindow(moduleList, parent) { +CPlainWriteWindow::CPlainWriteWindow(const QList<CSwordModuleInfo*> & moduleList, CMDIArea * parent) + : CDisplayWindow(moduleList, parent) + , m_writeDisplay(0) +{ setKey( CSwordKey::createInstance(moduleList.first()) ); } +void CPlainWriteWindow::setDisplayWidget(CDisplay * display) { + Q_ASSERT(dynamic_cast<CPlainWriteDisplay *>(display)); + CDisplayWindow::setDisplayWidget(static_cast<CPlainWriteDisplay *>(display)); + m_writeDisplay = static_cast<CPlainWriteDisplay *>(display); +} + +void CPlainWriteWindow::lookupSwordKey(CSwordKey * newKey) { + //set the raw text to the display widget + if (!newKey) + return; + + /* + Set passage of newKey to key() if they're different, otherwise we'd get + mixed up if we look up newkey which may have a different module set. + */ + if (key() != newKey) + key()->setKey(newKey->key()); + + if (modules().count()) + displayWidget()->setText(key()->rawText()); + + setWindowTitle(windowCaption()); +} + /** Initialize the state of this widget. */ void CPlainWriteWindow::initView() { // qWarning("CPlainWriteWindow::initView()"); - setDisplayWidget( CDisplay::createWriteInstance(this) ); - setCentralWidget( displayWidget()->view() ); + m_writeDisplay = new CPlainWriteDisplay(this, this); + setDisplayWidget(m_writeDisplay); + setCentralWidget(m_writeDisplay->view()); // Create Navigation toolbar setMainToolBar( new QToolBar(this) ); @@ -49,8 +74,6 @@ void CPlainWriteWindow::initView() { } void CPlainWriteWindow::initToolbars() { - namespace DU = util::directory; - // Navigation toolbar setKeyChooser( CKeyChooser::createInstance(modules(), history(), key(), mainToolBar()) ); @@ -94,30 +117,35 @@ void CPlainWriteWindow::setupMainWindowToolBars() { } void CPlainWriteWindow::initConnections() { - CWriteWindow::initConnections(); + Q_ASSERT(keyChooser()); + QObject::connect(key()->beforeChangedSignaller(), SIGNAL(signal()), this, SLOT(beforeKeyChange())); QObject::connect(keyChooser(), SIGNAL(keyChanged(CSwordKey*)), this, SLOT(lookupSwordKey(CSwordKey*))); QObject::connect(displayWidget()->connectionsProxy(), SIGNAL(textChanged()), this, SLOT(textChanged()) ); } -void CPlainWriteWindow::storeProfileSettings( CProfileWindow* profileWindow ) { - CWriteWindow::storeProfileSettings(profileWindow); - QAction* action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); - Q_ASSERT(action != 0); - profileWindow->windowSettings = action->isChecked(); +void CPlainWriteWindow::storeProfileSettings(const QString & windowGroup) { + CDisplayWindow::storeProfileSettings(windowGroup); + + QAction * action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); + Q_ASSERT(action); + Q_ASSERT(windowGroup.endsWith('/')); + btConfig().setSessionValue(windowGroup + "writeWindowType", + static_cast<int>(writeWindowType())); + btConfig().setSessionValue(windowGroup + "syncWindowEnabled", action->isChecked()); } -void CPlainWriteWindow::applyProfileSettings( CProfileWindow* profileWindow ) { - CWriteWindow::applyProfileSettings(profileWindow); - if (profileWindow->windowSettings) { - QAction* action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); - Q_ASSERT(action != 0); - action->setChecked(true); - } +void CPlainWriteWindow::applyProfileSettings(const QString & windowGroup) { + CDisplayWindow::applyProfileSettings(windowGroup); + + QAction * action = actionCollection()->action(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName); + Q_ASSERT(action != 0); + Q_ASSERT(windowGroup.endsWith('/')); + action->setChecked(btConfig().sessionValue<bool>(windowGroup + "syncWindowEnabled", false)); } /** Saves the text for the current key. Directly writes the changed text into the module. */ void CPlainWriteWindow::saveCurrentText( const QString& /*key*/ ) { - QString t = ((CWriteDisplay*)displayWidget())->plainText(); + QString t = m_writeDisplay->plainText(); //since t is a complete HTML page at the moment, strip away headers and footers of a HTML page QRegExp re("(?:<html.*>.+<body.*>)", Qt::CaseInsensitive); //remove headers, case insensitive re.setMinimal(true); @@ -127,12 +155,12 @@ void CPlainWriteWindow::saveCurrentText( const QString& /*key*/ ) { const QString& oldKey = this->key()->key(); if ( modules().first()->isWritable() ) { const_cast<CSwordModuleInfo*>(modules().first())->write(this->key(), t); - ((CWriteDisplay*)displayWidget())->setModified(false); + m_writeDisplay->setModified(false); this->key()->setKey(oldKey); textChanged(); } else { - util::showCritical( this, tr("Module not writable"), + message::showCritical( this, tr("Module not writable"), QString::fromLatin1("<qt><b>%1</b><br/>%2</qt>") .arg( tr("Module is not writable.") ) .arg( tr("Either the module may not be edited, or " @@ -143,7 +171,7 @@ void CPlainWriteWindow::saveCurrentText( const QString& /*key*/ ) { /** Loads the original text from the module. */ void CPlainWriteWindow::restoreText() { lookupSwordKey(key()); - ((CWriteDisplay*)displayWidget())->setModified(false); + m_writeDisplay->setModified(false); textChanged(); } @@ -151,17 +179,17 @@ void CPlainWriteWindow::restoreText() { void CPlainWriteWindow::textChanged() { QAction* action = actionCollection()->action(CResMgr::displaywindows::writeWindow::saveText::actionName); Q_ASSERT(action != 0); - action->setEnabled( ((CWriteDisplay*)displayWidget())->isModified() ); + action->setEnabled(m_writeDisplay->isModified()); action = actionCollection()->action(CResMgr::displaywindows::writeWindow::restoreText::actionName); Q_ASSERT(action != 0); - action->setEnabled( ((CWriteDisplay*)displayWidget())->isModified() ); + action->setEnabled(m_writeDisplay->isModified()); } /** Deletes the module entry and clears the edit widget, */ void CPlainWriteWindow::deleteEntry() { const_cast<CSwordModuleInfo*>(modules().first())->deleteEntry(key()); lookupSwordKey( key() ); - ((CWriteDisplay*)displayWidget())->setModified(false); + m_writeDisplay->setModified(false); } /** Setups the popup menu of this display widget. */ @@ -202,11 +230,8 @@ void CPlainWriteWindow::initActions() { } void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const a) { - - namespace DU = util::directory; - QAction* action = new QAction( - DU::getIcon(CResMgr::displaywindows::commentaryWindow::syncWindow::icon), + util::getIcon(CResMgr::displaywindows::commentaryWindow::syncWindow::icon), tr("Sync with active Bible"), a ); @@ -216,7 +241,7 @@ void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const a) { a->addAction(CResMgr::displaywindows::commentaryWindow::syncWindow::actionName, action); action = new QAction( - DU::getIcon(CResMgr::displaywindows::writeWindow::saveText::icon), + util::getIcon(CResMgr::displaywindows::writeWindow::saveText::icon), tr("Save text"), a ); @@ -225,7 +250,7 @@ void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const a) { a->addAction(CResMgr::displaywindows::writeWindow::saveText::actionName, action); action = new QAction( - DU::getIcon(CResMgr::displaywindows::writeWindow::deleteEntry::icon), + util::getIcon(CResMgr::displaywindows::writeWindow::deleteEntry::icon), tr("Delete current entry"), a ); @@ -234,7 +259,7 @@ void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const a) { a->addAction(CResMgr::displaywindows::writeWindow::deleteEntry::actionName, action); action = new QAction( - DU::getIcon(CResMgr::displaywindows::writeWindow::restoreText::icon), + util::getIcon(CResMgr::displaywindows::writeWindow::restoreText::icon), tr("Restore original text"), a ); @@ -242,3 +267,55 @@ void CPlainWriteWindow::insertKeyboardActions( BtActionCollection* const a) { action->setToolTip( tr("Restore original text, new text will be lost") ); a->addAction(CResMgr::displaywindows::writeWindow::restoreText::actionName, action); } + +void CPlainWriteWindow::saveCurrentText() { + if (key()) + saveCurrentText(key()->key()); +} + + +bool CPlainWriteWindow::queryClose() { + //save the text if it has changed + if (m_writeDisplay->isModified()) { + switch (message::showQuestion( this, tr("Save Text?"), tr("Save text before closing?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Yes) ) { + case QMessageBox::Yes: //save and close + saveCurrentText(); + m_writeDisplay->setModified( false ); + return true; + case QMessageBox::No: //don't save and close + return true; + default: // cancel, don't close + return false; + } + } + return true; +} + +void CPlainWriteWindow::beforeKeyChange() { + Q_ASSERT(displayWidget()); + Q_ASSERT(keyChooser()); + if (!isReady()) + return; + + // Get current key string for this window + QString thisWindowsKey; + CSwordKey* oldKey = key(); + if (oldKey == 0) + return; + thisWindowsKey = oldKey->key(); + + //If the text changed and we'd do a lookup ask the user if the text should be saved + if (modules().first() && m_writeDisplay->isModified()) { + + switch (message::showQuestion( this, tr("Save Text?"), tr("Save changed text?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ) { + case QMessageBox::Yes: { //save the changes + saveCurrentText( thisWindowsKey ); + break; + } + default: {// set modified to false so it won't ask again + m_writeDisplay->setModified(false); + break; + } + } + } +} diff --git a/src/frontend/displaywindow/cplainwritewindow.h b/src/frontend/displaywindow/cplainwritewindow.h index 732ff8a..cf11a46 100644 --- a/src/frontend/displaywindow/cplainwritewindow.h +++ b/src/frontend/displaywindow/cplainwritewindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -10,12 +12,11 @@ #ifndef CPLAINWRITEWINDOW_H #define CPLAINWRITEWINDOW_H -#include "frontend/displaywindow/cwritewindow.h" +#include "frontend/displaywindow/cdisplaywindow.h" class BtActionCollection; -class QAction; -class QString; +class CPlainWriteDisplay; /** The write window class which offers a plain text editor for creating a personal commentary. * @@ -25,19 +26,24 @@ class QString; * * @author The BibleTime team */ -class CPlainWriteWindow : public CWriteWindow { +class CPlainWriteWindow : public CDisplayWindow { Q_OBJECT public: - CPlainWriteWindow( QList<CSwordModuleInfo*> modules, CMDIArea* parent); + + enum WriteWindowType { + HTMLWindow = 1, + PlainTextWindow = 2 + }; + + CPlainWriteWindow(const QList<CSwordModuleInfo *> & modules, CMDIArea * parent); /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings( Profile::CProfileWindow* profileWindow ); - /** - * Store the settings of this window in the given profile window. + * Set the displayWidget which is a subclass of QWebPage. */ - virtual void applyProfileSettings( Profile::CProfileWindow* profileWindow ); + void setDisplayWidget( CDisplay* display ); + + virtual void storeProfileSettings(const QString & windowGroup); + virtual void applyProfileSettings(const QString & windowGroup); /** * Setups the popup menu of this display widget. @@ -49,6 +55,13 @@ class CPlainWriteWindow : public CWriteWindow { */ virtual bool syncAllowed() const; + public slots: + + /** + Look up the given key and display the text. In our case we offer to edit the text. + */ + virtual void lookupSwordKey(CSwordKey * key); + protected: // Protected methods /** * Initialize the state of this widget. @@ -56,9 +69,9 @@ class CPlainWriteWindow : public CWriteWindow { virtual void initView(); virtual void initConnections(); virtual void initToolbars(); - virtual CWriteWindow::WriteWindowType writeWindowType() { - return CWriteWindow::PlainTextWindow; - }; + virtual WriteWindowType writeWindowType() const { + return PlainTextWindow; + } /** Called to add actions to mainWindow toolbars */ virtual void setupMainWindowToolBars(); @@ -71,7 +84,13 @@ class CPlainWriteWindow : public CWriteWindow { */ static void insertKeyboardActions( BtActionCollection* const a ); + /** \returns whether the window may be closed.*/ + virtual bool queryClose(); + protected slots: // Protected slots + + void saveCurrentText(); + /** * Saves the text for the current key. Directly writes the changed text into the module. */ @@ -88,6 +107,13 @@ class CPlainWriteWindow : public CWriteWindow { * Deletes the module entry and clears the edit widget. */ virtual void deleteEntry(); + + virtual void beforeKeyChange(); + + protected: /* Fields: */ + + CPlainWriteDisplay * m_writeDisplay; + }; #endif diff --git a/src/frontend/displaywindow/creadwindow.cpp b/src/frontend/displaywindow/creadwindow.cpp index 7f11dca..0d8f2d9 100644 --- a/src/frontend/displaywindow/creadwindow.cpp +++ b/src/frontend/displaywindow/creadwindow.cpp @@ -2,7 +2,7 @@ * * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -19,12 +19,9 @@ #include "frontend/cmdiarea.h" #include "frontend/display/bthtmlreaddisplay.h" #include "frontend/displaywindow/btactioncollection.h" -#include "frontend/profile/cprofilewindow.h" #include "frontend/searchdialog/csearchdialog.h" -using namespace Profile; - CReadWindow::CReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent) : CDisplayWindow(modules, parent), m_readDisplayWidget(0) { @@ -108,57 +105,6 @@ void CReadWindow::slotMoveToAnchor() { ((CReadDisplay*)displayWidget())->moveToAnchor( Rendering::CDisplayRendering::keyToHTMLAnchor(key()->key()) ); } -/** Store the settings of this window in the given CProfileWindow object. */ -void CReadWindow::storeProfileSettings(CProfileWindow * const settings) { - QRect rect; - rect.setX(parentWidget()->x()); - rect.setY(parentWidget()->y()); - rect.setWidth(parentWidget()->width()); - rect.setHeight(parentWidget()->height()); - settings->windowGeometry = rect; - - // settings->setScrollbarPositions( m_htmlWidget->view()->horizontalScrollBar()->value(), m_htmlWidget->view()->verticalScrollBar()->value() ); - settings->type = modules().first()->type(); - settings->maximized = (isMaximized() || parentWidget()->isMaximized()); - settings->hasFocus = (this == dynamic_cast<CReadWindow*>(mdi()->activeSubWindow()) ); //set property to true if this window is the active one. - - if (key()) { - sword::VerseKey* vk = dynamic_cast<sword::VerseKey*>(key()); - QString oldLang; - if (vk) { - oldLang = QString(vk->getLocale()); - vk->setLocale("en"); //save english locale names as default! - } - settings->key = key()->key(); - if (vk) { - vk->setLocale(oldLang.toLatin1()); - } - } - - QStringList mods; - Q_FOREACH (const CSwordModuleInfo *module, modules()) { - mods.append(module->name()); - } - settings->modules = mods; -} - -void CReadWindow::applyProfileSettings(CProfileWindow * const settings) { - // parentWidget()->setUpdatesEnabled(false); - setUpdatesEnabled(false); - - if (settings->maximized) { //maximize this window - // Use parentWidget() to call showMaximized. Otherwise we'd get lot's of X11 errors - parentWidget()->showMaximized(); - } - else { - const QRect &rect = settings->windowGeometry; - parentWidget()->resize(rect.width(), rect.height()); - parentWidget()->move(rect.x(), rect.y()); - } - - setUpdatesEnabled(true); -} - void CReadWindow::insertKeyboardActions( BtActionCollection* const ) {} /** No descriptions */ diff --git a/src/frontend/displaywindow/creadwindow.h b/src/frontend/displaywindow/creadwindow.h index d00d4f0..2446e1e 100644 --- a/src/frontend/displaywindow/creadwindow.h +++ b/src/frontend/displaywindow/creadwindow.h @@ -1,8 +1,10 @@ /********* * +* In the name of the Father, and of the Son, and of the Holy Spirit. +* * This file is part of BibleTime's source code, http://www.bibletime.info/. * -* Copyright 1999-2011 by the BibleTime developers. +* Copyright 1999-2014 by the BibleTime developers. * The BibleTime source code is licensed under the GNU General Public License version 2.0. * **********/ @@ -19,15 +21,10 @@ class BtActionCollection; class QResizeEvent; -/** The base class for all read-only display windows. - * - * Inherits CDisplayWindow. - * - * Inherited by CLexiconReadWindow - * - * @author The BibleTime team - */ -class CReadWindow : public CDisplayWindow { +/** + \brief The base class for all read-only display windows. +*/ +class CReadWindow: public CDisplayWindow { Q_OBJECT public: @@ -36,15 +33,6 @@ class CReadWindow : public CDisplayWindow { CReadWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); - /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings(Profile::CProfileWindow * const settings); - /** - * Load the settings the given CProfileWindow object into this window. - */ - virtual void applyProfileSettings(Profile::CProfileWindow * const settings); - protected: /** * Sets the display widget of this display window. @@ -72,7 +60,7 @@ class CReadWindow : public CDisplayWindow { * Update the status of the popup menu entries. */ virtual void copyDisplayedText(); - /** + /** * Open the search dialog with the strong info of the last clicked word. */ void openSearchStrongsDialog(); diff --git a/src/frontend/displaywindow/cwritewindow.cpp b/src/frontend/displaywindow/cwritewindow.cpp deleted file mode 100644 index fbcf8de..0000000 --- a/src/frontend/displaywindow/cwritewindow.cpp +++ /dev/null @@ -1,158 +0,0 @@ -/********* -* -* This file is part of BibleTime's source code, http://www.bibletime.info/. -* -* Copyright 1999-2011 by the BibleTime developers. -* The BibleTime source code is licensed under the GNU General Public License version 2.0. -* -**********/ - - -#include "frontend/displaywindow/cwritewindow.h" - -#include "backend/drivers/cswordmoduleinfo.h" -#include "backend/keys/cswordversekey.h" -#include "frontend/display/cwritedisplay.h" -#include "frontend/keychooser/ckeychooser.h" -#include "frontend/profile/cprofilewindow.h" -#include "util/dialogutil.h" -#include "util/btsignal.h" - -using namespace Profile; - -CWriteWindow::CWriteWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent) - : CDisplayWindow(modules, parent), m_writeDisplay(0) {} - -void CWriteWindow::insertKeyboardActions( BtActionCollection* const ) {} - -void CWriteWindow::initConnections() { - Q_ASSERT(keyChooser()); - QObject::connect(key()->signaler(), SIGNAL(beforeChanged()), this, SLOT(beforeKeyChange())); -} - -void CWriteWindow::initActions() {} - - -void CWriteWindow::storeProfileSettings(CProfileWindow * const settings) { - - settings->writeWindowType = writeWindowType(); - settings->windowGeometry.setRect(parentWidget()->x(), - parentWidget()->y(), - parentWidget()->width(), - parentWidget()->height()); - - // settings->setScrollbarPositions( m_htmlWidget->view()->horizontalScrollBar()->value(), m_htmlWidget->view()->verticalScrollBar()->value() ); - settings->type = modules().first()->type(); - settings->maximized = isMaximized() || parentWidget()->isMaximized(); - - if (key()) { - sword::VerseKey* vk = dynamic_cast<sword::VerseKey*>(key()); - QString oldLang; - if (vk) { - oldLang = QString::fromLatin1(vk->getLocale()); - vk->setLocale("en"); //save english locale names as default! - } - settings->key = key()->key(); - if (vk) { - vk->setLocale(oldLang.toLatin1()); - } - } - - QStringList mods; - Q_FOREACH(const CSwordModuleInfo *m, modules()) { - mods.append(m->name()); - } - settings->modules = mods; -} - -void CWriteWindow::applyProfileSettings(CProfileWindow * const settings) { - setUpdatesEnabled(false); - - if (settings->maximized) { - parentWidget()->showMaximized(); - } - else { - const QRect &rect = settings->windowGeometry; - parentWidget()->resize(rect.width(), rect.height()); - parentWidget()->move(rect.x(), rect.y()); - //setGeometry( settings->geometry() ); - } - // displayWidget()->view()->horizontalScrollBar()->setValue( settings->scrollbarPositions().horizontal ); - // m_htmlWidget->view()->verticalScrollBar()->setValue( settings->scrollbarPositions().vertical ); - - setUpdatesEnabled(true); -} - -void CWriteWindow::setDisplayWidget( CDisplay* display ) { - Q_ASSERT(dynamic_cast<CWriteDisplay*>(display)); - CDisplayWindow::setDisplayWidget((CWriteDisplay*)display); - m_writeDisplay = (CWriteDisplay*)display; -} - -void CWriteWindow::lookupSwordKey( CSwordKey* newKey ) { - //set the raw text to the display widget - if (!newKey) - return; - - if (key() != newKey) { //set passage of newKey to key() if they're different, otherwise we'd get mixed up if we look up newkey which may have a different module set - key()->setKey(newKey->key()); - } - - if ( modules().count() ) { - displayWidget()->setText( key()->rawText() ); - } - setWindowTitle(windowCaption()); -} - -bool CWriteWindow::queryClose() { - //save the text if it has changed - if (m_writeDisplay->isModified()) { - switch (util::showQuestion( this, tr("Save Text?"), tr("Save text before closing?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::Yes) ) { - case QMessageBox::Yes: //save and close - saveCurrentText(); - m_writeDisplay->setModified( false ); - return true; - case QMessageBox::No: //don't save and close - return true; - default: // cancel, don't close - return false; - } - } - return true; -} - -void CWriteWindow::beforeKeyChange() { - Q_ASSERT(displayWidget()); - Q_ASSERT(keyChooser()); - if (!isReady()) - return; - - // Get current key string for this window - QString thisWindowsKey; - CSwordKey* oldKey = key(); - if (oldKey == 0) - return; - thisWindowsKey = oldKey->key(); - - //If the text changed and we'd do a lookup ask the user if the text should be saved - if (modules().first() && ((CWriteDisplay*)displayWidget())->isModified()) { - - switch (util::showQuestion( this, tr("Save Text?"), tr("Save changed text?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ) { - case QMessageBox::Yes: { //save the changes - saveCurrentText( thisWindowsKey ); - break; - } - default: {// set modified to false so it won't ask again - ((CWriteDisplay*)displayWidget())->setModified(false); - break; - } - } - } -} - -void CWriteWindow::saveCurrentText() { - if (key()) { - saveCurrentText(key()->key()); - } -} - diff --git a/src/frontend/displaywindow/cwritewindow.h b/src/frontend/displaywindow/cwritewindow.h deleted file mode 100644 index 3ff9d06..0000000 --- a/src/frontend/displaywindow/cwritewindow.h +++ /dev/null @@ -1,92 +0,0 @@ -/********* -* -* This file is part of BibleTime's source code, http://www.bibletime.info/. -* -* Copyright 1999-2011 by the BibleTime developers. -* The BibleTime source code is licensed under the GNU General Public License version 2.0. -* -**********/ - -#ifndef CWRITEWINDOW_H -#define CWRITEWINDOW_H - -#include "frontend/displaywindow/cdisplaywindow.h" - - -class BtActionCollection; -class CWriteDisplay; -class QString; - -/** The base class for all write-only display windows. - * - * Inherits CDisplayWindow. - * - * Inherited by CPlainWriteWindow. - * - *@author The BibleTime team - */ -class CWriteWindow : public CDisplayWindow { - Q_OBJECT - public: - enum WriteWindowType { - HTMLWindow = 1, - PlainTextWindow = 2 - }; - - /** Insert the keyboard accelerators of this window into the given actioncollection.*/ - static void insertKeyboardActions( BtActionCollection* const a ); - - CWriteWindow(QList<CSwordModuleInfo*> modules, CMDIArea* parent); - /** - * Store the settings of this window in the given CProfileWindow object. - */ - virtual void storeProfileSettings(Profile::CProfileWindow * const settings); - /** - * Load the settings the given CProfileWindow object into this window. - */ - virtual void applyProfileSettings(Profile::CProfileWindow * const settings); - - /** Initializes the signal / slot connections of this display window.*/ - virtual void initConnections(); - - /** Initializes the internel keyboard actions.*/ - virtual void initActions(); - - public slots: - /** - * Look up the given key and display the text. In our case we offer to edit the text. - */ - virtual void lookupSwordKey( CSwordKey* key ); - - - protected: // Protected methods - /** - * Set the displayWidget which is a subclass of QWebPage. - */ - void setDisplayWidget( CDisplay* display ); - - /** Returns the type of the write window.*/ - virtual CWriteWindow::WriteWindowType writeWindowType() = 0; - - /** Returns true if the window may be closed.*/ - virtual bool queryClose(); - - /** Saves the text for the current key. Directly writes the changed text into the module. */ - virtual void saveCurrentText( const QString& key ) = 0; - - /** Called to add actions to mainWindow toolbars */ - virtual void setupMainWindowToolBars() = 0; - - protected slots: - /** Save text to the module - */ - void saveCurrentText(); - /** - */ - virtual void beforeKeyChange(); - - private: - CWriteDisplay* m_writeDisplay; -}; - -#endif |