/* ui/listitem.cc This file is part of the Osirion project and is distributed under the terms of the GNU General Public License version 2 */ #include "audio/audio.h" #include "core/application.h" #include "ui/listitem.h" #include "ui/ui.h" #include "ui/paint.h" namespace ui { ListItem::ListItem(ListView *parent, const char * text) : Label(parent, text) { set_label("listitem"); listitem_info = 0; listitem_item = 0; set_alignment(ui::AlignLeft); } ListItem::~ListItem() { } void ListItem::draw_border() { if (enabled() && has_mouse_focus()) { math::Color color(palette()->foreground()); float t = core::application()->time(); t = t - floorf(t); if (t > 0.5) t = 1 - t; color.a = 0.5f + t; Paint::set_color(color); Paint::draw_border(global_location(), size()); } else if ((static_cast(parent()))->selected() == this) { Paint::set_color(palette()->foreground()); } else { Paint::set_color(palette()->border()); } Paint::draw_border(global_location(), size()); } void ListItem::draw() { if (!text().size()) return; if (disabled()) { Paint::set_color(palette()->disabled()); } else if (((static_cast(parent()))->selected() == this)) { Paint::set_color(palette()->highlight()); } else { Paint::set_color(palette()->foreground()); } Paint::draw_label(global_location(), size(), font(), text(), alignment()); // if (enabled() && has_mouse_focus()) { // root()->set_pointer("action", Palette::Highlight); // } } void ListItem::on_mouseover(const math::Vector2f &cursor) { if (enabled()) { //audio::play("ui/select"); } } bool ListItem::on_mousepress(const unsigned int button) { if (button == SDL_BUTTON_LEFT) { //audio::play("ui/button"); emit(EventListItemClicked); return true; } return false; } } // namespace ui