summaryrefslogtreecommitdiffstats
path: root/kcontrol/locale/localenum.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kcontrol/locale/localenum.cpp')
-rw-r--r--kcontrol/locale/localenum.cpp194
1 files changed, 194 insertions, 0 deletions
diff --git a/kcontrol/locale/localenum.cpp b/kcontrol/locale/localenum.cpp
new file mode 100644
index 000000000..ca523d2e9
--- /dev/null
+++ b/kcontrol/locale/localenum.cpp
@@ -0,0 +1,194 @@
+/*
+ * localenum.cpp
+ *
+ * Copyright (c) 1999-2003 Hans Petter Bieker <[email protected]>
+ *
+ * Requires the Qt widget libraries, available at no cost at
+ * http://www.troll.no/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <tqlabel.h>
+#include <tqlineedit.h>
+#include <tqlayout.h>
+#include <tqwhatsthis.h>
+#include <tqregexp.h>
+
+#include <kdialog.h>
+#include <ksimpleconfig.h>
+#include <kstandarddirs.h>
+
+#include "toplevel.h"
+#include "localenum.h"
+#include "localenum.moc"
+
+TDELocaleConfigNumber::TDELocaleConfigNumber(TDELocale *locale,
+ TQWidget *parent, const char*name)
+ : TQWidget(parent, name),
+ m_locale(locale)
+{
+ TQGridLayout *lay = new TQGridLayout(this, 5, 2,
+ KDialog::marginHint(),
+ KDialog::spacingHint());
+ lay->setAutoAdd(TRUE);
+
+ m_labDecSym = new TQLabel(this, I18N_NOOP("&Decimal symbol:"));
+ m_edDecSym = new TQLineEdit(this);
+ connect( m_edDecSym, TQT_SIGNAL( textChanged(const TQString &) ),
+ this, TQT_SLOT( slotDecSymChanged(const TQString &) ) );
+ m_labDecSym->setBuddy(m_edDecSym);
+
+ m_labThoSep = new TQLabel(this, I18N_NOOP("Tho&usands separator:"));
+ m_edThoSep = new TQLineEdit(this);
+ connect( m_edThoSep, TQT_SIGNAL( textChanged(const TQString &) ),
+ this, TQT_SLOT( slotThoSepChanged(const TQString &) ) );
+ m_labThoSep->setBuddy(m_edThoSep);
+
+ m_labMonPosSign = new TQLabel(this, I18N_NOOP("Positive si&gn:"));
+ m_edMonPosSign = new TQLineEdit(this);
+ connect( m_edMonPosSign, TQT_SIGNAL( textChanged(const TQString &) ),
+ this, TQT_SLOT( slotMonPosSignChanged(const TQString &) ) );
+ m_labMonPosSign->setBuddy(m_edMonPosSign);
+
+ m_labMonNegSign = new TQLabel(this, I18N_NOOP("&Negative sign:"));
+ m_edMonNegSign = new TQLineEdit(this);
+ connect( m_edMonNegSign, TQT_SIGNAL( textChanged(const TQString &) ),
+ this, TQT_SLOT( slotMonNegSignChanged(const TQString &) ) );
+ m_labMonNegSign->setBuddy(m_edMonNegSign);
+
+ lay->setColStretch(1, 1);
+
+ connect(this, TQT_SIGNAL(localeChanged()),
+ TQT_SLOT(slotLocaleChanged()));
+}
+
+TDELocaleConfigNumber::~TDELocaleConfigNumber()
+{
+}
+
+void TDELocaleConfigNumber::save()
+{
+ // temperary use of our locale as the global locale
+ TDELocale *lsave = TDEGlobal::_locale;
+ TDEGlobal::_locale = m_locale;
+
+ TDEConfig *config = TDEGlobal::config();
+ TDEConfigGroupSaver saver(config, "Locale");
+
+ KSimpleConfig ent(locate("locale",
+ TQString::fromLatin1("l10n/%1/entry.desktop")
+ .arg(m_locale->country())), true);
+ ent.setGroup("KCM Locale");
+
+ TQString str;
+
+ str = ent.readEntry("DecimalSymbol",
+ TQString::fromLatin1("."));
+ config->deleteEntry("DecimalSymbol", false, true);
+ if (str != m_locale->decimalSymbol())
+ config->writeEntry("DecimalSymbol",
+ m_locale->decimalSymbol(), true, true);
+
+ str = ent.readEntry("ThousandsSeparator",
+ TQString::fromLatin1(","));
+ config->deleteEntry("ThousandsSeparator", false, true);
+ str.replace(TQString::fromLatin1("$0"), TQString());
+ if (str != m_locale->thousandsSeparator())
+ config->writeEntry("ThousandsSeparator",
+ TQString::fromLatin1("$0%1$0")
+ .arg(m_locale->thousandsSeparator()), true, true);
+
+ str = ent.readEntry("PositiveSign");
+ config->deleteEntry("PositiveSign", false, true);
+ if (str != m_locale->positiveSign())
+ config->writeEntry("PositiveSign", m_locale->positiveSign(), true, true);
+
+ str = ent.readEntry("NegativeSign", TQString::fromLatin1("-"));
+ config->deleteEntry("NegativeSign", false, true);
+ if (str != m_locale->negativeSign())
+ config->writeEntry("NegativeSign", m_locale->negativeSign(), true, true);
+
+ // restore the old global locale
+ TDEGlobal::_locale = lsave;
+}
+
+void TDELocaleConfigNumber::slotLocaleChanged()
+{
+ // #### load all settings here
+ m_edDecSym->setText( m_locale->decimalSymbol() );
+ m_edThoSep->setText( m_locale->thousandsSeparator() );
+ m_edMonPosSign->setText( m_locale->positiveSign() );
+ m_edMonNegSign->setText( m_locale->negativeSign() );
+}
+
+void TDELocaleConfigNumber::slotDecSymChanged(const TQString &t)
+{
+ m_locale->setDecimalSymbol(t);
+ emit localeChanged();
+}
+
+void TDELocaleConfigNumber::slotThoSepChanged(const TQString &t)
+{
+ m_locale->setThousandsSeparator(t);
+ emit localeChanged();
+}
+
+void TDELocaleConfigNumber::slotMonPosSignChanged(const TQString &t)
+{
+ m_locale->setPositiveSign(t);
+ emit localeChanged();
+}
+
+void TDELocaleConfigNumber::slotMonNegSignChanged(const TQString &t)
+{
+ m_locale->setNegativeSign(t);
+ emit localeChanged();
+}
+
+void TDELocaleConfigNumber::slotTranslate()
+{
+ TQString str;
+
+ str = m_locale->translate( "Here you can define the decimal separator used "
+ "to display numbers (i.e. a dot or a comma in "
+ "most countries).<p>"
+ "Note that the decimal separator used to "
+ "display monetary values has to be set "
+ "separately (see the 'Money' tab)." );
+ TQWhatsThis::add( m_labDecSym, str );
+ TQWhatsThis::add( m_edDecSym, str );
+
+ str = m_locale->translate( "Here you can define the thousands separator "
+ "used to display numbers.<p>"
+ "Note that the thousands separator used to "
+ "display monetary values has to be set "
+ "separately (see the 'Money' tab)." );
+ TQWhatsThis::add( m_labThoSep, str );
+ TQWhatsThis::add( m_edThoSep, str );
+
+ str = m_locale->translate( "Here you can specify text used to prefix "
+ "positive numbers. Most people leave this "
+ "blank." );
+ TQWhatsThis::add( m_labMonPosSign, str );
+ TQWhatsThis::add( m_edMonPosSign, str );
+
+ str = m_locale->translate( "Here you can specify text used to prefix "
+ "negative numbers. This should not be empty, so "
+ "you can distinguish positive and negative "
+ "numbers. It is normally set to minus (-)." );
+ TQWhatsThis::add( m_labMonNegSign, str );
+ TQWhatsThis::add( m_edMonNegSign, str );
+}