37class MiniSearcherViewConnector :
41 PIMPL(MiniSearcherViewConnector)
45 ~MiniSearcherViewConnector()
override;
48 [[nodiscard]]
bool isActive()
const;
50 bool handleKeyPress(QKeyEvent* e);
53 void lineEditChanged(
const QString& str);
55 void selectPrevious();
58class SearchableViewInterface :
59 public SelectionViewInterface
61 PIMPL(SearchableViewInterface)
64 enum class SearchDirection :
73 explicit SearchableViewInterface(QAbstractItemView* view);
74 ~SearchableViewInterface()
override;
76 [[nodiscard]] QAbstractItemView* view()
const;
77 [[nodiscard]]
virtual int viewportHeight()
const;
78 [[nodiscard]]
virtual int viewportWidth()
const;
80 int setSearchstring(
const QString& str);
81 void selectNextMatch(
const QString& str);
82 void selectPreviousMatch(
const QString& str);
84 virtual void searchDone();
88 [[nodiscard]]
virtual QModelIndex matchIndex(
const QString& str, SearchDirection direction)
const;
89 virtual void selectMatch(
const QString& str, SearchDirection direction);
90 bool handleKeyPress(QKeyEvent* e)
override;
96 public SearchableViewInterface
100 using SearchableViewInterface::setSearchModel;
103 explicit SearchableView(QWidget* parent =
nullptr) :
105 SearchableViewInterface(
this) {}
107 ~SearchableView()
override =
default;
109 virtual void setSearchableModel(Model* model)
111 View::setModel(model);
112 SearchableViewInterface::setSearchModel(model);
115 [[nodiscard]]
int rowCount()
const
117 return (View::model() ==
nullptr)
119 : View::model()->rowCount();
123 void keyPressEvent(QKeyEvent* e)
override
125 const auto processed = handleKeyPress(e);
128 View::keyPressEvent(e);