staticline.c 1.9 KB
Newer Older
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
#include <rtgui/dc.h>
#include <rtgui/rtgui_theme.h>
#include <rtgui/widgets/staticline.h>

static void _rtgui_staticline_constructor(rtgui_staticline_t *staticline)
{
	/* init widget and set event handler */
	rtgui_rect_t rect = {0, 0, 100, 2};

	rtgui_widget_set_rect(RTGUI_WIDGET(staticline), &rect);
	staticline->orient= RTGUI_HORIZONTAL;

	rtgui_object_set_event_handler(RTGUI_OBJECT(staticline), rtgui_staticline_event_handler);
}


DEFINE_CLASS_TYPE(staticline, "staticline", 
	RTGUI_WIDGET_TYPE,
	_rtgui_staticline_constructor,
	RT_NULL,
	sizeof(struct rtgui_staticline));

rt_bool_t rtgui_staticline_event_handler(struct rtgui_object* object, struct rtgui_event* event)
{
	struct rtgui_staticline* staticline;
	RTGUI_WIDGET_EVENT_HANDLER_PREPARE

	staticline = RTGUI_STATICLINE(object);
	switch (event->type)
	{
	case RTGUI_EVENT_PAINT:
#ifndef RTGUI_USING_SMALL_SIZE
		if (widget->on_draw != RT_NULL) widget->on_draw(widget, event);
		else
#endif
			rtgui_theme_draw_staticline(staticline);
		break;
	}

	return RT_FALSE;
}

rtgui_staticline_t * rtgui_staticline_create(int orientation)
{
	rtgui_staticline_t* staticline;

	staticline = (struct rtgui_staticline*) rtgui_widget_create(RTGUI_STATICLINE_TYPE);
	if (staticline!= RT_NULL)
	{
		rtgui_staticline_set_orientation(staticline, orientation);
	}

	return staticline;
}

void rtgui_staticline_destroy(rtgui_staticline_t* staticline)
{
	rtgui_widget_destroy(RTGUI_WIDGET(staticline));
}

void rtgui_staticline_set_orientation(rtgui_staticline_t* staticline, int orientation)
{
	RT_ASSERT(staticline != RT_NULL);

	staticline->orient = orientation;
#ifndef RTGUI_USING_SMALL_SIZE
	if (orientation == RTGUI_HORIZONTAL)
	{
		/* HORIZONTAL */
		rtgui_widget_set_miniheight(RTGUI_WIDGET(staticline), 2);
		rtgui_widget_set_miniwidth(RTGUI_WIDGET(staticline), 100);
	}
	else
	{
		/* VERTICAL */
		rtgui_widget_set_miniwidth(RTGUI_WIDGET(staticline), 2);
		rtgui_widget_set_miniheight(RTGUI_WIDGET(staticline), 100);
	}
#endif
}