Ref T259, Ref T243 adjusted container, models and views to support CInterpolationSetupList

* added forward declarations
* added some utility functions
This commit is contained in:
Klaus Basan
2018-03-19 20:31:21 +01:00
parent 011f31ad2b
commit 74f52cf39c
13 changed files with 204 additions and 82 deletions

View File

@@ -10,19 +10,25 @@
#ifndef BLACKGUI_MODELS_ALLMODELCONTAINERS_H
#define BLACKGUI_MODELS_ALLMODELCONTAINERS_H
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/interpolationsetuplist.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/simulation/matchingstatistics.h"
#include "blackmisc/aviation/aircrafticaocodelist.h"
#include "blackmisc/aviation/airlineicaocodelist.h"
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/aviation/atcstationlist.h"
#include "blackmisc/aviation/liverylist.h"
#include "blackmisc/input/actionhotkeylist.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/network/serverlist.h"
#include "blackmisc/network/textmessagelist.h"
#include "blackmisc/network/userlist.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/weather/cloudlayerlist.h"
#include "blackmisc/weather/presentweatherlist.h"
#include "blackmisc/weather/temperaturelayerlist.h"
#include "blackmisc/weather/windlayerlist.h"
#include "blackmisc/input/actionhotkeylist.h"
#include "blackmisc/countrylist.h"
#include "blackmisc/namevariantpairlist.h"
#include "blackmisc/statusmessagelist.h"

View File

@@ -22,6 +22,7 @@
#include "blackgui/models/countrylistmodel.h"
#include "blackgui/models/distributorlistmodel.h"
#include "blackgui/models/identifierlistmodel.h"
#include "blackgui/models/interpolationsetupmodel.h"
#include "blackgui/models/liverylistmodel.h"
#include "blackgui/models/matchingstatisticsmodel.h"
#include "blackgui/models/namevariantpairlistmodel.h"

View File

@@ -0,0 +1,40 @@
/* Copyright (C) 2018
* Swift Project Community / Contributors
*
* This file is part of swift Project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "blackgui/models/columns.h"
#include "blackgui/models/interpolationsetupmodel.h"
#include <Qt>
#include <QtGlobal>
using namespace BlackMisc;
using namespace BlackMisc::Aviation;
using namespace BlackMisc::Simulation;
namespace BlackGui
{
namespace Models
{
CInterpolationSetupListModel::CInterpolationSetupListModel(QObject *parent) :
CListModelCallsignObjects("CInterpolationSetupListModel", parent)
{
m_columns.addColumn(CColumn::standardValueObject("cs.", "callsign", CInterpolationAndRenderingSetupPerCallsign::IndexCallsign, CCallsign::IndexCallsignString));
m_columns.addColumn(CColumn("sim.dbg.", "simulator debug", CInterpolationAndRenderingSetupPerCallsign::IndexSimulatorDebugMessages, new CBoolIconFormatter("sim.dbg.", "simulator debug")));
m_columns.addColumn(CColumn("log.int.", "log.interpolation", CInterpolationAndRenderingSetupPerCallsign::IndexLogInterpolation, new CBoolIconFormatter("log.int.", "log.interpolation")));
m_columns.addColumn(CColumn("parts", "aircraft parts", CInterpolationAndRenderingSetupPerCallsign::IndexEnabledAircraftParts, new CBoolIconFormatter("parts", "aircraft parts")));
m_columns.addColumn(CColumn("log.int.", "log.interpolation", CInterpolationAndRenderingSetupPerCallsign::IndexEnableGndFlag, new CBoolIconFormatter("log.int.", "log.interpolation")));
m_columns.addColumn(CColumn("send gnd.", "send gnd.", CInterpolationAndRenderingSetupPerCallsign::IndexSendGndFlagToSimulator, new CBoolIconFormatter("send gnd.", "send gnd.")));
m_columns.addColumn(CColumn("full", "full int.", CInterpolationAndRenderingSetupPerCallsign::IndexForceFullInterpolation, new CBoolIconFormatter("full", "full int.")));
// default sort order
this->setSortColumnByPropertyIndex(CCountry::IndexIsoCode);
m_sortOrder = Qt::AscendingOrder;
}
} // ns
} // ns

View File

@@ -0,0 +1,37 @@
/* Copyright (C) 2018
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKGUI_MODELS_INTERPOLATIONSETUPMODEL_H
#define BLACKGUI_MODELS_INTERPOLATIONSETUPMODEL_H
#include "blackmisc/simulation/interpolationsetuplist.h"
#include "blackgui/models/listmodelcallsignobjects.h"
#include "blackgui/blackguiexport.h"
#include <QString>
namespace BlackGui
{
namespace Models
{
//! Country list model
class BLACKGUI_EXPORT CInterpolationSetupListModel :
public CListModelCallsignObjects<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList, false>
{
public:
//! Constructor
explicit CInterpolationSetupListModel(QObject *parent = nullptr);
//! Destructor
virtual ~CInterpolationSetupListModel() {}
};
} // ns
} // ns
#endif // guard

View File

@@ -13,49 +13,13 @@
#include "blackgui/guiutility.h"
#include "blackgui/models/columnformatters.h"
#include "blackgui/models/listmodelbase.h"
#include "blackmisc/aviation/aircrafticaocode.h"
#include "blackmisc/aviation/aircrafticaocodelist.h"
#include "blackmisc/aviation/airlineicaocode.h"
#include "blackmisc/aviation/airlineicaocodelist.h"
#include "blackmisc/aviation/airport.h"
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/aviation/atcstation.h"
#include "blackmisc/aviation/atcstationlist.h"
#include "blackmisc/aviation/livery.h"
#include "blackmisc/aviation/liverylist.h"
#include "blackgui/models/allmodelcontainers.h"
#include "blackmisc/compare.h"
#include "blackmisc/country.h"
#include "blackmisc/countrylist.h"
#include "blackmisc/identifier.h"
#include "blackmisc/identifierlist.h"
#include "blackmisc/namevariantpair.h"
#include "blackmisc/namevariantpairlist.h"
#include "blackmisc/network/client.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/network/server.h"
#include "blackmisc/network/serverlist.h"
#include "blackmisc/network/textmessage.h"
#include "blackmisc/network/textmessagelist.h"
#include "blackmisc/network/user.h"
#include "blackmisc/network/userlist.h"
#include "blackmisc/predicates.h"
#include "blackmisc/propertyindex.h"
#include "blackmisc/sequence.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/distributor.h"
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/simulation/matchingstatisticsentry.h"
#include "blackmisc/simulation/matchingstatistics.h"
#include "blackmisc/statusmessage.h"
#include "blackmisc/statusmessagelist.h"
#include "blackmisc/variant.h"
#include "blackmisc/verify.h"
#include "blackmisc/weather/cloudlayerlist.h"
#include "blackmisc/weather/temperaturelayerlist.h"
#include "blackmisc/weather/windlayerlist.h"
#include "blackmisc/worker.h"
#include <QFlags>
@@ -793,6 +757,7 @@ namespace BlackGui
template class CListModelBase<BlackMisc::Simulation::CAircraftModel, BlackMisc::Simulation::CAircraftModelList, true>;
template class CListModelBase<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList, true>;
template class CListModelBase<BlackMisc::Simulation::CDistributor, BlackMisc::Simulation::CDistributorList, true>;
template class CListModelBase<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList, false>;
template class CListModelBase<BlackMisc::Simulation::CMatchingStatisticsEntry, BlackMisc::Simulation::CMatchingStatistics, true>;
template class CListModelBase<BlackMisc::Weather::CCloudLayer, BlackMisc::Weather::CCloudLayerList, false>;
template class CListModelBase<BlackMisc::Weather::CTemperatureLayer, BlackMisc::Weather::CTemperatureLayerList, false>;

View File

@@ -55,5 +55,6 @@ namespace BlackGui
// https://isocpp.org/wiki/faq/templates#separate-template-fn-defn-from-decl
template class CListModelCallsignObjects<BlackMisc::Aviation::CAtcStation, BlackMisc::Aviation::CAtcStationList, true>;
template class CListModelCallsignObjects<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList, true>;
template class CListModelCallsignObjects<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList, false>;
} // namespace
} // namespace

View File

@@ -0,0 +1,25 @@
/* Copyright (C) 2018
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
#include "interpolationsetupview.h"
using namespace BlackGui::Models;
namespace BlackGui
{
namespace Views
{
CInterpolationSetupView::CInterpolationSetupView(QWidget *parent) :
CViewWithCallsignObjects(parent)
{
this->standardInit(new CInterpolationSetupListModel(this));
// this->setMenu(MenuDefaultDbViews);
}
} // ns
} // ns

View File

@@ -0,0 +1,35 @@
/* Copyright (C) 2018
* swift project Community / Contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution and at http://www.swift-project.org/license.html. No part of swift project,
* including this file, may be copied, modified, propagated, or distributed except according to the terms
* contained in the LICENSE file.
*/
//! \file
#ifndef BLACKGUI_VIEWS_INTERPOLATIONSETUPVIEW_H
#define BLACKGUI_VIEWS_INTERPOLATIONSETUPVIEW_H
#include "blackgui/blackguiexport.h"
#include "blackgui/models/interpolationsetupmodel.h"
#include "blackgui/views/viewcallsignobjects.h"
#include "blackmisc/countrylist.h"
class QWidget;
namespace BlackGui
{
namespace Views
{
//! Distributors
class BLACKGUI_EXPORT CInterpolationSetupView : public CViewWithCallsignObjects<Models::CInterpolationSetupListModel, BlackMisc::Simulation::CInterpolationSetupList, BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign>
{
public:
//! Constructor
explicit CInterpolationSetupView(QWidget *parent = nullptr);
};
} // ns
} // ns
#endif // guard

View File

@@ -15,6 +15,7 @@
#include "blackgui/guiutility.h"
#include "blackgui/loadindicator.h"
#include "blackgui/models/allmodels.h"
#include "blackgui/models/allmodelcontainers.h"
#include "blackgui/menus/menuaction.h"
#include "blackgui/menus/menudelegate.h"
#include "blackgui/menus/fontmenus.h"
@@ -22,47 +23,12 @@
#include "blackgui/views/viewbase.h"
#include "blackgui/views/viewbaseproxystyle.h"
#include "blackgui/views/viewbaseitemdelegate.h"
#include "blackmisc/aviation/aircrafticaocode.h"
#include "blackmisc/aviation/aircrafticaocodelist.h"
#include "blackmisc/aviation/airlineicaocode.h"
#include "blackmisc/aviation/airlineicaocodelist.h"
#include "blackmisc/aviation/airport.h"
#include "blackmisc/aviation/airportlist.h"
#include "blackmisc/aviation/atcstation.h"
#include "blackmisc/aviation/atcstationlist.h"
#include "blackmisc/aviation/livery.h"
#include "blackmisc/aviation/liverylist.h"
#include "blackmisc/country.h"
#include "blackmisc/countrylist.h"
#include "blackmisc/fileutils.h"
#include "blackmisc/icons.h"
#include "blackmisc/identifier.h"
#include "blackmisc/identifierlist.h"
#include "blackmisc/logmessage.h"
#include "blackmisc/namevariantpair.h"
#include "blackmisc/namevariantpairlist.h"
#include "blackmisc/network/client.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/network/server.h"
#include "blackmisc/network/serverlist.h"
#include "blackmisc/network/textmessage.h"
#include "blackmisc/network/textmessagelist.h"
#include "blackmisc/network/user.h"
#include "blackmisc/network/userlist.h"
#include "blackmisc/propertyindexvariantmap.h"
#include "blackmisc/propertyindexlist.h"
#include "blackmisc/simulation/aircraftmodel.h"
#include "blackmisc/simulation/aircraftmodellist.h"
#include "blackmisc/simulation/distributor.h"
#include "blackmisc/simulation/distributorlist.h"
#include "blackmisc/simulation/matchingstatisticsentry.h"
#include "blackmisc/simulation/matchingstatistics.h"
#include "blackmisc/simulation/simulatedaircraft.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/statusmessagelist.h"
#include "blackmisc/weather/cloudlayerlist.h"
#include "blackmisc/weather/temperaturelayerlist.h"
#include "blackmisc/weather/windlayerlist.h"
#include "blackmisc/worker.h"
#include <QApplication>
@@ -1430,7 +1396,7 @@ namespace BlackGui
// Clear highlighting
if (this->derivedModel()->hasHighlightedRows())
{
menuActions.addAction(CIcons::refresh16(), "Clear highlighting", CMenuAction::pathViewClearHighlighting(), nullptr , { this, &CViewBaseNonTemplate::clearHighlighting });
menuActions.addAction(CIcons::refresh16(), "Clear highlighting", CMenuAction::pathViewClearHighlighting(), nullptr, { this, &CViewBaseNonTemplate::clearHighlighting });
}
}
@@ -1644,6 +1610,7 @@ namespace BlackGui
template class CViewBase<BlackGui::Models::CCountryListModel, BlackMisc::CCountryList, BlackMisc::CCountry>;
template class CViewBase<BlackGui::Models::CDistributorListModel, BlackMisc::Simulation::CDistributorList, BlackMisc::Simulation::CDistributor>;
template class CViewBase<BlackGui::Models::CIdentifierListModel, BlackMisc::CIdentifierList, BlackMisc::CIdentifier>;
template class CViewBase<BlackGui::Models::CInterpolationSetupListModel, BlackMisc::Simulation::CInterpolationSetupList, BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign>;
template class CViewBase<BlackGui::Models::CLiveryListModel, BlackMisc::Aviation::CLiveryList, BlackMisc::Aviation::CLivery>;
template class CViewBase<BlackGui::Models::CMatchingStatisticsModel, BlackMisc::Simulation::CMatchingStatistics, BlackMisc::Simulation::CMatchingStatisticsEntry>;
template class CViewBase<BlackGui::Models::CNameVariantPairModel, BlackMisc::CNameVariantPairList, BlackMisc::CNameVariantPair>;

View File

@@ -9,6 +9,7 @@
#include "blackgui/views/viewcallsignobjects.h"
#include "blackgui/models/atcstationlistmodel.h"
#include "blackgui/models/interpolationsetupmodel.h"
#include "blackgui/models/simulatedaircraftlistmodel.h"
#include "blackmisc/icons.h"
@@ -68,6 +69,14 @@ namespace BlackGui
return selected.getCallsigns();
}
template<class ModelClass, class ContainerType, class ObjectType>
int CViewWithCallsignObjects<ModelClass, ContainerType, ObjectType>::removeCallsign(const CCallsign &callsign)
{
if (callsign.isEmpty()) { return 0; }
const CCallsignSet set({ callsign });
return this->removeCallsigns(set);
}
template <class ModelClass, class ContainerType, class ObjectType>
int CViewWithCallsignObjects<ModelClass, ContainerType, ObjectType>::removeCallsigns(const CCallsignSet &callsigns)
{
@@ -88,7 +97,17 @@ namespace BlackGui
{
if (container.isEmpty()) { return 0; }
ContainerType copy(this->container());
int c = copy.replaceOrAddObjectsByCallsign(container);
const int c = copy.replaceOrAddObjectsByCallsign(container);
if (c == 0) { return 0; }
this->updateContainerMaybeAsync(copy);
return c;
}
template<class ModelClass, class ContainerType, class ObjectType>
int CViewWithCallsignObjects<ModelClass, ContainerType, ObjectType>::replaceOrAddObjectByCallsign(const ObjectType &object)
{
ContainerType copy(this->container());
const int c = copy.replaceOrAddObjectByCallsign(object);
if (c == 0) { return 0; }
this->updateContainerMaybeAsync(copy);
return c;
@@ -104,6 +123,7 @@ namespace BlackGui
}
template class CViewWithCallsignObjects<BlackGui::Models::CAtcStationListModel, BlackMisc::Aviation::CAtcStationList, BlackMisc::Aviation::CAtcStation>;
template class CViewWithCallsignObjects<BlackGui::Models::CInterpolationSetupListModel, BlackMisc::Simulation::CInterpolationSetupList, BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign>;
template class CViewWithCallsignObjects<BlackGui::Models::CSimulatedAircraftListModel, BlackMisc::Simulation::CSimulatedAircraftList, BlackMisc::Simulation::CSimulatedAircraft>;
} // namespace

View File

@@ -45,9 +45,15 @@ namespace BlackGui
//! Remove callsigns
int removeCallsigns(const BlackMisc::Aviation::CCallsignSet &callsigns);
//! Remove callsign
int removeCallsign(const BlackMisc::Aviation::CCallsign &callsign);
//! Update or insert data (based on callsign)
int replaceOrAddObjectsByCallsign(const ContainerType &container);
//! Update or insert data (based on callsign)
int replaceOrAddObjectByCallsign(const ObjectType &object);
//! Reselect by callsigns
virtual void selectObjects(const ContainerType &selectedObjects) override;

View File

@@ -7,14 +7,15 @@
* contained in the LICENSE file.
*/
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/simulation/interpolationsetuplist.h"
#include "blackmisc/aviation/callsignobjectlist.h"
#include "blackmisc/aviation/callsign.h"
#include "blackmisc/predicates.h"
#include "blackmisc/aviation/atcstationlist.h"
#include "blackmisc/aviation/aircraftsituationlist.h"
#include "blackmisc/aviation/flightplanlist.h"
#include "blackmisc/simulation/simulatedaircraftlist.h"
#include "blackmisc/network/clientlist.h"
#include "blackmisc/predicates.h"
#include <QtGlobal>
@@ -179,6 +180,17 @@ namespace BlackMisc
return result;
}
template<class OBJ, class CONTAINER>
int ICallsignObjectList<OBJ, CONTAINER>::replaceOrAddObjectByCallsign(const OBJ &otherObject)
{
const CCallsign cs(otherObject.getCallsign());
if (cs.isEmpty()) { return 0; }
CONTAINER &copy(this->container());
copy.removeByCallsign(cs);
copy.push_back(otherObject);
return 1;
}
template<class OBJ, class CONTAINER>
int ICallsignObjectList<OBJ, CONTAINER>::replaceOrAddObjectsByCallsign(const CONTAINER &others)
{
@@ -188,7 +200,7 @@ namespace BlackMisc
for (const OBJ &obj : others)
{
const CCallsign cs(obj.getCallsign());
if (cs.isEmpty()) continue;
if (cs.isEmpty()) { continue; }
copy.removeByCallsign(cs);
copy.push_back(obj);
c++;
@@ -237,6 +249,7 @@ namespace BlackMisc
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAircraftSituation, BlackMisc::Aviation::CAircraftSituationList>;
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CFlightPlan, BlackMisc::Aviation::CFlightPlanList>;
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList>;
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList>;
template class BLACKMISC_EXPORT_DEFINE_TEMPLATE ICallsignObjectList<BlackMisc::Network::CClient, BlackMisc::Network::CClientList>;
//! \endcond

View File

@@ -33,6 +33,8 @@ namespace BlackMisc
{
class CSimulatedAircraft;
class CSimulatedAircraftList;
class CInterpolationAndRenderingSetupPerCallsign;
class CInterpolationSetupList;
}
namespace Network
@@ -90,11 +92,14 @@ namespace BlackMisc
//! Split into 0..n containers as per callsign
QHash<BlackMisc::Aviation::CCallsign, CONTAINER> splitPerCallsign() const;
//! Replace or add objects by callsign
int replaceOrAddObjectByCallsign(const OBJ &otherObject);
//! Replace or add objects by callsign
int replaceOrAddObjectsByCallsign(const CONTAINER &others);
//! Incremental update or add object
int incrementalUpdateOrAdd(const OBJ &objectBeforeChanged, const BlackMisc::CPropertyIndexVariantMap &changedValues);
int incrementalUpdateOrAdd(const OBJ &objectBeforeChanged, const CPropertyIndexVariantMap &changedValues);
//! Sort by callsign
void sortByCallsign();
@@ -115,6 +120,7 @@ namespace BlackMisc
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CAircraftSituation, BlackMisc::Aviation::CAircraftSituationList>;
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Aviation::CFlightPlan, BlackMisc::Aviation::CFlightPlanList>;
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::Simulation::CSimulatedAircraftList>;
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign, BlackMisc::Simulation::CInterpolationSetupList>;
extern template class BLACKMISC_EXPORT_DECLARE_TEMPLATE ICallsignObjectList<BlackMisc::Network::CClient, BlackMisc::Network::CClientList>;
//! \endcond