22 #include <QtCore/QSharedData>
23 #include <QtCore/QDate>
24 #include <QtCore/QString>
25 #include <QtCore/QStringList>
26 #include <QtCore/QFileInfo>
39 KCurrencyCodePrivate(
const QFileInfo ¤cyCodeFile,
const QString &language =
QString() );
40 KCurrencyCodePrivate(
const KCurrencyCodePrivate& other );
41 virtual ~KCurrencyCodePrivate();
43 void loadCurrency(
const QFileInfo ¤cyCodeFile,
const QString &language );
45 QString m_currencyCodeIsoAlpha3;
46 QString m_currencyCodeIsoNumeric3;
50 QString m_currencyUnitSymbolDefault;
51 QString m_currencyUnitSymbolUnambiguous;
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;
67 KCurrencyCodePrivate::KCurrencyCodePrivate(
const QString &isoCurrencyCode,
const QString &language )
69 QFileInfo file(
KStandardDirs::locate(
"locale", QString::fromLatin1(
"currency/%1.desktop" ).arg( isoCurrencyCode.toLower() ) ) );
71 loadCurrency( file, language );
74 KCurrencyCodePrivate::KCurrencyCodePrivate(
const QFileInfo ¤cyCodeFile,
const QString &language )
76 loadCurrency( currencyCodeFile, language );
79 KCurrencyCodePrivate::KCurrencyCodePrivate(
const KCurrencyCodePrivate& 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 )
104 KCurrencyCodePrivate::~KCurrencyCodePrivate()
108 void KCurrencyCodePrivate::loadCurrency(
const QFileInfo ¤cyCodeFile,
const QString &language )
110 KConfig cgFile( currencyCodeFile.absoluteFilePath() );
113 if ( !language.isEmpty() ) {
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() );
142 :d( new KCurrencyCodePrivate( isoCurrencyCode, language ) )
147 :d( new KCurrencyCodePrivate( currencyCodeFile, language ) )
169 return d->m_currencyCodeIsoAlpha3;
174 return d->m_currencyCodeIsoNumeric3;
179 return d->m_currencyNameDisplay;
184 return d->m_currencyNameIso;
200 return d->m_currencyIntroducedDate;
205 return d->m_currencySuspendedDate;
210 return d->m_currencyWithdrawnDate;
215 return d->m_currencyUnitSymbols;
220 return d->m_currencyUnitSymbolDefault;
225 if ( d->m_currencyUnitSymbolUnambiguous.isEmpty() ) {
226 return d->m_currencyUnitSymbolDefault;
228 return d->m_currencyUnitSymbolUnambiguous;
234 if ( d->m_currencySubunits > 0 ) {
243 return (
hasSubunits() && d->m_currencySubunitsInCirculation );
248 return d->m_currencySubunitSymbol;
253 return d->m_currencySubunitsPerUnit;
258 return d->m_currencyDecimalPlacesDisplay;
263 return d->m_currencyCountriesInUse;
268 return !d->m_currencyCodeIsoAlpha3.isEmpty();
274 return test.
isValid() && ( currencyStatusFlags & test.
status() );
283 foreach(
const QString &path, paths )
285 QString code = path.mid( path.length()-11, 3 ).toUpper();
288 currencyCodes.append( code );
292 return currencyCodes;