/* * Copyright (C) 2015 Canonical Ltd. * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, 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, see . */ #include #include #include #include "LocalePlugin.h" class LocalePrivate { public: LocalePrivate() { m_mccCodes = QHash ({{202,"gr"}, {204,"nl"}, {206,"be"}, {208,"fr"}, {212,"mc"}, {213,"ad"}, {214,"es"}, {216,"hu"}, {218,"ba"}, {219,"hr"}, {220,"rs"}, {222,"it"}, {226,"ro"}, {228,"ch"}, {230,"cz"}, {231,"sk"}, {232,"at"}, {234,"gb"}, {235,"gb"}, {238,"dk"}, {240,"se"}, {242,"no"}, {244,"fi"}, {246,"lt"}, {247,"lv"}, {248,"ee"}, {250,"ru"}, {255,"ua"}, {257,"by"}, {259,"md"}, {260,"pl"}, {262,"de"}, {266,"gi"}, {268,"pt"}, {270,"lu"}, {272,"ie"}, {274,"is"}, {276,"al"}, {278,"mt"}, {280,"cy"}, {282,"ge"}, {283,"am"}, {284,"bg"}, {286,"tr"}, {288,"fo"}, {289,"ge"}, {290,"gl"}, {292,"sm"}, {293,"si"}, {294,"mk"}, {295,"li"}, {297,"me"}, {302,"ca"}, {308,"pm"}, {310,"gu"}, {310,"us"}, {311,"gu"}, {311,"us"}, {312,"us"}, {316,"us"}, {330,"pr"}, {334,"mx"}, {338,"jm"}, {340,"fg"}, {340,"gp"}, {340,"mq"}, {342,"bb"}, {344,"ag"}, {346,"ky"}, {348,"vg"}, {350,"bm"}, {352,"gd"}, {354,"ms"}, {356,"kn"}, {358,"lc"}, {360,"vc"}, {362,"an"}, {362,"cw"}, {363,"aw"}, {364,"bs"}, {365,"ai"}, {366,"dm"}, {368,"cu"}, {370,"do"}, {372,"ht"}, {374,"tt"}, {376,"tc"}, {376,"vi"}, {400,"az"}, {401,"kz"}, {402,"bt"}, {404,"in"}, {405,"in"}, {410,"pk"}, {412,"af"}, {413,"lk"}, {414,"mm"}, {415,"lb"}, {416,"jo"}, {417,"sy"}, {418,"iq"}, {419,"kw"}, {420,"sa"}, {421,"ye"}, {422,"om"}, {424,"ae"}, {425,"il"}, {425,"ps"}, {426,"bh"}, {427,"qa"}, {428,"mn"}, {429,"np"}, {430,"ae"}, {431,"ae"}, {432,"ir"}, {434,"uz"}, {436,"tk"}, {437,"kg"}, {438,"tm"}, {440,"jp"}, {441,"jp"}, {450,"kr"}, {452,"vn"}, {454,"hk"}, {455,"mo"}, {456,"kh"}, {457,"la"}, {460,"cn"}, {466,"tw"}, {467,"kp"}, {470,"bd"}, {472,"mv"}, {502,"my"}, {505,"au"}, {510,"id"}, {514,"tp"}, {515,"ph"}, {520,"th"}, {525,"sg"}, {528,"bn"}, {530,"nz"}, {537,"pg"}, {539,"to"}, {540,"sb"}, {541,"vu"}, {542,"fj"}, {544,"as"}, {545,"ki"}, {546,"nc"}, {547,"pf"}, {548,"ck"}, {549,"ws"}, {550,"fm"}, {552,"pw"}, {553,"tv"}, {555,"nu"}, {602,"eg"}, {603,"dz"}, {604,"ma"}, {605,"tn"}, {606,"ly"}, {607,"gm"}, {608,"sn"}, {609,"mr"}, {610,"ml"}, {611,"gn"}, {612,"ci"}, {613,"bf"}, {614,"ne"}, {615,"tg"}, {616,"bj"}, {617,"mu"}, {618,"lr"}, {619,"sl"}, {620,"gh"}, {621,"ng"}, {622,"td"}, {623,"cf"}, {624,"cm"}, {625,"cv"}, {626,"st"}, {627,"gq"}, {628,"ga"}, {629,"cg"}, {630,"cd"}, {631,"ao"}, {632,"gw"}, {633,"sc"}, {634,"sd"}, {635,"rw"}, {636,"et"}, {637,"so"}, {638,"dj"}, {639,"ke"}, {640,"tz"}, {641,"ug"}, {642,"bi"}, {643,"mz"}, {645,"zm"}, {646,"mg"}, {647,"re"}, {648,"zw"}, {649,"na"}, {650,"mw"}, {651,"ls"}, {652,"bw"}, {653,"sz"}, {654,"km"}, {655,"za"}, {657,"er"}, {659,"ss"}, {702,"bz"}, {704,"gt"}, {706,"sv"}, {708,"hn"}, {710,"ni"}, {712,"cr"}, {714,"pa"}, {716,"pe"}, {722,"ar"}, {724,"br"}, {730,"cl"}, {732,"co"}, {734,"ve"}, {736,"bo"}, {738,"gy"}, {740,"ec"}, {744,"py"}, {746,"sr"}, {748,"uy"}, {750,"fk"}} ); } QString mccToCountryCode(int mcc) const { return m_mccCodes.value(mcc, "us").toUpper(); } private: // MCC = Mobile Country Code, see https://en.wikipedia.org/wiki/Mobile_country_code QHash m_mccCodes; }; Q_GLOBAL_STATIC(LocalePrivate, d) LocaleAttached::LocaleAttached(QObject* parent) : QObject(parent) { } QString LocaleAttached::mccToCountryCode(int mcc) const { return d->mccToCountryCode(mcc); } LocalePlugin::LocalePlugin(QObject* parent) : QObject(parent) { } LocaleAttached* LocalePlugin::qmlAttachedProperties(QObject* parent) { return new LocaleAttached(parent); }