Files
qt5-legatus-legacy/Lts/Viewer/SituationMap/SymbologyGui/base_symbol_lookup_widget.h
T
2026-08-13 18:33:10 +02:00

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