#pragma once #include "export-symbol-helper.hpp" #include namespace advss { // Helper class which enables user to filter possible selections by typing class ADVSS_EXPORT FilterComboBox : public QComboBox { Q_OBJECT public: FilterComboBox(QWidget *parent = nullptr, const QString &placehodler = ""); static void SetFilterBehaviourEnabled(bool); void SetAllowUnmatchedSelection(bool allow); void setCurrentText(const QString &text); void setItemText(int index, const QString &text); QSize sizeHint() const override; protected: void focusOutEvent(QFocusEvent *event) override; private slots: void CompleterHighlightChanged(const QModelIndex &); void TextChanged(const QString &); private: void Emit(int index, const QString &text); bool _allowUnmatchedSelection = false; int _lastEmittedIndex = -1; QString _lastEmittedText; int _lastCompleterHighlightRow = -1; static bool _filteringEnabled; }; } // namespace advss