105 lines
2.4 KiB
C++
Executable File
105 lines
2.4 KiB
C++
Executable File
/**
|
|
* @RDE_HEADER@
|
|
* Widget for selecting (base) symbols
|
|
* $Id$
|
|
* $HeadURL$
|
|
* $Author$
|
|
* Created by Norbert Thoden, NLE, 12.12.2019
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <SymbologyGui/advancedsymbologygui_export.h>
|
|
#include <Common/situation_map_logging.h>
|
|
|
|
#include <QWidget>
|
|
#include <QVector>
|
|
|
|
|
|
namespace Ui
|
|
{
|
|
class BaseSymbolLookupWidget;
|
|
}
|
|
|
|
|
|
namespace AdvancedSymbology
|
|
{
|
|
class BaseSymbolModel;
|
|
class BaseSymbolItem;
|
|
namespace Gui
|
|
{
|
|
|
|
enum class SYMBOL_TYPE
|
|
{
|
|
ESRI = 0,
|
|
XML,
|
|
ETS
|
|
};
|
|
|
|
struct ModelItem
|
|
{
|
|
ModelItem(SYMBOL_TYPE symbolType = SYMBOL_TYPE::ESRI,
|
|
const QString &name = QString(),
|
|
BaseSymbolModel *baseSymbolModel = nullptr)
|
|
: m_symbolType(symbolType),
|
|
m_name(name),
|
|
m_baseSymbolModel(baseSymbolModel)
|
|
{}
|
|
SYMBOL_TYPE m_symbolType;
|
|
QString m_name;
|
|
BaseSymbolModel *m_baseSymbolModel = nullptr;
|
|
};
|
|
|
|
using MODEL_CONT = QVector<ModelItem>;
|
|
|
|
|
|
//------------------------------------------------------------------------------
|
|
// BaseSymbolLookupWidget
|
|
//------------------------------------------------------------------------------
|
|
class ADVANCEDSYMBOLOGYGUI_EXPORT BaseSymbolLookupWidget : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit BaseSymbolLookupWidget(const MODEL_CONT &modelCont, QWidget *parent);
|
|
~BaseSymbolLookupWidget();
|
|
|
|
bool participantMode() const;
|
|
void setParticipantMode(bool onOff);
|
|
|
|
void setValidBaseSymbolCodes(const QSet<QString> &validBaseSymbolCodes);
|
|
|
|
QSharedPointer<BaseSymbolItem> getCurrentBaseSymbolItem() const;
|
|
QString getCurrentBaseSymbolCode() const; // encoded, baseSymbolCode
|
|
QString getCurrentSidc() const; // encoded, complete
|
|
bool setCurrentSidc(const QString &sidc); // encoded, baseSymbolCode or complete Sidc
|
|
|
|
Q_SIGNALS:
|
|
void symbolClicked(const QString &baseSymbolCode, const QString &sidc);
|
|
void symbolDoubleClicked(const QString &baseSymbolCode, const QString &sidc);
|
|
|
|
protected:
|
|
bool setCurrentTab(SYMBOL_TYPE symType);
|
|
void showHideColumns(SYMBOL_TYPE symType);
|
|
|
|
protected Q_SLOTS:
|
|
void showEvent(QShowEvent *event) override;
|
|
|
|
void onClicked(const QModelIndex &index);
|
|
void onDoubleClicked(const QModelIndex &index);
|
|
|
|
private:
|
|
SituationMap::LOGGER_T m_logger;
|
|
|
|
Ui::BaseSymbolLookupWidget *m_ui;
|
|
|
|
struct Private;
|
|
/**
|
|
* The private d->pointer to not break BC when changing internals of this class
|
|
*/
|
|
Private *d = nullptr;
|
|
};
|
|
|
|
} // namespace Gui
|
|
} // namespace AdvancedSymbology
|