$END_LICENSE */
#include "ytregions.h"
+#include "iconutils.h"
+
+YTRegions::YTRegions() : QObject() {}
+
+const QVector<YTRegion> &YTRegions::list() {
+ static const QVector<YTRegion> list = [] {
+ QVector<YTRegion> l = {r(tr("Algeria"), "DZ"),
+ r(tr("Argentina"), "AR"),
+ r(tr("Australia"), "AU"),
+ r(tr("Belgium"), "BE"),
+ r(tr("Brazil"), "BR"),
+ r(tr("Canada"), "CA"),
+ r(tr("Chile"), "CL"),
+ r(tr("Colombia"), "CO"),
+ r(tr("Czech Republic"), "CZ"),
+ r(tr("Egypt"), "EG"),
+ r(tr("France"), "FR"),
+ r(tr("Germany"), "DE"),
+ r(tr("Ghana"), "GH"),
+ r(tr("Greece"), "GR"),
+ r(tr("Hong Kong"), "HK"),
+ r(tr("Hungary"), "HU"),
+ r(tr("India"), "IN"),
+ r(tr("Indonesia"), "ID"),
+ r(tr("Ireland"), "IE"),
+ r(tr("Israel"), "IL"),
+ r(tr("Italy"), "IT"),
+ r(tr("Japan"), "JP"),
+ r(tr("Jordan"), "JO"),
+ r(tr("Kenya"), "KE"),
+ r(tr("Malaysia"), "MY"),
+ r(tr("Mexico"), "MX"),
+ r(tr("Morocco"), "MA"),
+ r(tr("Netherlands"), "NL"),
+ r(tr("New Zealand"), "NZ"),
+ r(tr("Nigeria"), "NG"),
+ r(tr("Peru"), "PE"),
+ r(tr("Philippines"), "PH"),
+ r(tr("Poland"), "PL"),
+ r(tr("Russia"), "RU"),
+ r(tr("Saudi Arabia"), "SA"),
+ r(tr("Singapore"), "SG"),
+ r(tr("South Africa"), "ZA"),
+ r(tr("South Korea"), "KR"),
+ r(tr("Spain"), "ES"),
+ r(tr("Sweden"), "SE"),
+ r(tr("Taiwan"), "TW"),
+ r(tr("Tunisia"), "TN"),
+ r(tr("Turkey"), "TR"),
+ r(tr("Uganda"), "UG"),
+ r(tr("United Arab Emirates"), "AE"),
+ r(tr("United Kingdom"), "GB"),
+ r(tr("Yemen"), "YE")};
+ std::sort(l.begin(), l.end());
+ return l;
+ }();
-YTRegions::YTRegions() : QObject() { }
-
-const QList<YTRegion> & YTRegions::list() {
- static QList<YTRegion> list;
- if (list.isEmpty()) {
- list << r(tr("Algeria"), "DZ")
- << r(tr("Argentina"), "AR")
- << r(tr("Australia"), "AU")
- << r(tr("Belgium"), "BE")
- << r(tr("Brazil"), "BR")
- << r(tr("Canada"), "CA")
- << r(tr("Chile"), "CL")
- << r(tr("Colombia"), "CO")
- << r(tr("Czech Republic"), "CZ")
- << r(tr("Egypt"), "EG")
- << r(tr("France"), "FR")
- << r(tr("Germany"), "DE")
- << r(tr("Ghana"), "GH")
- << r(tr("Greece"), "GR")
- << r(tr("Hong Kong"), "HK")
- << r(tr("Hungary"), "HU")
- << r(tr("India"), "IN")
- << r(tr("Indonesia"), "ID")
- << r(tr("Ireland"), "IE")
- << r(tr("Israel"), "IL")
- << r(tr("Italy"), "IT")
- << r(tr("Japan"), "JP")
- << r(tr("Jordan"), "JO")
- << r(tr("Kenya"), "KE")
- << r(tr("Malaysia"), "MY")
- << r(tr("Mexico"), "MX")
- << r(tr("Morocco"), "MA")
- << r(tr("Netherlands"), "NL")
- << r(tr("New Zealand"), "NZ")
- << r(tr("Nigeria"), "NG")
- << r(tr("Peru"), "PE")
- << r(tr("Philippines"), "PH")
- << r(tr("Poland"), "PL")
- << r(tr("Russia"), "RU")
- << r(tr("Saudi Arabia"), "SA")
- << r(tr("Singapore"), "SG")
- << r(tr("South Africa"), "ZA")
- << r(tr("South Korea"), "KR")
- << r(tr("Spain"), "ES")
- << r(tr("Sweden"), "SE")
- << r(tr("Taiwan"), "TW")
- << r(tr("Tunisia"), "TN")
- << r(tr("Turkey"), "TR")
- << r(tr("Uganda"), "UG")
- << r(tr("United Arab Emirates"), "AE")
- << r(tr("United Kingdom"), "GB")
- << r(tr("Yemen"), "YE");
-/*
- list << r(QLocale::Algeria, "DZ")
- << r(QLocale::Argentina, "AR")
- << r(QLocale::Australia, "AU")
- << r(QLocale::Belgium, "BE")
- << r(QLocale::Brazil, "BR")
- << r(QLocale::Canada, "CA")
- << r(QLocale::Chile, "CL")
- << r(QLocale::Colombia, "CO")
- << r(QLocale::CzechRepublic, "CZ")
- << r(QLocale::Egypt, "EG")
- << r(QLocale::France, "FR")
- << r(QLocale::Germany, "DE")
- << r(QLocale::Ghana, "GH")
- << r(QLocale::Greece, "GR")
- << r(QLocale::HongKong, "HK")
- << r(QLocale::Hungary, "HU")
- << r(QLocale::India, "IN")
- << r(QLocale::Indonesia, "ID")
- << r(QLocale::Ireland, "IE")
- << r(QLocale::Israel, "IL")
- << r(QLocale::Italy, "IT")
- << r(QLocale::Japan, "JP")
- << r(QLocale::Jordan, "JO")
- << r(QLocale::Kenya, "KE")
- << r(QLocale::Malaysia, "MY")
- << r(QLocale::Mexico, "MX")
- << r(QLocale::Morocco, "MA")
- << r(QLocale::Netherlands, "NL")
- << r(QLocale::NewZealand, "NZ")
- << r(QLocale::Nigeria, "NG")
- << r(QLocale::Peru, "PE")
- << r(QLocale::Philippines, "PH")
- << r(QLocale::Poland, "PL")
- << r(QLocale::RussianFederation, "RU")
- << r(QLocale::SaudiArabia, "SA")
- << r(QLocale::Singapore, "SG")
- << r(QLocale::SouthAfrica, "ZA")
- << r(QLocale::RepublicOfKorea, "KR")
- << r(QLocale::Spain, "ES")
- << r(QLocale::Sweden, "SE")
- << r(QLocale::Taiwan, "TW")
- << r(QLocale::Tunisia, "TN")
- << r(QLocale::Turkey, "TR")
- << r(QLocale::Uganda, "UG")
- << r(QLocale::UnitedArabEmirates, "AE")
- << r(QLocale::UnitedKingdom, "GB")
- << r(QLocale::Yemen, "YE");
- */
- qSort(list);
- }
return list;
}
return r;
}
-const YTRegion & YTRegions::localRegion() {
- static YTRegion region;
- if (region.name.isEmpty()) {
+const YTRegion &YTRegions::localRegion() {
+ static const YTRegion region = []() -> YTRegion {
QString country = QLocale::system().name().right(2);
- foreach (YTRegion r, list())
- if (r.id == country) {
- region = r;
- break;
- } // else qDebug() << r.id << country;
- }
+ for (const YTRegion &r : list()) {
+ if (r.id == country) return r;
+ }
+ return YTRegion();
+ }();
return region;
}
-const YTRegion & YTRegions::worldwideRegion() {
- static YTRegion region = {"", tr("Worldwide")};
+const YTRegion &YTRegions::defaultRegion() {
+ static const YTRegion region = {"US", tr("United States")};
return region;
}
return settings.value("regionId").toString();
}
-YTRegion YTRegions::currentRegion() {
+const YTRegion &YTRegions::currentRegion() {
return regionById(currentRegionId());
}
-YTRegion YTRegions::regionById(const QString &id) {
- if (id.isEmpty()) return worldwideRegion();
- YTRegion region;
- foreach (YTRegion r, list())
- if (r.id == id) {
- region = r;
- break;
- }
- if (region.name.isEmpty()) return worldwideRegion();
- return region;
+const YTRegion &YTRegions::regionById(const QString &id) {
+ if (id.isEmpty()) return defaultRegion();
+ for (const YTRegion &r : list()) {
+ if (r.id == id) return r;
+ }
+ return defaultRegion();
}
QIcon YTRegions::iconForRegionId(const QString ®ionId) {
- if (regionId.isEmpty()) return QIcon(":images/worldwide.png");
+ if (regionId.isEmpty()) return IconUtils::icon("worldwide");
return QIcon(":flags/" + regionId.toLower() + ".png");
}