summaryrefslogtreecommitdiffstats
path: root/kdeui/kswitchlanguagedialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kdeui/kswitchlanguagedialog.cpp')
-rw-r--r--kdeui/kswitchlanguagedialog.cpp349
1 files changed, 0 insertions, 349 deletions
diff --git a/kdeui/kswitchlanguagedialog.cpp b/kdeui/kswitchlanguagedialog.cpp
deleted file mode 100644
index fa43dcaf2..000000000
--- a/kdeui/kswitchlanguagedialog.cpp
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * This file is part of the KDE Libraries
- * Copyright (C) 2007 Krzysztof Lichota (lichota@mimuw.edu.pl)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- *
- */
-
-#include "kswitchlanguagedialog.h"
-
-#include <tqlayout.h>
-#include <tqtooltip.h>
-#include <tqlabel.h>
-#include <tqmap.h>
-
-#include <klanguagebutton.h>
-#include <kconfig.h>
-#include <klocale.h>
-#include <kmessagebox.h>
-#include <kdebug.h>
-#include <kpushbutton.h>
-
-struct LanguageRowData
-{
- TQLabel *label;
- KLanguageButton *languageButton;
- KPushButton *removeButton;
-
- void setRowWidgets(
- TQLabel *label,
- KLanguageButton *languageButton,
- KPushButton *removeButton
- )
- {
- this->label = label;
- this->languageButton = languageButton;
- this->removeButton = removeButton;
- }
-
-};
-
-class KSwitchLanguageDialogPrivate
-{
-public:
- KSwitchLanguageDialogPrivate(KSwitchLanguageDialog *parent);
-
- KSwitchLanguageDialog *p; //parent class
-
- /**
- Fills language button with names of languages for which given application has translation.
- */
- void fillApplicationLanguages(KLanguageButton *button);
-
- /**
- Adds one button with language to widget.
- */
- void addLanguageButton(const TQString & languageCode, bool primaryLanguage);
-
- /**
- Returns list of languages chosen for application or default languages is they are not set.
- */
- TQStringList applicationLanguageList();
-
- TQMap<KPushButton*, LanguageRowData> languageRows;
- TQPtrList<KLanguageButton> languageButtons;
- TQGridLayout *languagesLayout;
- TQWidget *page;
-};
-
-/*************************** KSwitchLanguageDialog **************************/
-
-KSwitchLanguageDialog::KSwitchLanguageDialog(
- TQWidget *parent,
- const char *name,
- bool modal
- ):
- KDialogBase(parent, name, modal, i18n("Switch application language"), Ok|Cancel, Ok, true ),
- d(new KSwitchLanguageDialogPrivate(this))
-{
- d->page = new TQWidget( this );
- setMainWidget(d->page);
- TQVBoxLayout *topLayout = new TQVBoxLayout( d->page, 0, spacingHint() );
- TQLabel *label = new TQLabel( i18n("Please choose language which should be used for this application"), d->page, "label1" );
- topLayout->addWidget( label );
-
- TQHBoxLayout *languageHorizontalLayout = new TQHBoxLayout();
- topLayout->addLayout(languageHorizontalLayout);
-
- d->languagesLayout = new TQGridLayout(0 , 2);
- languageHorizontalLayout->addLayout(TQT_TQLAYOUT(d->languagesLayout));
- languageHorizontalLayout->addStretch();
-
- TQStringList defaultLanguages = d->applicationLanguageList();
-
- for ( TQStringList::ConstIterator it = defaultLanguages.begin(); it != defaultLanguages.end(); ++it )
- {
- TQString language = *it;
- bool primaryLanguage = (it == defaultLanguages.begin());
- d->addLanguageButton(language, primaryLanguage);
- }
-
- if (defaultLanguages.count() == 0)
- {
- d->addLanguageButton(KGlobal::locale()->defaultLanguage(), true);
- }
-
- TQHBoxLayout *addButtonHorizontalLayout = new TQHBoxLayout();
- topLayout->addLayout(addButtonHorizontalLayout);
-
- KPushButton *addLangButton = new KPushButton(i18n("Add fallback language"), d->page, "addLangButton");
- TQToolTip::add(addLangButton, i18n("Adds one more language which will be used if other translations do not contain proper translation"));
- connect(addLangButton, TQT_SIGNAL(clicked()), this, TQT_SLOT(slotAddLanguageButton()));
- addButtonHorizontalLayout->addWidget(addLangButton);
- addButtonHorizontalLayout->addStretch();
-
- topLayout->addStretch(10);
-}
-
-KSwitchLanguageDialog::~KSwitchLanguageDialog()
-{
- delete this->d;
-}
-
-void KSwitchLanguageDialog::slotAddLanguageButton()
-{
- //adding new button with en_US as it should always be present
- d->addLanguageButton("en_US", d->languageButtons.isEmpty() ? true : false);
-}
-
-void KSwitchLanguageDialog::removeButtonClicked()
-{
- TQObject const *signalSender = TQT_TQOBJECT_CONST(sender());
-
- if (signalSender == NULL)
- {
- kdError() << "KSwitchLanguageDialog::removeButtonClicked() called directly, not using signal";
- return;
- }
-
- KPushButton *removeButton = const_cast<KPushButton*>(::tqqt_cast<const KPushButton*>(signalSender));
-
- if (removeButton == NULL)
- {
- kdError() << "KSwitchLanguageDialog::removeButtonClicked() called from something else than KPushButton";
- return;
- }
-
- TQMap<KPushButton *, LanguageRowData>::iterator it = d->languageRows.find(removeButton);
-
- if (it == d->languageRows.end())
- {
- kdError() << "KSwitchLanguageDialog::removeButtonClicked called from unknown KPushButton";
- return;
- }
-
- LanguageRowData languageRowData = it.data();
-
- d->languageButtons.removeRef(languageRowData.languageButton);
-
- languageRowData.label->deleteLater();
- languageRowData.languageButton->deleteLater();
- languageRowData.removeButton->deleteLater();
- d->languageRows.erase(it);
-}
-
-void KSwitchLanguageDialog::languageOnButtonChanged(const TQString & languageCode)
-{
- for ( TQPtrList<KLanguageButton>::ConstIterator it = d->languageButtons.begin(); it != d->languageButtons.end(); ++it )
- {
- KLanguageButton *languageButton = *it;
- if (languageButton->current() == languageCode)
- {
- //update all buttons which have matching id
- //might update buttons which were not changed, but well...
- languageButton->setText(KGlobal::locale()->twoAlphaToLanguageName(languageCode));
- }
- }
-}
-
-void KSwitchLanguageDialog::slotOk()
-{
- TQString languageString;
- bool first = true;
-
- for ( TQPtrList<KLanguageButton>::ConstIterator it = d->languageButtons.begin(); it != d->languageButtons.end(); ++it )
- {
- KLanguageButton *languageButton = *it;
-
- if (first == false)
- {
- languageString += ':';
- }
- languageString += languageButton->current();
- first = false;
- }
-
- KConfig *config = KGlobal::config();
-
- if (d->applicationLanguageList().join(":") != languageString)
- {
- //list is different from defaults or saved languages list
- KConfigGroup group(config, "Locale");
-
- group.writeEntry("Language", languageString);
- config->sync();
-
- KMessageBox::information(
- this,
- i18n("Language for this application has been changed. The change will take effect upon next start of application"), //text
- i18n("Application language changed"), //caption
- "ApplicationLanguageChangedWarning" //dontShowAgainName
- );
- }
-
- emit okClicked();
- accept();
-}
-
-/************************ KSwitchLanguageDialogPrivate ***********************/
-
-KSwitchLanguageDialogPrivate::KSwitchLanguageDialogPrivate(
- KSwitchLanguageDialog *parent
- ):
- p(parent)
-{
- //NOTE: do NOT use "p" in constructor, it is not fully constructed
-}
-
-void KSwitchLanguageDialogPrivate::fillApplicationLanguages(KLanguageButton *button)
-{
- KLocale *locale = KGlobal::locale();
- TQStringList allLanguages = locale->allLanguagesTwoAlpha();
- for ( TQStringList::ConstIterator it = allLanguages.begin(); it != allLanguages.end(); ++it )
- {
- TQString languageCode = *it;
- if (locale->isApplicationTranslatedInto(languageCode))
- {
- button->insertItem(
- locale->twoAlphaToLanguageName(languageCode),
- languageCode
- );
- }
- }
-}
-
-TQStringList KSwitchLanguageDialogPrivate::applicationLanguageList()
-{
- KConfig *config = KGlobal::config();
- TQStringList languagesList;
-
- if (config->hasGroup("Locale"))
- {
- KConfigGroupSaver saver(config, "Locale");
-
- if (config->hasKey("Language"))
- {
- languagesList = config->readListEntry("Language", ':');
- }
- }
- if (languagesList.empty())
- {
- languagesList = KGlobal::locale()->languageList();
- }
- return languagesList;
-}
-
-void KSwitchLanguageDialogPrivate::addLanguageButton(const TQString & languageCode, bool primaryLanguage)
-{
- TQString labelText = primaryLanguage ? i18n("Primary language:") : i18n("Fallback language:");
-
- KLanguageButton *languageButton = new KLanguageButton(page);
-
- languageButton->setText(KGlobal::locale()->twoAlphaToLanguageName(languageCode));
-
- fillApplicationLanguages(languageButton);
-
- languageButton->setCurrentItem(languageCode);
-
- TQObject::connect(
- languageButton,
- TQT_SIGNAL(activated( const TQString &)),
- p,
- TQT_SLOT(languageOnButtonChanged(const TQString &))
- );
-
- LanguageRowData languageRowData;
- KPushButton *removeButton = NULL;
-
- if (primaryLanguage == false)
- {
- removeButton = new KPushButton(i18n("Remove"), page);
-
- TQObject::connect(
- removeButton,
- TQT_SIGNAL(clicked()),
- p,
- TQT_SLOT(removeButtonClicked())
- );
- }
-
- if (primaryLanguage)
- {
- TQToolTip::add(languageButton, i18n("This is main application language which will be used first before any other languages"));
- }
- else
- {
- TQToolTip::add(languageButton, i18n("This is language which will be used if any previous languages does not contain proper translation"));
- }
-
- int numRows = languagesLayout->numRows();
-
- TQLabel *languageLabel = new TQLabel(labelText, page);
- languagesLayout->addWidget( languageLabel, numRows + 1, 1, (TQ_Alignment)TQt::AlignAuto );
- languagesLayout->addWidget( languageButton, numRows + 1, 2, (TQ_Alignment)TQt::AlignAuto );
-
- if (primaryLanguage == false)
- {
- languagesLayout->addWidget( removeButton, numRows + 1, 3, (TQ_Alignment)TQt::AlignAuto );
-
- languageRowData.setRowWidgets(
- languageLabel,
- languageButton,
- removeButton
- );
- removeButton->show();
- }
-
- languageRows.insert(removeButton, languageRowData);
-
- languageButtons.append(languageButton);
- languageButton->show();
- languageLabel->show();
-}
-
-#include "kswitchlanguagedialog.moc"
-