1
0
Fork 0
flightgear/src/GUI/FavouriteAircraftData.cxx

62 lines
1.2 KiB
C++

#include "FavouriteAircraftData.hxx"
#include <QSettings>
#include <memory>
static std::unique_ptr<FavouriteAircraftData> static_instance;
FavouriteAircraftData *FavouriteAircraftData::instance()
{
if (!static_instance) {
static_instance.reset(new FavouriteAircraftData);
}
return static_instance.get();
}
bool FavouriteAircraftData::isFavourite(QUrl u) const
{
return m_favourites.contains(u);
}
bool FavouriteAircraftData::setFavourite(QUrl u, bool b)
{
const auto cur = m_favourites.contains(u);
if (b == cur)
return false;
if (b && !cur) {
m_favourites.append(u);
} else if (!b && cur) {
m_favourites.removeOne(u);
}
emit changed(u);
saveFavourites();
return true;
}
FavouriteAircraftData::FavouriteAircraftData()
{
loadFavourites();
}
void FavouriteAircraftData::loadFavourites()
{
m_favourites.clear();
QSettings settings;
Q_FOREACH(auto v, settings.value("favourite-aircraft").toList()) {
m_favourites.append(v.toUrl());
}
}
void FavouriteAircraftData::saveFavourites()
{
QVariantList favs;
Q_FOREACH(auto u, m_favourites) {
favs.append(u);
}
QSettings settings;
settings.setValue("favourite-aircraft", favs);
}