#pragma once #include "common/SignalVectorModel.hpp" #include "util/QStringHash.hpp" #include namespace chatterino { class HotkeyController; class Hotkey; class HotkeyModel : public SignalVectorModel> { public: HotkeyModel(QObject *parent); protected: // turn a vector item into a model row virtual std::shared_ptr getItemFromRow( std::vector &row, const std::shared_ptr &original) override; // turns a row in the model into a vector item virtual void getRowFromItem(const std::shared_ptr &item, std::vector &row) override; virtual int beforeInsert(const std::shared_ptr &item, std::vector &row, int proposedIndex) override; virtual void afterRemoved(const std::shared_ptr &item, std::vector &row, int index) override; friend class HotkeyController; private: std::tuple getCurrentAndNextCategoryModelIndex( const QString &category) const; std::unordered_map categoryCount_; }; } // namespace chatterino