/** * @RDE_HEADER@ * Widget for selecting (base) symbols * $Id$ * $HeadURL$ * $Author$ * Created by Norbert Thoden, NLE, 12.12.2019 */ #pragma once #include #include #include #include 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; //------------------------------------------------------------------------------ // 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 &validBaseSymbolCodes); QSharedPointer 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