// This file Copyright © Mnemosyne LLC. // It may be used under GPLv2 (SPDX: GPL-2.0-only), GPLv3 (SPDX: GPL-3.0-only), // or any future license endorsed by Mnemosyne LLC. // License text can be found in the licenses/ folder. #pragma once #include "GtkCompat.h" #include #if GTKMM_CHECK_VERSION(4, 0, 0) #include #else #include #include #endif template class FilterBase; template class FilterListModel : public IF_GTKMM4(Gtk::FilterListModel, Gtk::TreeModelFilter) { public: using FilterType = FilterBase; public: FilterListModel(Glib::RefPtr const& model, Glib::RefPtr const& filter); #if !GTKMM_CHECK_VERSION(4, 0, 0) FilterListModel(Glib::RefPtr const& model, Glib::RefPtr const& filter); ~FilterListModel() override; guint get_n_items() const; sigc::signal& signal_items_changed(); #endif template static Glib::RefPtr> create( Glib::RefPtr const& model, Glib::RefPtr const& filter); private: #if !GTKMM_CHECK_VERSION(4, 0, 0) bool matches_all_ = false; bool matches_none_ = false; sigc::signal signal_items_changed_; sigc::connection signal_changed_tag_; #endif };