summaryrefslogtreecommitdiff
path: root/src/frontend/settingsdialogs/btstandardworkstab.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/settingsdialogs/btstandardworkstab.cpp')
-rw-r--r--src/frontend/settingsdialogs/btstandardworkstab.cpp203
1 files changed, 203 insertions, 0 deletions
diff --git a/src/frontend/settingsdialogs/btstandardworkstab.cpp b/src/frontend/settingsdialogs/btstandardworkstab.cpp
new file mode 100644
index 0000000..9cef549
--- /dev/null
+++ b/src/frontend/settingsdialogs/btstandardworkstab.cpp
@@ -0,0 +1,203 @@
+/*********
+*
+* This file is part of BibleTime's source code, http://www.bibletime.info/.
+*
+* Copyright 1999-2014 by the BibleTime developers.
+* The BibleTime source code is licensed under the GNU General Public License version 2.0.
+*
+**********/
+
+#include "frontend/settingsdialogs/btstandardworkstab.h"
+
+#include <QCheckBox>
+#include <QComboBox>
+#include <QFormLayout>
+#include <QLabel>
+#include <QVBoxLayout>
+#include "backend/config/btconfig.h"
+#include "backend/managers/cswordbackend.h"
+#include "frontend/settingsdialogs/cswordsettings.h"
+#include "util/tool.h"
+
+
+BtStandardWorksTab::BtStandardWorksTab(CSwordSettingsPage *parent)
+ : QWidget(parent)
+{
+ typedef QList<CSwordModuleInfo*>::const_iterator MLCI;
+
+ QVBoxLayout *mainLayout = new QVBoxLayout(this);
+ mainLayout->setMargin(5);
+ mainLayout->setSpacing(2);
+
+ m_explanationLabel = new QLabel(this);
+ m_explanationLabel->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Preferred);
+ m_explanationLabel->setMaximumHeight(50);
+ m_explanationLabel->setMinimumWidth(300);
+ mainLayout->addWidget(m_explanationLabel);
+
+ QFormLayout *formLayout = new QFormLayout;
+ formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
+
+#define STANDARD_WORKS_TAB_ADD_ROW(name) \
+ if (true) { \
+ m_ ## name ## Label = new QLabel(this); \
+ m_ ## name ## Combo = new QComboBox(this); \
+ formLayout->addRow(m_ ## name ## Label, m_ ## name ## Combo); \
+ } else (void) 0
+
+ STANDARD_WORKS_TAB_ADD_ROW(standardBible);
+ STANDARD_WORKS_TAB_ADD_ROW(standardCommentary);
+ STANDARD_WORKS_TAB_ADD_ROW(standardLexicon);
+ STANDARD_WORKS_TAB_ADD_ROW(standardDailyDevotional);
+ STANDARD_WORKS_TAB_ADD_ROW(standardHebrewStrongsLexicon);
+ STANDARD_WORKS_TAB_ADD_ROW(standardGreekStrongsLexicon);
+ STANDARD_WORKS_TAB_ADD_ROW(standardHebrewMorphLexicon);
+ STANDARD_WORKS_TAB_ADD_ROW(standardGreekMorphLexicon);
+
+ mainLayout->addLayout(formLayout);
+ mainLayout->addStretch();
+
+ //fill the comboboxes with the right modules
+
+ const QList<CSwordModuleInfo*> &modules(CSwordBackend::instance()->moduleList());
+ QString modDescript;
+ for (MLCI it(modules.begin()); it != modules.end(); it++) {
+ modDescript = (*it)->config(CSwordModuleInfo::Description);
+
+ switch ((*it)->type()) {
+ case CSwordModuleInfo::Bible:
+ m_standardBibleCombo->addItem(modDescript);
+ break;
+ case CSwordModuleInfo::Commentary:
+ m_standardCommentaryCombo->addItem(modDescript);
+ break;
+ case CSwordModuleInfo::Lexicon: {
+ bool inserted = false;
+ if ((*it)->has(CSwordModuleInfo::HebrewDef)) {
+ m_standardHebrewStrongsLexiconCombo->addItem(modDescript);
+ inserted = true;
+ }
+ if ((*it)->has(CSwordModuleInfo::GreekDef)) {
+ m_standardGreekStrongsLexiconCombo->addItem(modDescript);
+ inserted = true;
+ }
+ if ((*it)->has(CSwordModuleInfo::HebrewParse)) {
+ m_standardHebrewMorphLexiconCombo->addItem(modDescript);
+ inserted = true;
+ }
+ if ((*it)->has(CSwordModuleInfo::GreekParse)) {
+ m_standardGreekMorphLexiconCombo->addItem(modDescript);
+ inserted = true;
+ }
+ if ((*it)->category() == CSwordModuleInfo::DailyDevotional) {
+ m_standardDailyDevotionalCombo->addItem(modDescript);
+ inserted = true;
+ }
+
+ if (!inserted) { //daily dvotionals, striong lexicons etc. are not very useful for word lookups
+ m_standardLexiconCombo->addItem(modDescript);
+ }
+ break;
+ }
+ default://unknown type
+ break;
+ } //switch
+ } //for
+
+ //using two lists and one loop is better than six loops with almost the same code :)
+ QList<QComboBox*> comboList;
+ QStringList moduleList;
+
+ // fill combobox and modulelist
+ const CSwordModuleInfo* m;
+
+#define STANDARD_WORKS_COMBO_ADD(name) \
+ comboList.append(m_ ## name ## Combo); \
+ m = btConfig().getDefaultSwordModuleByType(#name); \
+ moduleList << (m != 0 ? m->config(CSwordModuleInfo::Description) : QString::null);
+
+ STANDARD_WORKS_COMBO_ADD(standardBible);
+ STANDARD_WORKS_COMBO_ADD(standardCommentary);
+ STANDARD_WORKS_COMBO_ADD(standardLexicon);
+ STANDARD_WORKS_COMBO_ADD(standardDailyDevotional);
+ STANDARD_WORKS_COMBO_ADD(standardHebrewStrongsLexicon);
+ STANDARD_WORKS_COMBO_ADD(standardGreekStrongsLexicon);
+ STANDARD_WORKS_COMBO_ADD(standardHebrewMorphLexicon);
+ STANDARD_WORKS_COMBO_ADD(standardGreekMorphLexicon);
+
+ QString module = QString::null;
+ int item = 0;
+ int count = 0;
+ QListIterator<QComboBox*> it(comboList);
+ while (it.hasNext()) {
+ //for (QComboBox* combo = comboList.first(); combo; combo = comboList.next() )
+ QComboBox* combo = it.next();
+ module = moduleList[comboList.indexOf(combo)];
+ count = combo->count();
+
+ for (item = 0; item < count; item++) {
+ if (combo->itemText(item) == module ) {
+ combo->setCurrentIndex(item);
+ break;
+ }
+ }
+ }
+
+ retranslateUi();
+}
+
+#define STANDARD_WORKS_SET_DEFAULT(name) \
+ btConfig().setDefaultSwordModuleByType(\
+ #name, \
+ CSwordBackend::instance()->findModuleByDescription(m_ ## name ## Combo->currentText()) \
+ );
+
+void BtStandardWorksTab::save() {
+ STANDARD_WORKS_SET_DEFAULT(standardBible);
+ STANDARD_WORKS_SET_DEFAULT(standardCommentary);
+ STANDARD_WORKS_SET_DEFAULT(standardLexicon);
+ STANDARD_WORKS_SET_DEFAULT(standardDailyDevotional);
+ STANDARD_WORKS_SET_DEFAULT(standardHebrewStrongsLexicon);
+ STANDARD_WORKS_SET_DEFAULT(standardGreekStrongsLexicon);
+ STANDARD_WORKS_SET_DEFAULT(standardHebrewMorphLexicon);
+ STANDARD_WORKS_SET_DEFAULT(standardGreekMorphLexicon);
+}
+
+void BtStandardWorksTab::retranslateUi() {
+ util::tool::initExplanationLabel(
+ m_explanationLabel, "",
+ tr("Standard works are used when no particular work is specified, for example "
+ "when a hyperlink into a Bible or lexicon was clicked."));
+
+ m_standardBibleLabel->setText(tr("Bible:"));
+ m_standardBibleCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardBibleCombo->setToolTip(tr("The standard Bible is used when a hyperlink into a Bible is clicked"));
+
+ m_standardCommentaryLabel->setText(tr("Commentary:"));
+ m_standardCommentaryCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardCommentaryCombo->setToolTip(tr("The standard commentary is used when a hyperlink into a commentary is clicked"));
+
+ m_standardLexiconLabel->setText(tr("Lexicon:"));
+ m_standardLexiconCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardLexiconCombo->setToolTip(tr("The standard lexicon is used when a hyperlink into a lexicon is clicked"));
+
+ m_standardDailyDevotionalLabel->setText(tr("Daily devotional:"));
+ m_standardDailyDevotionalCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardDailyDevotionalCombo->setToolTip(tr("The standard devotional will be used to display a short start up devotional"));
+
+ m_standardHebrewStrongsLexiconLabel->setText(tr("Hebrew Strong's lexicon:"));
+ m_standardHebrewStrongsLexiconCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardHebrewStrongsLexiconCombo->setToolTip(tr("The standard Hebrew lexicon is used when a hyperlink into a Hebrew lexicon is clicked"));
+
+ m_standardGreekStrongsLexiconLabel->setText(tr("Greek Strong's lexicon:"));
+ m_standardGreekStrongsLexiconCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardGreekStrongsLexiconCombo->setToolTip(tr("The standard Greek lexicon is used when a hyperlink into a Greek lexicon is clicked"));
+
+ m_standardHebrewMorphLexiconLabel->setText(tr("Hebrew morphological lexicon:"));
+ m_standardHebrewMorphLexiconCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardHebrewMorphLexiconCombo->setToolTip(tr("The standard morphological lexicon for Hebrew texts is used when a hyperlink of a morphological tag in a Hebrew text is clicked"));
+
+ m_standardGreekMorphLexiconLabel->setText(tr("Greek morphological lexicon:"));
+ m_standardGreekMorphLexiconCombo->setSizeAdjustPolicy(QComboBox::AdjustToMinimumContentsLength);
+ m_standardGreekMorphLexiconCombo->setToolTip(tr("The standard morphological lexicon for Greek texts is used when a hyperlink of a morphological tag in a Greek text is clicked"));
+}