#ifndef ELASUGGESTBOXPRIVATE_H #define ELASUGGESTBOXPRIVATE_H #include #include #include #include #include #include "ElaDef.h" class ElaSuggestion : public QObject { Q_OBJECT Q_PROPERTY_CREATE(ElaIconType::IconName, ElaIcon) Q_PROPERTY_CREATE(QString, SuggestText) Q_PROPERTY_CREATE(QString, SuggestKey) Q_PROPERTY_CREATE(QVariantMap, SuggestData) public: explicit ElaSuggestion(QObject* parent = nullptr); ~ElaSuggestion() override; }; class QVBoxLayout; class ElaLineEdit; class ElaNavigationNode; class ElaSuggestModel; class ElaBaseListView; class ElaSuggestDelegate; class ElaSuggestBox; class ElaSuggestBoxSearchViewContainer; class ElaSuggestBoxPrivate : public QObject { Q_OBJECT Q_D_CREATE(ElaSuggestBox) Q_PROPERTY_CREATE_D(int, BorderRadius) Q_PROPERTY_CREATE_D(Qt::CaseSensitivity, CaseSensitivity) public: explicit ElaSuggestBoxPrivate(QObject* parent = nullptr); ~ElaSuggestBoxPrivate(); Q_SLOT void onThemeModeChanged(ElaThemeType::ThemeMode themeMode); Q_SLOT void onSearchEditTextEdit(const QString& searchText); Q_SLOT void onSearchViewClicked(const QModelIndex& index); private: ElaThemeType::ThemeMode _themeMode; QAction* _lightSearchAction{nullptr}; QAction* _darkSearchAction{nullptr}; QVector _suggestionVector; ElaSuggestBoxSearchViewContainer* _searchViewBaseWidget{nullptr}; ElaLineEdit* _searchEdit{nullptr}; ElaSuggestModel* _searchModel{nullptr}; ElaBaseListView* _searchView{nullptr}; ElaSuggestDelegate* _searchDelegate{nullptr}; QVBoxLayout* _shadowLayout{nullptr}; QSize _lastSize; bool _isExpandAnimationFinished{true}; bool _isCloseAnimationFinished{true}; void _startSizeAnimation(QSize oldSize, QSize newSize); void _startExpandAnimation(); void _startCloseAnimation(); }; #endif // ELASUGGESTBOXPRIVATE_H