diff options
Diffstat (limited to 'browse-item.c')
-rw-r--r-- | browse-item.c | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/browse-item.c b/browse-item.c new file mode 100644 index 0000000..5b59923 --- /dev/null +++ b/browse-item.c @@ -0,0 +1,69 @@ +/* + * browse-item.c + */ + +#include "browse-item.h" + +#include <string> + + +using namespace std; + +/* --- cBrowseItem ---------------------------------------------------------- */ + +cBrowseItem::cBrowseItem(cBrowseItem *_main_item, const cTrackInfo *_track, + int _column, eItemType _type) +:cOsdItem() +{ + main_item = _main_item; + if (main_item) + main_item->increase_items(); + + track = _track; + column = _column; + type = _type; + + items = 0; +} + + +void cBrowseItem::increase_items(void) +{ + ++items; + + if (main_item) + main_item->increase_items(); +} + + +void cBrowseItem::delete_items(int del_items) +{ + items -= del_items; + + if (main_item) + main_item->delete_items(del_items); + + if (items < 0) + items = 0; +} + + +void cBrowseItem::toggle_node(void) +{ + string txt = Text(); + + if (type == itemNodeOpen) { + type = itemNodeClose; + string::size_type f = txt.find_first_of("-"); + if (f != string::npos) + txt.replace(f, 1, "+"); + } + else if (type == itemNodeClose) { + type = itemNodeOpen; + string::size_type f = txt.find_first_of("+"); + if (f != string::npos) + txt.replace(f, 1, "-"); + } + + SetText(txt.c_str()); +} |