• Skip to content
  • Skip to link menu
KDE 4.7 API Reference
  • KDE API Reference
  • kdelibs
  • KDE Home
  • Contact Us
 

KDECore

klocale_p.h
Go to the documentation of this file.
00001 /*  This file is part of the KDE libraries
00002  *  Copyright 2009 David Faure <faure@kde.org>
00003  *  Copyright 2010 John Layt <john@layt.net>
00004  *
00005  *  This library is free software; you can redistribute it and/or
00006  *  modify it under the terms of the GNU Library General Public
00007  *  License as published by the Free Software Foundation; either
00008  *  version 2 of the License, or (at your option) any later version.
00009  *
00010  *  This library is distributed in the hope that it will be useful,
00011  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
00012  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00013  *  Library General Public License for more details.
00014  *
00015  *  You should have received a copy of the GNU Library General Public License
00016  *  along with this library; see the file COPYING.LIB.  If not, write to
00017  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
00018  *  Boston, MA 02110-1301, USA.
00019  */
00020 
00021 #ifndef KLOCALE_P_H
00022 #define KLOCALE_P_H
00023 
00024 #include "klocale.h"
00025 
00026 class QMutex;
00027 
00028 class KCatalog;
00029 class KDayPeriod;
00030 
00031 // Used by both KLocale and KLocalizedString, since they call each other.
00032 QMutex* kLocaleMutex();
00033 
00034 class KLocalePrivate
00035 {
00036 public:
00045     KLocalePrivate(KLocale *q_ptr);
00046 
00050     KLocalePrivate(const KLocalePrivate &rhs);
00051 
00055     KLocalePrivate &operator=(const KLocalePrivate &rhs);
00056 
00060     virtual ~KLocalePrivate();
00061 
00062     /**************************
00063      **    Initialization    **
00064      **************************/
00065 
00066 protected:
00067 
00071     KConfig *config();
00072 
00076     virtual void copy(const KLocalePrivate &rhs);
00077 
00081     virtual void initFormat();
00082 
00086     virtual void init(const QString& catalogName, const QString &language, const QString &country,
00087                       KSharedConfig::Ptr persistantconfig, KConfig *tempConfig);
00088 
00092     virtual void initConfig(KConfig *config);
00093 
00094     /**************************
00095      **   Country settings   **
00096      **************************/
00097 
00098 protected:
00099 
00105     virtual void initCountry(const QString &country, const QString &configCountry);
00106 
00111     virtual QString systemCountry() const;
00112 
00113 public:
00114 
00119     virtual bool setCountry(const QString &country, KConfig *config);
00120 
00125     virtual QString country() const;
00126 
00131     static QString defaultCountry();
00132 
00137     virtual QStringList allCountriesList() const;
00138 
00143     virtual QString countryCodeToName(const QString &country) const;
00144 
00149     bool setCountryDivisionCode(const QString & countryDivision);
00150 
00155     QString countryDivisionCode() const;
00156 
00157     /**************************
00158      **  Language settings   **
00159      **************************/
00160 
00161 protected:
00162 
00166     static void getLanguagesFromVariable(QStringList &list, const char *variable, bool isLanguageList = false);
00167 
00171     virtual QStringList systemLanguageList() const;
00172 
00182     virtual void initLanguageList(const QString &language, const QString &configLanguages, bool useEnv);
00183 
00187     virtual bool useDefaultLanguage() const;
00188 
00189 public:
00190 
00195     virtual bool setLanguage(const QString &language, KConfig *config);
00196 
00201     virtual bool setLanguage(const QStringList &languages);
00202 
00207     virtual QString language() const;
00208 
00213     virtual QStringList languageList() const;
00214 
00219     virtual QStringList allLanguagesList();
00220 
00225     virtual QStringList installedLanguages();
00226 
00231     static QString defaultLanguage();
00232 
00237     virtual QString languageCodeToName(const QString &language);
00238 
00244     virtual bool nounDeclension() const;
00245 
00251     static QString langLookup(const QString &fname, const char *rtype = "html");
00252 
00257     virtual bool useTranscript() const;
00258 
00259     /**************************
00260      **   Catalog settings   **
00261      **************************/
00262 
00263 protected:
00264 
00268     virtual void initMainCatalogs();
00269 
00276     virtual void updateCatalogs();
00277 
00278 public:
00279 
00284     static void setMainCatalog(const char *catalog);
00285 
00290     virtual void setActiveCatalog(const QString &catalog);
00291 
00296     virtual void insertCatalog(const QString &catalog);
00297 
00302     virtual void removeCatalog(const QString &catalog);
00303 
00308     virtual void copyCatalogsTo(KLocale *locale);
00309 
00314     virtual void translateRawFrom(const char *catname, const char *msgctxt, const char *msgid, const char *msgid_plural = 0,
00315                                   unsigned long n = 0, QString *language = 0, QString *translation = 0) const;
00316 
00321     virtual QString translateQt(const char *context, const char *sourceText, const char *comment) const;
00322 
00327     virtual bool isApplicationTranslatedInto(const QString &language);
00328 
00329     /***************************
00330      **   Calendar settings   **
00331      ***************************/
00332 
00333 protected:
00334 
00338     virtual KLocale::CalendarSystem calendarTypeToCalendarSystem(const QString &calendarType) const;
00339 
00343     virtual QString calendarSystemToCalendarType(KLocale::CalendarSystem) const;
00344 
00345 public:
00346 
00351     virtual void setCalendar(const QString &calendarType);
00352 
00357     virtual void setCalendarSystem(KLocale::CalendarSystem);
00358 
00363     virtual QString calendarType() const;
00364 
00369     KLocale::CalendarSystem calendarSystem() const;
00370 
00375     virtual const KCalendarSystem *calendar();
00376 
00381     void setWeekNumberSystem(KLocale::WeekNumberSystem weekNumberSystem);
00382 
00387     KLocale::WeekNumberSystem weekNumberSystem();
00388 
00393     virtual void setWeekStartDay(int day);
00394 
00399     virtual int weekStartDay() const;
00400 
00405     virtual void setWorkingWeekStartDay(int day);
00406 
00411     virtual int workingWeekStartDay() const;
00412 
00417     virtual void setWorkingWeekEndDay(int day);
00418 
00423     virtual int workingWeekEndDay() const;
00424 
00429     virtual void setWeekDayOfPray(int day);
00430 
00435     virtual int weekDayOfPray() const;
00436 
00437     /***************************
00438      **  Date/Time settings   **
00439      ***************************/
00440 
00441 protected:
00442 
00446     virtual void initDayPeriods(const KConfigGroup &cg);
00447 
00448 public:
00449 
00454     virtual void setDateFormat(const QString &format);
00455 
00460     virtual QString dateFormat() const;
00461 
00466     virtual void setDateFormatShort(const QString &format);
00467 
00472     virtual QString dateFormatShort() const;
00473 
00478     virtual void setTimeFormat(const QString &format);
00479 
00484     virtual QString timeFormat() const;
00485 
00490     virtual void setDateTimeDigitSet(KLocale::DigitSet digitSet);
00491 
00496     virtual KLocale::DigitSet dateTimeDigitSet() const;
00497 
00502     virtual void setDateMonthNamePossessive(bool possessive);
00503 
00508     virtual bool dateMonthNamePossessive() const;
00509 
00514     virtual bool use12Clock() const;
00515 
00520     virtual void setDayPeriods(const QList<KDayPeriod> &dayPeriods);
00521 
00526     virtual QList<KDayPeriod> dayPeriods() const;
00527 
00532     virtual KDayPeriod dayPeriodForTime(const QTime &time) const;
00533 
00538     virtual QString formatDate(const QDate &date, KLocale::DateFormat format = KLocale::LongDate);
00539 
00544     virtual QDate readDate(const QString &str, bool *ok = 0);
00545 
00550     virtual QDate readDate(const QString &intstr, const QString &fmt, bool *ok = 0);
00551 
00556     virtual QDate readDate(const QString &str, KLocale::ReadDateFlags flags, bool *ok = 0);
00557 
00563     virtual QString formatTime(const QTime &pTime, bool includeSecs = false, bool isDuration = false) const;
00564 
00569     virtual QString formatLocaleTime(const QTime &pTime, KLocale::TimeFormatOptions options = KLocale::TimeDefault) const;
00570 
00575     virtual QTime readTime(const QString &str, bool *ok = 0) const;
00576 
00582     virtual QTime readTime(const QString &str, KLocale::ReadTimeFlags flags, bool *ok = 0) const;
00583 
00588     virtual QTime readLocaleTime(const QString &str, bool *ok = 0,
00589                                  KLocale::TimeFormatOptions options = KLocale::TimeDefault,
00590                                  KLocale::TimeProcessingOptions processing = KLocale::ProcessNonStrict) const;
00591 
00596     static QString formatDateTime(const KLocale *locale, const QDateTime &dateTime, KLocale::DateFormat,
00597                                   bool includeSeconds, int daysToNow, int secsToNow);
00598 
00603     virtual QString formatDateTime(const QDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate,
00604                                    bool includeSecs = false) const;
00605 
00610     virtual QString formatDateTime(const KDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate,
00611                                    KLocale::DateTimeFormatOptions options = 0);
00612 
00617     virtual QString formatDuration(unsigned long mSec) const;
00618 
00623     virtual QString prettyFormatDuration(unsigned long mSec) const;
00624 
00625     /***************************
00626      **  Digit Set settings   **
00627      ***************************/
00628 
00629 protected:
00630 
00634     static QString toArabicDigits(const QString &str);
00635 
00639     static QString digitSetString(KLocale::DigitSet digitSet);
00640 
00641 public:
00642 
00647     virtual QList<KLocale::DigitSet> allDigitSetsList() const;
00648 
00653     virtual QString digitSetToName(KLocale::DigitSet digitSet, bool withDigits = false) const;
00654 
00659     virtual QString convertDigits(const QString &str, KLocale::DigitSet digitSet, bool ignoreContext = false) const;
00660 
00661     /***************************
00662      **    Number settings    **
00663      ***************************/
00664 
00665 public:
00666 
00671     virtual void setDecimalPlaces(int digits);
00672 
00677     virtual int decimalPlaces() const;
00678 
00683     virtual void setDecimalSymbol(const QString &symbol);
00684 
00689     virtual QString decimalSymbol() const;
00690 
00696     virtual void setThousandsSeparator(const QString &separator);
00697 
00703     virtual QString thousandsSeparator() const;
00704 
00710     virtual void setNumericDigitGrouping(QList<int> groupList);
00711 
00717     virtual QList<int> numericDigitGrouping() const;
00718 
00723     virtual void setPositiveSign(const QString &sign);
00724 
00729     virtual QString positiveSign() const;
00730 
00735     virtual void setNegativeSign(const QString &sign);
00736 
00741     virtual QString negativeSign() const;
00742 
00747     virtual void setDigitSet(KLocale::DigitSet digitSet);
00748 
00753     virtual KLocale::DigitSet digitSet() const;
00754 
00759     virtual QString formatNumber(double num, int precision = -1) const;
00760 
00765     virtual QString formatNumber(const QString &numStr, bool round = true, int precision = -1) const;
00766 
00771     virtual QString formatLong(long num) const;
00772 
00777     virtual double readNumber(const QString &numStr, bool *ok = 0) const;
00778 
00779     /**************************
00780      **  Currency settings   **
00781      **************************/
00782 
00783 protected:
00784 
00788     virtual void initCurrency();
00789 
00790 public:
00791 
00796     virtual void setCurrencyCode(const QString &newCurrencyCode);
00797 
00802     virtual QString currencyCode() const;
00803 
00808     virtual KCurrencyCode *currency();
00809 
00814     static QString defaultCurrencyCode();
00815 
00820     virtual QStringList currencyCodeList() const;
00821 
00822     /***************************
00823      **    Money settings     **
00824      ***************************/
00825 
00826 public:
00827 
00832     virtual void setCurrencySymbol(const QString &symbol);
00833 
00838     virtual QString currencySymbol() const;
00839 
00844     virtual void setMonetaryDecimalSymbol(const QString &symbol);
00845 
00850     virtual QString monetaryDecimalSymbol() const;
00851 
00857     virtual void setMonetaryThousandsSeparator(const QString &separator);
00858 
00864     virtual QString monetaryThousandsSeparator() const;
00865 
00871     virtual void setMonetaryDigitGrouping(QList<int> groupList);
00872 
00878     virtual QList<int> monetaryDigitGrouping() const;
00879 
00884     virtual void setMonetaryDecimalPlaces(int digits);
00885 
00890     virtual int monetaryDecimalPlaces() const;
00891 
00897     virtual void setPositivePrefixCurrencySymbol(bool prefix);
00898 
00903     virtual bool positivePrefixCurrencySymbol() const;
00904 
00910     virtual void setNegativePrefixCurrencySymbol(bool prefix);
00911 
00916     virtual bool negativePrefixCurrencySymbol() const;
00917 
00922     virtual void setPositiveMonetarySignPosition(KLocale::SignPosition signpos);
00923 
00928     virtual KLocale::SignPosition positiveMonetarySignPosition() const;
00929 
00934     virtual void setNegativeMonetarySignPosition(KLocale::SignPosition signpos);
00935 
00940     virtual KLocale::SignPosition negativeMonetarySignPosition() const;
00941 
00946     virtual void setMonetaryDigitSet(KLocale::DigitSet digitSet);
00947 
00952     virtual KLocale::DigitSet monetaryDigitSet() const;
00953 
00958     virtual QString formatMoney(double num, const QString &currency = QString(), int precision = -1) const;
00959 
00964     virtual double readMoney(const QString &numStr, bool *ok = 0) const;
00965 
00966     /***************************
00967      **    Units settings     **
00968      ***************************/
00969 
00970 protected:
00971 
00976     QList<QString> dialectUnitsList(KLocale::BinaryUnitDialect dialect);
00977 
00978     enum DurationType {
00979         DaysDurationType = 0,
00980         HoursDurationType,
00981         MinutesDurationType,
00982         SecondsDurationType
00983     };
00984 
00988     static QString formatSingleDuration(KLocalePrivate::DurationType durationType, int n);
00989 
00990 public:
00991 
00996    virtual KLocale::BinaryUnitDialect binaryUnitDialect() const;
00997 
01002     virtual void setBinaryUnitDialect(KLocale::BinaryUnitDialect newDialect);
01003 
01008     virtual QString formatByteSize(double size);
01009 
01014     virtual QString formatByteSize(double size, int precision,
01015                                    KLocale::BinaryUnitDialect dialect = KLocale::DefaultBinaryDialect,
01016                                    KLocale:: BinarySizeUnits specificUnit = KLocale::DefaultBinaryUnits);
01017 
01022     virtual void setPageSize(int paperFormat);
01023 
01028     virtual int pageSize() const;
01029 
01034     virtual void setMeasureSystem(KLocale::MeasureSystem value);
01035 
01040     virtual KLocale::MeasureSystem measureSystem() const;
01041 
01042     /***************************
01043      **   Encoding settings   **
01044      ***************************/
01045 
01046 protected:
01047 
01051     virtual void initEncoding();
01052 
01057     virtual void initFileNameEncoding();
01058 
01062     virtual QByteArray systemCodeset() const;
01063 
01067     static QByteArray encodeFileNameUTF8(const QString &fileName);
01068 
01072     static QString decodeFileNameUTF8(const QByteArray &localFileName);
01073 
01074 public:
01075 
01080     virtual bool setEncoding(int mibEnum);
01081 
01086     virtual const QByteArray encoding();
01087 
01092     virtual int encodingMib() const;
01093 
01098     virtual int fileEncodingMib() const;
01099 
01104     virtual QTextCodec *codecForEncoding() const;
01105 
01106     /***************************
01107      **       Utilities       **
01108      ***************************/
01109 
01110 public:
01111 
01116     static void splitLocale(const QString &locale, QString &language, QString &country,
01117                             QString &modifier, QString &charset);
01118 
01123     virtual QString localizedFilePath(const QString &filePath) const;
01124 
01129     virtual QString removeAcceleratorMarker(const QString &label) const;
01130 
01131 private:
01132 
01136     QList<int> digitGroupFormatToList(const QString &digitGroupFormat) const;
01137 
01141     QString formatDigitGroup(const QString &number, const QString &groupSeparator, const QString &decimalSeperator, QList<int> groupList) const;
01142 
01146     QString parseDigitGroup(const QString &number, const QString &groupSeparator, const QString &decimalSeperator, QList<int> groupList, bool *ok) const;
01147 
01148 public:
01149     // Parent KLocale, public needed for copy ctor
01150     KLocale *q;
01151 
01152 private:
01153     // Config file containing locale config
01154     KSharedConfig::Ptr m_config;
01155 
01156     // Country settings
01157     QString m_country;
01158     QString m_countryDivisionCode;
01159 
01160     // Language settings
01161     QString      m_language;
01162     KConfig     *m_languages;
01163     QStringList  m_languageList;
01164     bool         m_languageSensitiveDigits;  // FIXME: Temporary until full language-sensitivity implemented.
01165     bool         m_nounDeclension;
01166 
01167     // Catalog settings
01168     QString             m_catalogName;          // catalogName ("app name") used by this KLocale object
01169     QList<KCatalogName> m_catalogNames;         // list of all catalogs (regardless of language)
01170     QList<KCatalog>     m_catalogs;             // list of all found catalogs, one instance per catalog name and language
01171     int                 m_numberOfSysCatalogs;  // number of catalogs that each app draws from
01172     bool                m_useTranscript;        // indicates if scripted messages are to be executed
01173 
01174     // Calendar settings
01175     KLocale::CalendarSystem m_calendarSystem;
01176     KCalendarSystem *m_calendar;
01177     KLocale::WeekNumberSystem m_weekNumberSystem;
01178     int              m_weekStartDay;
01179     int              m_workingWeekStartDay;
01180     int              m_workingWeekEndDay;
01181     int              m_weekDayOfPray;
01182 
01183     // Date/Time settings
01184     QString           m_dateFormat;
01185     QString           m_dateFormatShort;
01186     QString           m_timeFormat;
01187     KLocale::DigitSet m_dateTimeDigitSet;
01188     bool              m_dateMonthNamePossessive;
01189     mutable QList<KDayPeriod> m_dayPeriods;
01190 
01191     // Number settings
01192     int               m_decimalPlaces;
01193     QString           m_decimalSymbol;
01194     QString           m_thousandsSeparator;
01195     QList<int>        m_numericDigitGrouping;
01196     QString           m_positiveSign;
01197     QString           m_negativeSign;
01198     KLocale::DigitSet m_digitSet;
01199 
01200     // Currency settings
01201     QString        m_currencyCode;
01202     KCurrencyCode *m_currency;
01203     QStringList    m_currencyCodeList;
01204 
01205     // Money settings
01206     QString               m_currencySymbol;
01207     QString               m_monetaryDecimalSymbol;
01208     QString               m_monetaryThousandsSeparator;
01209     QList<int>            m_monetaryDigitGrouping;
01210     int                   m_monetaryDecimalPlaces;
01211     KLocale::SignPosition m_positiveMonetarySignPosition;
01212     KLocale::SignPosition m_negativeMonetarySignPosition;
01213     bool                  m_positivePrefixCurrencySymbol;
01214     bool                  m_negativePrefixCurrencySymbol;
01215     KLocale::DigitSet     m_monetaryDigitSet;
01216 
01217     // Units settings
01218     KLocale::BinaryUnitDialect m_binaryUnitDialect;
01219     QList<QString>             m_byteSizeFmt;
01220     int                        m_pageSize;
01221     KLocale::MeasureSystem     m_measureSystem;
01222 
01223     // Encoding settings
01224     QString     m_encoding;
01225     QTextCodec *m_codecForEncoding;
01226     bool        m_utf8FileEncoding;
01227 };
01228 
01229 #endif /* KLOCALE_P_H */
01230 

KDECore

Skip menu "KDECore"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Modules
  • Related Pages

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Generated for kdelibs by doxygen 1.7.5
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal