Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
@@ -0,0 +1,155 @@
|
||||
/**
|
||||
* @RDE_HEADER@
|
||||
* ExerciseManangement - Exercise Overview Dialog Model
|
||||
* $Id$
|
||||
* $HeadURL$
|
||||
* $Author$
|
||||
* Created by Christian Ehrlicher, SLSE, 2016-02-29
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <ExerciseManagement/logger.h>
|
||||
#include <LtsWidgets/lts_abstract_table_model.h>
|
||||
#include <LtsWidgets/lts_column_filter_proxy_model.h>
|
||||
#include <AssetManagement/asm_dtc.h>
|
||||
#include <ExerciseManagement/exm_dtc.h>
|
||||
#include <ExerciseManagement/exm_ftc.h>
|
||||
#include <ProjectDataManagement/pdm_dtc.h>
|
||||
|
||||
|
||||
namespace ExerciseManagement
|
||||
{
|
||||
|
||||
class AbstractRequester
|
||||
: public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
AbstractRequester()
|
||||
: QObject(nullptr)
|
||||
{}
|
||||
|
||||
signals:
|
||||
void signalDone();
|
||||
};
|
||||
|
||||
|
||||
// TODO: autogen!
|
||||
class GetExerciseImageRequester
|
||||
: public AbstractRequester
|
||||
, public ExerciseManagement::Interface::Ftc::GetExerciseImageReplyHandler
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
private:
|
||||
GetExerciseImageRequester() = default;
|
||||
|
||||
public:
|
||||
static GetExerciseImageRequester *createGetExerciseImageRequester()
|
||||
{
|
||||
return new GetExerciseImageRequester;
|
||||
}
|
||||
|
||||
const GetExerciseImageReply &reply() const
|
||||
{
|
||||
return m_reply;
|
||||
}
|
||||
|
||||
void onGetExerciseImageReply(const GetExerciseImageReply &reply) override final
|
||||
{
|
||||
m_reply = reply;
|
||||
emit signalDone();
|
||||
deleteLater();
|
||||
}
|
||||
|
||||
private:
|
||||
GetExerciseImageReply m_reply;
|
||||
};
|
||||
|
||||
|
||||
// --------------------------------------------------------
|
||||
// ExerciseManagementModel
|
||||
// --------------------------------------------------------
|
||||
class ExerciseManagementDialogModel final
|
||||
: public LtsWidgets::LtsAbstractTableModel<ExerciseManagement::Exercise>
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
enum Columns
|
||||
{
|
||||
Id,
|
||||
Name,
|
||||
TrainingArea,
|
||||
Begin,
|
||||
End,
|
||||
Started,
|
||||
Stopped,
|
||||
Status,
|
||||
RadioGroup,
|
||||
ActivePhase,
|
||||
Created,
|
||||
TimeZone,
|
||||
Forces,
|
||||
Description,
|
||||
LinkedId,
|
||||
Transferred,
|
||||
HasHlaInterface,
|
||||
Image
|
||||
};
|
||||
|
||||
explicit ExerciseManagementDialogModel(QObject *parent = nullptr);
|
||||
bool initModel(const std::shared_ptr<ExerciseManagement::Interface::Dtc> &dtc,
|
||||
const std::shared_ptr<ExerciseManagement::Interface::Ftc> &ftc,
|
||||
const std::shared_ptr<AssetManagement::Interface::Dtc> &asmDtc,
|
||||
const std::shared_ptr<ProjectDataManagement::Interface::Dtc> &pdmDtc,
|
||||
bool addAdminExercise = false,
|
||||
bool preloadExerciseImages = false);
|
||||
|
||||
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override final;
|
||||
void addImagePreload(int32_t exId);
|
||||
void setImageSizeConstraints(const QSize &size);
|
||||
|
||||
protected:
|
||||
int getId(const ExerciseManagement::Exercise &data) const override final;
|
||||
|
||||
private slots:
|
||||
void preloadNextImage();
|
||||
|
||||
private:
|
||||
GetExerciseImageRequester *createGetExerciseImageRequester();
|
||||
|
||||
std::shared_ptr<ExerciseManagement::Interface::Dtc> m_exmDtc;
|
||||
std::shared_ptr<ExerciseManagement::Interface::Ftc> m_exmFtc;
|
||||
std::shared_ptr<AssetManagement::Interface::Dtc> m_asmDtc;
|
||||
std::shared_ptr<ProjectDataManagement::Interface::Dtc> m_pdmDtc;
|
||||
QVector<int32_t> m_preloadImages;
|
||||
QMap<int32_t /* exId */, QByteArray /* image */> m_exerciseImages;
|
||||
bool m_imagePreloadPending { false };
|
||||
QSize m_imageSize;
|
||||
|
||||
LOGGER_T m_logger;
|
||||
|
||||
friend class ExerciseManagementProxyModel;
|
||||
};
|
||||
|
||||
class ExerciseManagementProxyModel final : public LtsWidgets::LtsColumnFilterProxyModel
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
using LtsWidgets::LtsColumnFilterProxyModel::LtsColumnFilterProxyModel;
|
||||
|
||||
void setAdminExerciseVisible(bool bAdminVisible);
|
||||
void setVisibleExerciseStates(const QVector<ExerciseState> &visibleStates);
|
||||
void setVisibleExerciseIds(const QVector<int> &exIds);
|
||||
void setSourceModel(QAbstractItemModel *sourceModel) override;
|
||||
protected:
|
||||
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
||||
private:
|
||||
ExerciseManagementDialogModel *m_sourceModel = nullptr;
|
||||
QVector<int> m_exIds;
|
||||
QVector<ExerciseState> m_visibleStates;
|
||||
bool m_bAdminVisible = false;
|
||||
};
|
||||
}
|
||||
Reference in new issue
Block a user