1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/*
* Copyright (c) 2007, 2014, Oracle and/or its affiliates. All rights reserved.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; version 2 of the
* License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA
*/
#ifndef _GRT_STRING_LIST_MODEL_
#define _GRT_STRING_LIST_MODEL_
#include "wbpublic_public_interface.h"
#include "tree_model.h"
namespace bec {
class WBPUBLICBACKEND_PUBLIC_FUNC GrtStringListModel : public ListModel
{
public:
enum Columns {
Name
};
typedef std::vector<size_t> Items_ids;
GrtStringListModel();
void icon_id(IconId icon_id);
void reset();
void reset(const std::list<std::string> &items);
virtual size_t count();
size_t active_items_count() const;
size_t total_items_count() const;
virtual void refresh();
virtual IconId get_field_icon(const NodeId &node, ColumnId column, IconSize size);
void add_item(const grt::StringRef &item, size_t ident);
void remove_item(size_t index);
void remove_items(std::vector<size_t> &item_indexes);
void copy_items_to_val_masks_list(std::vector<size_t> &item_indexes);
void invalidate();
size_t get_item_id(size_t item_index);
std::vector<std::string> items() const;
Items_ids items_ids() const;
void items_val_mask(const std::string items_val_mask);
const std::string & items_val_mask() const;
void items_val_masks(GrtStringListModel *items_val_masks);
GrtStringListModel * items_val_masks() const;
virtual bool get_field(const NodeId &node, ColumnId column, std::string &value);
protected:
struct Item_handler
{
Item_handler() {}
Item_handler(const std::string &val_, size_t id_) : val(val_), iid(id_) {}
std::string val;
size_t iid; // initial sequence number of the item
bool operator<(const Item_handler &item2) const { return (val < item2.val); }
};
GrtStringListModel *_items_val_masks;
std::string _items_val_mask;
typedef std::vector<Item_handler> Items;
Items _items;
std::vector<size_t> _visible_items;
bec::IconId _icon_id;
size_t _active_items_count;
bool _invalidated;
void process_mask(const std::string &mask, std::vector<bool> &items, bool match_means_visible) const;
std::string terminate_wildcard_symbols(const std::string &str);
};
};
#endif /* _GRT_STRING_LIST_MODEL_ */
|