FlightGear next
FavouriteAircraftData.cxx
Go to the documentation of this file.
2
3#include <QSettings>
4
5#include <memory>
6
7static std::unique_ptr<FavouriteAircraftData> static_instance;
8
9FavouriteAircraftData *FavouriteAircraftData::instance()
10{
11 if (!static_instance) {
12 static_instance.reset(new FavouriteAircraftData);
13 }
14
15 return static_instance.get();
16}
17
19{
20 return m_favourites.contains(u);
21}
22
24{
25 const auto cur = m_favourites.contains(u);
26 if (b == cur)
27 return false;
28
29 if (b && !cur) {
30 m_favourites.append(u);
31 } else if (!b && cur) {
32 m_favourites.removeOne(u);
33 }
34
35 emit changed(u);
36 saveFavourites();
37 return true;
38}
39
40FavouriteAircraftData::FavouriteAircraftData()
41{
42 loadFavourites();
43}
44
45void FavouriteAircraftData::loadFavourites()
46{
47 m_favourites.clear();
48 QSettings settings;
49 Q_FOREACH(auto v, settings.value("favourite-aircraft").toList()) {
50 m_favourites.append(v.toUrl());
51 }
52}
53
54void FavouriteAircraftData::saveFavourites()
55{
56 QVariantList favs;
57 Q_FOREACH(auto u, m_favourites) {
58 favs.append(u);
59 }
60 QSettings settings;
61 settings.setValue("favourite-aircraft", favs);
62}
static std::unique_ptr< FavouriteAircraftData > static_instance
void changed(QUrl u)
bool setFavourite(QUrl u, bool b)
static FavouriteAircraftData * instance()