• Skip to content
  • Skip to link menu
KDE 4.6 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 
00180     virtual void initLanguageList(const QString &language, const QString &configLanguages, bool useEnv);
00181 
00185     virtual bool useDefaultLanguage() const;
00186 
00187 public:
00188 
00193     virtual bool setLanguage(const QString &language, KConfig *config);
00194 
00199     virtual bool setLanguage(const QStringList &languages);
00200 
00205     virtual QString language() const;
00206 
00211     virtual QStringList languageList() const;
00212 
00217     virtual QStringList allLanguagesList();
00218 
00223     virtual QStringList installedLanguages();
00224 
00229     static QString defaultLanguage();
00230 
00235     virtual QString languageCodeToName(const QString &language);
00236 
00242     virtual bool nounDeclension() const;
00243 
00249     static QString langLookup(const QString &fname, const char *rtype = "html");
00250 
00255     virtual bool useTranscript() const;
00256 
00257     /**************************
00258      **   Catalog settings   **
00259      **************************/
00260 
00261 protected:
00262 
00266     virtual void initMainCatalogs();
00267 
00274     virtual void updateCatalogs();
00275 
00276 public:
00277 
00282     static void setMainCatalog(const char *catalog);
00283 
00288     virtual void setActiveCatalog(const QString &catalog);
00289 
00294     virtual void insertCatalog(const QString &catalog);
00295 
00300     virtual void removeCatalog(const QString &catalog);
00301 
00306     virtual void copyCatalogsTo(KLocale *locale);
00307 
00312     virtual void translateRawFrom(const char *catname, const char *msgctxt, const char *msgid, const char *msgid_plural = 0,
00313                                   unsigned long n = 0, QString *language = 0, QString *translation = 0) const;
00314 
00319     virtual QString translateQt(const char *context, const char *sourceText, const char *comment) const;
00320 
00325     virtual bool isApplicationTranslatedInto(const QString &language);
00326 
00327     /***************************
00328      **   Calendar settings   **
00329      ***************************/
00330 
00331 protected:
00332 
00336     virtual KLocale::CalendarSystem calendarTypeToCalendarSystem(const QString &calendarType) const;
00337 
00341     virtual QString calendarSystemToCalendarType(KLocale::CalendarSystem) const;
00342 
00343 public:
00344 
00349     virtual void setCalendar(const QString &calendarType);
00350 
00355     virtual void setCalendarSystem(KLocale::CalendarSystem);
00356 
00361     virtual QString calendarType() const;
00362 
00367     KLocale::CalendarSystem calendarSystem() const;
00368 
00373     virtual const KCalendarSystem *calendar();
00374 
00379     void setWeekNumberSystem(KLocale::WeekNumberSystem weekNumberSystem);
00380 
00385     KLocale::WeekNumberSystem weekNumberSystem();
00386 
00391     virtual void setWeekStartDay(int day);
00392 
00397     virtual int weekStartDay() const;
00398 
00403     virtual void setWorkingWeekStartDay(int day);
00404 
00409     virtual int workingWeekStartDay() const;
00410 
00415     virtual void setWorkingWeekEndDay(int day);
00416 
00421     virtual int workingWeekEndDay() const;
00422 
00427     virtual void setWeekDayOfPray(int day);
00428 
00433     virtual int weekDayOfPray() const;
00434 
00435     /***************************
00436      **  Date/Time settings   **
00437      ***************************/
00438 
00439 protected:
00440 
00444     virtual void initDayPeriods(const KConfigGroup &cg);
00445 
00446 public:
00447 
00452     virtual void setDateFormat(const QString &format);
00453 
00458     virtual QString dateFormat() const;
00459 
00464     virtual void setDateFormatShort(const QString &format);
00465 
00470     virtual QString dateFormatShort() const;
00471 
00476     virtual void setTimeFormat(const QString &format);
00477 
00482     virtual QString timeFormat() const;
00483 
00488     virtual void setDateTimeDigitSet(KLocale::DigitSet digitSet);
00489 
00494     virtual KLocale::DigitSet dateTimeDigitSet() const;
00495 
00500     virtual void setDateMonthNamePossessive(bool possessive);
00501 
00506     virtual bool dateMonthNamePossessive() const;
00507 
00512     virtual bool use12Clock() const;
00513 
00518     virtual void setDayPeriods(const QList<KDayPeriod> &dayPeriods);
00519 
00524     virtual QList<KDayPeriod> dayPeriods() const;
00525 
00530     virtual KDayPeriod dayPeriodForTime(const QTime &time) const;
00531 
00536     virtual QString formatDate(const QDate &date, KLocale::DateFormat format = KLocale::LongDate);
00537 
00542     virtual QDate readDate(const QString &str, bool *ok = 0);
00543 
00548     virtual QDate readDate(const QString &intstr, const QString &fmt, bool *ok = 0);
00549 
00554     virtual QDate readDate(const QString &str, KLocale::ReadDateFlags flags, bool *ok = 0);
00555 
00561     virtual QString formatTime(const QTime &pTime, bool includeSecs = false, bool isDuration = false) const;
00562 
00567     virtual QString formatLocaleTime(const QTime &pTime, KLocale::TimeFormatOptions options = KLocale::TimeDefault) const;
00568 
00573     virtual QTime readTime(const QString &str, bool *ok = 0) const;
00574 
00580     virtual QTime readTime(const QString &str, KLocale::ReadTimeFlags flags, bool *ok = 0) const;
00581 
00586     virtual QTime readLocaleTime(const QString &str, bool *ok = 0,
00587                                  KLocale::TimeFormatOptions options = KLocale::TimeDefault,
00588                                  KLocale::TimeProcessingOptions processing = KLocale::ProcessNonStrict) const;
00589 
00594     static QString formatDateTime(const KLocale *locale, const QDateTime &dateTime, KLocale::DateFormat,
00595                                   bool includeSeconds, int daysToNow, int secsToNow);
00596 
00601     virtual QString formatDateTime(const QDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate,
00602                                    bool includeSecs = false) const;
00603 
00608     virtual QString formatDateTime(const KDateTime &dateTime, KLocale::DateFormat format = KLocale::ShortDate,
00609                                    KLocale::DateTimeFormatOptions options = 0);
00610 
00615     virtual QString formatDuration(unsigned long mSec) const;
00616 
00621     virtual QString prettyFormatDuration(unsigned long mSec) const;
00622 
00623     /***************************
00624      **  Digit Set settings   **
00625      ***************************/
00626 
00627 protected:
00628 
00632     static QString toArabicDigits(const QString &str);
00633 
00637     static QString digitSetString(KLocale::DigitSet digitSet);
00638 
00639 public:
00640 
00645     virtual QList<KLocale::DigitSet> allDigitSetsList() const;
00646 
00651     virtual QString digitSetToName(KLocale::DigitSet digitSet, bool withDigits = false) const;
00652 
00657     virtual QString convertDigits(const QString &str, KLocale::DigitSet digitSet, bool ignoreContext = false) const;
00658 
00659     /***************************
00660      **    Number settings    **
00661      ***************************/
00662 
00663 public:
00664 
00669     virtual void setDecimalPlaces(int digits);
00670 
00675     virtual int decimalPlaces() const;
00676 
00681     virtual void setDecimalSymbol(const QString &symbol);
00682 
00687     virtual QString decimalSymbol() const;
00688 
00693     virtual void setThousandsSeparator(const QString &separator);
00694 
00699     virtual QString thousandsSeparator() const;
00700 
00705     virtual void setPositiveSign(const QString &sign);
00706 
00711     virtual QString positiveSign() const;
00712 
00717     virtual void setNegativeSign(const QString &sign);
00718 
00723     virtual QString negativeSign() const;
00724 
00729     virtual void setDigitSet(KLocale::DigitSet digitSet);
00730 
00735     virtual KLocale::DigitSet digitSet() const;
00736 
00741     virtual QString formatNumber(double num, int precision = -1) const;
00742 
00747     virtual QString formatNumber(const QString &numStr, bool round = true, int precision = -1) const;
00748 
00753     virtual QString formatLong(long num) const;
00754 
00759     virtual double readNumber(const QString &numStr, bool *ok = 0) const;
00760 
00761     /**************************
00762      **  Currency settings   **
00763      **************************/
00764 
00765 protected:
00766 
00770     virtual void initCurrency();
00771 
00772 public:
00773 
00778     virtual void setCurrencyCode(const QString &newCurrencyCode);
00779 
00784     virtual QString currencyCode() const;
00785 
00790     virtual KCurrencyCode *currency();
00791 
00796     static QString defaultCurrencyCode();
00797 
00802     virtual QStringList currencyCodeList() const;
00803 
00804     /***************************
00805      **    Money settings     **
00806      ***************************/
00807 
00808 public:
00809 
00814     virtual void setCurrencySymbol(const QString &symbol);
00815 
00820     virtual QString currencySymbol() const;
00821 
00826     virtual void setMonetaryDecimalSymbol(const QString &symbol);
00827 
00832     virtual QString monetaryDecimalSymbol() const;
00833 
00838     virtual void setMonetaryThousandsSeparator(const QString &separator);
00839 
00844     virtual QString monetaryThousandsSeparator() const;
00845 
00850     virtual void setMonetaryDecimalPlaces(int digits);
00851 
00856     virtual int monetaryDecimalPlaces() const;
00857 
00863     virtual void setPositivePrefixCurrencySymbol(bool prefix);
00864 
00869     virtual bool positivePrefixCurrencySymbol() const;
00870 
00876     virtual void setNegativePrefixCurrencySymbol(bool prefix);
00877 
00882     virtual bool negativePrefixCurrencySymbol() const;
00883 
00888     virtual void setPositiveMonetarySignPosition(KLocale::SignPosition signpos);
00889 
00894     virtual KLocale::SignPosition positiveMonetarySignPosition() const;
00895 
00900     virtual void setNegativeMonetarySignPosition(KLocale::SignPosition signpos);
00901 
00906     virtual KLocale::SignPosition negativeMonetarySignPosition() const;
00907 
00912     virtual void setMonetaryDigitSet(KLocale::DigitSet digitSet);
00913 
00918     virtual KLocale::DigitSet monetaryDigitSet() const;
00919 
00924     virtual QString formatMoney(double num, const QString &currency = QString(), int precision = -1) const;
00925 
00930     virtual double readMoney(const QString &numStr, bool *ok = 0) const;
00931 
00932     /***************************
00933      **    Units settings     **
00934      ***************************/
00935 
00936 protected:
00937 
00942     QList<QString> dialectUnitsList(KLocale::BinaryUnitDialect dialect);
00943 
00944     enum DurationType {
00945         DaysDurationType = 0,
00946         HoursDurationType,
00947         MinutesDurationType,
00948         SecondsDurationType
00949     };
00950 
00954     static QString formatSingleDuration(KLocalePrivate::DurationType durationType, int n);
00955 
00956 public:
00957 
00962    virtual KLocale::BinaryUnitDialect binaryUnitDialect() const;
00963 
00968     virtual void setBinaryUnitDialect(KLocale::BinaryUnitDialect newDialect);
00969 
00974     virtual QString formatByteSize(double size);
00975 
00980     virtual QString formatByteSize(double size, int precision,
00981                                    KLocale::BinaryUnitDialect dialect = KLocale::DefaultBinaryDialect,
00982                                    KLocale:: BinarySizeUnits specificUnit = KLocale::DefaultBinaryUnits);
00983 
00988     virtual void setPageSize(int paperFormat);
00989 
00994     virtual int pageSize() const;
00995 
01000     virtual void setMeasureSystem(KLocale::MeasureSystem value);
01001 
01006     virtual KLocale::MeasureSystem measureSystem() const;
01007 
01008     /***************************
01009      **   Encoding settings   **
01010      ***************************/
01011 
01012 protected:
01013 
01017     virtual void initEncoding();
01018 
01023     virtual void initFileNameEncoding();
01024 
01028     virtual QByteArray systemCodeset() const;
01029 
01033     static QByteArray encodeFileNameUTF8(const QString &fileName);
01034 
01038     static QString decodeFileNameUTF8(const QByteArray &localFileName);
01039 
01040 public:
01041 
01046     virtual bool setEncoding(int mibEnum);
01047 
01052     virtual const QByteArray encoding();
01053 
01058     virtual int encodingMib() const;
01059 
01064     virtual int fileEncodingMib() const;
01065 
01070     virtual QTextCodec *codecForEncoding() const;
01071 
01072     /***************************
01073      **       Utilities       **
01074      ***************************/
01075 
01076 public:
01077 
01082     static void splitLocale(const QString &locale, QString &language, QString &country,
01083                             QString &modifier, QString &charset);
01084 
01089     virtual QString localizedFilePath(const QString &filePath) const;
01090 
01095     virtual QString removeAcceleratorMarker(const QString &label) const;
01096 
01097     // Parent KLocale, public needed for copy ctor
01098     KLocale *q;
01099 
01100 private:
01101     // Config file containing locale config
01102     KSharedConfig::Ptr m_config;
01103 
01104     // Country settings
01105     QString m_country;
01106     QString m_countryDivisionCode;
01107 
01108     // Language settings
01109     QString      m_language;
01110     KConfig     *m_languages;
01111     QStringList  m_languageList;
01112     bool         m_languageSensitiveDigits;  // FIXME: Temporary until full language-sensitivity implemented.
01113     bool         m_nounDeclension;
01114 
01115     // Catalog settings
01116     QString             m_catalogName;          // catalogName ("app name") used by this KLocale object
01117     QList<KCatalogName> m_catalogNames;         // list of all catalogs (regardless of language)
01118     QList<KCatalog>     m_catalogs;             // list of all found catalogs, one instance per catalog name and language
01119     int                 m_numberOfSysCatalogs;  // number of catalogs that each app draws from
01120     bool                m_useTranscript;        // indicates if scripted messages are to be executed
01121 
01122     // Calendar settings
01123     KLocale::CalendarSystem m_calendarSystem;
01124     KCalendarSystem *m_calendar;
01125     KLocale::WeekNumberSystem m_weekNumberSystem;
01126     int              m_weekStartDay;
01127     int              m_workingWeekStartDay;
01128     int              m_workingWeekEndDay;
01129     int              m_weekDayOfPray;
01130 
01131     // Date/Time settings
01132     QString           m_dateFormat;
01133     QString           m_dateFormatShort;
01134     QString           m_timeFormat;
01135     KLocale::DigitSet m_dateTimeDigitSet;
01136     bool              m_dateMonthNamePossessive;
01137     mutable QList<KDayPeriod> m_dayPeriods;
01138 
01139     // Number settings
01140     int               m_decimalPlaces;
01141     QString           m_decimalSymbol;
01142     QString           m_thousandsSeparator;
01143     QString           m_positiveSign;
01144     QString           m_negativeSign;
01145     KLocale::DigitSet m_digitSet;
01146 
01147     // Currency settings
01148     QString        m_currencyCode;
01149     KCurrencyCode *m_currency;
01150     QStringList    m_currencyCodeList;
01151 
01152     // Money settings
01153     QString               m_currencySymbol;
01154     QString               m_monetaryDecimalSymbol;
01155     QString               m_monetaryThousandsSeparator;
01156     int                   m_monetaryDecimalPlaces;
01157     KLocale::SignPosition m_positiveMonetarySignPosition;
01158     KLocale::SignPosition m_negativeMonetarySignPosition;
01159     bool                  m_positivePrefixCurrencySymbol;
01160     bool                  m_negativePrefixCurrencySymbol;
01161     KLocale::DigitSet     m_monetaryDigitSet;
01162 
01163     // Units settings
01164     KLocale::BinaryUnitDialect m_binaryUnitDialect;
01165     QList<QString>             m_byteSizeFmt;
01166     int                        m_pageSize;
01167     KLocale::MeasureSystem     m_measureSystem;
01168 
01169     // Encoding settings
01170     QString     m_encoding;
01171     QTextCodec *m_codecForEncoding;
01172     bool        m_utf8FileEncoding;
01173 };
01174 
01175 #endif /* KLOCALE_P_H */
01176 

KDECore

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

kdelibs

Skip menu "kdelibs"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • Kate
  • 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.3
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