flags master ok

flags
Francois DELOBEL 4 weeks ago
parent d39ca6a372
commit a0a2407aa2

@ -1,7 +1,12 @@
#include "country.h" #include "country.h"
Country::Country(QString name, QString capital, QString iso, QString region, QString alt, QObject *object) Country::Country(QString name, QString capital, QString iso, QString region, QString alt, QObject *object)
: QObject{object},
m_name{name},
m_capital{capital},
m_iso{iso},
m_region{region},
m_alt{alt}
{} {}
QString Country::capital() const QString Country::capital() const

@ -16,7 +16,8 @@ class Country : public QObject
public: public:
Country(QString name, QString capital, QString iso, QString region, QString alt, QObject *object); Country(QString name, QString capital, QString iso, QString region,
QString alt, QObject *object = nullptr);
QString capital() const; QString capital() const;
void setCapital(const QString &newCapital); void setCapital(const QString &newCapital);
QString name() const; QString name() const;

@ -5,7 +5,9 @@
#include <QJsonObject> #include <QJsonObject>
#include <QJsonArray> #include <QJsonArray>
QList<Country *> CountryFactory::load(QString filename) { #include "country.h"
QList<Country *> CountryFactory::loadFromJson(QString filename) {
QFile file(filename); QFile file(filename);
file.open(QIODevice::ReadOnly); file.open(QIODevice::ReadOnly);
@ -16,9 +18,16 @@ QList<Country *> CountryFactory::load(QString filename) {
QJsonArray liste = objet["country"].toArray(); QJsonArray liste = objet["country"].toArray();
QList<Country*> countries;
for ( QJsonValue value : liste) { for ( QJsonValue value : liste) {
qWarning() << value["name"].toString(); countries.push_back(new Country(
value["name"].toString(),
value["capital"].toString(),
value["@iso"].toString(),
value["region"].toString(),
value["alt"].toString()
));
} }
return {}; return countries;
} }

@ -10,7 +10,7 @@ class CountryFactory
{ {
public: public:
static QList<Country*> load(QString filename); static QList<Country*> loadFromJson(QString filename);
}; };
#endif // COUNTRYFACTORY_H #endif // COUNTRYFACTORY_H

@ -1,6 +1,8 @@
#include <QGuiApplication> #include <QGuiApplication>
#include <QQmlApplicationEngine> #include <QQmlApplicationEngine>
#include <QQmlContext>
#include "country.h"
#include "countryfactory.h" #include "countryfactory.h"
int main(int argc, char *argv[]) int main(int argc, char *argv[])
@ -22,8 +24,13 @@ int main(int argc, char *argv[])
}, },
Qt::QueuedConnection); Qt::QueuedConnection);
CountryFactory::load(":/assets/data_en-GB.json"); QList<Country*> countries = CountryFactory::loadFromJson(":/assets/data_en-GB.json");
QList<QObject*> cc;
for ( auto cr : countries)
cc.append(static_cast<QObject*>(cr));
engine.rootContext()->setContextProperty("countries", QVariant::fromValue(cc));
engine.load(url); engine.load(url);
return app.exec(); return app.exec();
} }

@ -5,5 +5,29 @@ Window {
width: 640 width: 640
height: 480 height: 480
visible: true visible: true
title: qsTr("Hello World") title: qsTr("Flags of the world")
ListView {
id: lv
anchors.fill: parent
model: countries
delegate: Rectangle {
width: lv.width/3
height: 30
Text {
text: name
font.pixelSize: 20
anchors.verticalCenter: parent.verticalCenter
}
Image {
source: "qrc:/assets/flags/"+iso+".svg"
height: parent.height - 4
anchors.right: parent.right
fillMode: Image.PreserveAspectFit
anchors.verticalCenter: parent.verticalCenter
}
}
}
} }

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save