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 signals::slot<bool, string_list_base_t *, size_t> &) = 0;
119 virtual void reset_filter(
void) = 0;
123 template <
class list_t>
140 if (!test.is_valid())
145 for (
size_t i = 0; i < base->size(); i++) {
149 items.reserve(items.size());
150 list_t::content_changed();
153 static bool null_filter(list_t *,
size_t) {
return false; }
158 base_content_changed_connection =
162 base_content_changed_connection.disconnect();
164 virtual void set_filter(
const signals::slot<bool, string_list_base_t *, size_t> &_test) {
171 list_t::content_changed();
173 virtual size_t size(
void)
const {
return test.is_valid() ? items.size() : base->size(); }
174 virtual const std::string *
operator[](
size_t idx)
const {
return (*base)[test.is_valid() ? items[idx] : idx]; }
183 template <
class list_t>
190 virtual void set_filter(
const signals::slot<bool, string_list_base_t *, size_t> &_test) {
213 virtual const std::string *
get_fs_name(
size_t idx)
const {
return base->get_fs_name(test.is_valid() ? items[idx] : idx); }
214 virtual bool is_dir(
size_t idx)
const {
return base->is_dir(test.is_valid() ? items[idx] : idx); }
218 T3_WIDGET_API
bool string_compare_filter(string_list_base_t *list,
size_t idx,
const std::string *str);
220 T3_WIDGET_API
bool glob_filter(string_list_base_t *list,
size_t idx,
const std::string *str,
bool show_hidden);
Class representing a single file.
Definition: contentlist.h:82
std::string utf8_name
The name of the file converted to UTF-8 (or empty if the same as name).
Definition: contentlist.h:84
bool is_dir
Boolean indicating whether this name represents a directory.
Definition: contentlist.h:87