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

KDECore

  • kdecore
  • localization
kcurrencycode.cpp
Go to the documentation of this file.
1/*
2 Copyright (c) 2009 John Layt <john@layt.net>
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Library General Public
6 License as published by the Free Software Foundation; either
7 version 2 of the License, or (at your option) any later version.
8
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Library General Public License for more details.
13
14 You should have received a copy of the GNU Library General Public License
15 along with this library; see the file COPYING.LIB. If not, write to
16 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 Boston, MA 02110-1301, USA.
18*/
19
20#include "kcurrencycode.h"
21
22#include <QtCore/QSharedData>
23#include <QtCore/QDate>
24#include <QtCore/QString>
25#include <QtCore/QStringList>
26#include <QtCore/QFileInfo>
27
28#include "kconfig.h"
29#include "kconfiggroup.h"
30#include "kglobal.h"
31#include "klocale.h"
32#include "kstandarddirs.h"
33#include "kdebug.h"
34
35class KCurrencyCodePrivate : public QSharedData
36{
37public:
38 KCurrencyCodePrivate( const QString &isoCurrencyCode, const QString &language = QString() );
39 KCurrencyCodePrivate( const QFileInfo &currencyCodeFile, const QString &language = QString() );
40 KCurrencyCodePrivate( const KCurrencyCodePrivate& other );
41 virtual ~KCurrencyCodePrivate();
42
43 void loadCurrency( const QFileInfo &currencyCodeFile, const QString &language );
44
45 QString m_currencyCodeIsoAlpha3;
46 QString m_currencyCodeIsoNumeric3;
47 QString m_currencyNameIso;
48 QString m_currencyNameDisplay;
49 QStringList m_currencyUnitSymbols;
50 QString m_currencyUnitSymbolDefault;
51 QString m_currencyUnitSymbolUnambiguous;
52 QString m_currencyUnitSingular;
53 QString m_currencyUnitPlural;
54 QString m_currencySubunitSymbol;
55 QString m_currencySubunitSingular;
56 QString m_currencySubunitPlural;
57 QDate m_currencyIntroducedDate;
58 QDate m_currencySuspendedDate;
59 QDate m_currencyWithdrawnDate;
60 int m_currencySubunits;
61 int m_currencySubunitsPerUnit;
62 bool m_currencySubunitsInCirculation;
63 int m_currencyDecimalPlacesDisplay;
64 QStringList m_currencyCountriesInUse;
65};
66
67KCurrencyCodePrivate::KCurrencyCodePrivate( const QString &isoCurrencyCode, const QString &language )
68{
69 QFileInfo file( KStandardDirs::locate( "locale", QString::fromLatin1( "currency/%1.desktop" ).arg( isoCurrencyCode.toLower() ) ) );
70
71 loadCurrency( file, language );
72}
73
74KCurrencyCodePrivate::KCurrencyCodePrivate( const QFileInfo &currencyCodeFile, const QString &language )
75{
76 loadCurrency( currencyCodeFile, language );
77}
78
79KCurrencyCodePrivate::KCurrencyCodePrivate( const KCurrencyCodePrivate& other )
80 : QSharedData( other ),
81 m_currencyCodeIsoAlpha3( other.m_currencyCodeIsoAlpha3 ),
82 m_currencyCodeIsoNumeric3( other.m_currencyCodeIsoNumeric3 ),
83 m_currencyNameIso( other.m_currencyNameIso ),
84 m_currencyNameDisplay( other.m_currencyNameDisplay ),
85 m_currencyUnitSymbols( other.m_currencyUnitSymbols ),
86 m_currencyUnitSymbolDefault( other.m_currencyUnitSymbolDefault ),
87 m_currencyUnitSymbolUnambiguous( other.m_currencyUnitSymbolUnambiguous ),
88 m_currencyUnitSingular( other.m_currencyUnitSingular ),
89 m_currencyUnitPlural( other.m_currencyUnitPlural ),
90 m_currencySubunitSymbol( other.m_currencySubunitSymbol ),
91 m_currencySubunitSingular( other.m_currencySubunitSingular ),
92 m_currencySubunitPlural( other.m_currencySubunitPlural ),
93 m_currencyIntroducedDate( other.m_currencyIntroducedDate ),
94 m_currencySuspendedDate( other.m_currencySuspendedDate ),
95 m_currencyWithdrawnDate( other.m_currencyWithdrawnDate ),
96 m_currencySubunits( other.m_currencySubunits ),
97 m_currencySubunitsPerUnit( other.m_currencySubunitsPerUnit ),
98 m_currencySubunitsInCirculation( other.m_currencySubunitsInCirculation ),
99 m_currencyDecimalPlacesDisplay( other.m_currencyDecimalPlacesDisplay ),
100 m_currencyCountriesInUse( other.m_currencyCountriesInUse )
101{
102}
103
104KCurrencyCodePrivate::~KCurrencyCodePrivate()
105{
106}
107
108void KCurrencyCodePrivate::loadCurrency( const QFileInfo &currencyCodeFile, const QString &language )
109{
110 KConfig cgFile( currencyCodeFile.absoluteFilePath() );
111
112 // If language is empty, means to stick with the global default, which is the default for any new KConfig
113 if ( !language.isEmpty() ) {
114 cgFile.setLocale( language );
115 }
116
117 KConfigGroup cg( &cgFile, "Currency Code" );
118
119 m_currencyCodeIsoAlpha3 = cg.readEntry( "CurrencyCodeIsoAlpha3", QString() );
120 m_currencyCodeIsoNumeric3 = cg.readEntry( "CurrencyCodeIsoNumeric3", QString() );
121 m_currencyNameIso = cg.readEntry( "CurrencyNameIso", QString() );
122 m_currencyNameDisplay = cg.readEntry( "Name", QString() );
123 m_currencyUnitSymbols = cg.readEntry( "CurrencyUnitSymbols", QStringList() );
124 m_currencyUnitSymbolDefault = cg.readEntry( "CurrencyUnitSymbolDefault", QString() );
125 m_currencyUnitSymbolUnambiguous = cg.readEntry( "CurrencyUnitSymbolUnambiguous", QString() );
126 m_currencyUnitSingular = cg.readEntry( "CurrencyUnitSingular", QString() );
127 m_currencyUnitPlural = cg.readEntry( "CurrencyUnitPlural", QString() );
128 m_currencySubunitSymbol = cg.readEntry( "CurrencySubunitSymbol", QString() );
129 m_currencySubunitSingular = cg.readEntry( "CurrencySubunitSingular", QString() );
130 m_currencySubunitPlural = cg.readEntry( "CurrencySubunitPlural", QString() );
131 m_currencyIntroducedDate = cg.readEntry( "CurrencyIntroducedDate", QDate() );
132 m_currencySuspendedDate = cg.readEntry( "CurrencySuspendedDate", QDate() );
133 m_currencyWithdrawnDate = cg.readEntry( "CurrencyWithdrawnDate", QDate() );
134 m_currencySubunits = cg.readEntry( "CurrencySubunits", 1 );
135 m_currencySubunitsInCirculation = cg.readEntry( "CurrencySubunitsInCirculation", true );
136 m_currencySubunitsPerUnit = cg.readEntry( "CurrencySubunitsPerUnit", 100 );
137 m_currencyDecimalPlacesDisplay = cg.readEntry( "CurrencyDecimalPlacesDisplay", 2 );
138 m_currencyCountriesInUse = cg.readEntry( "CurrencyCountriesInUse", QStringList() );
139}
140
141KCurrencyCode::KCurrencyCode( const QString &isoCurrencyCode, const QString &language )
142 :d( new KCurrencyCodePrivate( isoCurrencyCode, language ) )
143{
144}
145
146KCurrencyCode::KCurrencyCode( const QFileInfo &currencyCodeFile, const QString &language )
147 :d( new KCurrencyCodePrivate( currencyCodeFile, language ) )
148{
149}
150
151KCurrencyCode::KCurrencyCode( const KCurrencyCode &rhs )
152 :d( rhs.d )
153{
154}
155
156KCurrencyCode& KCurrencyCode::operator=( const KCurrencyCode &rhs )
157{
158 if (&rhs != this)
159 d = rhs.d;
160 return *this;
161}
162
163KCurrencyCode::~KCurrencyCode()
164{
165}
166
167QString KCurrencyCode::isoCurrencyCode() const
168{
169 return d->m_currencyCodeIsoAlpha3;
170}
171
172QString KCurrencyCode::isoCurrencyCodeNumeric() const
173{
174 return d->m_currencyCodeIsoNumeric3;
175}
176
177QString KCurrencyCode::name() const
178{
179 return d->m_currencyNameDisplay;
180}
181
182QString KCurrencyCode::isoName() const
183{
184 return d->m_currencyNameIso;
185}
186
187KCurrencyCode::CurrencyStatus KCurrencyCode::status() const
188{
189 if ( dateWithdrawn() != QDate() ) {
190 return ObsoleteCurrency;
191 } else if ( dateSuspended() != QDate() ) {
192 return SuspendedCurrency;
193 } else {
194 return ActiveCurrency;
195 }
196}
197
198QDate KCurrencyCode::dateIntroduced() const
199{
200 return d->m_currencyIntroducedDate;
201}
202
203QDate KCurrencyCode::dateSuspended() const
204{
205 return d->m_currencySuspendedDate;
206}
207
208QDate KCurrencyCode::dateWithdrawn() const
209{
210 return d->m_currencyWithdrawnDate;
211}
212
213QStringList KCurrencyCode::symbolList() const
214{
215 return d->m_currencyUnitSymbols;
216}
217
218QString KCurrencyCode::defaultSymbol() const
219{
220 return d->m_currencyUnitSymbolDefault;
221}
222
223QString KCurrencyCode::unambiguousSymbol() const
224{
225 if ( d->m_currencyUnitSymbolUnambiguous.isEmpty() ) {
226 return d->m_currencyUnitSymbolDefault;
227 } else {
228 return d->m_currencyUnitSymbolUnambiguous;
229 }
230}
231
232bool KCurrencyCode::hasSubunits() const
233{
234 if ( d->m_currencySubunits > 0 ) {
235 return true;
236 } else {
237 return false;
238 }
239}
240
241bool KCurrencyCode::hasSubunitsInCirculation() const
242{
243 return ( hasSubunits() && d->m_currencySubunitsInCirculation );
244}
245
246QString KCurrencyCode::subunitSymbol() const
247{
248 return d->m_currencySubunitSymbol;
249}
250
251int KCurrencyCode::subunitsPerUnit() const
252{
253 return d->m_currencySubunitsPerUnit;
254}
255
256int KCurrencyCode::decimalPlaces() const
257{
258 return d->m_currencyDecimalPlacesDisplay;
259}
260
261QStringList KCurrencyCode::countriesUsingCurrency() const
262{
263 return d->m_currencyCountriesInUse;
264}
265
266bool KCurrencyCode::isValid() const
267{
268 return !d->m_currencyCodeIsoAlpha3.isEmpty();
269}
270
271bool KCurrencyCode::isValid( const QString &isoCurrencyCode, CurrencyStatusFlags currencyStatusFlags )
272{
273 KCurrencyCode test = KCurrencyCode( isoCurrencyCode );
274 return test.isValid() && ( currencyStatusFlags & test.status() );
275}
276
277QStringList KCurrencyCode::allCurrencyCodesList( CurrencyStatusFlags currencyStatus )
278{
279 QStringList currencyCodes;
280
281 const QStringList paths = KGlobal::dirs()->findAllResources( "locale", QLatin1String("currency/*.desktop") );
282
283 foreach( const QString &path, paths )
284 {
285 QString code = path.mid( path.length()-11, 3 ).toUpper();
286
287 if ( KCurrencyCode::isValid( code, currencyStatus ) ) {
288 currencyCodes.append( code );
289 }
290 }
291
292 return currencyCodes;
293}
294
295QString KCurrencyCode::currencyCodeToName( const QString &isoCurrencyCode, const QString &language )
296{
297 KCurrencyCode temp = KCurrencyCode( isoCurrencyCode, language );
298 if ( temp.isValid() ) {
299 return temp.name();
300 } else {
301 return QString();
302 }
303}
KConfigGroup
A class for one specific group in a KConfig object.
Definition: kconfiggroup.h:54
KConfig
The central class of the KDE configuration data system.
Definition: kconfig.h:71
KCurrencyCode
Definition: kcurrencycode.h:46
KCurrencyCode::name
QString name() const
Return translated Currency Code Name in a standard display format e.g.
Definition: kcurrencycode.cpp:177
KCurrencyCode::hasSubunits
bool hasSubunits() const
Return if the Currency has subunits or not, e.g.
Definition: kcurrencycode.cpp:232
KCurrencyCode::dateSuspended
QDate dateSuspended() const
Return the date the currency was suspended.
Definition: kcurrencycode.cpp:203
KCurrencyCode::countriesUsingCurrency
QStringList countriesUsingCurrency() const
Return a list of countries known to be using the currency.
Definition: kcurrencycode.cpp:261
KCurrencyCode::subunitsPerUnit
int subunitsPerUnit() const
Return the number of subunits in every unit, e.g.
Definition: kcurrencycode.cpp:251
KCurrencyCode::isValid
bool isValid() const
Return if the currency object loaded/initialised correctly.
Definition: kcurrencycode.cpp:266
KCurrencyCode::decimalPlaces
int decimalPlaces() const
Return the number of decimal places required to display the currency subunits.
Definition: kcurrencycode.cpp:256
KCurrencyCode::dateIntroduced
QDate dateIntroduced() const
Return the date the currency was introduced.
Definition: kcurrencycode.cpp:198
KCurrencyCode::KCurrencyCode
KCurrencyCode(const QString &isoCurrencyCode, const QString &language=QString())
Constructs a KCurrencyCode for a given ISO Currency Code.
Definition: kcurrencycode.cpp:141
KCurrencyCode::unambiguousSymbol
QString unambiguousSymbol() const
Return the unambiguous Symbol for the Currency, e.g.
Definition: kcurrencycode.cpp:223
KCurrencyCode::isoCurrencyCodeNumeric
QString isoCurrencyCodeNumeric() const
Return the ISO 4217 Currency Code in Numeric 3 format, e.g.
Definition: kcurrencycode.cpp:172
KCurrencyCode::hasSubunitsInCirculation
bool hasSubunitsInCirculation() const
Return if the Currency has subunits in circulation, e.g.
Definition: kcurrencycode.cpp:241
KCurrencyCode::subunitSymbol
QString subunitSymbol() const
Return the Currency subunit symbol if it has one e.g.
Definition: kcurrencycode.cpp:246
KCurrencyCode::symbolList
QStringList symbolList() const
Return a list of valid Symbols for the Currency in order of preference.
Definition: kcurrencycode.cpp:213
KCurrencyCode::CurrencyStatus
CurrencyStatus
The Status of the Currency.
Definition: kcurrencycode.h:54
KCurrencyCode::SuspendedCurrency
@ SuspendedCurrency
Currency is not currently in use but has not been replaced.
Definition: kcurrencycode.h:56
KCurrencyCode::ActiveCurrency
@ ActiveCurrency
Currency is currently in use.
Definition: kcurrencycode.h:55
KCurrencyCode::ObsoleteCurrency
@ ObsoleteCurrency
Currency is no longer in use and has been replaced.
Definition: kcurrencycode.h:57
KCurrencyCode::currencyCodeToName
static QString currencyCodeToName(const QString &currencyCode, const QString &language=QString())
Convert a known ISO Currency Code to a human readable, localized form.
Definition: kcurrencycode.cpp:295
KCurrencyCode::allCurrencyCodesList
static QStringList allCurrencyCodesList(CurrencyStatusFlags currencyStatus=CurrencyStatusFlags(ActiveCurrency|SuspendedCurrency|ObsoleteCurrency))
Provides list of all known ISO Currency Codes.
Definition: kcurrencycode.cpp:277
KCurrencyCode::~KCurrencyCode
virtual ~KCurrencyCode()
Destructor.
Definition: kcurrencycode.cpp:163
KCurrencyCode::isoName
QString isoName() const
Return untranslated official ISO Currency Code Name.
Definition: kcurrencycode.cpp:182
KCurrencyCode::defaultSymbol
QString defaultSymbol() const
Return the default Symbol for the Currency, e.g.
Definition: kcurrencycode.cpp:218
KCurrencyCode::dateWithdrawn
QDate dateWithdrawn() const
Return the date the currency was withdrawn from circulation.
Definition: kcurrencycode.cpp:208
KCurrencyCode::isoCurrencyCode
QString isoCurrencyCode() const
Return the ISO 4217 Currency Code in Alpha 3 format, e.g.
Definition: kcurrencycode.cpp:167
KCurrencyCode::operator=
KCurrencyCode & operator=(const KCurrencyCode &rhs)
Assignment operator.
Definition: kcurrencycode.cpp:156
KCurrencyCode::status
CurrencyStatus status() const
Return Currency Status for the currency, if Active, Suspended or Obsolete.
Definition: kcurrencycode.cpp:187
KStandardDirs::findAllResources
QStringList findAllResources(const char *type, const QString &filter=QString(), SearchOptions options=NoSearchOptions) const
Tries to find all resources with the specified type.
Definition: kstandarddirs.cpp:900
KStandardDirs::locate
static QString locate(const char *type, const QString &filename, const KComponentData &cData=KGlobal::mainComponent())
This function is just for convenience.
Definition: kstandarddirs.cpp:2091
QStringList
QString
kconfig.h
kconfiggroup.h
kcurrencycode.h
kdebug.h
kglobal.h
klocale.h
kstandarddirs.h
KGlobal::dirs
KStandardDirs * dirs()
Returns the application standard dirs object.
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

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-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • 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
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal