summaryrefslogtreecommitdiff
path: root/src/frontend/displaywindow
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/displaywindow')
-rw-r--r--src/frontend/displaywindow/btactioncollection.cpp67
-rw-r--r--src/frontend/displaywindow/btactioncollection.h35
-rw-r--r--src/frontend/displaywindow/btdisplaysettingsbutton.cpp9
-rw-r--r--src/frontend/displaywindow/btdisplaysettingsbutton.h4
-rw-r--r--src/frontend/displaywindow/btmodulechooserbar.cpp2
-rw-r--r--src/frontend/displaywindow/btmodulechooserbar.h4
-rw-r--r--src/frontend/displaywindow/btmodulechooserbutton.cpp14
-rw-r--r--src/frontend/displaywindow/btmodulechooserbutton.h4
-rw-r--r--src/frontend/displaywindow/bttextwindowheader.cpp2
-rw-r--r--src/frontend/displaywindow/bttextwindowheader.h4
-rw-r--r--src/frontend/displaywindow/bttextwindowheaderwidget.cpp23
-rw-r--r--src/frontend/displaywindow/bttextwindowheaderwidget.h4
-rw-r--r--src/frontend/displaywindow/bttoolbarpopupaction.cpp2
-rw-r--r--src/frontend/displaywindow/bttoolbarpopupaction.h4
-rw-r--r--src/frontend/displaywindow/btwindowmodulechooser.h4
-rw-r--r--src/frontend/displaywindow/cbiblereadwindow.cpp91
-rw-r--r--src/frontend/displaywindow/cbiblereadwindow.h44
-rw-r--r--src/frontend/displaywindow/cbookreadwindow.cpp36
-rw-r--r--src/frontend/displaywindow/cbookreadwindow.h46
-rw-r--r--src/frontend/displaywindow/ccommentaryreadwindow.cpp38
-rw-r--r--src/frontend/displaywindow/ccommentaryreadwindow.h18
-rw-r--r--src/frontend/displaywindow/cdisplaywindow.cpp122
-rw-r--r--src/frontend/displaywindow/cdisplaywindow.h19
-rw-r--r--src/frontend/displaywindow/cdisplaywindowfactory.cpp11
-rw-r--r--src/frontend/displaywindow/cdisplaywindowfactory.h14
-rw-r--r--src/frontend/displaywindow/chtmlwritewindow.cpp70
-rw-r--r--src/frontend/displaywindow/chtmlwritewindow.h36
-rw-r--r--src/frontend/displaywindow/clexiconreadwindow.cpp13
-rw-r--r--src/frontend/displaywindow/clexiconreadwindow.h6
-rw-r--r--src/frontend/displaywindow/cplainwritewindow.cpp159
-rw-r--r--src/frontend/displaywindow/cplainwritewindow.h56
-rw-r--r--src/frontend/displaywindow/creadwindow.cpp56
-rw-r--r--src/frontend/displaywindow/creadwindow.h28
-rw-r--r--src/frontend/displaywindow/cwritewindow.cpp158
-rw-r--r--src/frontend/displaywindow/cwritewindow.h92
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