summaryrefslogtreecommitdiff
path: root/src/frontend/settingsdialogs/clanguagesettings.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/settingsdialogs/clanguagesettings.cpp')
-rw-r--r--src/frontend/settingsdialogs/clanguagesettings.cpp451
1 files changed, 209 insertions, 242 deletions
diff --git a/src/frontend/settingsdialogs/clanguagesettings.cpp b/src/frontend/settingsdialogs/clanguagesettings.cpp
index 30d6e6b..152de40 100644
--- a/src/frontend/settingsdialogs/clanguagesettings.cpp
+++ b/src/frontend/settingsdialogs/clanguagesettings.cpp
@@ -1,7 +1,7 @@
//
// C++ Implementation: clanguagesettings
//
-// Description:
+// Description:
//
//
// Author: The BibleTime team <info@bibletime.info>, (C) 1999-2008
@@ -33,270 +33,237 @@
#include <swlocale.h>
CLanguageSettingsPage::CLanguageSettingsPage(QWidget* /*parent*/)
- : BtConfigPage()
-{
-
- QVBoxLayout* layout = new QVBoxLayout(this);
-
- //Sword locales
- layout->addWidget(
- CToolClass::explanationLabel(
- this,
- tr(""),
- tr("Select the language in which the Biblical book names are displayed.")
- ));
-
- m_swordLocaleCombo = new QComboBox(this);
- QLabel* label = new QLabel( tr("Language for names of Bible books:"), this);
- label->setBuddy(m_swordLocaleCombo);
- m_swordLocaleCombo->setToolTip(tr("The languages which can be used for the biblical booknames"));
-
-
- QHBoxLayout* hBoxLayout = new QHBoxLayout();
- hBoxLayout->addWidget(label);
- hBoxLayout->addWidget(m_swordLocaleCombo);
- hBoxLayout->addStretch();
- layout->addLayout(hBoxLayout);
-
- QStringList languageNames;
- languageNames.append( languageMgr()->languageForAbbrev("en_US")->translatedName() );
-
- std::list<sword::SWBuf> locales = sword::LocaleMgr::getSystemLocaleMgr()->getAvailableLocales();
- for (std::list<sword::SWBuf>::const_iterator it = locales.begin(); it != locales.end(); it++)
- {
- // qWarning("working on %s", (*it).c_str());
- const CLanguageMgr::Language* const l =
- CPointers::languageMgr()->languageForAbbrev( sword::LocaleMgr::getSystemLocaleMgr()->getLocale((*it).c_str())->getName() );
-
- if (l->isValid())
- {
- languageNames.append( l->translatedName() );
- }
- else
- {
- languageNames.append(
- sword::LocaleMgr::getSystemLocaleMgr()->getLocale((*it).c_str())->getDescription()
- );
- }
- } //for
-
- languageNames.sort();
- m_swordLocaleCombo->addItems( languageNames );
-
- const CLanguageMgr::Language* const l =
- CPointers::languageMgr()->languageForAbbrev( CBTConfig::get(CBTConfig::language) );
-
- QString currentLanguageName;
- if ( l->isValid() && languageNames.contains(l->translatedName()) )
- { //tranlated language name is in the box
- currentLanguageName = l->translatedName();
- }
- else
- { //a language like "German Abbrevs" might be the language to set
- sword::SWLocale* locale =
- sword::LocaleMgr::getSystemLocaleMgr()->getLocale( CBTConfig::get(CBTConfig::language).toLocal8Bit() );
- if (locale)
- {
- currentLanguageName = QString::fromLatin1(locale->getDescription());
- }
- }
-
- if (currentLanguageName.isEmpty())
- { // set english as default if nothing was chosen
- Q_ASSERT(languageMgr()->languageForAbbrev("en_US"));
- currentLanguageName = languageMgr()->languageForAbbrev("en_US")->translatedName();
- }
-
- //now set the item with the right name as current item
- for (int i = 0; i < m_swordLocaleCombo->count(); ++i)
- {
- if (currentLanguageName == m_swordLocaleCombo->itemText(i))
- {
- m_swordLocaleCombo->setCurrentIndex(i);
- break; //item found, finish the loop
- }
- }
-
- layout->addSpacing(20);
-
- //Font settings
-
- layout->addWidget(
- CToolClass::explanationLabel(
- this,
- tr("Fonts"),
- tr("You can specify a custom font for each language.")
- )
- );
- QHBoxLayout* hLayout = new QHBoxLayout();
-
- m_usageCombo = new QComboBox(this);
- m_usageCombo->setToolTip(tr("The font selection below will apply to all texts in this language"));
-
- hLayout->addWidget(m_usageCombo);
-
- CLanguageMgr::LangMap langMap = languageMgr()->availableLanguages();
-
- for (CLanguageMgr::LangMapIterator it = langMap.constBegin() ; it != langMap.constEnd(); ++it )
- {
- const QString name =
- (*it)->translatedName().isEmpty()
- ? (*it)->abbrev()
- : (*it)->translatedName();
-
- m_fontMap.insert(name, CBTConfig::get(*it) );
- }
-
- for( QMap<QString, CBTConfig::FontSettingsPair>::Iterator it = m_fontMap.begin(); it != m_fontMap.end(); ++it )
- {
- if ( m_fontMap[it.key()].first )
- { //show font icon
- m_usageCombo->addItem(util::filesystem::DirectoryUtil::getIcon("fonts.svg"), it.key() );
- }
- else
- { //don't show icon for font
- m_usageCombo->addItem(it.key());
- }
- }
-
- m_useOwnFontCheck = new QCheckBox(tr("Use custom font"), this);
- m_useOwnFontCheck->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
- connect(m_useOwnFontCheck, SIGNAL(toggled(bool)), SLOT(useOwnFontClicked(bool)) );
- hLayout->addWidget(m_useOwnFontCheck);
-
- layout->addLayout(hLayout);
- hLayout->setContentsMargins(0,0,0,0);
- //#warning TODO: remember the last selected font and jump there.
-
- m_fontChooser = new CFontChooser(this);
-
- //TODO: Eeli's wishlist: why not show something relevant here, like a Bible verse in chosen (not tr()'ed!) language?
- QString sampleText;
- sampleText.append("1 In the beginning God created the heaven and the earth. ");
+ : BtConfigPage() {
+
+ QVBoxLayout* layout = new QVBoxLayout(this);
+
+ //Sword locales
+ layout->addWidget(
+ CToolClass::explanationLabel(
+ this,
+ tr(""),
+ tr("Select the language in which the Biblical book names are displayed.")
+ ));
+
+ m_swordLocaleCombo = new QComboBox(this);
+ QLabel* label = new QLabel( tr("Language for names of Bible books:"), this);
+ label->setBuddy(m_swordLocaleCombo);
+ m_swordLocaleCombo->setToolTip(tr("The languages which can be used for the biblical booknames"));
+
+
+ QHBoxLayout* hBoxLayout = new QHBoxLayout();
+ hBoxLayout->addWidget(label);
+ hBoxLayout->addWidget(m_swordLocaleCombo);
+ hBoxLayout->addStretch();
+ layout->addLayout(hBoxLayout);
+
+ QStringList languageNames;
+ languageNames.append( languageMgr()->languageForAbbrev("en_US")->translatedName() );
+
+ std::list<sword::SWBuf> locales = sword::LocaleMgr::getSystemLocaleMgr()->getAvailableLocales();
+ for (std::list<sword::SWBuf>::const_iterator it = locales.begin(); it != locales.end(); it++) {
+ // qWarning("working on %s", (*it).c_str());
+ const CLanguageMgr::Language* const l =
+ CPointers::languageMgr()->languageForAbbrev( sword::LocaleMgr::getSystemLocaleMgr()->getLocale((*it).c_str())->getName() );
+
+ if (l->isValid()) {
+ languageNames.append( l->translatedName() );
+ }
+ else {
+ languageNames.append(
+ sword::LocaleMgr::getSystemLocaleMgr()->getLocale((*it).c_str())->getDescription()
+ );
+ }
+ } //for
+
+ languageNames.sort();
+ m_swordLocaleCombo->addItems( languageNames );
+
+ const CLanguageMgr::Language* const l =
+ CPointers::languageMgr()->languageForAbbrev( CBTConfig::get(CBTConfig::language) );
+
+ QString currentLanguageName;
+ if ( l->isValid() && languageNames.contains(l->translatedName()) ) { //tranlated language name is in the box
+ currentLanguageName = l->translatedName();
+ }
+ else { //a language like "German Abbrevs" might be the language to set
+ sword::SWLocale* locale =
+ sword::LocaleMgr::getSystemLocaleMgr()->getLocale( CBTConfig::get(CBTConfig::language).toLocal8Bit() );
+ if (locale) {
+ currentLanguageName = QString::fromLatin1(locale->getDescription());
+ }
+ }
+
+ if (currentLanguageName.isEmpty()) { // set english as default if nothing was chosen
+ Q_ASSERT(languageMgr()->languageForAbbrev("en_US"));
+ currentLanguageName = languageMgr()->languageForAbbrev("en_US")->translatedName();
+ }
+
+ //now set the item with the right name as current item
+ for (int i = 0; i < m_swordLocaleCombo->count(); ++i) {
+ if (currentLanguageName == m_swordLocaleCombo->itemText(i)) {
+ m_swordLocaleCombo->setCurrentIndex(i);
+ break; //item found, finish the loop
+ }
+ }
+
+ layout->addSpacing(20);
+
+ //Font settings
+
+ layout->addWidget(
+ CToolClass::explanationLabel(
+ this,
+ tr("Fonts"),
+ tr("You can specify a custom font for each language.")
+ )
+ );
+ QHBoxLayout* hLayout = new QHBoxLayout();
+
+ m_usageCombo = new QComboBox(this);
+ m_usageCombo->setToolTip(tr("The font selection below will apply to all texts in this language"));
+
+ hLayout->addWidget(m_usageCombo);
+
+ CLanguageMgr::LangMap langMap = languageMgr()->availableLanguages();
+
+ for (CLanguageMgr::LangMapIterator it = langMap.constBegin() ; it != langMap.constEnd(); ++it ) {
+ const QString name =
+ (*it)->translatedName().isEmpty()
+ ? (*it)->abbrev()
+ : (*it)->translatedName();
+
+ m_fontMap.insert(name, CBTConfig::get(*it) );
+ }
+
+ for ( QMap<QString, CBTConfig::FontSettingsPair>::Iterator it = m_fontMap.begin(); it != m_fontMap.end(); ++it ) {
+ if ( m_fontMap[it.key()].first ) { //show font icon
+ m_usageCombo->addItem(util::filesystem::DirectoryUtil::getIcon("fonts.svg"), it.key() );
+ }
+ else { //don't show icon for font
+ m_usageCombo->addItem(it.key());
+ }
+ }
+
+ m_useOwnFontCheck = new QCheckBox(tr("Use custom font"), this);
+ m_useOwnFontCheck->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
+ connect(m_useOwnFontCheck, SIGNAL(toggled(bool)), SLOT(useOwnFontClicked(bool)) );
+ hLayout->addWidget(m_useOwnFontCheck);
+
+ layout->addLayout(hLayout);
+ hLayout->setContentsMargins(0, 0, 0, 0);
+ //#warning TODO: remember the last selected font and jump there.
+
+ m_fontChooser = new CFontChooser(this);
+
+ //TODO: Eeli's wishlist: why not show something relevant here, like a Bible verse in chosen (not tr()'ed!) language?
+ QString sampleText;
+ sampleText.append("1 In the beginning God created the heaven and the earth. ");
sampleText.append("2 And the earth was without form, and void; and darkness was on the face of the deep.");
- sampleText.append(" And the Spirit of God moved on the face of the waters.");
+ sampleText.append(" And the Spirit of God moved on the face of the waters.");
- m_fontChooser->setSampleText(sampleText);
- layout->addWidget(m_fontChooser);
+ m_fontChooser->setSampleText(sampleText);
+ layout->addWidget(m_fontChooser);
- connect(m_fontChooser, SIGNAL(fontSelected(const QFont&)), SLOT(newDisplayWindowFontSelected(const QFont&)));
- connect(m_usageCombo, SIGNAL(activated(const QString&)), SLOT(newDisplayWindowFontAreaSelected(const QString&)));
+ connect(m_fontChooser, SIGNAL(fontSelected(const QFont&)), SLOT(newDisplayWindowFontSelected(const QFont&)));
+ connect(m_usageCombo, SIGNAL(activated(const QString&)), SLOT(newDisplayWindowFontAreaSelected(const QString&)));
- m_fontChooser->setFont( m_fontMap[m_usageCombo->currentText()].second );
- useOwnFontClicked( m_fontMap[m_usageCombo->currentText()].first );
- m_useOwnFontCheck->setChecked( m_fontMap[m_usageCombo->currentText()].first );
- m_fontChooser->setMinimumSize(m_fontChooser->sizeHint());
+ m_fontChooser->setFont( m_fontMap[m_usageCombo->currentText()].second );
+ useOwnFontClicked( m_fontMap[m_usageCombo->currentText()].first );
+ m_useOwnFontCheck->setChecked( m_fontMap[m_usageCombo->currentText()].first );
+ m_fontChooser->setMinimumSize(m_fontChooser->sizeHint());
}
-CLanguageSettingsPage::~CLanguageSettingsPage()
-{
+CLanguageSettingsPage::~CLanguageSettingsPage() {
}
-void CLanguageSettingsPage::save()
-{
- for(QMap<QString, CBTConfig::FontSettingsPair>::Iterator it = m_fontMap.begin(); it != m_fontMap.end(); ++it )
- {
- const CLanguageMgr::Language* const lang = languageMgr()->languageForTranslatedName(it.key());
- if (!lang->isValid())
- { //we possibly use a language, for which we have only the abbrev
- if (!lang->abbrev().isEmpty()) {
- CLanguageMgr::Language l(it.key(), it.key(), it.key()); //create a temp language
- CBTConfig::set(&l, it.value());
- }
- }
- else
- {
- CBTConfig::set(lang, it.value());
- }
- }
-
-
- QString languageAbbrev;
-
- const QString currentLanguageName = m_swordLocaleCombo->currentText();
- const CLanguageMgr::Language* const l = CPointers::languageMgr()->languageForTranslatedName( currentLanguageName );
-
- if (l && l->isValid())
- {
- languageAbbrev = l->abbrev();
- }
- else
- { //it can be the lang abbrev like de_abbrev or the Sword description
- std::list <sword::SWBuf> locales = sword::LocaleMgr::getSystemLocaleMgr()->getAvailableLocales();
-
- for (std::list <sword::SWBuf>::iterator it = locales.begin(); it != locales.end(); it++)
- {
- sword::SWLocale* locale = sword::LocaleMgr::getSystemLocaleMgr()->getLocale((*it).c_str());
- Q_ASSERT(locale);
-
- if ( locale && (QString::fromLatin1(locale->getDescription()) == currentLanguageName) )
- {
- languageAbbrev = QString::fromLatin1(locale->getName()); //we found the abbrevation for the current language
- break;
- }
- }
-
- if (languageAbbrev.isEmpty())
- {
- languageAbbrev = currentLanguageName; //probably a non-standard locale name like de_abbrev
- }
- }
-
- if (!languageAbbrev.isEmpty())
- {
- CBTConfig::set(CBTConfig::language, languageAbbrev);
- }
+void CLanguageSettingsPage::save() {
+ for (QMap<QString, CBTConfig::FontSettingsPair>::Iterator it = m_fontMap.begin(); it != m_fontMap.end(); ++it ) {
+ const CLanguageMgr::Language* const lang = languageMgr()->languageForTranslatedName(it.key());
+ if (!lang->isValid()) { //we possibly use a language, for which we have only the abbrev
+ if (!lang->abbrev().isEmpty()) {
+ CLanguageMgr::Language l(it.key(), it.key(), it.key()); //create a temp language
+ CBTConfig::set(&l, it.value());
+ }
+ }
+ else {
+ CBTConfig::set(lang, it.value());
+ }
+ }
+
+
+ QString languageAbbrev;
+
+ const QString currentLanguageName = m_swordLocaleCombo->currentText();
+ const CLanguageMgr::Language* const l = CPointers::languageMgr()->languageForTranslatedName( currentLanguageName );
+
+ if (l && l->isValid()) {
+ languageAbbrev = l->abbrev();
+ }
+ else { //it can be the lang abbrev like de_abbrev or the Sword description
+ std::list <sword::SWBuf> locales = sword::LocaleMgr::getSystemLocaleMgr()->getAvailableLocales();
+
+ for (std::list <sword::SWBuf>::iterator it = locales.begin(); it != locales.end(); it++) {
+ sword::SWLocale* locale = sword::LocaleMgr::getSystemLocaleMgr()->getLocale((*it).c_str());
+ Q_ASSERT(locale);
+
+ if ( locale && (QString::fromLatin1(locale->getDescription()) == currentLanguageName) ) {
+ languageAbbrev = QString::fromLatin1(locale->getName()); //we found the abbrevation for the current language
+ break;
+ }
+ }
+
+ if (languageAbbrev.isEmpty()) {
+ languageAbbrev = currentLanguageName; //probably a non-standard locale name like de_abbrev
+ }
+ }
+
+ if (!languageAbbrev.isEmpty()) {
+ CBTConfig::set(CBTConfig::language, languageAbbrev);
+ }
}
/** */
-void CLanguageSettingsPage::newDisplayWindowFontSelected(const QFont &newFont)
-{
- //belongs to the languages/fonts page
- CBTConfig::FontSettingsPair oldSettings = m_fontMap[ m_usageCombo->currentText() ];
- m_fontMap.insert( m_usageCombo->currentText(), CBTConfig::FontSettingsPair(oldSettings.first, newFont) );
+void CLanguageSettingsPage::newDisplayWindowFontSelected(const QFont &newFont) {
+ //belongs to the languages/fonts page
+ CBTConfig::FontSettingsPair oldSettings = m_fontMap[ m_usageCombo->currentText() ];
+ m_fontMap.insert( m_usageCombo->currentText(), CBTConfig::FontSettingsPair(oldSettings.first, newFont) );
}
/** Called when the combobox contents is changed */
-void CLanguageSettingsPage::newDisplayWindowFontAreaSelected(const QString& usage)
-{
- //belongs to fonts/languages
- useOwnFontClicked( m_fontMap[usage].first );
- m_useOwnFontCheck->setChecked( m_fontMap[usage].first );
+void CLanguageSettingsPage::newDisplayWindowFontAreaSelected(const QString& usage) {
+ //belongs to fonts/languages
+ useOwnFontClicked( m_fontMap[usage].first );
+ m_useOwnFontCheck->setChecked( m_fontMap[usage].first );
- m_fontChooser->setFont( m_fontMap[usage].second );
+ m_fontChooser->setFont( m_fontMap[usage].second );
}
/** This slot is called when the "Use own font for language" bo was clicked. */
-void CLanguageSettingsPage::useOwnFontClicked( bool isOn )
-{
- //belongs to fonts/languages
-
- m_fontChooser->setEnabled(isOn);
- m_fontMap[ m_usageCombo->currentText() ].first = isOn;
-
- if (isOn)
- { //show font icon
- m_usageCombo->setItemIcon(m_usageCombo->currentIndex(), util::filesystem::DirectoryUtil::getIcon("fonts.svg") );
- }
- else
- { //don't show
- m_usageCombo->setItemText(m_usageCombo->currentIndex(), m_usageCombo->currentText() ); //TODO: should this change icon to empty?
- }
+void CLanguageSettingsPage::useOwnFontClicked( bool isOn ) {
+ //belongs to fonts/languages
+
+ m_fontChooser->setEnabled(isOn);
+ m_fontMap[ m_usageCombo->currentText() ].first = isOn;
+
+ if (isOn) { //show font icon
+ m_usageCombo->setItemIcon(m_usageCombo->currentIndex(), util::filesystem::DirectoryUtil::getIcon("fonts.svg") );
+ }
+ else { //don't show
+ m_usageCombo->setItemText(m_usageCombo->currentIndex(), m_usageCombo->currentText() ); //TODO: should this change icon to empty?
+ }
}
-QString CLanguageSettingsPage::iconName()
-{
- return CResMgr::settings::fonts::icon;
+QString CLanguageSettingsPage::iconName() {
+ return CResMgr::settings::fonts::icon;
}
-QString CLanguageSettingsPage::label()
-{
- //: Empty string, don't translate
- return tr("");
+QString CLanguageSettingsPage::label() {
+ //: Empty string, don't translate
+ return tr("");
}
-QString CLanguageSettingsPage::header()
-{
- return tr("Languages");
+QString CLanguageSettingsPage::header() {
+ return tr("Languages");
}