#pragma once #include "widgets/listview/GenericItemDelegate.hpp" #include "widgets/listview/GenericListItem.hpp" #include namespace chatterino { class GenericListModel; class Theme; class GenericListView : public QListView { Q_OBJECT public: GenericListView(); virtual void setModel(QAbstractItemModel *model) override; void setModel(GenericListModel *); void setInvokeActionOnTab(bool); bool eventFilter(QObject *watched, QEvent *event) override; GenericListModel *model_{}; SwitcherItemDelegate itemDelegate_; void refreshTheme(const Theme &theme); signals: void closeRequested(); private: bool invokeActionOnTab_{}; /** * @brief Gets the currently selected item (if any) and calls its action * * @return true if an action was called on an item, false if no item was selected and thus no action was called **/ bool acceptCompletion(); /** * @brief Select the next item in the list. Wraps around if the bottom of the list has been reached. **/ void focusNextCompletion(); /** * @brief Select the previous item in the list. Wraps around if the top of the list has been reached. **/ void focusPreviousCompletion(); /** * @brief Request for the GUI powering this list view to be closed. Shorthand for emit this->closeRequested() **/ void requestClose(); }; } // namespace chatterino