14 #ifndef T3_WIDGET_CONTENTLIST_H
15 #define T3_WIDGET_CONTENTLIST_H
21 #include <t3widget/widget_api.h>
31 virtual size_t size(
void)
const = 0;
33 virtual const std::string *operator[](
size_t idx)
const = 0;
50 T3_WIDGET_SIGNAL(content_changed,
void);
56 std::vector<std::string *> strings;
60 virtual size_t size(
void)
const;
61 virtual const std::string *operator[](
size_t idx)
const;
62 virtual void push_back(std::string *str);
73 virtual const std::string *get_fs_name(
size_t idx)
const = 0;
75 virtual bool is_dir(
size_t idx)
const = 0;
91 file_name_entry_t(
const char *_name,
const std::string &_utf8_name,
bool _is_dir);
100 std::vector<file_name_entry_t>
files;
103 virtual size_t size(
void)
const;
104 virtual const std::string *operator[](
size_t idx)
const;
105 virtual const std::string *get_fs_name(
size_t idx)
const;
106 virtual bool is_dir(
size_t idx)
const;
108 int load_directory(std::string *dir_name);
117 virtual void set_filter(
const sigc::slot<bool, string_list_base_t *, size_t> &) = 0;
119 virtual void reset_filter(
void) = 0;
123 template <
class list_t>
131 sigc::slot<bool, list_t *, size_t>
test;
145 for (
size_t i = 0; i < base->size(); i++) {
149 items.reserve(items.size());
150 list_t::content_changed();
156 base_content_changed_connection =
160 base_content_changed_connection.disconnect();
162 virtual void set_filter(
const sigc::slot<bool, string_list_base_t *, size_t> &_test) {
169 list_t::content_changed();
171 virtual size_t size(
void)
const {
return test.empty() ? base->size() : items.size(); }
172 virtual const std::string *
operator[](
size_t idx)
const {
return (*base)[test.empty() ? idx : items[idx]]; }
181 template <
class list_t>
188 virtual void set_filter(
const sigc::slot<bool, string_list_base_t *, size_t> &_test) {
211 virtual const std::string *
get_fs_name(
size_t idx)
const {
return base->get_fs_name(test.empty() ? idx : items[idx]); }
212 virtual bool is_dir(
size_t idx)
const {
return base->is_dir(test.empty() ? idx : items[idx]); }
216 T3_WIDGET_API
bool string_compare_filter(string_list_base_t *list,
size_t idx,
const std::string *str);
218 T3_WIDGET_API
bool glob_filter(string_list_base_t *list,
size_t idx,
const std::string *str,
bool show_hidden);