7 #include <QStringBuilder>
19 : IDatastoreObjectWithStringKey(iso.trimmed().toUpper()), m_name(name.trimmed())
21 this->setSimplifiedNameIfNotSame();
33 return CIcons::StandardIconEmpty;
39 const QString code(iso.trimmed().toUpper());
40 m_dbKey = (code.length() == 2) ? code :
"";
45 const QString code(iso.trimmed().toUpper());
46 m_iso3 = (code.length() == 3) ? code :
"";
61 if (m_name.isEmpty()) {
return s; }
62 return u
" (" % m_name % u
')';
67 if (!this->
isValid()) {
return QString(); }
68 return m_name % u
" - " %
m_dbKey;
73 m_name = countryName.trimmed();
74 this->setSimplifiedNameIfNotSame();
79 if (name.isEmpty() || m_name.isEmpty()) {
return false; }
82 if (name.length() < 5)
89 return m_name.contains(name, Qt::CaseInsensitive) || m_simplifiedName.contains(name, Qt::CaseInsensitive);
108 if (index.
isMyself()) {
return QVariant::fromValue(*
this); }
112 case IndexIsoCode:
return QVariant::fromValue(
m_dbKey);
113 case IndexIso3Code:
return QVariant::fromValue(
getIso3Code());
114 case IndexName:
return QVariant::fromValue(m_name);
116 case IndexAlias1:
return QVariant::fromValue(this->
getAlias1());
117 case IndexAlias2:
return QVariant::fromValue(this->
getAlias2());
118 case IndexHistoric:
return QVariant::fromValue(this->
isHistoric());
120 return (IDatastoreObjectWithStringKey::canHandleIndex(index)) ?
121 IDatastoreObjectWithStringKey::propertyByIndex(index) :
130 (*this) = variant.value<
CCountry>();
136 case IndexIsoCode: this->
setIsoCode(variant.toString());
break;
137 case IndexIso3Code: this->
setIso3Code(variant.toString());
break;
138 case IndexName: this->
setName(variant.toString());
break;
139 case IndexAlias1: this->
setAlias1(variant.toString());
break;
140 case IndexAlias2: this->
setAlias1(variant.toString());
break;
141 case IndexHistoric: this->
setHistoric(variant.toBool());
break;
143 IDatastoreObjectWithStringKey::canHandleIndex(index) ?
144 IDatastoreObjectWithStringKey::setPropertyByIndex(index, variant) :
153 if (IDatastoreObjectWithStringKey::canHandleIndex(index))
155 return IDatastoreObjectWithStringKey::comparePropertyByIndex(index, compareValue);
162 case IndexName:
return getName().compare(compareValue.
getName(), Qt::CaseInsensitive);
163 case IndexAlias1:
return this->
getAlias1().compare(compareValue.
getAlias1(), Qt::CaseInsensitive);
164 case IndexAlias2:
return this->
getAlias2().compare(compareValue.
getAlias2(), Qt::CaseInsensitive);
177 const QString iso(json.value(prefix % u
"id").toString());
178 const QString name(json.value(prefix % u
"country").toString());
179 const QString alias1(json.value(prefix % u
"alias1").toString());
180 const QString alias2(json.value(prefix % u
"alias2").toString());
181 const QString iso3(json.value(prefix % u
"iso3").toString());
182 const QString historic(json.value(prefix % u
"historic").toString());
195 void CCountry::setSimplifiedNameIfNotSame()
198 m_simplifiedName = m_name == simplified ?
"" : simplified;
QString getCombinedStringIsoName() const
Combined string ISO/name.
const QString & getName() const
Country name.
const QString & getIso3Code() const
Get 3 letter iso code.
CCountry()=default
Constructor.
const QString & getAlias1() const
Alias 1.
bool isValid() const
Valid?
bool hasIso3Code() const
ISO 3 letter code?
bool hasIsoCode() const
ISO code?
bool matchesCountryName(const QString &name) const
Matches country name.
int comparePropertyByIndex(CPropertyIndexRef index, const CCountry &compareValue) const
Compare for index.
void setName(const QString &countryName)
Set country name.
void setIsoCode(const QString &iso)
Country ISO code (US, DE, GB, PL)
const QString & getIsoCode() const
DB ISO code.
void setIso3Code(const QString &iso)
Country ISO code (USA, DEU, GBR, POL)
static bool isValidIsoCode(const QString &isoCode)
Valid country iso code.
QString getCombinedStringNameIso() const
Combined string name/ISO.
bool matchesAlias(const QString &alias) const
Matches alias.
CIcons::IconIndex toIcon() const
Representing icon.
QString convertToQString(bool i18n=false) const
Cast as QString.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
void setAlias1(const QString &alias)
Alias 1.
ColumnIndex
Properties by index.
bool isHistoric() const
Historic / non-existing country (e.g. Soviet Union)
const QString & getAlias2() const
Alias 2.
static CCountry fromDatabaseJson(const QJsonObject &json, const QString &prefix=QString())
From our database JSON format.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
void setAlias2(const QString &alias)
Alias 2.
void setHistoric(bool historic)
Historic country?
IconIndex
Index for each icon, allows to send them via DBus, efficiently store them, etc.
Non-owning reference to a CPropertyIndex with a subset of its features.
CastType frontCasted() const
First element casted to given type, usually the PropertIndex enum.
bool isMyself() const
Myself index, used with nesting.
void setLoadedFromDb(bool loaded)
Mark as loaded from DB.
static bool existsKey(const QJsonObject &json, const QString &prefix=QString())
Is a key available?
const QString & getDbKey() const
Get DB key.
void setKeyVersionTimestampFromDatabaseJson(const QJsonObject &json, const QString &prefix=QString())
Set key and timestamp values.
int comparePropertyByIndex(CPropertyIndexRef index, const Derived &compareValue) const
Compare for index.
void setPropertyByIndex(CPropertyIndexRef index, const QVariant &variant)
Set property by index.
QVariant propertyByIndex(CPropertyIndexRef index) const
Property by index.
Free functions in swift::misc.
SWIFT_MISC_EXPORT bool caseInsensitiveStringCompare(const QString &c1, const QString &c2)
Case insensitive string compare.
SWIFT_MISC_EXPORT QString simplifyAccents(const QString &candidate)
Remove accents / diacritic marks from a string.
SWIFT_MISC_EXPORT bool stringToBool(const QString &boolString)
Convert string to bool.
#define SWIFT_DEFINE_VALUEOBJECT_MIXINS(Namespace, Class)
Explicit template definition of mixins for a CValueObject subclass.