add imdb query link
[enigma2.git] / lib / gui / esubtitle.cpp
1 #include <lib/gui/esubtitle.h>
2 #include <lib/gdi/grc.h>
3
4         /*
5                 ok, here's much room for improvements.
6         
7                 first, the placing of the individual elements is sub-optimal.
8                 then maybe a colored background would be an option.
9                 ....
10         */      
11
12 eSubtitleWidget::eSubtitleWidget(eWidget *parent)
13         : eWidget(parent)
14 {
15         setBackgroundColor(gRGB(0,0,0,255));
16         m_page_ok = 0;
17 }
18
19 void eSubtitleWidget::setPage(const eDVBTeletextSubtitlePage &p)
20 {
21         m_page = p;
22         m_page_ok = 1;
23         invalidate();
24 }
25
26 void eSubtitleWidget::clearPage()
27 {
28         m_page_ok = 0;
29         invalidate();
30 }
31
32 int eSubtitleWidget::event(int event, void *data, void *data2)
33 {
34         switch (event)
35         {
36         case evtPaint:
37         {
38                 ePtr<eWindowStyle> style;
39                 gPainter &painter = *(gPainter*)data2;
40
41                 getStyle(style);
42                 
43                 eWidget::event(event, data, data2);
44                 ePtr<gFont> font = new gFont("Regular", 30);
45                 painter.setFont(font);
46                 
47                 
48                 if (!m_page_ok)
49                         painter.renderText(eRect(ePoint(0, 0), size()), "waiting for subtitles...", gPainter::RT_WRAP);
50                 else
51                 {
52                         int elements = m_page.m_elements.size();
53                         int height = size().height();
54                         int size_per_element = height / (elements ? elements : 1);
55                         for (int i=0; i<elements; ++i)
56                         {
57                                 painter.setForegroundColor(gRGB(0,0,0));
58                                 painter.renderText(eRect(2, size_per_element * i + 2, size().width(), size_per_element), m_page.m_elements[i].m_text, gPainter::RT_WRAP|gPainter::RT_VALIGN_CENTER|gPainter::RT_HALIGN_CENTER);
59                                 painter.setForegroundColor(m_page.m_elements[i].m_color);
60                                 painter.renderText(eRect(0, size_per_element * i, size().width(), size_per_element), m_page.m_elements[i].m_text, gPainter::RT_WRAP|gPainter::RT_VALIGN_CENTER|gPainter::RT_HALIGN_CENTER);
61                         }
62                 }
63                 return 0;
64         }
65         default:
66                 return eWidget::event(event, data, data2);
67         }
68 }