2014-11-15 03:14:34 +02:00
/*
* Copyright ( c ) 1998 Matthias Hoelzer ( hoelzer @ physik . uni - wuerzburg . de )
* Copyright ( c ) 1999 Preston Brown < pbrown @ kde . org >
* Copyright ( c ) 1999 - 2003 Hans Petter Bieker < bieker @ kde . org >
* Copyright 2010 John Layt < john @ layt . net >
*
* 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 "kcmlocale.h"
# include <QListWidget>
2015-08-12 13:11:16 +03:00
# include <QtGui/qlistwidget.h>
2014-11-15 03:14:34 +02:00
# include <QPrinter>
# include <QTimer>
# include <KAboutData>
# include <KActionSelector>
# include <KBuildSycocaProgressDialog>
# include <KCalendarSystem>
# include <KDateTime>
# include <KDebug>
# include <KLocale>
# include <KLocalizedString>
# include <KMessageBox>
# include <KPluginFactory>
# include <KStandardDirs>
# include <KCurrencyCode>
# include "ui_kcmlocalewidget.h"
K_PLUGIN_FACTORY ( KCMLocaleFactory , registerPlugin < KCMLocale > ( ) ; )
K_EXPORT_PLUGIN ( KCMLocaleFactory ( " kcmlocale " ) )
KCMLocale : : KCMLocale ( QWidget * parent , const QVariantList & args )
: KCModule ( KCMLocaleFactory : : componentData ( ) , parent , args ) ,
m_userConfig ( 0 ) ,
m_kcmConfig ( 0 ) ,
m_currentConfig ( 0 ) ,
m_defaultConfig ( 0 ) ,
m_groupConfig ( 0 ) ,
m_countryConfig ( 0 ) ,
m_cConfig ( 0 ) ,
m_kcmLocale ( 0 ) ,
m_defaultLocale ( 0 ) ,
m_ui ( new Ui : : KCMLocaleWidget )
{
KAboutData * about = new KAboutData ( " kcmlocale " , 0 , ki18n ( " Localization options for KDE applications " ) ,
0 , KLocalizedString ( ) , KAboutData : : License_GPL ,
ki18n ( " Copyright 2010 John Layt " ) ) ;
about - > addAuthor ( ki18n ( " John Layt " ) , ki18n ( " Maintainer " ) , " john@layt.net " ) ;
setAboutData ( about ) ;
m_ui - > setupUi ( this ) ;
initSettings ( ) ;
// Country tab
connect ( m_ui - > m_comboCountry , SIGNAL ( activated ( int ) ) ,
this , SLOT ( changedCountryIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultCountry , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultCountry ( ) ) ) ;
connect ( m_ui - > m_comboCountryDivision , SIGNAL ( activated ( int ) ) ,
this , SLOT ( changedCountryDivisionIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultCountryDivision , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultCountryDivision ( ) ) ) ;
// Translations tab
// User has changed the translations selection in some way
connect ( m_ui - > m_selectTranslations , SIGNAL ( added ( QListWidgetItem * ) ) ,
this , SLOT ( changedTranslationsSelected ( QListWidgetItem * ) ) ) ;
connect ( m_ui - > m_selectTranslations , SIGNAL ( removed ( QListWidgetItem * ) ) ,
this , SLOT ( changedTranslationsAvailable ( QListWidgetItem * ) ) ) ;
connect ( m_ui - > m_selectTranslations , SIGNAL ( movedUp ( QListWidgetItem * ) ) ,
this , SLOT ( changedTranslationsSelected ( QListWidgetItem * ) ) ) ;
connect ( m_ui - > m_selectTranslations , SIGNAL ( movedDown ( QListWidgetItem * ) ) ,
this , SLOT ( changedTranslationsSelected ( QListWidgetItem * ) ) ) ;
// User has clicked Install button, trigger distro specific install routine
connect ( m_ui - > m_buttonTranslationsInstall , SIGNAL ( clicked ( ) ) ,
this , SLOT ( installTranslations ( ) ) ) ;
// Hide the Install button, this will be activated by those distros that support this feature.
m_ui - > m_buttonTranslationsInstall - > setHidden ( true ) ;
// User has clicked Default button, resest lists to Defaults
connect ( m_ui - > m_buttonDefaultTranslations , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultTranslations ( ) ) ) ;
// Numbers tab
connect ( m_ui - > m_comboNumericDigitGrouping , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedNumericDigitGroupingIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultNumericDigitGrouping , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericDigitGrouping ( ) ) ) ;
connect ( m_ui - > m_comboThousandsSeparator , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedNumericThousandsSeparator ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultThousandsSeparator , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericThousandsSeparator ( ) ) ) ;
connect ( m_ui - > m_comboDecimalSymbol , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedNumericDecimalSymbol ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultDecimalSymbol , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericDecimalSymbol ( ) ) ) ;
connect ( m_ui - > m_intDecimalPlaces , SIGNAL ( valueChanged ( int ) ) ,
this , SLOT ( changedNumericDecimalPlaces ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultDecimalPlaces , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericDecimalPlaces ( ) ) ) ;
connect ( m_ui - > m_comboPositiveSign , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedNumericPositiveSign ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultPositiveSign , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericPositiveSign ( ) ) ) ;
connect ( m_ui - > m_comboNegativeSign , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedNumericNegativeSign ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultNegativeSign , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericNegativeSign ( ) ) ) ;
connect ( m_ui - > m_comboDigitSet , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedNumericDigitSetIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultDigitSet , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultNumericDigitSet ( ) ) ) ;
// Money tab
connect ( m_ui - > m_comboCurrencyCode , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedCurrencyCodeIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultCurrencyCode , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultCurrencyCode ( ) ) ) ;
connect ( m_ui - > m_comboCurrencySymbol , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedCurrencySymbolIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultCurrencySymbol , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultCurrencySymbol ( ) ) ) ;
connect ( m_ui - > m_comboMonetaryDigitGrouping , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedMonetaryDigitGroupingIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryDigitGrouping , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryDigitGrouping ( ) ) ) ;
connect ( m_ui - > m_comboMonetaryThousandsSeparator , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedMonetaryThousandsSeparator ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryThousandsSeparator , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryThousandsSeparator ( ) ) ) ;
connect ( m_ui - > m_comboMonetaryDecimalSymbol , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedMonetaryDecimalSymbol ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryDecimalSymbol , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryDecimalSymbol ( ) ) ) ;
connect ( m_ui - > m_intMonetaryDecimalPlaces , SIGNAL ( valueChanged ( int ) ) ,
this , SLOT ( changedMonetaryDecimalPlaces ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryDecimalPlaces , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryDecimalPlaces ( ) ) ) ;
connect ( m_ui - > m_comboMonetaryPositiveFormat , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedMonetaryPositiveFormatIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryPositiveFormat , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryPositiveFormat ( ) ) ) ;
connect ( m_ui - > m_comboMonetaryNegativeFormat , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedMonetaryNegativeFormatIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryNegativeFormat , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryNegativeFormat ( ) ) ) ;
connect ( m_ui - > m_comboMonetaryDigitSet , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedMonetaryDigitSetIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonetaryDigitSet , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonetaryDigitSet ( ) ) ) ;
// Calendar tab
connect ( m_ui - > m_comboCalendarSystem , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedCalendarSystemIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultCalendarSystem , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultCalendarSystem ( ) ) ) ;
connect ( m_ui - > m_checkCalendarGregorianUseCommonEra , SIGNAL ( clicked ( bool ) ) ,
this , SLOT ( changedUseCommonEra ( bool ) ) ) ;
connect ( m_ui - > m_buttonDefaultCalendarGregorianUseCommonEra , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultUseCommonEra ( ) ) ) ;
connect ( m_ui - > m_intShortYearWindowStartYear , SIGNAL ( valueChanged ( int ) ) ,
this , SLOT ( changedShortYearWindow ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultShortYearWindow , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultShortYearWindow ( ) ) ) ;
connect ( m_ui - > m_comboWeekNumberSystem , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedWeekNumberSystemIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultWeekNumberSystem , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultWeekNumberSystem ( ) ) ) ;
connect ( m_ui - > m_comboWeekStartDay , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedWeekStartDayIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultWeekStartDay , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultWeekStartDay ( ) ) ) ;
connect ( m_ui - > m_comboWorkingWeekStartDay , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedWorkingWeekStartDayIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultWorkingWeekStartDay , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultWorkingWeekStartDay ( ) ) ) ;
connect ( m_ui - > m_comboWorkingWeekEndDay , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedWorkingWeekEndDayIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultWorkingWeekEndDay , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultWorkingWeekEndDay ( ) ) ) ;
connect ( m_ui - > m_comboWeekDayOfPray , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedWeekDayOfPrayIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultWeekDayOfPray , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultWeekDayOfPray ( ) ) ) ;
// Date / Time tab
connect ( m_ui - > m_comboTimeFormat , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedTimeFormat ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultTimeFormat , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultTimeFormat ( ) ) ) ;
connect ( m_ui - > m_comboAmSymbol , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedAmSymbol ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultAmSymbol , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultAmSymbol ( ) ) ) ;
connect ( m_ui - > m_comboPmSymbol , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedPmSymbol ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultPmSymbol , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultPmSymbol ( ) ) ) ;
connect ( m_ui - > m_comboDateFormat , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedDateFormat ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultDateFormat , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultDateFormat ( ) ) ) ;
connect ( m_ui - > m_comboShortDateFormat , SIGNAL ( editTextChanged ( const QString & ) ) ,
this , SLOT ( changedShortDateFormat ( const QString & ) ) ) ;
connect ( m_ui - > m_buttonDefaultShortDateFormat , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultShortDateFormat ( ) ) ) ;
connect ( m_ui - > m_checkMonthNamePossessive , SIGNAL ( clicked ( bool ) ) ,
this , SLOT ( changedMonthNamePossessive ( bool ) ) ) ;
connect ( m_ui - > m_buttonDefaultMonthNamePossessive , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMonthNamePossessive ( ) ) ) ;
connect ( m_ui - > m_comboDateTimeDigitSet , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedDateTimeDigitSetIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultDateTimeDigitSet , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultDateTimeDigitSet ( ) ) ) ;
// Other tab
connect ( m_ui - > m_comboPageSize , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedPageSizeIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultPageSize , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultPageSize ( ) ) ) ;
connect ( m_ui - > m_comboMeasureSystem , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedMeasureSystemIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultMeasureSystem , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultMeasureSystem ( ) ) ) ;
connect ( m_ui - > m_comboBinaryUnitDialect , SIGNAL ( currentIndexChanged ( int ) ) ,
this , SLOT ( changedBinaryUnitDialectIndex ( int ) ) ) ;
connect ( m_ui - > m_buttonDefaultBinaryUnitDialect , SIGNAL ( clicked ( ) ) ,
this , SLOT ( defaultBinaryUnitDialect ( ) ) ) ;
}
KCMLocale : : ~ KCMLocale ( )
{
// Throw away any unsaved changes as delete calls an unwanted sync()
m_kcmConfig - > markAsClean ( ) ;
m_userConfig - > markAsClean ( ) ;
m_defaultConfig - > markAsClean ( ) ;
m_cConfig - > markAsClean ( ) ;
m_countryConfig - > markAsClean ( ) ;
m_groupConfig - > markAsClean ( ) ;
delete m_kcmLocale ;
delete m_defaultLocale ;
delete m_ui ;
}
// Init all the config/settings objects, only called at the very start but inits everything so
// load() and mergeSettings() can assume everything exists every time they are called
void KCMLocale : : initSettings ( )
{
// Setup the KCM Config/Settings
// These are the effective settings merging KCM Changes, User, Group, Country, and C settings
// This will be used to display current state of settings in the KCM
// These settings should never be saved anywhere
m_kcmConfig = KSharedConfig : : openConfig ( " kcmlocale-kcm " , KConfig : : SimpleConfig ) ;
m_kcmSettings = KConfigGroup ( m_kcmConfig , " Locale " ) ;
m_kcmSettings . deleteGroup ( ) ;
m_kcmSettings . markAsClean ( ) ;
// Setup the Default Config/Settings
// These will be a merge of the C, Country and Group settings
// If the user clicks on the Defaults button, these are the settings that will be used
// These settings should never be saved anywhere
m_defaultConfig = KSharedConfig : : openConfig ( " kcmlocale-default " , KConfig : : SimpleConfig ) ;
m_defaultSettings = KConfigGroup ( m_defaultConfig , " Locale " ) ;
// Setup the User Config/Settings
// These are the User overrides, they exclude any Group, Country, or C settings
// This will be used to store the User changes
// These are the only settings that should ever be saved
m_userConfig = KSharedConfig : : openConfig ( " kcmlocale-user " , KConfig : : IncludeGlobals ) ;
m_userSettings = KConfigGroup ( m_userConfig , " Locale " ) ;
// Setup the Current Config/Settings
// These are the currently saved User settings
// This will be used to check if the kcm settings have been changed
// These settings should never be saved anywhere
m_currentConfig = KSharedConfig : : openConfig ( " kcmlocale-current " , KConfig : : IncludeGlobals ) ;
m_currentSettings = KConfigGroup ( m_currentConfig , " Locale " ) ;
// Setup the Group Config/Settings
// These are the Group overrides, they exclude any User, Country, or C settings
// This will be used in the merge to obtain the KCM Defaults
// These settings should never be saved anywhere
m_groupConfig = KSharedConfig : : openConfig ( " kcmlocale-group " , KConfig : : NoGlobals ) ;
m_groupSettings = KConfigGroup ( m_groupConfig , " Locale " ) ;
// Setup the C Config Settings
// These are the C/Posix defaults and KDE defaults where a setting doesn't exist in Posix
// This will be used as the lowest level in the merge to obtain the KCM Defaults
// These settings should never be saved anywhere
m_cConfig = KSharedConfig : : openConfig ( KStandardDirs : : locate ( " locale " ,
QString : : fromLatin1 ( " l10n/C/entry.desktop " ) ) ) ;
m_cSettings = KConfigGroup ( m_cConfig , " KCM Locale " ) ;
initCountrySettings ( KGlobal : : locale ( ) - > country ( ) ) ;
initCalendarSettings ( ) ;
m_kcmLocale = new KLocale ( QLatin1String ( " kcmlocale " ) , m_kcmConfig ) ;
m_defaultLocale = new KLocale ( QLatin1String ( " kcmlocale " ) , m_defaultConfig ) ;
// Find out the system country using a null config
m_systemCountry = m_kcmLocale - > country ( ) ;
// Set up the initial languages to use
m_currentTranslations = m_userSettings . readEntry ( " Language " , QString ( ) ) ;
m_kcmTranslations = m_currentTranslations . split ( ' : ' , QString : : SkipEmptyParts ) ;
}
void KCMLocale : : initCountrySettings ( const QString & countryCode )
{
// Setup a the Country Config/Settings
// These are the Country overrides, they exclude any User, Group, or C settings
// This will be used in the merge to obtain the KCM Defaults
// These settings should never be saved anywhere
m_countryConfig = KSharedConfig : : openConfig ( KStandardDirs : : locate ( " locale " ,
QString : : fromLatin1 ( " l10n/%1/entry.desktop " )
. arg ( countryCode ) ) ) ;
m_countrySettings = KConfigGroup ( m_countryConfig , " KCM Locale " ) ;
QString calendarType = m_countrySettings . readEntry ( " CalendarSystem " , " gregorian " ) ;
QString calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_countryCalendarSettings = m_countrySettings . group ( calendarGroup ) ;
}
// Init all the calendar settings sub-group objects, called both at the start and whenever the
// calendar system is changed
void KCMLocale : : initCalendarSettings ( )
{
// Setup the User Config/Settings
// These are the User overrides, they exclude any Group, Country, or C settings
// This will be used to store the User changes
QString calendarType = m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ;
QString calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_userCalendarSettings = m_userSettings . group ( calendarGroup ) ;
// Setup the Current Config/Settings
// These are the currently saved User settings
// This will be used to check if the kcm settings have been changed
2015-09-04 07:51:55 +00:00
calendarType = m_currentSettings . readEntry ( " CalendarSystem " , KGlobal : : locale ( ) - > calendar ( ) - > calendarLabel ( ) ) ;
2014-11-15 03:14:34 +02:00
calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_currentCalendarSettings = m_currentSettings . group ( calendarGroup ) ;
// Setup the Group Config/Settings
// These are the Group overrides, they exclude any User, Country, or C settings
// This will be used in the merge to obtain the KCM Defaults
// These settings should never be saved anywhere
2015-09-04 07:51:55 +00:00
calendarType = m_groupSettings . readEntry ( " CalendarSystem " , KGlobal : : locale ( ) - > calendar ( ) - > calendarLabel ( ) ) ;
2014-11-15 03:14:34 +02:00
calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_groupCalendarSettings = m_groupSettings . group ( calendarGroup ) ;
// Setup the C Config Settings
// These are the C/Posix defaults and KDE defaults where a setting doesn't exist in Posix
// This will be used as the lowest level in the merge to obtain the KCM Defaults
// These settings should never be saved anywhere
calendarType = m_cSettings . readEntry ( " CalendarSystem " , QString ( ) ) ;
calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_cCalendarSettings = m_cSettings . group ( calendarGroup ) ;
// Setup a the Country Config/Settings
// These are the Country overrides, they exclude any User, Group, or C settings
// This will be used in the merge to obtain the KCM Defaults
// These settings should never be saved anywhere
calendarType = m_countrySettings . readEntry ( " CalendarSystem " , " gregorian " ) ;
calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_countryCalendarSettings = m_countrySettings . group ( calendarGroup ) ;
}
// Load == User has clicked on Reset to restore load saved settings
// Also gets called automatically called after constructor
void KCMLocale : : load ( )
{
// Throw away any unsaved changes then reload from file
m_userConfig - > markAsClean ( ) ;
m_userConfig - > reparseConfiguration ( ) ;
// Get the currently installed translations
m_installedTranslations . clear ( ) ;
m_installedTranslations = m_kcmLocale - > installedLanguages ( ) ;
// Check if any of the user requested translations are no longer installed
// If any missing remove them and save the settings, we'll tell the user later
m_kcmTranslations . clear ( ) ;
QStringList missingLanguages ;
QStringList userTranslations = m_userSettings . readEntry ( " Language " , QString ( ) ) . split ( ' : ' , QString : : SkipEmptyParts ) ;
foreach ( const QString & languageCode , userTranslations ) {
if ( m_installedTranslations . contains ( languageCode ) ) {
m_kcmTranslations . append ( languageCode ) ;
} else {
missingLanguages . append ( languageCode ) ;
}
}
if ( ! missingLanguages . isEmpty ( ) ) {
m_userSettings . writeEntry ( " Language " , m_kcmTranslations . join ( " : " ) , KConfig : : Persistent | KConfig : : Global ) ;
m_userConfig - > sync ( ) ;
}
// Now load the new current settings
m_currentConfig - > reparseConfiguration ( ) ;
m_currentTranslations = m_userSettings . readEntry ( " Language " , QString ( ) ) ;
// Then create the new settings using the default, include user settings
mergeSettings ( ) ;
// The update all the widgets to use the new settings
initAllWidgets ( ) ;
// Now we have a ui built tell the user about the missing languages
foreach ( const QString & languageCode , missingLanguages ) {
KMessageBox : : information ( this , ki18n ( " You have the language with code '%1' in your list "
" of languages to use for translation but the "
" localization files for it could not be found. The "
" language has been removed from your configuration. "
" If you want to add it again please install the "
" localization files for it and add the language again. " )
. subs ( languageCode ) . toString ( m_kcmLocale ) ) ;
}
}
// Defaults == User has clicked on Defaults to load default settings
// We interpret this to mean the defaults for the system country and language
void KCMLocale : : defaults ( )
{
// Clear out the user config but don't sync or reparse as we want to ignore the user settings
m_userCalendarSettings . deleteGroup ( KConfig : : Persistent | KConfig : : Global ) ;
m_userSettings . deleteGroup ( KConfig : : Persistent | KConfig : : Global ) ;
m_kcmTranslations . clear ( ) ;
m_currentTranslations = QString ( ) ;
// Reload the system country
initCountrySettings ( m_systemCountry ) ;
// Then create the new settings using the default, exclude user settings
mergeSettings ( ) ;
// Save the current translations for checking later
m_currentTranslations = m_kcmSettings . readEntry ( " Language " , QString ( ) ) ;
// The update all the widgets to use the new settings
initAllWidgets ( ) ;
}
// Write our own copy routine as we need to be selective about what values get copied, e.g. exclude
// Name, Region, etc, and copyTo() seems to barf on some uses
void KCMLocale : : copySettings ( KConfigGroup * fromGroup , KConfigGroup * toGroup , KConfig : : WriteConfigFlags flags )
{
copySetting ( fromGroup , toGroup , " Country " , flags ) ;
copySetting ( fromGroup , toGroup , " CountryDivision " , flags ) ;
copySetting ( fromGroup , toGroup , " Language " , flags ) ;
copySetting ( fromGroup , toGroup , " DecimalPlaces " , flags ) ;
copySetting ( fromGroup , toGroup , " DecimalSymbol " , flags ) ;
copySetting ( fromGroup , toGroup , " DigitGroupFormat " , flags ) ;
copySetting ( fromGroup , toGroup , " ThousandsSeparator " , flags ) ;
copySetting ( fromGroup , toGroup , " PositiveSign " , flags ) ;
copySetting ( fromGroup , toGroup , " NegativeSign " , flags ) ;
copySetting ( fromGroup , toGroup , " DigitSet " , flags ) ;
copySetting ( fromGroup , toGroup , " CurrencyCode " , flags ) ;
copySetting ( fromGroup , toGroup , " CurrencySymbol " , flags ) ;
copySetting ( fromGroup , toGroup , " MonetaryDecimalPlaces " , flags ) ;
copySetting ( fromGroup , toGroup , " MonetaryDecimalSymbol " , flags ) ;
copySetting ( fromGroup , toGroup , " MonetaryDigitGroupFormat " , flags ) ;
copySetting ( fromGroup , toGroup , " MonetaryThousandsSeparator " , flags ) ;
copySetting ( fromGroup , toGroup , " PositivePrefixCurrencySymbol " , flags ) ;
copySetting ( fromGroup , toGroup , " NegativePrefixCurrencySymbol " , flags ) ;
copySetting ( fromGroup , toGroup , " PositiveMonetarySignPosition " , flags ) ;
copySetting ( fromGroup , toGroup , " NegativeMonetarySignPosition " , flags ) ;
copySetting ( fromGroup , toGroup , " MonetaryDigitSet " , flags ) ;
copySetting ( fromGroup , toGroup , " CalendarSystem " , flags ) ;
copySetting ( fromGroup , toGroup , " TimeFormat " , flags ) ;
QString eraKey = QString : : fromLatin1 ( " DayPeriod1 " ) ;
int i = 1 ;
while ( fromGroup - > hasKey ( eraKey ) ) {
copySetting ( fromGroup , toGroup , eraKey , flags ) ;
+ + i ;
eraKey = QString : : fromLatin1 ( " DayPeriod%1 " ) . arg ( i ) ;
}
copySetting ( fromGroup , toGroup , " DateFormat " , flags ) ;
copySetting ( fromGroup , toGroup , " DateFormatShort " , flags ) ;
copySetting ( fromGroup , toGroup , " DateMonthNamePossessive " , flags ) ;
copySetting ( fromGroup , toGroup , " WeekNumberSystem " , flags ) ;
copySetting ( fromGroup , toGroup , " WeekStartDay " , flags ) ;
copySetting ( fromGroup , toGroup , " WorkingWeekStartDay " , flags ) ;
copySetting ( fromGroup , toGroup , " WorkingWeekEndDay " , flags ) ;
copySetting ( fromGroup , toGroup , " WeekDayOfPray " , flags ) ;
copySetting ( fromGroup , toGroup , " DateTimeDigitSet " , flags ) ;
copySetting ( fromGroup , toGroup , " BinaryUnitDialect " , flags ) ;
copySetting ( fromGroup , toGroup , " PageSize " , flags ) ;
copySetting ( fromGroup , toGroup , " MeasureSystem " , flags ) ;
}
void KCMLocale : : copyCalendarSettings ( KConfigGroup * fromGroup , KConfigGroup * toGroup , KConfig : : WriteConfigFlags flags )
{
copySetting ( fromGroup , toGroup , " ShortYearWindowStartYear " , flags ) ;
copySetting ( fromGroup , toGroup , " UseCommonEra " , flags ) ;
QString eraKey = QString : : fromLatin1 ( " Era1 " ) ;
int i = 1 ;
while ( fromGroup - > hasKey ( eraKey ) ) {
copySetting ( fromGroup , toGroup , eraKey , flags ) ;
+ + i ;
eraKey = QString : : fromLatin1 ( " Era%1 " ) . arg ( i ) ;
}
}
void KCMLocale : : copySetting ( KConfigGroup * fromGroup , KConfigGroup * toGroup , const QString & key , KConfig : : WriteConfigFlags flags )
{
if ( fromGroup - > hasKey ( key ) ) {
toGroup - > writeEntry ( key , fromGroup - > readEntry ( key , QString ( ) ) , flags ) ;
}
}
void KCMLocale : : mergeSettings ( )
{
// Set the Locale for the configs to use
QString locale ;
if ( m_kcmTranslations . count ( ) > = 1 ) {
locale = m_kcmTranslations . first ( ) ;
} else {
locale = " en_US " ;
}
m_cConfig - > setLocale ( locale ) ;
m_countryConfig - > setLocale ( locale ) ;
m_groupConfig - > setLocale ( locale ) ;
// Merge the default settings, i.e. C, Country, and Group
m_defaultSettings . deleteGroup ( ) ;
m_defaultSettings . markAsClean ( ) ;
m_defaultConfig - > setLocale ( locale ) ;
copySettings ( & m_cSettings , & m_defaultSettings ) ;
copySettings ( & m_countrySettings , & m_defaultSettings ) ;
copySettings ( & m_groupSettings , & m_defaultSettings ) ;
// Mark as clean to prevent any accidental sync() via side-effect once passed to the KLocale
m_defaultConfig - > markAsClean ( ) ;
// Need to set the language of the KLocale first, so when we pass the config into the setCountry
// call the implicit setLocale() will find the languages match and not force a reparse of the
// non-existent settings file, losing all our settings in the process.
m_defaultLocale - > setLanguage ( m_kcmTranslations ) ;
m_defaultLocale - > setCountry ( m_defaultSettings . readEntry ( " Country " , QString ( ) ) , m_defaultConfig . data ( ) ) ;
m_defaultSettings . writeEntry ( " DayPeriod1 " ,
amPeriod ( m_defaultLocale - > dayPeriodText ( QTime ( 0 , 0 , 0 ) , KLocale : : LongName ) ,
m_defaultLocale - > dayPeriodText ( QTime ( 0 , 0 , 0 ) , KLocale : : ShortName ) ,
m_defaultLocale - > dayPeriodText ( QTime ( 0 , 0 , 0 ) , KLocale : : NarrowName ) ) ) ;
m_defaultSettings . writeEntry ( " DayPeriod2 " ,
pmPeriod ( m_defaultLocale - > dayPeriodText ( QTime ( 12 , 0 , 0 ) , KLocale : : LongName ) ,
m_defaultLocale - > dayPeriodText ( QTime ( 12 , 0 , 0 ) , KLocale : : ShortName ) ,
m_defaultLocale - > dayPeriodText ( QTime ( 12 , 0 , 0 ) , KLocale : : NarrowName ) ) ) ;
m_defaultConfig - > markAsClean ( ) ;
// Merge the KCM settings, i.e. C, Country, Group, and User
m_kcmSettings . deleteGroup ( ) ;
m_kcmConfig - > markAsClean ( ) ;
m_kcmConfig - > setLocale ( locale ) ;
copySettings ( & m_defaultSettings , & m_kcmSettings ) ;
copySettings ( & m_userSettings , & m_kcmSettings ) ;
// Merge the calendar settings sub-groups
mergeCalendarSettings ( ) ;
// Reload the kcm translations list
m_kcmTranslations . clear ( ) ;
m_kcmTranslations = m_kcmSettings . readEntry ( " Language " , QString ( ) ) . split ( ' : ' , QString : : SkipEmptyParts ) ;
// Reload the kcm locale from the kcm settings
// Mark as clean to prevent any accidental sync() via side-effect once passed to the KLocale
m_kcmConfig - > markAsClean ( ) ;
// Need to set the language of the KLocale first, so when we pass the config into the setCountry
// call the implicit setLocale() will find the languages match and not force a reparse of the
// non-existent settings file, losing all our settings in the process.
m_kcmLocale - > setLanguage ( m_kcmTranslations ) ;
m_kcmLocale - > setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) , m_kcmConfig . data ( ) ) ;
}
void KCMLocale : : mergeCalendarSettings ( )
{
// Merge the default settings, i.e. C, Country, and Group
QString calendarType = m_defaultSettings . readEntry ( " CalendarSystem " , " gregorian " ) ;
QString calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_defaultCalendarSettings = m_defaultSettings . group ( calendarGroup ) ;
m_defaultCalendarSettings . deleteGroup ( ) ;
copyCalendarSettings ( & m_cCalendarSettings , & m_defaultCalendarSettings ) ;
copyCalendarSettings ( & m_countryCalendarSettings , & m_defaultCalendarSettings ) ;
copyCalendarSettings ( & m_groupCalendarSettings , & m_defaultCalendarSettings ) ;
// Merge the KCM settings, i.e. C, Country, Group, and User
calendarType = m_kcmSettings . readEntry ( " CalendarSystem " , " gregorian " ) ;
calendarGroup = QString : : fromLatin1 ( " KCalendarSystem %1 " ) . arg ( calendarType ) ;
m_kcmCalendarSettings = m_kcmSettings . group ( calendarGroup ) ;
m_kcmCalendarSettings . deleteGroup ( ) ;
copyCalendarSettings ( & m_defaultCalendarSettings , & m_kcmCalendarSettings ) ;
copyCalendarSettings ( & m_userCalendarSettings , & m_kcmCalendarSettings ) ;
}
void KCMLocale : : save ( )
{
m_userConfig - > sync ( ) ;
// rebuild the date base if language was changed
if ( m_currentTranslations ! = m_kcmSettings . readEntry ( " Language " , QString ( ) ) ) {
KMessageBox : : information ( this , ki18n ( " Changed language settings apply only to "
" newly started applications. \n To change the "
" language of all programs, you will have to "
" logout first. " ) . toString ( m_kcmLocale ) ,
ki18n ( " Applying Language Settings " ) . toString ( m_kcmLocale ) ,
QLatin1String ( " LanguageChangesApplyOnlyToNewlyStartedPrograms " ) ) ;
KBuildSycocaProgressDialog : : rebuildKSycoca ( this ) ;
}
load ( ) ;
KGlobalSettings : : self ( ) - > emitChange ( KGlobalSettings : : SettingsChanged , KGlobalSettings : : SETTINGS_LOCALE ) ;
}
QString KCMLocale : : quickHelp ( ) const
{
return ki18n ( " <h1>Country/Region & Language</h1> \n "
" <p>Here you can set your localization settings such as language, "
" numeric formats, date and time formats, etc. Choosing a country "
" will load a set of default formats which you can then change to "
" your personal preferences. These personal preferences will remain "
" set even if you change the country. The reset buttons allow you "
" to easily see where you have personal settings and to restore "
" those items to the country's default value.</p> "
) . toString ( m_kcmLocale ) ;
}
void KCMLocale : : initAllWidgets ( )
{
//Common
initTabs ( ) ;
initSample ( ) ;
initResetButtons ( ) ;
//Country tab
initCountry ( ) ;
initCountryDivision ( ) ;
//Translations tab
initTranslations ( ) ;
initTranslationsInstall ( ) ;
initSettingsWidgets ( ) ;
}
void KCMLocale : : initSettingsWidgets ( )
{
// Initialise the settings widgets with the default values whenever the country or language changes
//Numeric tab
initNumericDigitGrouping ( ) ;
initNumericThousandsSeparator ( ) ;
initNumericDecimalSymbol ( ) ;
initNumericDecimalPlaces ( ) ;
initNumericPositiveSign ( ) ;
initNumericNegativeSign ( ) ;
initNumericDigitSet ( ) ;
//Monetary tab
initCurrencyCode ( ) ; // Also inits CurrencySymbol
initMonetaryDigitGrouping ( ) ;
initMonetaryThousandsSeparator ( ) ;
initMonetaryDecimalSymbol ( ) ;
initMonetaryDecimalPlaces ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
initMonetaryDigitSet ( ) ;
//Calendar tab
initCalendarSystem ( ) ;
// this also inits all the Calendar System dependent settings
//Date/Time tab
initTimeFormat ( ) ;
initAmPmSymbols ( ) ;
initDateFormat ( ) ;
initShortDateFormat ( ) ;
initMonthNamePossessive ( ) ;
initDateTimeDigitSet ( ) ;
//Other tab
initPageSize ( ) ;
initMeasureSystem ( ) ;
initBinaryUnitDialect ( ) ;
checkIfChanged ( ) ;
}
void KCMLocale : : initResetButtons ( )
{
KGuiItem defaultItem ( QString ( ) , " document-revert " , ki18n ( " Reset item to its default value " ) . toString ( m_kcmLocale ) ) ;
//Country tab
m_ui - > m_buttonDefaultCountry - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultCountryDivision - > setGuiItem ( defaultItem ) ;
//Translations tab
m_ui - > m_buttonDefaultTranslations - > setGuiItem ( defaultItem ) ;
//Numeric tab
m_ui - > m_buttonDefaultNumericDigitGrouping - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultThousandsSeparator - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultDecimalSymbol - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultDecimalPlaces - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultPositiveSign - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultNegativeSign - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultDigitSet - > setGuiItem ( defaultItem ) ;
//Monetary tab
m_ui - > m_buttonDefaultCurrencyCode - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultCurrencySymbol - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryDigitGrouping - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryThousandsSeparator - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryDecimalSymbol - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryDecimalPlaces - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryPositiveFormat - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryNegativeFormat - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonetaryDigitSet - > setGuiItem ( defaultItem ) ;
//Calendar tab
m_ui - > m_buttonDefaultCalendarSystem - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultCalendarGregorianUseCommonEra - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultShortYearWindow - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultWeekNumberSystem - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultWeekStartDay - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultWorkingWeekStartDay - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultWorkingWeekEndDay - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultWeekDayOfPray - > setGuiItem ( defaultItem ) ;
//Date/Time tab
m_ui - > m_buttonDefaultTimeFormat - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultAmSymbol - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultPmSymbol - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultDateFormat - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultShortDateFormat - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMonthNamePossessive - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultDateTimeDigitSet - > setGuiItem ( defaultItem ) ;
//Other tab
m_ui - > m_buttonDefaultPageSize - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultMeasureSystem - > setGuiItem ( defaultItem ) ;
m_ui - > m_buttonDefaultBinaryUnitDialect - > setGuiItem ( defaultItem ) ;
}
void KCMLocale : : checkIfChanged ( )
{
if ( m_userSettings . keyList ( ) ! = m_currentSettings . keyList ( ) | |
m_userCalendarSettings . keyList ( ) ! = m_currentCalendarSettings . keyList ( ) ) {
emit changed ( true ) ;
} else {
foreach ( const QString & key , m_currentSettings . keyList ( ) ) {
if ( m_userSettings . readEntry ( key , QString ( ) ) ! =
m_currentSettings . readEntry ( key , QString ( ) ) ) {
emit changed ( true ) ;
return ;
}
}
foreach ( const QString & key , m_currentCalendarSettings . keyList ( ) ) {
if ( m_userCalendarSettings . readEntry ( key , QString ( ) ) ! =
m_currentCalendarSettings . readEntry ( key , QString ( ) ) ) {
emit changed ( true ) ;
return ;
}
}
emit changed ( false ) ;
}
}
// Determine if the item should be enabled or disabled
void KCMLocale : : enableItemWidgets ( const QString & itemKey ,
KConfigGroup * userSettings , KConfigGroup * kcmSettings , KConfigGroup * defaultSettings ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
// If the setting is locked down by Kiosk, then don't let the user make any changes
if ( userSettings - > isEntryImmutable ( itemKey ) ) {
itemWidget - > setEnabled ( false ) ;
itemDefaultButton - > setEnabled ( false ) ;
} else {
itemWidget - > setEnabled ( true ) ;
// If the new value is not the default, then enable the default button
if ( kcmSettings - > readEntry ( itemKey , QString ( ) ) ! =
defaultSettings - > readEntry ( itemKey , QString ( ) ) ) {
itemDefaultButton - > setEnabled ( true ) ;
} else {
itemDefaultButton - > setEnabled ( false ) ;
}
}
}
// Set the value of a QString item in kcm and user settings
void KCMLocale : : setItemValue ( const QString & itemKey , const QString & itemValue ,
KConfigGroup * userSettings , KConfigGroup * kcmSettings , KConfigGroup * defaultSettings )
{
if ( ! userSettings - > isEntryImmutable ( itemKey ) ) {
// Always write to the kcm as the value will always exist there and needs overwriting
kcmSettings - > writeEntry ( itemKey , itemValue ) ;
// If different to the default save the new value, otherwise delete and use the default
if ( itemValue ! = defaultSettings - > readEntry ( itemKey , QString ( ) ) ) {
userSettings - > writeEntry ( itemKey , itemValue , KConfig : : Persistent | KConfig : : Global ) ;
} else {
userSettings - > deleteEntry ( itemKey , KConfig : : Persistent | KConfig : : Global ) ;
}
}
}
void KCMLocale : : setItem ( const QString & itemKey , const QString & itemValue ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
setItemValue ( itemKey , itemValue ,
& m_userSettings , & m_kcmSettings , & m_defaultSettings ) ;
enableItemWidgets ( itemKey ,
& m_userSettings , & m_kcmSettings , & m_defaultSettings ,
itemWidget , itemDefaultButton ) ;
checkIfChanged ( ) ;
}
void KCMLocale : : setItem ( const QString & itemKey , int itemValue ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
setItem ( itemKey , QVariant ( itemValue ) . toString ( ) , itemWidget , itemDefaultButton ) ;
}
void KCMLocale : : setItem ( const QString & itemKey , bool itemValue ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
setItem ( itemKey , QVariant ( itemValue ) . toString ( ) , itemWidget , itemDefaultButton ) ;
}
void KCMLocale : : setCalendarItem ( const QString & itemKey , const QString & itemValue ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
setItemValue ( itemKey , itemValue ,
& m_userCalendarSettings , & m_kcmCalendarSettings , & m_defaultCalendarSettings ) ;
enableItemWidgets ( itemKey ,
& m_userCalendarSettings , & m_kcmCalendarSettings , & m_defaultCalendarSettings ,
itemWidget , itemDefaultButton ) ;
checkIfChanged ( ) ;
}
void KCMLocale : : setCalendarItem ( const QString & itemKey , int itemValue ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
setCalendarItem ( itemKey , QVariant ( itemValue ) . toString ( ) , itemWidget , itemDefaultButton ) ;
}
void KCMLocale : : setCalendarItem ( const QString & itemKey , bool itemValue ,
QWidget * itemWidget , KPushButton * itemDefaultButton )
{
setCalendarItem ( itemKey , QVariant ( itemValue ) . toString ( ) , itemWidget , itemDefaultButton ) ;
}
// Don't use for edit combo's
void KCMLocale : : setComboItem ( const QString & itemKey , const QString & itemValue ,
KComboBox * itemCombo , KPushButton * itemDefaultButton )
{
setItem ( itemKey , itemValue , itemCombo , itemDefaultButton ) ;
// Read the entry rather than use itemValue in case setItem didn't change the value, e.g. if immutable
itemCombo - > setCurrentIndex ( itemCombo - > findData ( m_kcmSettings . readEntry ( itemKey , QString ( ) ) ) ) ;
}
// Don't use for edit combo's
void KCMLocale : : setComboItem ( const QString & itemKey , int itemValue ,
KComboBox * itemCombo , KPushButton * itemDefaultButton )
{
setItem ( itemKey , itemValue , itemCombo , itemDefaultButton ) ;
// Read the entry rather than use itemValue in case setItem didn't change the value, e.g. if immutable
itemCombo - > setCurrentIndex ( itemCombo - > findData ( m_kcmSettings . readEntry ( itemKey , 0 ) ) ) ;
}
// Don't use for user changes as will EOL on the entry
void KCMLocale : : setEditComboItem ( const QString & itemKey , const QString & itemValue ,
KComboBox * itemCombo , KPushButton * itemDefaultButton )
{
setItem ( itemKey , itemValue , itemCombo , itemDefaultButton ) ;
// Read the entry rather than use itemValue in case setItem didn't change the value, e.g. if immutable
itemCombo - > setEditText ( m_kcmSettings . readEntry ( itemKey , QString ( ) ) ) ;
}
void KCMLocale : : setIntItem ( const QString & itemKey , int itemValue ,
KIntNumInput * itemInput , KPushButton * itemDefaultButton )
{
setItem ( itemKey , itemValue , itemInput , itemDefaultButton ) ;
// Read the entry rather than use itemValue in case setItem didn't change the value, e.g. if immutable
itemInput - > setValue ( m_kcmSettings . readEntry ( itemKey , 0 ) ) ;
}
void KCMLocale : : setCheckItem ( const QString & itemKey , bool itemValue ,
QCheckBox * itemCheck , KPushButton * itemDefaultButton )
{
setItem ( itemKey , itemValue , itemCheck , itemDefaultButton ) ;
// Read the entry rather than use itemValue in case setItem didn't change the value, e.g. if immutable
itemCheck - > setChecked ( m_kcmSettings . readEntry ( itemKey , false ) ) ;
}
// Add week day names to a combo
void KCMLocale : : initWeekDayCombo ( KComboBox * dayCombo )
{
dayCombo - > clear ( ) ;
int daysInWeek = m_kcmLocale - > calendar ( ) - > daysInWeek ( QDate : : currentDate ( ) ) ;
for ( int i = 1 ; i < = daysInWeek ; + + i )
{
dayCombo - > insertItem ( i - 1 , m_kcmLocale - > calendar ( ) - > weekDayName ( i ) , QVariant ( i ) ) ;
}
}
// Add standard separator symbols to a combo
void KCMLocale : : initSeparatorCombo ( KComboBox * seperatorCombo )
{
seperatorCombo - > clear ( ) ;
seperatorCombo - > addItem ( ki18nc ( " No separator symbol " , " None " ) . toString ( m_kcmLocale ) , QString ( ) ) ;
seperatorCombo - > addItem ( QString ( ' , ' ) , QString ( ' , ' ) ) ;
seperatorCombo - > addItem ( QString ( ' . ' ) , QString ( ' . ' ) ) ;
seperatorCombo - > addItem ( ki18nc ( " Space separator symbol " , " Single Space " ) . toString ( m_kcmLocale ) , QString ( ' ' ) ) ;
}
// Generic utility to set up a DigitSet combo, used for numbers, dates, money
void KCMLocale : : initDigitSetCombo ( KComboBox * digitSetCombo )
{
digitSetCombo - > clear ( ) ;
QList < KLocale : : DigitSet > digitSets = m_kcmLocale - > allDigitSetsList ( ) ;
foreach ( const KLocale : : DigitSet & digitSet , digitSets )
{
digitSetCombo - > addItem ( m_kcmLocale - > digitSetToName ( digitSet , true ) , QVariant ( digitSet ) ) ;
}
}
void KCMLocale : : insertDigitGroupingItem ( KComboBox * digitGroupingCombo ,
KSharedConfigPtr groupingConfig , KConfigGroup * groupingSettings ,
const QString & digitGroupingKey , const QString & digitGroupingFormat )
{
groupingSettings - > writeEntry ( digitGroupingKey , digitGroupingFormat ) ;
KLocale * customLocale = new KLocale ( QLatin1String ( " kcmlocale " ) , groupingConfig ) ;
if ( digitGroupingKey = = " DigitGroupFormat " ) {
digitGroupingCombo - > addItem ( customLocale - > formatNumber ( 123456789.12 ) , digitGroupingFormat ) ;
} else {
digitGroupingCombo - > addItem ( customLocale - > formatMoney ( 123456789.12 ) , digitGroupingFormat ) ;
}
groupingConfig - > markAsClean ( ) ;
delete customLocale ;
}
// Generic utility to set up a Digit Grouping combo, used for numbers and money
void KCMLocale : : initDigitGroupingCombo ( KComboBox * digitGroupingCombo , const QString & digitGroupingKey )
{
digitGroupingCombo - > clear ( ) ;
KSharedConfigPtr groupingConfig = KSharedConfig : : openConfig ( " kcmlocale-grouping " , KConfig : : SimpleConfig ) ;
KConfigGroup groupingSettings = KConfigGroup ( groupingConfig , " Locale " ) ;
copySettings ( & m_kcmSettings , & groupingSettings ) ;
insertDigitGroupingItem ( digitGroupingCombo , groupingConfig , & groupingSettings , digitGroupingKey , " 3 " ) ;
insertDigitGroupingItem ( digitGroupingCombo , groupingConfig , & groupingSettings , digitGroupingKey , " 3;2 " ) ;
insertDigitGroupingItem ( digitGroupingCombo , groupingConfig , & groupingSettings , digitGroupingKey , " 4 " ) ;
insertDigitGroupingItem ( digitGroupingCombo , groupingConfig , & groupingSettings , digitGroupingKey , " -1 " ) ;
}
void KCMLocale : : initTabs ( )
{
m_ui - > m_tabWidgetSettings - > setTabText ( 0 , ki18n ( " Country " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_tabWidgetSettings - > setTabText ( 1 , ki18n ( " Languages " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_tabWidgetSettings - > setTabText ( 2 , ki18n ( " Numbers " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_tabWidgetSettings - > setTabText ( 3 , ki18n ( " Money " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_tabWidgetSettings - > setTabText ( 4 , ki18n ( " Calendar " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_tabWidgetSettings - > setTabText ( 5 , ki18n ( " Date && Time " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_tabWidgetSettings - > setTabText ( 6 , ki18n ( " Other " ) . toString ( m_kcmLocale ) ) ;
}
void KCMLocale : : initSample ( )
{
m_ui - > m_labelNumbersSample - > setText ( ki18n ( " Numbers: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " This is how positive numbers will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textNumbersPositiveSample - > setToolTip ( helpText ) ;
m_ui - > m_textNumbersPositiveSample - > setWhatsThis ( helpText ) ;
helpText = ki18n ( " This is how negative numbers will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textNumbersNegativeSample - > setToolTip ( helpText ) ;
m_ui - > m_textNumbersNegativeSample - > setWhatsThis ( helpText ) ;
m_ui - > m_labelMoneySample - > setText ( ki18n ( " Money: " ) . toString ( m_kcmLocale ) ) ;
helpText = ki18n ( " This is how positive monetary values will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textMoneyPositiveSample - > setToolTip ( helpText ) ;
m_ui - > m_textMoneyPositiveSample - > setWhatsThis ( helpText ) ;
helpText = ki18n ( " This is how negative monetary values will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textMoneyNegativeSample - > setToolTip ( helpText ) ;
m_ui - > m_textMoneyNegativeSample - > setWhatsThis ( helpText ) ;
m_ui - > m_labelDateSample - > setText ( ki18n ( " Date: " ) . toString ( m_kcmLocale ) ) ;
helpText = ki18n ( " This is how long dates will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textDateSample - > setToolTip ( helpText ) ;
m_ui - > m_textDateSample - > setWhatsThis ( helpText ) ;
m_ui - > m_labelShortDateSample - > setText ( ki18n ( " Short date: " ) . toString ( m_kcmLocale ) ) ;
helpText = ki18n ( " This is how short dates will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textShortDateSample - > setToolTip ( helpText ) ;
m_ui - > m_textShortDateSample - > setWhatsThis ( helpText ) ;
m_ui - > m_labelTimeSample - > setText ( ki18n ( " Time: " ) . toString ( m_kcmLocale ) ) ;
helpText = ki18n ( " This is how time will be displayed. " ) . toString ( m_kcmLocale ) ;
m_ui - > m_textTimeSample - > setToolTip ( helpText ) ;
m_ui - > m_textTimeSample - > setWhatsThis ( helpText ) ;
QTimer * timer = new QTimer ( this ) ;
timer - > setObjectName ( QLatin1String ( " clock_timer " ) ) ;
connect ( timer , SIGNAL ( timeout ( ) ) , this , SLOT ( updateSample ( ) ) ) ;
timer - > start ( 1000 ) ;
}
void KCMLocale : : updateSample ( )
{
m_ui - > m_textNumbersPositiveSample - > setText ( m_kcmLocale - > formatNumber ( 123456789.12 ) ) ;
m_ui - > m_textNumbersNegativeSample - > setText ( m_kcmLocale - > formatNumber ( - 123456789.12 ) ) ;
m_ui - > m_textMoneyPositiveSample - > setText ( m_kcmLocale - > formatMoney ( 123456789.12 ) ) ;
m_ui - > m_textMoneyNegativeSample - > setText ( m_kcmLocale - > formatMoney ( - 123456789.12 ) ) ;
KDateTime dateTime = KDateTime : : currentLocalDateTime ( ) ;
m_ui - > m_textDateSample - > setText ( m_kcmLocale - > formatDate ( dateTime . date ( ) , KLocale : : LongDate ) ) ;
m_ui - > m_textShortDateSample - > setText ( m_kcmLocale - > formatDate ( dateTime . date ( ) , KLocale : : ShortDate ) ) ;
m_ui - > m_textTimeSample - > setText ( m_kcmLocale - > formatTime ( dateTime . time ( ) , true ) ) ;
}
void KCMLocale : : initCountry ( )
{
m_ui - > m_comboCountry - > blockSignals ( true ) ;
m_ui - > m_labelCountry - > setText ( ki18n ( " Country: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This is the country where you live. The KDE Workspace will use "
" the settings for this country or region.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCountry - > setToolTip ( helpText ) ;
m_ui - > m_comboCountry - > setWhatsThis ( helpText ) ;
m_ui - > m_comboCountry - > clear ( ) ;
QStringList countryCodes = m_kcmLocale - > allCountriesList ( ) ;
countryCodes . removeDuplicates ( ) ;
QMap < QString , QString > countryNames ;
foreach ( const QString & countryCode , countryCodes ) {
countryNames . insert ( m_kcmLocale - > countryCodeToName ( countryCode ) , countryCode ) ;
}
QString systemCountryName = m_kcmLocale - > countryCodeToName ( m_systemCountry ) ;
QString systemCountry = ki18nc ( " %1 is the system country name " , " System Country (%1) " ) . subs ( systemCountryName ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCountry - > addItem ( systemCountry , QString ( ) ) ;
QString defaultLocale = ki18n ( " No Country (Default Settings) " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCountry - > addItem ( defaultLocale , " C " ) ;
QMapIterator < QString , QString > it ( countryNames ) ;
while ( it . hasNext ( ) ) {
it . next ( ) ;
KIcon flag ( KStandardDirs : : locate ( " locale " , QString : : fromLatin1 ( " l10n/%1/flag.png " ) . arg ( it . value ( ) ) ) ) ;
m_ui - > m_comboCountry - > addItem ( flag , it . key ( ) , it . value ( ) ) ;
}
setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) ) ;
m_ui - > m_comboCountry - > blockSignals ( false ) ;
}
void KCMLocale : : defaultCountry ( )
{
setCountry ( m_defaultSettings . readEntry ( " Country " , QString ( ) ) ) ;
}
void KCMLocale : : changedCountryIndex ( int index )
{
m_ui - > m_comboCountry - > blockSignals ( true ) ;
setCountry ( m_ui - > m_comboCountry - > itemData ( index ) . toString ( ) ) ;
initCountrySettings ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) ) ;
mergeSettings ( ) ;
m_ui - > m_comboCountry - > blockSignals ( false ) ;
initSettingsWidgets ( ) ;
}
void KCMLocale : : setCountry ( const QString & newValue )
{
setComboItem ( " Country " , newValue ,
m_ui - > m_comboCountry , m_ui - > m_buttonDefaultCountry ) ;
}
void KCMLocale : : initCountryDivision ( )
{
m_ui - > m_comboCountryDivision - > blockSignals ( true ) ;
m_ui - > m_labelCountryDivision - > setText ( ki18n ( " Subdivision: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This is the country subdivision where you live, e.g. your state "
" or province. The KDE Workspace will use this setting for local "
" information services such as holidays.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCountryDivision - > setToolTip ( helpText ) ;
m_ui - > m_comboCountryDivision - > setWhatsThis ( helpText ) ;
setCountryDivision ( m_kcmSettings . readEntry ( " CountryDivision " , QString ( ) ) ) ;
m_ui - > m_labelCountryDivision - > setHidden ( true ) ;
m_ui - > m_comboCountryDivision - > setHidden ( true ) ;
m_ui - > m_buttonDefaultCountryDivision - > setEnabled ( false ) ;
m_ui - > m_buttonDefaultCountryDivision - > setHidden ( true ) ;
m_ui - > m_comboCountryDivision - > blockSignals ( false ) ;
}
void KCMLocale : : defaultCountryDivision ( )
{
setCountryDivision ( m_defaultSettings . readEntry ( " CountryDivision " , QString ( ) ) ) ;
}
void KCMLocale : : changedCountryDivisionIndex ( int index )
{
setCountryDivision ( m_ui - > m_comboCountryDivision - > itemData ( index ) . toString ( ) ) ;
}
void KCMLocale : : setCountryDivision ( const QString & newValue )
{
setComboItem ( " CountryDivision " , newValue ,
m_ui - > m_comboCountryDivision , m_ui - > m_buttonDefaultCountryDivision ) ;
m_kcmLocale - > setCountryDivisionCode ( m_kcmSettings . readEntry ( " CountryDivision " , QString ( ) ) ) ;
}
void KCMLocale : : initTranslations ( )
{
m_ui - > m_selectTranslations - > blockSignals ( true ) ;
m_ui - > m_selectTranslations - > setAvailableLabel ( ki18n ( " Available Languages: " ) . toString ( m_kcmLocale ) ) ;
QString availableHelp = ki18n ( " <p>This is the list of installed KDE Workspace language "
" translations not currently being used. To use a language "
" translation move it to the 'Preferred Languages' list in "
" the order of preference. If no suitable languages are "
" listed, then you may need to install more language packages "
" using your usual installation method.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_selectTranslations - > availableListWidget ( ) - > setToolTip ( availableHelp ) ;
m_ui - > m_selectTranslations - > availableListWidget ( ) - > setWhatsThis ( availableHelp ) ;
m_ui - > m_selectTranslations - > setSelectedLabel ( ki18n ( " Preferred Languages: " ) . toString ( m_kcmLocale ) ) ;
QString selectedHelp = ki18n ( " <p>This is the list of installed KDE Workspace language "
" translations currently being used, listed in order of "
" preference. If a translation is not available for the "
" first language in the list, the next language will be used. "
" If no other translations are available then US English will "
" be used.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_selectTranslations - > selectedListWidget ( ) - > setToolTip ( selectedHelp ) ;
m_ui - > m_selectTranslations - > selectedListWidget ( ) - > setWhatsThis ( selectedHelp ) ;
QString enUS ;
QString defaultLang = ki18nc ( " %1 = default language name " , " %1 (Default) " ) . subs ( enUS ) . toString ( m_kcmLocale ) ;
// Clear the selector before reloading
m_ui - > m_selectTranslations - > availableListWidget ( ) - > clear ( ) ;
m_ui - > m_selectTranslations - > selectedListWidget ( ) - > clear ( ) ;
// Load each user selected language into the selected list
int i = 0 ;
foreach ( const QString & languageCode , m_kcmTranslations ) {
QListWidgetItem * listItem = new QListWidgetItem ( m_ui - > m_selectTranslations - > selectedListWidget ( ) ) ;
listItem - > setText ( m_kcmLocale - > languageCodeToName ( languageCode ) ) ;
listItem - > setData ( Qt : : UserRole , languageCode ) ;
+ + i ;
}
// Load all the available languages the user hasn't selected into the available list
i = 0 ;
foreach ( const QString & languageCode , m_installedTranslations ) {
if ( ! m_kcmTranslations . contains ( languageCode ) ) {
QListWidgetItem * listItem = new QListWidgetItem ( m_ui - > m_selectTranslations - > availableListWidget ( ) ) ;
listItem - > setText ( m_kcmLocale - > languageCodeToName ( languageCode ) ) ;
listItem - > setData ( Qt : : UserRole , languageCode ) ;
+ + i ;
}
}
m_ui - > m_selectTranslations - > availableListWidget ( ) - > sortItems ( ) ;
// Default to selecting the first Selected language,
// otherwise the first Available language,
// otherwise no languages so disable all buttons
if ( m_ui - > m_selectTranslations - > selectedListWidget ( ) - > count ( ) > 0 ) {
m_ui - > m_selectTranslations - > selectedListWidget ( ) - > setCurrentRow ( 0 ) ;
} else if ( m_ui - > m_selectTranslations - > availableListWidget ( ) - > count ( ) > 0 ) {
m_ui - > m_selectTranslations - > availableListWidget ( ) - > setCurrentRow ( 0 ) ;
}
enableItemWidgets ( " Language " ,
& m_userSettings , & m_kcmSettings , & m_defaultSettings ,
m_ui - > m_selectTranslations , m_ui - > m_buttonDefaultTranslations ) ;
m_ui - > m_selectTranslations - > blockSignals ( false ) ;
}
void KCMLocale : : defaultTranslations ( )
{
setTranslations ( m_defaultSettings . readEntry ( " Language " , QString ( ) ) ) ;
}
void KCMLocale : : changedTranslationsAvailable ( QListWidgetItem * item )
{
Q_UNUSED ( item ) ;
m_ui - > m_selectTranslations - > availableListWidget ( ) - > sortItems ( ) ;
int row = m_ui - > m_selectTranslations - > availableListWidget ( ) - > currentRow ( ) ;
changedTranslations ( ) ;
m_ui - > m_selectTranslations - > availableListWidget ( ) - > setCurrentRow ( row ) ;
}
void KCMLocale : : changedTranslationsSelected ( QListWidgetItem * item )
{
Q_UNUSED ( item ) ;
int row = m_ui - > m_selectTranslations - > selectedListWidget ( ) - > currentRow ( ) ;
changedTranslations ( ) ;
m_ui - > m_selectTranslations - > selectedListWidget ( ) - > setCurrentRow ( row ) ;
}
void KCMLocale : : changedTranslations ( )
{
// Read the list of all Selected translations from the selector widget
QStringList selectedTranslations ;
for ( int i = 0 ; i < m_ui - > m_selectTranslations - > selectedListWidget ( ) - > count ( ) ; + + i ) {
selectedTranslations . append ( m_ui - > m_selectTranslations - > selectedListWidget ( ) - > item ( i ) - > data ( Qt : : UserRole ) . toString ( ) ) ;
}
setTranslations ( selectedTranslations . join ( " : " ) ) ;
}
void KCMLocale : : setTranslations ( const QString & newValue )
{
setItem ( " Language " , newValue , m_ui - > m_selectTranslations , m_ui - > m_buttonDefaultTranslations ) ;
// Create the kcm translations list
m_kcmTranslations . clear ( ) ;
m_kcmTranslations = m_kcmSettings . readEntry ( " Language " , QString ( ) ) . split ( ' : ' , QString : : SkipEmptyParts ) ;
m_kcmLocale - > setLanguage ( m_kcmTranslations ) ;
// Do merge again as may be localized settings that need to be reloaded
mergeSettings ( ) ;
initAllWidgets ( ) ;
}
void KCMLocale : : initTranslationsInstall ( )
{
m_ui - > m_buttonTranslationsInstall - > blockSignals ( true ) ;
m_ui - > m_buttonTranslationsInstall - > setText ( ki18n ( " Install more languages " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Click here to install more languages</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_buttonTranslationsInstall - > setToolTip ( helpText ) ;
m_ui - > m_buttonTranslationsInstall - > setWhatsThis ( helpText ) ;
m_ui - > m_buttonTranslationsInstall - > blockSignals ( false ) ;
}
void KCMLocale : : installTranslations ( )
{
// User has clicked Install Languages button, trigger distro specific install routine
}
void KCMLocale : : initNumericDigitGrouping ( )
{
m_ui - > m_comboNumericDigitGrouping - > blockSignals ( true ) ;
m_ui - > m_labelNumericDigitGrouping - > setText ( ki18n ( " Digit grouping: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the digit grouping used to display "
" numbers.</p><p>Note that the digit grouping used to display "
" monetary values has to be set separately (see the 'Money' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboNumericDigitGrouping - > setToolTip ( helpText ) ;
m_ui - > m_comboNumericDigitGrouping - > setWhatsThis ( helpText ) ;
initDigitGroupingCombo ( m_ui - > m_comboNumericDigitGrouping , " DigitGroupFormat " ) ;
setNumericDigitGrouping ( m_kcmSettings . readEntry ( " DigitGroupFormat " , " 3 " ) ) ;
m_ui - > m_comboNumericDigitGrouping - > blockSignals ( false ) ;
updateSample ( ) ;
}
void KCMLocale : : defaultNumericDigitGrouping ( )
{
setNumericDigitGrouping ( m_defaultSettings . readEntry ( " DigitGroupFormat " , " 3 " ) ) ;
}
void KCMLocale : : changedNumericDigitGroupingIndex ( int index )
{
setNumericDigitGrouping ( m_ui - > m_comboNumericDigitGrouping - > itemData ( index ) . toString ( ) ) ;
}
void KCMLocale : : setNumericDigitGrouping ( const QString & newValue )
{
setComboItem ( " DigitGroupFormat " , newValue ,
m_ui - > m_comboNumericDigitGrouping , m_ui - > m_buttonDefaultNumericDigitGrouping ) ;
// No api to set, so need to force reload the locale
m_kcmConfig - > markAsClean ( ) ;
m_kcmLocale - > setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) , m_kcmConfig . data ( ) ) ;
updateSample ( ) ;
}
void KCMLocale : : initNumericThousandsSeparator ( )
{
m_ui - > m_comboThousandsSeparator - > blockSignals ( true ) ;
m_ui - > m_labelThousandsSeparator - > setText ( ki18n ( " Group separator: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the digit group separator used to display "
" numbers.</p><p>Note that the digit group separator used to display "
" monetary values has to be set separately (see the 'Money' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboThousandsSeparator - > setToolTip ( helpText ) ;
m_ui - > m_comboThousandsSeparator - > setWhatsThis ( helpText ) ;
initSeparatorCombo ( m_ui - > m_comboThousandsSeparator ) ;
setNumericThousandsSeparator ( m_kcmSettings . readEntry ( " ThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
m_ui - > m_comboThousandsSeparator - > blockSignals ( false ) ;
}
void KCMLocale : : defaultNumericThousandsSeparator ( )
{
setNumericThousandsSeparator ( m_defaultSettings . readEntry ( " ThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
}
// Change in response to user input, doesn't set edit text as causes cursor to EOL
void KCMLocale : : changedNumericThousandsSeparator ( const QString & newValue )
{
QString useValue = newValue ;
int item = m_ui - > m_comboThousandsSeparator - > findText ( newValue ) ;
if ( item > = 0 ) {
useValue = m_ui - > m_comboThousandsSeparator - > itemData ( item ) . toString ( ) ;
m_ui - > m_comboThousandsSeparator - > setEditText ( useValue ) ;
}
if ( useValue = = QString ( ' ' ) ) {
useValue = " $0 $0 " ;
}
setItem ( " ThousandsSeparator " , useValue ,
m_ui - > m_comboThousandsSeparator , m_ui - > m_buttonDefaultThousandsSeparator ) ;
m_kcmLocale - > setThousandsSeparator ( m_kcmSettings . readEntry ( " ThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
// Update the numeric format samples to relect new setting
initNumericDigitGrouping ( ) ;
}
// Change programatically, does set edit text so user can see it
void KCMLocale : : setNumericThousandsSeparator ( const QString & newValue )
{
changedNumericThousandsSeparator ( newValue ) ;
m_ui - > m_comboThousandsSeparator - > setEditText ( m_kcmSettings . readEntry ( " ThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
// Update the numeric format samples to relect new setting
initNumericDigitGrouping ( ) ;
}
void KCMLocale : : initNumericDecimalSymbol ( )
{
m_ui - > m_comboDecimalSymbol - > blockSignals ( true ) ;
m_ui - > m_labelDecimalSymbol - > setText ( ki18n ( " Decimal separator: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the decimal separator used to display "
" numbers (i.e. a dot or a comma in most countries).</p><p>Note "
" that the decimal separator used to display monetary values has "
" to be set separately (see the 'Money' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboDecimalSymbol - > setToolTip ( helpText ) ;
m_ui - > m_comboDecimalSymbol - > setWhatsThis ( helpText ) ;
initSeparatorCombo ( m_ui - > m_comboDecimalSymbol ) ;
setNumericDecimalSymbol ( m_kcmSettings . readEntry ( " DecimalSymbol " , QString ( ) ) ) ;
m_ui - > m_comboDecimalSymbol - > blockSignals ( false ) ;
}
void KCMLocale : : defaultNumericDecimalSymbol ( )
{
setNumericDecimalSymbol ( m_defaultSettings . readEntry ( " DecimalSymbol " , QString ( ) ) ) ;
}
// Change in response to user input, doesn't set edit text as causes cursor to EOL
void KCMLocale : : changedNumericDecimalSymbol ( const QString & newValue )
{
QString useValue = newValue ;
int item = m_ui - > m_comboDecimalSymbol - > findText ( newValue ) ;
if ( item > = 0 ) {
useValue = m_ui - > m_comboDecimalSymbol - > itemData ( item ) . toString ( ) ;
}
setItem ( " DecimalSymbol " , useValue ,
m_ui - > m_comboDecimalSymbol , m_ui - > m_buttonDefaultDecimalSymbol ) ;
m_kcmLocale - > setDecimalSymbol ( m_kcmSettings . readEntry ( " DecimalSymbol " , QString ( ) ) ) ;
// Update the numeric format samples to relect new setting
initNumericDigitGrouping ( ) ;
}
// Change programatically, does set edit text so user can see it
void KCMLocale : : setNumericDecimalSymbol ( const QString & newValue )
{
setEditComboItem ( " DecimalSymbol " , newValue ,
m_ui - > m_comboDecimalSymbol , m_ui - > m_buttonDefaultDecimalSymbol ) ;
m_kcmLocale - > setDecimalSymbol ( m_kcmSettings . readEntry ( " DecimalSymbol " , QString ( ) ) ) ;
// Update the numeric format samples to relect new setting
initNumericDigitGrouping ( ) ;
}
void KCMLocale : : initNumericDecimalPlaces ( )
{
m_ui - > m_intDecimalPlaces - > blockSignals ( true ) ;
m_ui - > m_labelDecimalPlaces - > setText ( ki18n ( " Decimal places: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can set the number of decimal places displayed for "
" numeric values, i.e. the number of digits <em>after</em> the "
" decimal separator.</p><p>Note that the decimal places used "
" to display monetary values has to be set separately (see the "
" 'Money' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_intDecimalPlaces - > setToolTip ( helpText ) ;
m_ui - > m_intDecimalPlaces - > setWhatsThis ( helpText ) ;
setNumericDecimalPlaces ( m_kcmSettings . readEntry ( " DecimalPlaces " , 0 ) ) ;
m_ui - > m_intDecimalPlaces - > blockSignals ( false ) ;
}
void KCMLocale : : defaultNumericDecimalPlaces ( )
{
setNumericDecimalPlaces ( m_defaultSettings . readEntry ( " DecimalPlaces " , 0 ) ) ;
}
void KCMLocale : : changedNumericDecimalPlaces ( int newValue )
{
setNumericDecimalPlaces ( newValue ) ;
}
void KCMLocale : : setNumericDecimalPlaces ( int newValue )
{
setIntItem ( " DecimalPlaces " , newValue ,
m_ui - > m_intDecimalPlaces , m_ui - > m_buttonDefaultDecimalPlaces ) ;
m_kcmLocale - > setDecimalPlaces ( m_kcmSettings . readEntry ( " DecimalPlaces " , 0 ) ) ;
// Update the numeric format samples to relect new setting
initNumericDigitGrouping ( ) ;
}
void KCMLocale : : initNumericPositiveSign ( )
{
m_ui - > m_comboPositiveSign - > blockSignals ( true ) ;
m_ui - > m_labelPositiveFormat - > setText ( ki18n ( " Positive sign: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can specify text used to prefix positive numbers. "
" Most locales leave this blank.</p><p>Note that the positive sign "
" used to display monetary values has to be set separately (see the "
" 'Money' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboPositiveSign - > setToolTip ( helpText ) ;
m_ui - > m_comboPositiveSign - > setWhatsThis ( helpText ) ;
m_ui - > m_comboPositiveSign - > clear ( ) ;
m_ui - > m_comboPositiveSign - > addItem ( ki18nc ( " No positive symbol " , " None " ) . toString ( m_kcmLocale ) , QString ( ) ) ;
m_ui - > m_comboPositiveSign - > addItem ( QString ( ' + ' ) , QString ( ' + ' ) ) ;
setNumericPositiveSign ( m_kcmSettings . readEntry ( " PositiveSign " , QString ( ) ) ) ;
m_ui - > m_comboPositiveSign - > blockSignals ( false ) ;
}
void KCMLocale : : defaultNumericPositiveSign ( )
{
setNumericPositiveSign ( m_defaultSettings . readEntry ( " PositiveSign " , QString ( ) ) ) ;
}
// Change in response to user input, doesn't set edit text as causes cursor to EOL
void KCMLocale : : changedNumericPositiveSign ( const QString & newValue )
{
QString useValue = newValue ;
int item = m_ui - > m_comboPositiveSign - > findText ( newValue ) ;
if ( item > = 0 ) {
useValue = m_ui - > m_comboPositiveSign - > itemData ( item ) . toString ( ) ;
}
setItem ( " PositiveSign " , useValue ,
m_ui - > m_comboPositiveSign , m_ui - > m_buttonDefaultPositiveSign ) ;
m_kcmLocale - > setPositiveSign ( m_kcmSettings . readEntry ( " PositiveSign " , QString ( ) ) ) ;
// Update the format samples to relect new setting
initNumericDigitGrouping ( ) ;
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
}
// Change programatically, does set edit text so user can see it
void KCMLocale : : setNumericPositiveSign ( const QString & newValue )
{
setEditComboItem ( " PositiveSign " , newValue ,
m_ui - > m_comboPositiveSign , m_ui - > m_buttonDefaultPositiveSign ) ;
m_kcmLocale - > setPositiveSign ( m_kcmSettings . readEntry ( " PositiveSign " , QString ( ) ) ) ;
// Update the format samples to relect new setting
initNumericDigitGrouping ( ) ;
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
}
void KCMLocale : : initNumericNegativeSign ( )
{
m_ui - > m_comboNegativeSign - > blockSignals ( true ) ;
m_ui - > m_labelNegativeFormat - > setText ( ki18n ( " Negative sign: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>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 (-).</p><p>Note "
" that the negative sign used to display monetary values has to "
" be set separately (see the 'Money' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboNegativeSign - > setToolTip ( helpText ) ;
m_ui - > m_comboNegativeSign - > setWhatsThis ( helpText ) ;
m_ui - > m_comboNegativeSign - > clear ( ) ;
m_ui - > m_comboNegativeSign - > addItem ( ki18nc ( " No negative symbol " , " None " ) . toString ( m_kcmLocale ) , QString ( ) ) ;
m_ui - > m_comboNegativeSign - > addItem ( QString ( ' - ' ) , QString ( ' - ' ) ) ;
setNumericNegativeSign ( m_kcmSettings . readEntry ( " NegativeSign " , QString ( ) ) ) ;
m_ui - > m_comboNegativeSign - > blockSignals ( false ) ;
}
void KCMLocale : : defaultNumericNegativeSign ( )
{
setNumericNegativeSign ( m_defaultSettings . readEntry ( " NegativeSign " , QString ( ) ) ) ;
}
// Change in response to user input, doesn't set edit text as causes cursor to EOL
void KCMLocale : : changedNumericNegativeSign ( const QString & newValue )
{
QString useValue = newValue ;
int item = m_ui - > m_comboNegativeSign - > findText ( newValue ) ;
if ( item > = 0 ) {
useValue = m_ui - > m_comboNegativeSign - > itemData ( item ) . toString ( ) ;
}
setItem ( " NegativeSign " , useValue ,
m_ui - > m_comboNegativeSign , m_ui - > m_buttonDefaultNegativeSign ) ;
m_kcmLocale - > setNegativeSign ( m_kcmSettings . readEntry ( " NegativeSign " , QString ( ) ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryNegativeFormat ( ) ;
}
// Change programatically, does set edit text so user can see it
void KCMLocale : : setNumericNegativeSign ( const QString & newValue )
{
setEditComboItem ( " NegativeSign " , newValue ,
m_ui - > m_comboNegativeSign , m_ui - > m_buttonDefaultNegativeSign ) ;
m_kcmLocale - > setNegativeSign ( m_kcmSettings . readEntry ( " NegativeSign " , QString ( ) ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryNegativeFormat ( ) ;
}
void KCMLocale : : initNumericDigitSet ( )
{
m_ui - > m_comboDigitSet - > blockSignals ( true ) ;
m_ui - > m_labelDigitSet - > setText ( ki18n ( " Digit set: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the set of digits used to display numbers. "
" If digits other than Arabic are selected, they will appear only if "
" used in the language of the application or the piece of text where "
" the number is shown.</p> <p>Note that the set of digits used to "
" display monetary values has to be set separately (see the 'Money' "
" tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboDigitSet - > setToolTip ( helpText ) ;
m_ui - > m_comboDigitSet - > setWhatsThis ( helpText ) ;
initDigitSetCombo ( m_ui - > m_comboDigitSet ) ;
setNumericDigitSet ( m_kcmSettings . readEntry ( " DigitSet " , 0 ) ) ;
m_ui - > m_comboDigitSet - > blockSignals ( false ) ;
}
void KCMLocale : : defaultNumericDigitSet ( )
{
setNumericDigitSet ( m_defaultSettings . readEntry ( " DigitSet " , 0 ) ) ;
}
void KCMLocale : : changedNumericDigitSetIndex ( int index )
{
setNumericDigitSet ( m_ui - > m_comboDigitSet - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setNumericDigitSet ( int newValue )
{
setComboItem ( " DigitSet " , newValue ,
m_ui - > m_comboDigitSet , m_ui - > m_buttonDefaultDigitSet ) ;
m_kcmLocale - > setDigitSet ( ( KLocale : : DigitSet ) m_kcmSettings . readEntry ( " DigitSet " , 0 ) ) ;
// Update the numeric format samples to relect new setting
initNumericDigitGrouping ( ) ;
}
void KCMLocale : : initCurrencyCode ( )
{
m_ui - > m_comboCurrencyCode - > blockSignals ( true ) ;
m_ui - > m_labelCurrencyCode - > setText ( ki18n ( " Currency: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can choose the currency to be used when displaying "
" monetary values, e.g. United States Dollar or Pound Sterling.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCurrencyCode - > setToolTip ( helpText ) ;
m_ui - > m_comboCurrencyCode - > setWhatsThis ( helpText ) ;
//Create the list of Currency Codes to choose from.
//Visible text will be localised name plus unlocalised code.
m_ui - > m_comboCurrencyCode - > clear ( ) ;
//First put all the preferred currencies first in order of priority
QStringList currencyCodeList = m_kcmLocale - > currencyCodeList ( ) ;
foreach ( const QString & currencyCode , currencyCodeList ) {
QString text = ki18nc ( " @item currency name and currency code " , " %1 (%2) " )
. subs ( m_kcmLocale - > currency ( ) - > currencyCodeToName ( currencyCode ) )
. subs ( currencyCode )
. toString ( m_kcmLocale ) ;
m_ui - > m_comboCurrencyCode - > addItem ( text , QVariant ( currencyCode ) ) ;
}
//Next put all currencies available in alphabetical name order
m_ui - > m_comboCurrencyCode - > insertSeparator ( m_ui - > m_comboCurrencyCode - > count ( ) ) ;
currencyCodeList = m_kcmLocale - > currency ( ) - > allCurrencyCodesList ( ) ;
QStringList currencyNameList ;
foreach ( const QString & currencyCode , currencyCodeList ) {
currencyNameList . append ( ki18nc ( " @item currency name and currency code " , " %1 (%2) " )
. subs ( m_kcmLocale - > currency ( ) - > currencyCodeToName ( currencyCode ) )
. subs ( currencyCode )
. toString ( m_kcmLocale ) ) ;
}
currencyNameList . sort ( ) ;
foreach ( const QString & name , currencyNameList ) {
m_ui - > m_comboCurrencyCode - > addItem ( name , QVariant ( name . mid ( name . length ( ) - 4 , 3 ) ) ) ;
}
setCurrencyCode ( m_kcmSettings . readEntry ( " CurrencyCode " , QString ( ) ) ) ;
m_ui - > m_comboCurrencyCode - > blockSignals ( false ) ;
}
void KCMLocale : : defaultCurrencyCode ( )
{
setCurrencyCode ( m_defaultSettings . readEntry ( " CurrencyCode " , QString ( ) ) ) ;
}
void KCMLocale : : changedCurrencyCodeIndex ( int index )
{
setCurrencyCode ( m_ui - > m_comboCurrencyCode - > itemData ( index ) . toString ( ) ) ;
}
void KCMLocale : : setCurrencyCode ( const QString & newValue )
{
setComboItem ( " CurrencyCode " , newValue ,
m_ui - > m_comboCurrencyCode , m_ui - > m_buttonDefaultCurrencyCode ) ;
m_kcmLocale - > setCurrencyCode ( m_kcmSettings . readEntry ( " CurrencyCode " , QString ( ) ) ) ;
// Update the Currency dependent widgets with the new Currency details
initCurrencySymbol ( ) ;
}
void KCMLocale : : initCurrencySymbol ( )
{
m_ui - > m_comboCurrencySymbol - > blockSignals ( true ) ;
m_ui - > m_labelCurrencySymbol - > setText ( ki18n ( " Currency symbol: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can choose the symbol to be used when displaying "
" monetary values, e.g. $, US$ or USD.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCurrencySymbol - > setToolTip ( helpText ) ;
m_ui - > m_comboCurrencySymbol - > setWhatsThis ( helpText ) ;
//Create the list of Currency Symbols for the selected Currency Code
m_ui - > m_comboCurrencySymbol - > clear ( ) ;
QStringList currencySymbolList = m_kcmLocale - > currency ( ) - > symbolList ( ) ;
foreach ( const QString & currencySymbol , currencySymbolList ) {
if ( currencySymbol = = m_kcmLocale - > currency ( ) - > defaultSymbol ( ) ) {
m_ui - > m_comboCurrencySymbol - > addItem ( currencySymbol , QVariant ( QString ( ) ) ) ;
} else {
m_ui - > m_comboCurrencySymbol - > addItem ( currencySymbol , QVariant ( currencySymbol ) ) ;
}
}
if ( ! currencySymbolList . contains ( m_kcmSettings . readEntry ( " CurrencySymbol " , QString ( ) ) ) ) {
m_kcmSettings . deleteEntry ( " CurrencySymbol " ) ;
m_userSettings . deleteEntry ( " CurrencySymbol " , KConfig : : Persistent | KConfig : : Global ) ;
}
setCurrencySymbol ( m_kcmSettings . readEntry ( " CurrencySymbol " , QString ( ) ) ) ;
m_ui - > m_comboCurrencySymbol - > blockSignals ( false ) ;
}
void KCMLocale : : defaultCurrencySymbol ( )
{
setCurrencySymbol ( m_defaultSettings . readEntry ( " CurrencySymbol " , QString ( ) ) ) ;
}
void KCMLocale : : changedCurrencySymbolIndex ( int index )
{
setCurrencySymbol ( m_ui - > m_comboCurrencySymbol - > itemData ( index ) . toString ( ) ) ;
}
void KCMLocale : : setCurrencySymbol ( const QString & newValue )
{
setComboItem ( " CurrencySymbol " , newValue ,
m_ui - > m_comboCurrencySymbol , m_ui - > m_buttonDefaultCurrencySymbol ) ;
if ( m_kcmSettings . readEntry ( " CurrencySymbol " , QString ( ) ) ! = QString ( ) ) {
m_kcmLocale - > setCurrencySymbol ( m_kcmSettings . readEntry ( " CurrencySymbol " , QString ( ) ) ) ;
} else {
m_kcmLocale - > setCurrencySymbol ( m_kcmLocale - > currency ( ) - > defaultSymbol ( ) ) ;
}
// Update the monetary format samples to relect new setting
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
}
void KCMLocale : : initMonetaryDigitGrouping ( )
{
m_ui - > m_comboMonetaryDigitGrouping - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryDigitGrouping - > setText ( ki18n ( " Digit grouping: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the digit grouping used to display monetary "
" values.</p><p>Note that the digit grouping used to display "
" other numbers has to be defined separately (see the 'Numbers' tab). "
" </p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryDigitGrouping - > setToolTip ( helpText ) ;
m_ui - > m_comboMonetaryDigitGrouping - > setWhatsThis ( helpText ) ;
initDigitGroupingCombo ( m_ui - > m_comboMonetaryDigitGrouping , " MonetaryDigitGroupFormat " ) ;
setMonetaryDigitGrouping ( m_kcmSettings . readEntry ( " MonetaryDigitGroupFormat " , " 3 " ) ) ;
m_ui - > m_comboMonetaryDigitGrouping - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryDigitGrouping ( )
{
setMonetaryDigitGrouping ( m_defaultSettings . readEntry ( " MonetaryDigitGroupFormat " , " 3 " ) ) ;
}
void KCMLocale : : changedMonetaryDigitGroupingIndex ( int index )
{
setMonetaryDigitGrouping ( m_ui - > m_comboMonetaryDigitGrouping - > itemData ( index ) . toString ( ) ) ;
}
void KCMLocale : : setMonetaryDigitGrouping ( const QString & newValue )
{
setComboItem ( " MonetaryDigitGroupFormat " , newValue ,
m_ui - > m_comboMonetaryDigitGrouping , m_ui - > m_buttonDefaultMonetaryDigitGrouping ) ;
// No api to set, so need to force reload the locale
m_kcmConfig - > markAsClean ( ) ;
m_kcmLocale - > setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) , m_kcmConfig . data ( ) ) ;
updateSample ( ) ;
}
void KCMLocale : : initMonetaryThousandsSeparator ( )
{
m_ui - > m_comboMonetaryThousandsSeparator - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryThousandsSeparator - > setText ( ki18n ( " Group separator: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the group separator used to display monetary "
" values.</p><p>Note that the thousands separator used to display "
" other numbers has to be defined separately (see the 'Numbers' tab). "
" </p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryThousandsSeparator - > setToolTip ( helpText ) ;
m_ui - > m_comboMonetaryThousandsSeparator - > setWhatsThis ( helpText ) ;
initSeparatorCombo ( m_ui - > m_comboMonetaryThousandsSeparator ) ;
setMonetaryThousandsSeparator ( m_kcmSettings . readEntry ( " MonetaryThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
m_ui - > m_comboMonetaryThousandsSeparator - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryThousandsSeparator ( )
{
setMonetaryThousandsSeparator ( m_defaultSettings . readEntry ( " MonetaryThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
}
void KCMLocale : : changedMonetaryThousandsSeparator ( const QString & newValue )
{
QString useValue = newValue ;
int item = m_ui - > m_comboMonetaryThousandsSeparator - > findText ( newValue ) ;
if ( item > = 0 ) {
useValue = m_ui - > m_comboMonetaryThousandsSeparator - > itemData ( item ) . toString ( ) ;
m_ui - > m_comboMonetaryThousandsSeparator - > setEditText ( useValue ) ;
}
if ( useValue = = QString ( ' ' ) ) {
useValue = " $0 $0 " ;
}
setItem ( " MonetaryThousandsSeparator " , useValue ,
m_ui - > m_comboMonetaryThousandsSeparator , m_ui - > m_buttonDefaultMonetaryThousandsSeparator ) ;
m_kcmLocale - > setMonetaryThousandsSeparator ( m_kcmSettings . readEntry ( " MonetaryThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
updateSample ( ) ;
}
void KCMLocale : : setMonetaryThousandsSeparator ( const QString & newValue )
{
changedMonetaryThousandsSeparator ( newValue ) ;
m_ui - > m_comboMonetaryThousandsSeparator - > setEditText ( m_kcmSettings . readEntry ( " MonetaryThousandsSeparator " , QString ( ) )
. remove ( QString : : fromLatin1 ( " $0 " ) ) ) ;
}
void KCMLocale : : initMonetaryDecimalSymbol ( )
{
m_ui - > m_comboMonetaryDecimalSymbol - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryDecimalSymbol - > setText ( ki18n ( " Decimal separator: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the decimal separator used to display "
" monetary values.</p><p>Note that the decimal separator used to "
" display other numbers has to be defined separately (see the "
" 'Numbers' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryDecimalSymbol - > setToolTip ( helpText ) ;
m_ui - > m_comboMonetaryDecimalSymbol - > setWhatsThis ( helpText ) ;
initSeparatorCombo ( m_ui - > m_comboMonetaryDecimalSymbol ) ;
setMonetaryDecimalSymbol ( m_kcmSettings . readEntry ( " MonetaryDecimalSymbol " , QString ( ) ) ) ;
m_ui - > m_comboMonetaryDecimalSymbol - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryDecimalSymbol ( )
{
setMonetaryDecimalSymbol ( m_defaultSettings . readEntry ( " MonetaryDecimalSymbol " , QString ( ) ) ) ;
}
void KCMLocale : : changedMonetaryDecimalSymbol ( const QString & newValue )
{
QString useValue = newValue ;
int item = m_ui - > m_comboMonetaryDecimalSymbol - > findText ( newValue ) ;
if ( item > = 0 ) {
useValue = m_ui - > m_comboMonetaryDecimalSymbol - > itemData ( item ) . toString ( ) ;
}
setItem ( " MonetaryDecimalSymbol " , useValue ,
m_ui - > m_comboMonetaryDecimalSymbol , m_ui - > m_buttonDefaultMonetaryDecimalSymbol ) ;
m_kcmLocale - > setMonetaryDecimalSymbol ( m_kcmSettings . readEntry ( " MonetaryDecimalSymbol " , QString ( ) ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
}
void KCMLocale : : setMonetaryDecimalSymbol ( const QString & newValue )
{
setEditComboItem ( " MonetaryDecimalSymbol " , newValue ,
m_ui - > m_comboMonetaryDecimalSymbol , m_ui - > m_buttonDefaultMonetaryDecimalSymbol ) ;
m_kcmLocale - > setMonetaryDecimalSymbol ( m_kcmSettings . readEntry ( " MonetaryDecimalSymbol " , QString ( ) ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
}
void KCMLocale : : initMonetaryDecimalPlaces ( )
{
m_ui - > m_intMonetaryDecimalPlaces - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryDecimalPlaces - > setText ( ki18n ( " Decimal places: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can set the number of decimal places displayed for "
" monetary values, i.e. the number of digits <em>after</em> the "
" decimal separator.</p><p>Note that the decimal places used to "
" display other numbers has to be defined separately (see the "
" 'Numbers' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_intMonetaryDecimalPlaces - > setToolTip ( helpText ) ;
m_ui - > m_intMonetaryDecimalPlaces - > setWhatsThis ( helpText ) ;
setMonetaryDecimalPlaces ( m_kcmSettings . readEntry ( " MonetaryDecimalPlaces " , 0 ) ) ;
m_ui - > m_intMonetaryDecimalPlaces - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryDecimalPlaces ( )
{
setMonetaryDecimalPlaces ( m_defaultSettings . readEntry ( " MonetaryDecimalPlaces " , 0 ) ) ;
}
void KCMLocale : : changedMonetaryDecimalPlaces ( int newValue )
{
setMonetaryDecimalPlaces ( newValue ) ;
}
void KCMLocale : : setMonetaryDecimalPlaces ( int newValue )
{
setIntItem ( " MonetaryDecimalPlaces " , newValue ,
m_ui - > m_intMonetaryDecimalPlaces , m_ui - > m_buttonDefaultMonetaryDecimalPlaces ) ;
m_kcmLocale - > setMonetaryDecimalPlaces ( m_kcmSettings . readEntry ( " MonetaryDecimalPlaces " , 0 ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
}
void KCMLocale : : insertMonetaryPositiveFormat ( bool prefixCurrencySymbol , KLocale : : SignPosition signPosition )
{
KLocale custom ( * m_kcmLocale ) ;
custom . setPositivePrefixCurrencySymbol ( prefixCurrencySymbol ) ;
custom . setPositiveMonetarySignPosition ( signPosition ) ;
QVariantList options ;
options . append ( QVariant ( prefixCurrencySymbol ) ) ;
options . append ( QVariant ( signPosition ) ) ;
m_ui - > m_comboMonetaryPositiveFormat - > addItem ( custom . formatMoney ( 123456.78 ) , options ) ;
}
void KCMLocale : : initMonetaryPositiveFormat ( )
{
m_ui - > m_comboMonetaryPositiveFormat - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryPositiveFormat - > setText ( ki18n ( " Positive format: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can set the format of positive monetary values.</p> "
" <p>Note that the positive sign used to display other numbers has "
" to be defined separately (see the 'Numbers' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryPositiveFormat - > setToolTip ( helpText ) ;
m_ui - > m_comboMonetaryPositiveFormat - > setWhatsThis ( helpText ) ;
m_ui - > m_comboMonetaryPositiveFormat - > clear ( ) ;
// If the positive sign is null, then all the sign options will look the same, so only show a
// choice between parens and no sign, but preserve original position in case they do set sign
// Also keep options in same order, i.e. sign options then parens option
if ( m_kcmSettings . readEntry ( " PositiveSign " , QString ( ) ) . isEmpty ( ) ) {
KLocale : : SignPosition currentSignPosition = ( KLocale : : SignPosition ) m_currentSettings . readEntry ( " PositiveMonetarySignPosition " , 0 ) ;
KLocale : : SignPosition kcmSignPosition = ( KLocale : : SignPosition ) m_kcmSettings . readEntry ( " PositiveMonetarySignPosition " , 0 ) ;
if ( currentSignPosition = = KLocale : : ParensAround & & kcmSignPosition = = KLocale : : ParensAround ) {
//Both are parens, so also give a sign option
insertMonetaryPositiveFormat ( true , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryPositiveFormat ( false , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryPositiveFormat ( true , kcmSignPosition ) ;
insertMonetaryPositiveFormat ( false , kcmSignPosition ) ;
} else if ( kcmSignPosition = = KLocale : : ParensAround ) {
//kcm is parens, current is sign, use both in right order
insertMonetaryPositiveFormat ( true , currentSignPosition ) ;
insertMonetaryPositiveFormat ( false , currentSignPosition ) ;
insertMonetaryPositiveFormat ( true , kcmSignPosition ) ;
insertMonetaryPositiveFormat ( false , kcmSignPosition ) ;
} else {
// kcm is sign, current is parens, use both in right order
insertMonetaryPositiveFormat ( true , kcmSignPosition ) ;
insertMonetaryPositiveFormat ( false , kcmSignPosition ) ;
insertMonetaryPositiveFormat ( true , currentSignPosition ) ;
insertMonetaryPositiveFormat ( false , currentSignPosition ) ;
}
} else {
// Show the sign options first, then parens
// Could do a loop, but lets keep it simple
insertMonetaryPositiveFormat ( true , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryPositiveFormat ( false , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryPositiveFormat ( true , KLocale : : AfterQuantityMoney ) ;
insertMonetaryPositiveFormat ( false , KLocale : : AfterQuantityMoney ) ;
insertMonetaryPositiveFormat ( true , KLocale : : BeforeMoney ) ;
insertMonetaryPositiveFormat ( false , KLocale : : BeforeMoney ) ;
insertMonetaryPositiveFormat ( true , KLocale : : AfterMoney ) ;
insertMonetaryPositiveFormat ( false , KLocale : : AfterMoney ) ;
insertMonetaryPositiveFormat ( true , KLocale : : ParensAround ) ;
insertMonetaryPositiveFormat ( false , KLocale : : ParensAround ) ;
}
setMonetaryPositiveFormat ( m_kcmSettings . readEntry ( " PositivePrefixCurrencySymbol " , false ) ,
( KLocale : : SignPosition ) m_defaultSettings . readEntry ( " PositiveMonetarySignPosition " , 0 ) ) ;
// These are the old strings, keep around for now in case new implementation isn't usable
QString format = ki18n ( " Sign position: " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Parentheses Around " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Before Quantity Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " After Quantity Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Before Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " After Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Here you can select how a positive sign will be "
" positioned. This only affects monetary values. " ) . toString ( m_kcmLocale ) ;
QString check = ki18n ( " Prefix currency symbol " ) . toString ( m_kcmLocale ) ;
check = ki18n ( " If this option is checked, the currency sign "
" will be prefixed (i.e. to the left of the "
" value) for all positive monetary values. If "
" not, it will be postfixed (i.e. to the right). " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryPositiveFormat - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryPositiveFormat ( )
{
setMonetaryPositiveFormat ( m_defaultSettings . readEntry ( " PositivePrefixCurrencySymbol " , false ) ,
( KLocale : : SignPosition ) m_defaultSettings . readEntry ( " PositiveMonetarySignPosition " , 0 ) ) ;
}
void KCMLocale : : changedMonetaryPositiveFormatIndex ( int index )
{
QVariantList options = m_ui - > m_comboMonetaryPositiveFormat - > itemData ( index ) . toList ( ) ;
bool prefixCurrencySymbol = options . at ( 0 ) . toBool ( ) ;
KLocale : : SignPosition signPosition = ( KLocale : : SignPosition ) options . at ( 1 ) . toInt ( ) ;
setMonetaryPositiveFormat ( prefixCurrencySymbol , signPosition ) ;
}
void KCMLocale : : setMonetaryFormat ( const QString & prefixCurrencySymbolKey , bool prefixCurrencySymbol ,
const QString & signPositionKey , KLocale : : SignPosition signPosition ,
QWidget * formatWidget , KPushButton * formatDefaultButton )
{
// If either setting is locked down by Kiosk, then don't let the user make any changes, and disable the widgets
if ( m_userSettings . isEntryImmutable ( prefixCurrencySymbolKey ) | |
m_userSettings . isEntryImmutable ( signPositionKey ) ) {
formatWidget - > setEnabled ( false ) ;
formatDefaultButton - > setEnabled ( false ) ;
} else {
formatWidget - > setEnabled ( true ) ;
formatDefaultButton - > setEnabled ( false ) ;
m_kcmSettings . writeEntry ( prefixCurrencySymbolKey , prefixCurrencySymbol ) ;
m_kcmSettings . writeEntry ( signPositionKey , ( int ) signPosition ) ;
// If the new value is not the default (i.e. is set in user), then save it and enable the default button
if ( prefixCurrencySymbol ! = m_defaultSettings . readEntry ( prefixCurrencySymbolKey , false ) ) {
m_userSettings . writeEntry ( prefixCurrencySymbolKey , prefixCurrencySymbol , KConfig : : Persistent | KConfig : : Global ) ;
formatDefaultButton - > setEnabled ( true ) ;
} else { // Is the default so delete any user setting
m_userSettings . deleteEntry ( prefixCurrencySymbolKey , KConfig : : Persistent | KConfig : : Global ) ;
}
// If the new value is not the default (i.e. is set in user), then save it and enable the default button
if ( signPosition ! = m_defaultSettings . readEntry ( signPositionKey , 0 ) ) {
m_userSettings . writeEntry ( signPositionKey , ( int ) signPosition , KConfig : : Persistent | KConfig : : Global ) ;
formatDefaultButton - > setEnabled ( true ) ;
} else { // Is the default so delete any user setting
m_userSettings . deleteEntry ( signPositionKey , KConfig : : Persistent | KConfig : : Global ) ;
}
checkIfChanged ( ) ;
}
}
void KCMLocale : : setMonetaryPositiveFormat ( bool prefixCurrencySymbol , KLocale : : SignPosition signPosition )
{
setMonetaryFormat ( " PositivePrefixCurrencySymbol " , prefixCurrencySymbol ,
" PositiveMonetarySignPosition " , signPosition ,
m_ui - > m_comboMonetaryPositiveFormat , m_ui - > m_buttonDefaultMonetaryPositiveFormat ) ;
// Read back the kcm values and use them in the sample locale
prefixCurrencySymbol = m_kcmSettings . readEntry ( " PositivePrefixCurrencySymbol " , false ) ;
signPosition = ( KLocale : : SignPosition ) m_kcmSettings . readEntry ( " PositiveMonetarySignPosition " , 0 ) ;
m_kcmLocale - > setPositivePrefixCurrencySymbol ( prefixCurrencySymbol ) ;
m_kcmLocale - > setPositiveMonetarySignPosition ( signPosition ) ;
// Set the combo to the kcm value
QVariantList options ;
options . append ( QVariant ( prefixCurrencySymbol ) ) ;
options . append ( QVariant ( signPosition ) ) ;
int index = m_ui - > m_comboMonetaryPositiveFormat - > findData ( options ) ;
m_ui - > m_comboMonetaryPositiveFormat - > setCurrentIndex ( index ) ;
}
void KCMLocale : : insertMonetaryNegativeFormat ( bool prefixCurrencySymbol , KLocale : : SignPosition signPosition )
{
KLocale custom ( * m_kcmLocale ) ;
custom . setNegativePrefixCurrencySymbol ( prefixCurrencySymbol ) ;
custom . setNegativeMonetarySignPosition ( signPosition ) ;
QVariantList options ;
options . append ( QVariant ( prefixCurrencySymbol ) ) ;
options . append ( QVariant ( signPosition ) ) ;
m_ui - > m_comboMonetaryNegativeFormat - > addItem ( custom . formatMoney ( - 123456.78 ) , options ) ;
}
void KCMLocale : : initMonetaryNegativeFormat ( )
{
m_ui - > m_comboMonetaryNegativeFormat - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryNegativeFormat - > setText ( ki18n ( " Negative format: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can set the format of negative monetary values.</p> "
" <p>Note that the negative sign used to display other numbers has "
" to be defined separately (see the 'Numbers' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryNegativeFormat - > setToolTip ( helpText ) ;
m_ui - > m_comboMonetaryNegativeFormat - > setWhatsThis ( helpText ) ;
QString format = ki18n ( " Sign position: " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Parentheses Around " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Before Quantity Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " After Quantity Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Before Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " After Money " ) . toString ( m_kcmLocale ) ;
format = ki18n ( " Here you can select how a negative sign will "
" be positioned. This only affects monetary "
" values. " ) . toString ( m_kcmLocale ) ;
QString check = ki18n ( " Prefix currency symbol " ) . toString ( m_kcmLocale ) ;
check = ki18n ( " If this option is checked, the currency sign "
" will be prefixed (i.e. to the left of the "
" value) for all negative monetary values. If "
" not, it will be postfixed (i.e. to the right). " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryNegativeFormat - > clear ( ) ;
// If the negative sign is null, then all the sign options will look the same, so only show a
// choice between parens and no sign, but preserve original position in case they do set sign
// Also keep options in same order, i.e. sign options then parens option
if ( m_kcmSettings . readEntry ( " NegativeSign " , QString ( ) ) . isEmpty ( ) ) {
KLocale : : SignPosition currentSignPosition = ( KLocale : : SignPosition ) m_currentSettings . readEntry ( " NegativeMonetarySignPosition " , 0 ) ;
KLocale : : SignPosition kcmSignPosition = ( KLocale : : SignPosition ) m_kcmSettings . readEntry ( " NegativeMonetarySignPosition " , 0 ) ;
if ( currentSignPosition = = KLocale : : ParensAround & & kcmSignPosition = = KLocale : : ParensAround ) {
//Both are parens, so also give a sign option
insertMonetaryNegativeFormat ( true , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryNegativeFormat ( false , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryNegativeFormat ( true , kcmSignPosition ) ;
insertMonetaryNegativeFormat ( false , kcmSignPosition ) ;
} else if ( kcmSignPosition = = KLocale : : ParensAround ) {
//kcm is parens, current is sign, use both in right order
insertMonetaryNegativeFormat ( true , currentSignPosition ) ;
insertMonetaryNegativeFormat ( false , currentSignPosition ) ;
insertMonetaryNegativeFormat ( true , kcmSignPosition ) ;
insertMonetaryNegativeFormat ( false , kcmSignPosition ) ;
} else {
// kcm is sign, current is parens, use both in right order
insertMonetaryNegativeFormat ( true , kcmSignPosition ) ;
insertMonetaryNegativeFormat ( false , kcmSignPosition ) ;
insertMonetaryNegativeFormat ( true , currentSignPosition ) ;
insertMonetaryNegativeFormat ( false , currentSignPosition ) ;
}
} else {
// Show the sign options first, then parens
insertMonetaryNegativeFormat ( true , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryNegativeFormat ( false , KLocale : : BeforeQuantityMoney ) ;
insertMonetaryNegativeFormat ( true , KLocale : : AfterQuantityMoney ) ;
insertMonetaryNegativeFormat ( false , KLocale : : AfterQuantityMoney ) ;
insertMonetaryNegativeFormat ( true , KLocale : : BeforeMoney ) ;
insertMonetaryNegativeFormat ( false , KLocale : : BeforeMoney ) ;
insertMonetaryNegativeFormat ( true , KLocale : : AfterMoney ) ;
insertMonetaryNegativeFormat ( false , KLocale : : AfterMoney ) ;
insertMonetaryNegativeFormat ( true , KLocale : : ParensAround ) ;
insertMonetaryNegativeFormat ( false , KLocale : : ParensAround ) ;
}
setMonetaryNegativeFormat ( m_kcmSettings . readEntry ( " NegativePrefixCurrencySymbol " , false ) ,
( KLocale : : SignPosition ) m_defaultSettings . readEntry ( " NegativeMonetarySignPosition " , 0 ) ) ;
m_ui - > m_comboMonetaryNegativeFormat - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryNegativeFormat ( )
{
setMonetaryNegativeFormat ( m_defaultSettings . readEntry ( " NegativePrefixCurrencySymbol " , false ) ,
( KLocale : : SignPosition ) m_defaultSettings . readEntry ( " NegativeMonetarySignPosition " , 0 ) ) ;
}
void KCMLocale : : changedMonetaryNegativeFormatIndex ( int index )
{
QVariantList options = m_ui - > m_comboMonetaryNegativeFormat - > itemData ( index ) . toList ( ) ;
bool prefixCurrencySymbol = options . at ( 0 ) . toBool ( ) ;
KLocale : : SignPosition signPosition = ( KLocale : : SignPosition ) options . at ( 1 ) . toInt ( ) ;
setMonetaryNegativeFormat ( prefixCurrencySymbol , signPosition ) ;
}
void KCMLocale : : setMonetaryNegativeFormat ( bool prefixCurrencySymbol , KLocale : : SignPosition signPosition )
{
setMonetaryFormat ( " NegativePrefixCurrencySymbol " , prefixCurrencySymbol ,
" NegativeMonetarySignPosition " , signPosition ,
m_ui - > m_comboMonetaryNegativeFormat , m_ui - > m_buttonDefaultMonetaryNegativeFormat ) ;
// Read back the kcm values and use them in the sample locale
prefixCurrencySymbol = m_kcmSettings . readEntry ( " NegativePrefixCurrencySymbol " , false ) ;
signPosition = ( KLocale : : SignPosition ) m_kcmSettings . readEntry ( " NegativeMonetarySignPosition " , 0 ) ;
m_kcmLocale - > setNegativePrefixCurrencySymbol ( prefixCurrencySymbol ) ;
m_kcmLocale - > setNegativeMonetarySignPosition ( signPosition ) ;
// Set the combo to the kcm value
QVariantList options ;
options . append ( QVariant ( prefixCurrencySymbol ) ) ;
options . append ( QVariant ( signPosition ) ) ;
int index = m_ui - > m_comboMonetaryNegativeFormat - > findData ( options ) ;
m_ui - > m_comboMonetaryNegativeFormat - > setCurrentIndex ( index ) ;
updateSample ( ) ;
}
void KCMLocale : : initMonetaryDigitSet ( )
{
m_ui - > m_comboMonetaryDigitSet - > blockSignals ( true ) ;
m_ui - > m_labelMonetaryDigitSet - > setText ( ki18n ( " Digit set: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the set of digits used to display monetary "
" values. If digits other than Arabic are selected, they will appear "
" only if used in the language of the application or the piece of "
" text where the number is shown.</p><p>Note that the set of digits "
" used to display other numbers has to be defined separately (see the "
" 'Numbers' tab).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMonetaryDigitSet - > setToolTip ( helpText ) ;
m_ui - > m_comboMonetaryDigitSet - > setWhatsThis ( helpText ) ;
initDigitSetCombo ( m_ui - > m_comboMonetaryDigitSet ) ;
setMonetaryDigitSet ( m_kcmSettings . readEntry ( " MonetaryDigitSet " , 0 ) ) ;
m_ui - > m_comboMonetaryDigitSet - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonetaryDigitSet ( )
{
setMonetaryDigitSet ( m_defaultSettings . readEntry ( " MonetaryDigitSet " , 0 ) ) ;
}
void KCMLocale : : changedMonetaryDigitSetIndex ( int index )
{
setMonetaryDigitSet ( m_ui - > m_comboMonetaryDigitSet - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setMonetaryDigitSet ( int newValue )
{
setComboItem ( " MonetaryDigitSet " , newValue ,
m_ui - > m_comboMonetaryDigitSet , m_ui - > m_buttonDefaultMonetaryDigitSet ) ;
m_kcmLocale - > setMonetaryDigitSet ( ( KLocale : : DigitSet ) m_kcmSettings . readEntry ( " MonetaryDigitSet " , 0 ) ) ;
// Update the monetary format samples to relect new setting
initMonetaryDigitGrouping ( ) ;
initMonetaryPositiveFormat ( ) ;
initMonetaryNegativeFormat ( ) ;
}
void KCMLocale : : initCalendarSystem ( )
{
m_ui - > m_comboCalendarSystem - > blockSignals ( true ) ;
m_ui - > m_labelCalendarSystem - > setText ( ki18n ( " Calendar system: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can set the Calendar System to use to display dates.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboCalendarSystem - > setToolTip ( helpText ) ;
m_ui - > m_comboCalendarSystem - > setWhatsThis ( helpText ) ;
m_ui - > m_comboCalendarSystem - > clear ( ) ;
2015-09-04 07:51:55 +00:00
QList < KLocale : : CalendarSystem > calendarSystems = KCalendarSystem : : calendarSystemsList ( ) ;
2014-11-15 03:14:34 +02:00
2015-09-04 07:51:55 +00:00
foreach ( const KLocale : : CalendarSystem & calendarType , calendarSystems ) {
m_ui - > m_comboCalendarSystem - > addItem ( KCalendarSystem : : calendarLabel ( calendarType , m_kcmLocale ) ,
2014-11-15 03:14:34 +02:00
QVariant ( calendarType ) ) ;
}
setCalendarSystem ( m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ) ;
m_ui - > m_comboCalendarSystem - > blockSignals ( false ) ;
}
void KCMLocale : : defaultCalendarSystem ( )
{
setCalendarSystem ( m_defaultSettings . readEntry ( " CalendarSystem " , QString ( ) ) ) ;
}
void KCMLocale : : changedCalendarSystemIndex ( int index )
{
setCalendarSystem ( m_ui - > m_comboCalendarSystem - > itemData ( index ) . toString ( ) ) ;
}
void KCMLocale : : setCalendarSystem ( const QString & newValue )
{
setComboItem ( " CalendarSystem " , newValue ,
m_ui - > m_comboCalendarSystem , m_ui - > m_buttonDefaultCalendarSystem ) ;
// Load the correct settings group for the new calendar
initCalendarSettings ( ) ;
mergeCalendarSettings ( ) ;
// If item was changed, i.e. not immutable, then update locale
m_kcmLocale - > setCalendar ( m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ) ;
// Update the Calendar dependent widgets with the new Calendar System details
initUseCommonEra ( ) ;
initShortYearWindow ( ) ;
initWeekNumberSystem ( ) ;
initWeekStartDay ( ) ;
initWorkingWeekStartDay ( ) ;
initWorkingWeekEndDay ( ) ;
initWeekDayOfPray ( ) ;
updateSample ( ) ;
}
void KCMLocale : : initUseCommonEra ( )
{
m_ui - > m_checkCalendarGregorianUseCommonEra - > blockSignals ( true ) ;
m_ui - > m_checkCalendarGregorianUseCommonEra - > setText ( ki18n ( " Use Common Era " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines if the Common Era (CE/BCE) should be used "
" instead of the Christian Era (AD/BC).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_checkCalendarGregorianUseCommonEra - > setToolTip ( helpText ) ;
m_ui - > m_checkCalendarGregorianUseCommonEra - > setWhatsThis ( helpText ) ;
QString calendarType = m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ;
if ( calendarType = = " gregorian " | | calendarType = = " gregorian-proleptic " ) {
setUseCommonEra ( m_kcmCalendarSettings . readEntry ( " UseCommonEra " , false ) ) ;
} else {
setUseCommonEra ( false ) ;
m_ui - > m_checkCalendarGregorianUseCommonEra - > setEnabled ( false ) ;
m_ui - > m_buttonDefaultCalendarGregorianUseCommonEra - > setEnabled ( false ) ;
}
m_ui - > m_checkCalendarGregorianUseCommonEra - > blockSignals ( false ) ;
}
void KCMLocale : : defaultUseCommonEra ( )
{
setUseCommonEra ( m_defaultCalendarSettings . readEntry ( " UseCommonEra " , false ) ) ;
}
void KCMLocale : : changedUseCommonEra ( bool newValue )
{
setUseCommonEra ( newValue ) ;
}
void KCMLocale : : setUseCommonEra ( bool newValue )
{
setCalendarItem ( " UseCommonEra " , newValue ,
m_ui - > m_checkCalendarGregorianUseCommonEra , m_ui - > m_buttonDefaultCalendarGregorianUseCommonEra ) ;
m_ui - > m_checkCalendarGregorianUseCommonEra - > setChecked ( m_kcmCalendarSettings . readEntry ( " UseCommonEra " , false ) ) ;
// No api to set, so need to force reload the locale
m_kcmConfig - > markAsClean ( ) ;
m_kcmLocale - > setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) , m_kcmConfig . data ( ) ) ;
m_kcmLocale - > setCalendar ( m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ) ;
}
void KCMLocale : : initShortYearWindow ( )
{
m_ui - > m_intShortYearWindowStartYear - > blockSignals ( true ) ;
m_ui - > m_labelShortYearWindow - > setText ( ki18n ( " Short year window: " ) . toString ( m_kcmLocale ) ) ;
m_ui - > m_labelShortYearWindowTo - > setText ( ki18nc ( " label between two year inputs, i.e. 1930 to 2029 " , " to " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines what year range a two digit date is "
" interpreted as, for example with a range of 1950 to 2049 the "
" value 10 is interpreted as 2010. This range is only applied when "
" reading the Short Year (YY) date format.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_intShortYearWindowStartYear - > setToolTip ( helpText ) ;
m_ui - > m_intShortYearWindowStartYear - > setWhatsThis ( helpText ) ;
m_ui - > m_spinShortYearWindowEndYear - > setToolTip ( helpText ) ;
m_ui - > m_spinShortYearWindowEndYear - > setWhatsThis ( helpText ) ;
setShortYearWindow ( m_kcmCalendarSettings . readEntry ( " ShortYearWindowStartYear " , 0 ) ) ;
m_ui - > m_intShortYearWindowStartYear - > blockSignals ( false ) ;
}
void KCMLocale : : defaultShortYearWindow ( )
{
setShortYearWindow ( m_defaultCalendarSettings . readEntry ( " ShortYearWindowStartYear " , 0 ) ) ;
}
void KCMLocale : : changedShortYearWindow ( int newValue )
{
setShortYearWindow ( newValue ) ;
}
void KCMLocale : : setShortYearWindow ( int newValue )
{
setCalendarItem ( " ShortYearWindowStartYear " , newValue ,
m_ui - > m_intShortYearWindowStartYear , m_ui - > m_buttonDefaultShortYearWindow ) ;
int startYear = m_kcmCalendarSettings . readEntry ( " ShortYearWindowStartYear " , 0 ) ;
m_ui - > m_intShortYearWindowStartYear - > setValue ( startYear ) ;
m_ui - > m_spinShortYearWindowEndYear - > setValue ( startYear + 99 ) ;
// No api to set, so need to force reload the locale and calendar
m_kcmConfig - > markAsClean ( ) ;
m_kcmLocale - > setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) , m_kcmConfig . data ( ) ) ;
m_kcmLocale - > setCalendar ( m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ) ;
}
void KCMLocale : : initWeekNumberSystem ( )
{
m_ui - > m_comboWeekNumberSystem - > blockSignals ( true ) ;
m_ui - > m_labelWeekNumberSystem - > setText ( ki18n ( " Week number system: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines how the Week Number will be calculated. "
" There are four options available:</p> "
" <ul> "
" <li><b>ISO Week</b> Use the ISO standard Week Number. This will always "
" use Monday as the first day of the ISO week. This is the most commonly "
" used system.</li> "
" <li><b>Full First Week</b> The first week of the year starts on the "
" first occurrence of the <i>First day of the week</i>, and lasts for "
" seven days. Any days before Week 1 are considered part of the last "
" week of the previous year. This system is most commonly used in the "
" USA.</li> "
" <li><b>Partial First Week</b> The first week starts on the first day "
" of the year. The second week of the year starts on the first "
" occurrence of the <i>First day of the week</i>, and lasts for "
" seven days. The first week may not contain seven days.</li> "
" <li><b>Simple Week</b> The first week starts on the first day of the "
" year and lasts seven days, with all new weeks starting on the same "
" weekday as the first day of the year.</li> "
" </ul> "
) . toString ( m_kcmLocale ) ;
m_ui - > m_comboWeekNumberSystem - > setToolTip ( helpText ) ;
m_ui - > m_comboWeekNumberSystem - > setWhatsThis ( helpText ) ;
m_ui - > m_comboWeekNumberSystem - > clear ( ) ;
m_ui - > m_comboWeekNumberSystem - > addItem ( ki18n ( " ISO Week " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : IsoWeekNumber ) ) ;
m_ui - > m_comboWeekNumberSystem - > addItem ( ki18n ( " Full First Week " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : FirstFullWeek ) ) ;
m_ui - > m_comboWeekNumberSystem - > addItem ( ki18n ( " Partial First Week " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : FirstPartialWeek ) ) ;
m_ui - > m_comboWeekNumberSystem - > addItem ( ki18n ( " Simple Week " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : SimpleWeek ) ) ;
setWeekNumberSystem ( ( KLocale : : WeekNumberSystem ) m_kcmSettings . readEntry ( " WeekNumberSystem " , 0 ) ) ;
m_ui - > m_comboWeekNumberSystem - > blockSignals ( false ) ;
}
void KCMLocale : : defaultWeekNumberSystem ( )
{
setWeekNumberSystem ( m_defaultSettings . readEntry ( " WeekNumberSystem " , 0 ) ) ;
}
void KCMLocale : : changedWeekNumberSystemIndex ( int index )
{
setWeekNumberSystem ( m_ui - > m_comboWeekNumberSystem - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setWeekNumberSystem ( int newValue )
{
setComboItem ( " WeekNumberSystem " , newValue ,
m_ui - > m_comboWeekNumberSystem , m_ui - > m_buttonDefaultWeekNumberSystem ) ;
m_kcmLocale - > setWeekNumberSystem ( ( KLocale : : WeekNumberSystem ) m_kcmSettings . readEntry ( " WeekNumberSystem " , 0 ) ) ;
}
void KCMLocale : : initWeekStartDay ( )
{
m_ui - > m_comboWeekStartDay - > blockSignals ( true ) ;
m_ui - > m_labelWeekStartDay - > setText ( ki18n ( " First day of week: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines which day will be considered as the first "
" one of the week. This value may affect the Week Number System.</p> "
) . toString ( m_kcmLocale ) ;
m_ui - > m_comboWeekStartDay - > setToolTip ( helpText ) ;
m_ui - > m_comboWeekStartDay - > setWhatsThis ( helpText ) ;
initWeekDayCombo ( m_ui - > m_comboWeekStartDay ) ;
setWeekStartDay ( m_kcmSettings . readEntry ( " WeekStartDay " , 0 ) ) ;
m_ui - > m_comboWeekStartDay - > blockSignals ( false ) ;
}
void KCMLocale : : defaultWeekStartDay ( )
{
setWeekStartDay ( m_defaultSettings . readEntry ( " WeekStartDay " , 0 ) ) ;
}
void KCMLocale : : changedWeekStartDayIndex ( int index )
{
setWeekStartDay ( m_ui - > m_comboWeekStartDay - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setWeekStartDay ( int newValue )
{
setComboItem ( " WeekStartDay " , newValue ,
m_ui - > m_comboWeekStartDay , m_ui - > m_buttonDefaultWeekStartDay ) ;
m_kcmLocale - > setWeekStartDay ( m_kcmSettings . readEntry ( " WeekStartDay " , 0 ) ) ;
}
void KCMLocale : : initWorkingWeekStartDay ( )
{
m_ui - > m_comboWorkingWeekStartDay - > blockSignals ( true ) ;
m_ui - > m_labelWorkingWeekStartDay - > setText ( ki18n ( " First working day of week: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines which day will be considered as the first "
" working day of the week.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboWorkingWeekStartDay - > setToolTip ( helpText ) ;
m_ui - > m_comboWorkingWeekStartDay - > setWhatsThis ( helpText ) ;
initWeekDayCombo ( m_ui - > m_comboWorkingWeekStartDay ) ;
setWorkingWeekStartDay ( m_kcmSettings . readEntry ( " WorkingWeekStartDay " , 0 ) ) ;
m_ui - > m_comboWorkingWeekStartDay - > blockSignals ( false ) ;
}
void KCMLocale : : defaultWorkingWeekStartDay ( )
{
setWorkingWeekStartDay ( m_defaultSettings . readEntry ( " WorkingWeekStartDay " , 0 ) ) ;
}
void KCMLocale : : changedWorkingWeekStartDayIndex ( int index )
{
setWorkingWeekStartDay ( m_ui - > m_comboWorkingWeekStartDay - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setWorkingWeekStartDay ( int newValue )
{
setComboItem ( " WorkingWeekStartDay " , newValue ,
m_ui - > m_comboWorkingWeekStartDay , m_ui - > m_buttonDefaultWorkingWeekStartDay ) ;
m_kcmLocale - > setWorkingWeekStartDay ( m_kcmSettings . readEntry ( " WorkingWeekStartDay " , 0 ) ) ;
}
void KCMLocale : : initWorkingWeekEndDay ( )
{
m_ui - > m_comboWorkingWeekEndDay - > blockSignals ( true ) ;
m_ui - > m_labelWorkingWeekEndDay - > setText ( ki18n ( " Last working day of week: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines which day will be considered as the last "
" working day of the week.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboWorkingWeekEndDay - > setToolTip ( helpText ) ;
m_ui - > m_comboWorkingWeekEndDay - > setWhatsThis ( helpText ) ;
initWeekDayCombo ( m_ui - > m_comboWorkingWeekEndDay ) ;
setWorkingWeekEndDay ( m_kcmSettings . readEntry ( " WorkingWeekEndDay " , 0 ) ) ;
m_ui - > m_comboWorkingWeekEndDay - > blockSignals ( false ) ;
}
void KCMLocale : : defaultWorkingWeekEndDay ( )
{
setWorkingWeekEndDay ( m_defaultSettings . readEntry ( " WorkingWeekEndDay " , 0 ) ) ;
}
void KCMLocale : : changedWorkingWeekEndDayIndex ( int index )
{
setWorkingWeekEndDay ( m_ui - > m_comboWorkingWeekEndDay - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setWorkingWeekEndDay ( int newValue )
{
setComboItem ( " WorkingWeekEndDay " , newValue ,
m_ui - > m_comboWorkingWeekEndDay , m_ui - > m_buttonDefaultWorkingWeekEndDay ) ;
m_kcmLocale - > setWorkingWeekEndDay ( m_kcmSettings . readEntry ( " WorkingWeekEndDay " , 0 ) ) ;
}
void KCMLocale : : initWeekDayOfPray ( )
{
m_ui - > m_comboWeekDayOfPray - > blockSignals ( true ) ;
m_ui - > m_labelWeekDayOfPray - > setText ( ki18n ( " Week day for special religious observance: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines which day if any will be considered as "
" the day of the week for special religious observance.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboWeekDayOfPray - > setToolTip ( helpText ) ;
m_ui - > m_comboWeekDayOfPray - > setWhatsThis ( helpText ) ;
initWeekDayCombo ( m_ui - > m_comboWeekDayOfPray ) ;
m_ui - > m_comboWeekDayOfPray - > insertItem ( 0 , ki18nc ( " Day name list, option for no special day of religious observance " , " None / None in particular " ) . toString ( m_kcmLocale ) ) ;
setWeekDayOfPray ( m_kcmSettings . readEntry ( " WeekDayOfPray " , 0 ) ) ;
m_ui - > m_comboWeekDayOfPray - > blockSignals ( false ) ;
}
void KCMLocale : : defaultWeekDayOfPray ( )
{
setWeekDayOfPray ( m_defaultSettings . readEntry ( " WeekDayOfPray " , 0 ) ) ;
}
void KCMLocale : : changedWeekDayOfPrayIndex ( int index )
{
setWeekDayOfPray ( m_ui - > m_comboWeekDayOfPray - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setWeekDayOfPray ( int newValue )
{
setComboItem ( " WeekDayOfPray " , newValue ,
m_ui - > m_comboWeekDayOfPray , m_ui - > m_buttonDefaultWeekDayOfPray ) ;
m_kcmLocale - > setWeekDayOfPray ( m_kcmSettings . readEntry ( " WeekDayOfPray " , 0 ) ) ;
}
void KCMLocale : : initTimeFormat ( )
{
m_ui - > m_comboTimeFormat - > blockSignals ( true ) ;
m_ui - > m_labelTimeFormat - > setText ( ki18n ( " Time format: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>The text in this textbox will be used to format time strings. "
" The sequences below will be replaced:</p> "
" <table> "
" <tr><td><b>HH</b></td> "
" <td>The hour as a decimal number using a 24-hour clock (00-23).</td></tr> "
" <tr><td><b>hH</b></td> "
" <td>The hour (24-hour clock) as a decimal number (0-23).</td></tr> "
" <tr><td><b>PH</b></td> "
" <td>The hour as a decimal number using a 12-hour clock (01-12).</td></tr> "
" <tr><td><b>pH</b></td> "
" <td>The hour (12-hour clock) as a decimal number (1-12).</td></tr> "
" <tr><td><b>MM</b></td> "
" <td>The minutes as a decimal number (00-59).</td></tr> "
" <tr><td><b>SS</b></td> "
" <td>The seconds as a decimal number (00-59).</td></tr> "
" <tr><td><b>AMPM</b></td> "
" <td>Either 'AM' or 'PM' according to the given time value. "
" Noon is treated as 'PM' and midnight as 'AM'.</td></tr> "
" </table> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboTimeFormat - > setToolTip ( helpText ) ;
m_ui - > m_comboTimeFormat - > setWhatsThis ( helpText ) ;
m_timeFormatMap . clear ( ) ;
m_timeFormatMap . insert ( QString ( ' H ' ) , ki18n ( " HH " ) . toString ( m_kcmLocale ) ) ;
m_timeFormatMap . insert ( QString ( ' k ' ) , ki18n ( " hH " ) . toString ( m_kcmLocale ) ) ;
m_timeFormatMap . insert ( QString ( ' I ' ) , ki18n ( " PH " ) . toString ( m_kcmLocale ) ) ;
m_timeFormatMap . insert ( QString ( ' l ' ) , ki18n ( " pH " ) . toString ( m_kcmLocale ) ) ;
m_timeFormatMap . insert ( QString ( ' M ' ) , ki18nc ( " Minute " , " MM " ) . toString ( m_kcmLocale ) ) ;
m_timeFormatMap . insert ( QString ( ' S ' ) , ki18n ( " SS " ) . toString ( m_kcmLocale ) ) ;
m_timeFormatMap . insert ( QString ( ' p ' ) , ki18n ( " AMPM " ) . toString ( m_kcmLocale ) ) ;
QStringList formatList ;
QString cValue = m_cSettings . readEntry ( " TimeFormat " , QString ( ) ) ;
formatList . append ( posixToUserTime ( m_kcmSettings . readEntry ( " TimeFormat " , cValue ) ) ) ;
formatList . append ( posixToUserTime ( m_defaultSettings . readEntry ( " TimeFormat " , cValue ) ) ) ;
formatList . append ( posixToUserTime ( m_countrySettings . readEntry ( " TimeFormat " , cValue ) ) ) ;
formatList . append ( posixToUserTime ( cValue ) ) ;
// TODO convert these to POSIX and US format!
QString formats = ki18nc ( " some reasonable time formats for the language " ,
" HH:MM:SS \n "
" pH:MM:SS AMPM " ) . toString ( m_kcmLocale ) ;
formatList . append ( formats . split ( QString : : fromLatin1 ( " \n " ) ) ) ;
formatList . removeDuplicates ( ) ;
m_ui - > m_comboTimeFormat - > clear ( ) ;
m_ui - > m_comboTimeFormat - > addItems ( formatList ) ;
setTimeFormat ( m_kcmSettings . readEntry ( " TimeFormat " , QString ( ) ) ) ;
m_ui - > m_comboTimeFormat - > blockSignals ( false ) ;
}
void KCMLocale : : defaultTimeFormat ( )
{
setTimeFormat ( m_defaultSettings . readEntry ( " TimeFormat " , QString ( ) ) ) ;
}
void KCMLocale : : changedTimeFormat ( const QString & newValue )
{
setItem ( " TimeFormat " , userToPosixTime ( newValue ) ,
m_ui - > m_comboTimeFormat , m_ui - > m_buttonDefaultTimeFormat ) ;
m_kcmLocale - > setTimeFormat ( m_kcmSettings . readEntry ( " TimeFormat " , QString ( ) ) ) ;
updateSample ( ) ;
}
void KCMLocale : : setTimeFormat ( const QString & newValue )
{
setItem ( " TimeFormat " , newValue ,
m_ui - > m_comboTimeFormat , m_ui - > m_buttonDefaultTimeFormat ) ;
QString value = m_kcmSettings . readEntry ( " TimeFormat " , QString ( ) ) ;
m_ui - > m_comboTimeFormat - > setEditText ( posixToUserTime ( value ) ) ;
m_kcmLocale - > setTimeFormat ( value ) ;
updateSample ( ) ;
}
QString KCMLocale : : dayPeriodText ( const QString & dayPeriod )
{
// If you get here with an empty dayPeriod, this is not the cause, merely a symptom of the
// real bug. You need to find out why it is empty otherwise time parse/format will break.
Q_ASSERT ( ! dayPeriod . isEmpty ( ) ) ;
return dayPeriod . isEmpty ( ) ? QString ( ) : dayPeriod . split ( QChar : : fromLatin1 ( ' , ' ) ) . at ( 2 ) ;
}
QString KCMLocale : : amPeriod ( const QString & longName , const QString & shortName , const QString & narrowName )
{
QStringList dayPeriod ;
dayPeriod . append ( QString : : fromLatin1 ( " am " ) ) ;
dayPeriod . append ( longName ) ;
dayPeriod . append ( shortName ) ;
dayPeriod . append ( narrowName ) ;
dayPeriod . append ( QTime ( 0 , 0 , 0 ) . toString ( QString : : fromLatin1 ( " HH:mm:ss.zzz " ) ) ) ;
dayPeriod . append ( QTime ( 11 , 59 , 59 , 999 ) . toString ( QString : : fromLatin1 ( " HH:mm:ss.zzz " ) ) ) ;
dayPeriod . append ( QChar : : fromLatin1 ( ' 0 ' ) ) ;
dayPeriod . append ( QString : : fromLatin1 ( " 12 " ) ) ;
return dayPeriod . join ( QChar : : fromLatin1 ( ' , ' ) ) ;
}
QString KCMLocale : : pmPeriod ( const QString & longName , const QString & shortName , const QString & narrowName )
{
QStringList dayPeriod ;
dayPeriod . append ( QString : : fromLatin1 ( " pm " ) ) ;
dayPeriod . append ( longName ) ;
dayPeriod . append ( shortName ) ;
dayPeriod . append ( narrowName ) ;
dayPeriod . append ( QTime ( 12 , 0 , 0 ) . toString ( QString : : fromLatin1 ( " HH:mm:ss.zzz " ) ) ) ;
dayPeriod . append ( QTime ( 23 , 59 , 59 , 999 ) . toString ( QString : : fromLatin1 ( " HH:mm:ss.zzz " ) ) ) ;
dayPeriod . append ( QChar : : fromLatin1 ( ' 0 ' ) ) ;
dayPeriod . append ( QString : : fromLatin1 ( " 12 " ) ) ;
return dayPeriod . join ( QChar : : fromLatin1 ( ' , ' ) ) ;
}
void KCMLocale : : initAmPmSymbols ( )
{
m_ui - > m_comboAmSymbol - > blockSignals ( true ) ;
m_ui - > m_comboPmSymbol - > blockSignals ( true ) ;
m_ui - > m_labelAmSymbol - > setText ( ki18n ( " AM symbol: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can set the text to be displayed for AM.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboAmSymbol - > setToolTip ( helpText ) ;
m_ui - > m_comboAmSymbol - > setWhatsThis ( helpText ) ;
m_ui - > m_labelPmSymbol - > setText ( ki18n ( " PM symbol: " ) . toString ( m_kcmLocale ) ) ;
helpText = ki18n ( " <p>Here you can set the text to be displayed for PM.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboPmSymbol - > setToolTip ( helpText ) ;
m_ui - > m_comboPmSymbol - > setWhatsThis ( helpText ) ;
QStringList formatList ;
formatList . append ( m_kcmLocale - > dayPeriodText ( QTime ( 0 , 0 , 0 ) ) ) ;
formatList . append ( m_defaultLocale - > dayPeriodText ( QTime ( 0 , 0 , 0 ) ) ) ;
formatList . removeDuplicates ( ) ;
m_ui - > m_comboAmSymbol - > clear ( ) ;
m_ui - > m_comboAmSymbol - > addItems ( formatList ) ;
formatList . clear ( ) ;
formatList . append ( m_kcmLocale - > dayPeriodText ( QTime ( 12 , 0 , 0 ) ) ) ;
formatList . append ( m_defaultLocale - > dayPeriodText ( QTime ( 12 , 0 , 0 ) ) ) ;
formatList . removeDuplicates ( ) ;
m_ui - > m_comboPmSymbol - > clear ( ) ;
m_ui - > m_comboPmSymbol - > addItems ( formatList ) ;
setAmPmPeriods ( m_kcmSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ,
m_kcmSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) ;
m_ui - > m_comboAmSymbol - > setEditText ( dayPeriodText ( m_kcmSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ) ) ;
m_ui - > m_comboPmSymbol - > setEditText ( dayPeriodText ( m_kcmSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) ) ;
m_ui - > m_comboAmSymbol - > blockSignals ( false ) ;
m_ui - > m_comboPmSymbol - > blockSignals ( false ) ;
}
void KCMLocale : : setAmPmPeriods ( const QString & amPeriod , const QString & pmPeriod )
{
// If either setting is locked down by Kiosk, then don't let the user make any changes, and disable the widgets
if ( m_userSettings . isEntryImmutable ( " DayPeriod1 " ) | |
m_userSettings . isEntryImmutable ( " DayPeriod2 " ) ) {
m_ui - > m_comboAmSymbol - > setEnabled ( false ) ;
m_ui - > m_buttonDefaultAmSymbol - > setEnabled ( false ) ;
m_ui - > m_comboPmSymbol - > setEnabled ( false ) ;
m_ui - > m_buttonDefaultPmSymbol - > setEnabled ( false ) ;
} else {
m_ui - > m_comboAmSymbol - > setEnabled ( true ) ;
m_ui - > m_comboPmSymbol - > setEnabled ( true ) ;
m_ui - > m_buttonDefaultAmSymbol - > setEnabled ( false ) ;
m_ui - > m_buttonDefaultPmSymbol - > setEnabled ( false ) ;
m_kcmSettings . writeEntry ( " DayPeriod1 " , amPeriod ) ;
m_kcmSettings . writeEntry ( " DayPeriod2 " , pmPeriod ) ;
// If either value is not the default then both values must be set in the user settings
if ( amPeriod ! = m_defaultSettings . readEntry ( " DayPeriod1 " , QString ( ) ) | |
pmPeriod ! = m_defaultSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) {
m_userSettings . writeEntry ( " DayPeriod1 " , amPeriod , KConfig : : Persistent | KConfig : : Global ) ;
m_userSettings . writeEntry ( " DayPeriod2 " , pmPeriod , KConfig : : Persistent | KConfig : : Global ) ;
} else { // Is the default so delete any user setting
m_userSettings . deleteEntry ( " DayPeriod1 " , KConfig : : Persistent | KConfig : : Global ) ;
m_userSettings . deleteEntry ( " DayPeriod2 " , KConfig : : Persistent | KConfig : : Global ) ;
}
if ( m_kcmSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ! =
m_defaultSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ) {
m_ui - > m_buttonDefaultAmSymbol - > setEnabled ( true ) ;
}
if ( m_kcmSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ! =
m_defaultSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) {
m_ui - > m_buttonDefaultPmSymbol - > setEnabled ( true ) ;
}
checkIfChanged ( ) ;
// No api to set, so need to force reload the locale
m_kcmConfig - > markAsClean ( ) ;
m_kcmLocale - > setCountry ( m_kcmSettings . readEntry ( " Country " , QString ( ) ) , m_kcmConfig . data ( ) ) ;
m_kcmLocale - > setCalendar ( m_kcmSettings . readEntry ( " CalendarSystem " , QString ( ) ) ) ;
}
updateSample ( ) ;
}
void KCMLocale : : defaultAmSymbol ( )
{
setAmPmPeriods ( m_defaultSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ,
m_kcmSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) ;
m_ui - > m_comboAmSymbol - > setEditText ( dayPeriodText ( m_kcmSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ) ) ;
}
void KCMLocale : : changedAmSymbol ( const QString & newValue )
{
QStringList dayPeriod = m_defaultSettings . readEntry ( " DayPeriod1 " , QString ( ) ) . split ( ' , ' ) ;
dayPeriod [ 2 ] = newValue ;
setAmPmPeriods ( dayPeriod . join ( QChar : : fromLatin1 ( ' , ' ) ) , m_kcmSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) ;
}
void KCMLocale : : defaultPmSymbol ( )
{
setAmPmPeriods ( m_kcmSettings . readEntry ( " DayPeriod1 " , QString ( ) ) ,
m_defaultSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) ;
m_ui - > m_comboPmSymbol - > setEditText ( dayPeriodText ( m_kcmSettings . readEntry ( " DayPeriod2 " , QString ( ) ) ) ) ;
}
void KCMLocale : : changedPmSymbol ( const QString & newValue )
{
QStringList dayPeriod = m_defaultSettings . readEntry ( " DayPeriod2 " , QString ( ) ) . split ( ' , ' ) ;
dayPeriod [ 2 ] = newValue ;
setAmPmPeriods ( m_kcmSettings . readEntry ( " DayPeriod1 " , QString ( ) ) , dayPeriod . join ( QChar : : fromLatin1 ( ' , ' ) ) ) ;
}
void KCMLocale : : initDateFormat ( )
{
m_ui - > m_comboDateFormat - > blockSignals ( true ) ;
m_ui - > m_labelDateFormat - > setText ( ki18n ( " Long date format: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>The text in this textbox will be used to format long dates. "
" The sequences below will be replaced:</p> "
" <table> "
" <tr> "
" <td><b>YYYY</b></td> "
" <td>The year with century as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>YY</b></td> "
" <td>The year without century as a decimal number (00-99).</td> "
" </tr> "
" <tr> "
" <td><b>MM</b></td> "
" <td>The month as a decimal number (01-12).</td> "
" </tr> "
" <tr> "
" <td><b>mM</b></td> "
" <td>The month as a decimal number (1-12).</td> "
" </tr> "
" <tr> "
" <td><b>SHORTMONTH</b></td> "
" <td>The first three characters of the month name.</td> "
" </tr> "
" <tr> "
" <td><b>MONTH</b></td> "
" <td>The full month name.</td> "
" </tr> "
" <tr> "
" <td><b>DD</b></td> "
" <td>The day of month as a decimal number (01-31).</td> "
" </tr> "
" <tr> "
" <td><b>dD</b></td> "
" <td>The day of month as a decimal number (1-31).</td> "
" </tr> "
" <tr> "
" <td><b>SHORTWEEKDAY</b></td> "
" <td>The first three characters of the weekday name.</td> "
" </tr> "
" <tr> "
" <td><b>WEEKDAY</b></td> "
" <td>The full weekday name.</td> "
" </tr> "
" <tr> "
" <td><b>ERAYEAR</b></td> "
" <td>The Era Year in local format (e.g. 2000 AD).</td> "
" </tr> "
" <tr> "
" <td><b>SHORTERANAME</b></td> "
" <td>The short Era Name.</td> "
" </tr> "
" <tr> "
" <td><b>YEARINERA</b></td> "
" <td>The Year in Era as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>DAYOFYEAR</b></td> "
" <td>The Day of Year as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>ISOWEEK</b></td> "
" <td>The ISO Week as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>DAYOFISOWEEK</b></td> "
" <td>The Day of the ISO Week as a decimal number.</td> "
" </tr> "
" </table> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboDateFormat - > setToolTip ( helpText ) ;
m_ui - > m_comboDateFormat - > setWhatsThis ( helpText ) ;
m_dateFormatMap . clear ( ) ;
m_dateFormatMap . insert ( QString ( ' Y ' ) , ki18n ( " YYYY " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' y ' ) , ki18n ( " YY " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' n ' ) , ki18n ( " mM " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' m ' ) , ki18nc ( " Month " , " MM " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' b ' ) , ki18n ( " SHORTMONTH " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' B ' ) , ki18n ( " MONTH " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' e ' ) , ki18n ( " dD " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' d ' ) , ki18n ( " DD " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' a ' ) , ki18n ( " SHORTWEEKDAY " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' A ' ) , ki18n ( " WEEKDAY " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( " EY " , ki18n ( " ERAYEAR " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( " Ey " , ki18n ( " YEARINERA " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( " EC " , ki18n ( " SHORTERANAME " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' j ' ) , ki18n ( " DAYOFYEAR " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' V ' ) , ki18n ( " ISOWEEK " ) . toString ( m_kcmLocale ) ) ;
m_dateFormatMap . insert ( QString ( ' u ' ) , ki18n ( " DAYOFISOWEEK " ) . toString ( m_kcmLocale ) ) ;
QStringList formatList ;
QString cValue = m_cSettings . readEntry ( " DateFormat " , QString ( ) ) ;
formatList . append ( posixToUserDate ( m_kcmSettings . readEntry ( " DateFormat " , cValue ) ) ) ;
formatList . append ( posixToUserDate ( m_defaultSettings . readEntry ( " DateFormat " , cValue ) ) ) ;
formatList . append ( posixToUserDate ( m_countrySettings . readEntry ( " DateFormat " , cValue ) ) ) ;
formatList . append ( posixToUserDate ( cValue ) ) ;
// TODO convert these to POSIX and US format!
QString formats = ki18nc ( " some reasonable date formats for the language " ,
" WEEKDAY MONTH dD YYYY \n "
" SHORTWEEKDAY MONTH dD YYYY " ) . toString ( m_kcmLocale ) ;
formatList . append ( formats . split ( QString : : fromLatin1 ( " \n " ) ) ) ;
formatList . removeDuplicates ( ) ;
m_ui - > m_comboDateFormat - > clear ( ) ;
m_ui - > m_comboDateFormat - > addItems ( formatList ) ;
setDateFormat ( m_kcmSettings . readEntry ( " DateFormat " , QString ( ) ) ) ;
m_ui - > m_comboDateFormat - > blockSignals ( false ) ;
}
void KCMLocale : : defaultDateFormat ( )
{
setDateFormat ( m_defaultSettings . readEntry ( " DateFormat " , QString ( ) ) ) ;
}
void KCMLocale : : changedDateFormat ( const QString & newValue )
{
setItem ( " DateFormat " , userToPosixDate ( newValue ) ,
m_ui - > m_comboDateFormat , m_ui - > m_buttonDefaultDateFormat ) ;
m_kcmLocale - > setDateFormat ( m_kcmSettings . readEntry ( " DateFormat " , QString ( ) ) ) ;
updateSample ( ) ;
}
void KCMLocale : : setDateFormat ( const QString & newValue )
{
setItem ( " DateFormat " , newValue ,
m_ui - > m_comboDateFormat , m_ui - > m_buttonDefaultDateFormat ) ;
QString value = m_kcmSettings . readEntry ( " DateFormat " , QString ( ) ) ;
m_ui - > m_comboDateFormat - > setEditText ( posixToUserDate ( value ) ) ;
m_kcmLocale - > setDateFormat ( value ) ;
updateSample ( ) ;
}
void KCMLocale : : initShortDateFormat ( )
{
m_ui - > m_comboShortDateFormat - > blockSignals ( true ) ;
m_ui - > m_labelShortDateFormat - > setText ( ki18n ( " Short date format: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>The text in this textbox will be used to format short dates. "
" For instance, this is used when listing files. The sequences below "
" will be replaced:</p> "
" <table> "
" <tr> "
" <td><b>YYYY</b></td> "
" <td>The year with century as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>YY</b></td> "
" <td>The year without century as a decimal number (00-99).</td> "
" </tr> "
" <tr> "
" <td><b>MM</b></td> "
" <td>The month as a decimal number (01-12).</td> "
" </tr> "
" <tr> "
" <td><b>mM</b></td> "
" <td>The month as a decimal number (1-12).</td> "
" </tr> "
" <tr> "
" <td><b>SHORTMONTH</b></td> "
" <td>The first three characters of the month name.</td> "
" </tr> "
" <tr> "
" <td><b>MONTH</b></td> "
" <td>The full month name.</td> "
" </tr> "
" <tr> "
" <td><b>DD</b></td> "
" <td>The day of month as a decimal number (01-31).</td> "
" </tr> "
" <tr> "
" <td><b>dD</b></td> "
" <td>The day of month as a decimal number (1-31).</td> "
" </tr> "
" <tr> "
" <td><b>SHORTWEEKDAY</b></td> "
" <td>The first three characters of the weekday name.</td> "
" </tr> "
" <tr> "
" <td><b>WEEKDAY</b></td> "
" <td>The full weekday name.</td> "
" </tr> "
" <tr> "
" <td><b>ERAYEAR</b></td> "
" <td>The Era Year in local format (e.g. 2000 AD).</td> "
" </tr> "
" <tr> "
" <td><b>SHORTERANAME</b></td> "
" <td>The short Era Name.</td> "
" </tr> "
" <tr> "
" <td><b>YEARINERA</b></td> "
" <td>The Year in Era as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>DAYOFYEAR</b></td> "
" <td>The Day of Year as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>ISOWEEK</b></td> "
" <td>The ISO Week as a decimal number.</td> "
" </tr> "
" <tr> "
" <td><b>DAYOFISOWEEK</b></td> "
" <td>The Day of the ISO Week as a decimal number.</td> "
" </tr> "
" </table> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboShortDateFormat - > setToolTip ( helpText ) ;
m_ui - > m_comboShortDateFormat - > setWhatsThis ( helpText ) ;
QStringList formatList ;
QString cValue = m_cSettings . readEntry ( " DateFormatShort " , QString ( ) ) ;
formatList . append ( posixToUserDate ( m_kcmSettings . readEntry ( " DateFormatShort " , cValue ) ) ) ;
formatList . append ( posixToUserDate ( m_defaultSettings . readEntry ( " DateFormatShort " , cValue ) ) ) ;
formatList . append ( posixToUserDate ( m_countrySettings . readEntry ( " DateFormatShort " , cValue ) ) ) ;
formatList . append ( posixToUserDate ( cValue ) ) ;
formatList . append ( " YYYY-MM-DD " ) ;
// TODO convert these to POSIX and US format!
QString formats = ki18nc ( " some reasonable short date formats for the language " ,
" YYYY-MM-DD \n "
" dD.mM.YYYY \n "
" DD.MM.YYYY " ) . toString ( m_kcmLocale ) ;
formatList . append ( formats . split ( QString : : fromLatin1 ( " \n " ) ) ) ;
formatList . removeDuplicates ( ) ;
m_ui - > m_comboShortDateFormat - > clear ( ) ;
m_ui - > m_comboShortDateFormat - > addItems ( formatList ) ;
setShortDateFormat ( m_kcmSettings . readEntry ( " DateFormatShort " , QString ( ) ) ) ;
m_ui - > m_comboShortDateFormat - > blockSignals ( false ) ;
}
void KCMLocale : : defaultShortDateFormat ( )
{
setShortDateFormat ( m_defaultSettings . readEntry ( " DateFormatShort " , QString ( ) ) ) ;
}
void KCMLocale : : changedShortDateFormat ( const QString & newValue )
{
setItem ( " DateFormatShort " , userToPosixDate ( newValue ) ,
m_ui - > m_comboShortDateFormat , m_ui - > m_buttonDefaultShortDateFormat ) ;
m_kcmLocale - > setDateFormatShort ( m_kcmSettings . readEntry ( " DateFormatShort " , QString ( ) ) ) ;
updateSample ( ) ;
}
void KCMLocale : : setShortDateFormat ( const QString & newValue )
{
setItem ( " DateFormatShort " , newValue ,
m_ui - > m_comboShortDateFormat , m_ui - > m_buttonDefaultShortDateFormat ) ;
QString value = m_kcmSettings . readEntry ( " DateFormatShort " , QString ( ) ) ;
m_ui - > m_comboShortDateFormat - > setEditText ( posixToUserDate ( value ) ) ;
m_kcmLocale - > setDateFormatShort ( value ) ;
updateSample ( ) ;
}
void KCMLocale : : initMonthNamePossessive ( )
{
m_ui - > m_checkMonthNamePossessive - > blockSignals ( true ) ;
m_ui - > m_labelMonthNamePossessive - > setText ( ki18n ( " Possessive month names: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This option determines whether possessive form of month names "
" should be used in dates.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_checkMonthNamePossessive - > setToolTip ( helpText ) ;
m_ui - > m_checkMonthNamePossessive - > setWhatsThis ( helpText ) ;
m_ui - > m_checkMonthNamePossessive - > setChecked ( m_kcmLocale - > dateMonthNamePossessive ( ) ) ;
setCheckItem ( " DateMonthNamePossessive " , m_kcmSettings . readEntry ( " DateMonthNamePossessive " , false ) ,
m_ui - > m_checkMonthNamePossessive , m_ui - > m_buttonDefaultMonthNamePossessive ) ;
setMonthNamePossessive ( m_kcmSettings . readEntry ( " DateMonthNamePossessive " , false ) ) ;
// Hide the option as it's not usable without ordinal day numbers
m_ui - > m_labelMonthNamePossessive - > setHidden ( true ) ;
m_ui - > m_checkMonthNamePossessive - > setHidden ( true ) ;
m_ui - > m_buttonDefaultMonthNamePossessive - > setHidden ( true ) ;
m_ui - > m_checkMonthNamePossessive - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMonthNamePossessive ( )
{
setMonthNamePossessive ( m_defaultSettings . readEntry ( " DateMonthNamePossessive " , false ) ) ;
}
void KCMLocale : : changedMonthNamePossessive ( bool newValue )
{
setMonthNamePossessive ( newValue ) ;
}
void KCMLocale : : setMonthNamePossessive ( bool newValue )
{
setCheckItem ( " DateMonthNamePossessive " , newValue ,
m_ui - > m_checkMonthNamePossessive , m_ui - > m_buttonDefaultMonthNamePossessive ) ;
m_kcmLocale - > setDateMonthNamePossessive ( m_kcmSettings . readEntry ( " DateMonthNamePossessive " , 0 ) ) ;
updateSample ( ) ;
}
void KCMLocale : : initDateTimeDigitSet ( )
{
m_ui - > m_comboDateTimeDigitSet - > blockSignals ( true ) ;
m_ui - > m_labelDateTimeDigitSet - > setText ( ki18n ( " Digit set: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the set of digits used to display dates and "
" times. If digits other than Arabic are selected, they will appear "
" only if used in the language of the application or the piece of "
" text where the date or time is shown.</p><p>Note that the set of "
" digits used to display numeric and monetary values have to be set "
" separately (see the 'Numbers' or 'Money' tabs).</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboDateTimeDigitSet - > setToolTip ( helpText ) ;
m_ui - > m_comboDateTimeDigitSet - > setWhatsThis ( helpText ) ;
initDigitSetCombo ( m_ui - > m_comboDateTimeDigitSet ) ;
setDateTimeDigitSet ( m_kcmSettings . readEntry ( " DateTimeDigitSet " , 0 ) ) ;
m_ui - > m_comboDateTimeDigitSet - > blockSignals ( false ) ;
}
void KCMLocale : : defaultDateTimeDigitSet ( )
{
setDateTimeDigitSet ( m_defaultSettings . readEntry ( " DateTimeDigitSet " , 0 ) ) ;
}
void KCMLocale : : changedDateTimeDigitSetIndex ( int index )
{
setDateTimeDigitSet ( m_ui - > m_comboDateTimeDigitSet - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setDateTimeDigitSet ( int newValue )
{
setComboItem ( " DateTimeDigitSet " , newValue ,
m_ui - > m_comboDateTimeDigitSet , m_ui - > m_buttonDefaultDateTimeDigitSet ) ;
m_kcmLocale - > setDateTimeDigitSet ( ( KLocale : : DigitSet ) m_kcmSettings . readEntry ( " DateTimeDigitSet " , 0 ) ) ;
}
void KCMLocale : : initPageSize ( )
{
m_ui - > m_comboPageSize - > blockSignals ( true ) ;
m_ui - > m_labelPageSize - > setText ( ki18n ( " Page size: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the default page size to be used in new "
" documents.</p><p>Note that this setting has no effect on printer "
" paper size.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboPageSize - > setToolTip ( helpText ) ;
m_ui - > m_comboPageSize - > setWhatsThis ( helpText ) ;
m_ui - > m_comboPageSize - > clear ( ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A4 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A4 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " US Letter " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Letter ) ) ;
m_ui - > m_comboPageSize - > insertSeparator ( m_ui - > m_comboPageSize - > count ( ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A0 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A0 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A1 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A1 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A2 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A2 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A3 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A3 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A4 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A4 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A5 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A5 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A6 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A6 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A7 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A7 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A8 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A8 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " A9 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : A9 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B0 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B0 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B1 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B1 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B2 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B2 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B3 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B3 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B4 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B4 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B5 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B5 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B6 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B6 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B7 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B7 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B8 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B8 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B9 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B9 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " B10 " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : B10 ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " C5 Envelope " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : C5E ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " US Common 10 Envelope " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Comm10E ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " DLE Envelope " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : DLE ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " Executive " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Executive ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " Folio " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Folio ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " Ledger " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Ledger ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " US Legal " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Legal ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " US Letter " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Letter ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " Tabloid " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Tabloid ) ) ;
m_ui - > m_comboPageSize - > addItem ( ki18nc ( " Page size " , " Custom " ) . toString ( m_kcmLocale ) ,
QVariant ( QPrinter : : Custom ) ) ;
setPageSize ( m_kcmSettings . readEntry ( " PageSize " , 0 ) ) ;
m_ui - > m_comboPageSize - > blockSignals ( false ) ;
}
void KCMLocale : : defaultPageSize ( )
{
setPageSize ( m_defaultSettings . readEntry ( " PageSize " , 0 ) ) ;
}
void KCMLocale : : changedPageSizeIndex ( int index )
{
setPageSize ( m_ui - > m_comboPageSize - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setPageSize ( int newValue )
{
setComboItem ( " PageSize " , newValue ,
m_ui - > m_comboPageSize , m_ui - > m_buttonDefaultPageSize ) ;
m_kcmLocale - > setPageSize ( m_kcmSettings . readEntry ( " PageSize " , 0 ) ) ;
}
void KCMLocale : : initMeasureSystem ( )
{
m_ui - > m_comboMeasureSystem - > blockSignals ( true ) ;
m_ui - > m_labelMeasureSystem - > setText ( ki18n ( " Measurement system: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>Here you can define the measurement system to use.</p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboMeasureSystem - > setToolTip ( helpText ) ;
m_ui - > m_comboMeasureSystem - > setWhatsThis ( helpText ) ;
m_ui - > m_comboMeasureSystem - > clear ( ) ;
m_ui - > m_comboMeasureSystem - > addItem ( ki18n ( " Metric System " ) . toString ( m_kcmLocale ) , ( int ) KLocale : : Metric ) ;
m_ui - > m_comboMeasureSystem - > addItem ( ki18n ( " Imperial System " ) . toString ( m_kcmLocale ) , ( int ) KLocale : : Imperial ) ;
setMeasureSystem ( m_kcmSettings . readEntry ( " MeasureSystem " , 0 ) ) ;
m_ui - > m_comboMeasureSystem - > blockSignals ( false ) ;
}
void KCMLocale : : defaultMeasureSystem ( )
{
setMeasureSystem ( m_defaultSettings . readEntry ( " MeasureSystem " , 0 ) ) ;
}
void KCMLocale : : changedMeasureSystemIndex ( int index )
{
setMeasureSystem ( m_ui - > m_comboMeasureSystem - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setMeasureSystem ( int newValue )
{
setComboItem ( " MeasureSystem " , newValue ,
m_ui - > m_comboMeasureSystem , m_ui - > m_buttonDefaultMeasureSystem ) ;
m_kcmLocale - > setMeasureSystem ( ( KLocale : : MeasureSystem ) m_kcmSettings . readEntry ( " MeasureSystem " , 0 ) ) ;
}
void KCMLocale : : initBinaryUnitDialect ( )
{
m_ui - > m_comboBinaryUnitDialect - > blockSignals ( true ) ;
m_ui - > m_labelBinaryUnitDialect - > setText ( ki18n ( " Byte size units: " ) . toString ( m_kcmLocale ) ) ;
QString helpText = ki18n ( " <p>This changes the units used by most KDE programs to display "
" numbers counted in bytes. Traditionally \" kilobytes \" meant units "
" of 1024, instead of the metric 1000, for most (but not all) byte "
" sizes. "
" <ul> "
" <li>To reduce confusion you can use the recently standardized IEC "
" units which are always in multiples of 1024.</li> "
" <li>You can also select metric, which is always in units of 1000.</li> "
" <li>Selecting JEDEC restores the older-style units used in KDE 3.5 "
" and some other operating systems.</li> "
" </ul> "
" </p> " ) . toString ( m_kcmLocale ) ;
m_ui - > m_comboBinaryUnitDialect - > setToolTip ( helpText ) ;
m_ui - > m_comboBinaryUnitDialect - > setWhatsThis ( helpText ) ;
m_ui - > m_comboBinaryUnitDialect - > clear ( ) ,
m_ui - > m_comboBinaryUnitDialect - > addItem ( ki18nc ( " Unit of binary measurement " , " IEC Units (KiB, MiB, etc) " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : IECBinaryDialect ) ) ;
m_ui - > m_comboBinaryUnitDialect - > addItem ( ki18nc ( " Unit of binary measurement " , " JEDEC Units (KB, MB, etc) " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : JEDECBinaryDialect ) ) ;
m_ui - > m_comboBinaryUnitDialect - > addItem ( ki18nc ( " Unit of binary measurement " , " Metric Units (kB, MB, etc) " ) . toString ( m_kcmLocale ) ,
QVariant ( KLocale : : MetricBinaryDialect ) ) ;
setBinaryUnitDialect ( m_kcmSettings . readEntry ( " BinaryUnitDialect " , 0 ) ) ;
m_ui - > m_comboBinaryUnitDialect - > blockSignals ( false ) ;
}
void KCMLocale : : defaultBinaryUnitDialect ( )
{
setBinaryUnitDialect ( m_defaultSettings . readEntry ( " BinaryUnitDialect " , 0 ) ) ;
}
void KCMLocale : : changedBinaryUnitDialectIndex ( int index )
{
setBinaryUnitDialect ( m_ui - > m_comboBinaryUnitDialect - > itemData ( index ) . toInt ( ) ) ;
}
void KCMLocale : : setBinaryUnitDialect ( int newValue )
{
setComboItem ( " BinaryUnitDialect " , newValue ,
m_ui - > m_comboBinaryUnitDialect , m_ui - > m_buttonDefaultBinaryUnitDialect ) ;
m_kcmLocale - > setBinaryUnitDialect ( ( KLocale : : BinaryUnitDialect )
m_kcmSettings . readEntry ( " BinaryUnitDialect " , 0 ) ) ;
m_ui - > m_labelBinaryUnitSample - > setText ( ki18nc ( " Example test for binary unit dialect " ,
" Example: 2000 bytes equals %1 " )
. subs ( m_kcmLocale - > formatByteSize ( 2000 , 2 ) )
. toString ( m_kcmLocale ) ) ;
}
QString KCMLocale : : posixToUserTime ( const QString & posixFormat ) const
{
return posixToUser ( posixFormat , m_timeFormatMap ) ;
}
QString KCMLocale : : posixToUserDate ( const QString & posixFormat ) const
{
return posixToUser ( posixFormat , m_dateFormatMap ) ;
}
QString KCMLocale : : posixToUser ( const QString & posixFormat , const QMap < QString , QString > & map ) const
{
QString result ;
bool escaped = false ;
for ( int pos = 0 ; pos < posixFormat . length ( ) ; + + pos ) {
QChar c = posixFormat . at ( pos ) ;
if ( escaped ) {
QString key = c ;
if ( c = = ' E ' ) {
key + = posixFormat . at ( + + pos ) ;
}
QString val = map . value ( key , QString ( ) ) ;
if ( ! val . isEmpty ( ) ) {
result + = val ;
} else {
result + = key ;
}
escaped = false ;
} else if ( c = = ' % ' ) {
escaped = true ;
} else {
result + = c ;
}
}
return result ;
}
QString KCMLocale : : userToPosixTime ( const QString & userFormat ) const
{
return userToPosix ( userFormat , m_timeFormatMap ) ;
}
QString KCMLocale : : userToPosixDate ( const QString & userFormat ) const
{
return userToPosix ( userFormat , m_dateFormatMap ) ;
}
QString KCMLocale : : userToPosix ( const QString & userFormat , const QMap < QString , QString > & map ) const
{
QMultiMap < int , QString > sizeMap ;
QMap < QString , QString > : : const_iterator it = map . constBegin ( ) ;
while ( it ! = map . constEnd ( ) ) {
sizeMap . insert ( it . value ( ) . length ( ) , it . key ( ) ) ;
+ + it ;
}
QString result ;
for ( int pos = 0 ; pos < userFormat . length ( ) ; + + pos ) {
bool matchFound = false ;
QMapIterator < int , QString > it2 ( sizeMap ) ;
it2 . toBack ( ) ;
while ( ! matchFound & & it2 . hasPrevious ( ) ) {
it2 . previous ( ) ;
QString s = map . value ( it2 . value ( ) ) ;
if ( userFormat . mid ( pos , s . length ( ) ) = = s ) {
result + = ' % ' ;
result + = it2 . value ( ) ;
pos + = s . length ( ) - 1 ;
matchFound = true ;
}
}
if ( ! matchFound ) {
QChar c = userFormat . at ( pos ) ;
if ( c = = ' % ' ) {
result + = c ;
}
result + = c ;
}
}
return result ;
}
2015-02-27 09:28:46 +00:00
# include "moc_kcmlocale.cpp"