listen to hotplug event when dvd is inserted or ejected and modify EXIT menu accordingly
[enigma2.git] / lib / gui / ewindowstyleskinned.cpp
index a3152e5f5f466ba6375213e81eb9980e343d01e1..6357dcbde7e6b7abd31ecb400efc99689aee63d4 100644 (file)
@@ -8,7 +8,9 @@ DEFINE_REF(eWindowStyleSkinned);
 
 eWindowStyleSkinned::eWindowStyleSkinned()
 {
-       m_background_color = gRGB(0x808080);
+       // m_background_color = gRGB(0x808080);
+       
+       // TODO: initialize colors!!
 }
 
 void eWindowStyleSkinned::handleNewSize(eWindow *wnd, eSize &size, eSize &offset)
@@ -33,11 +35,19 @@ void eWindowStyleSkinned::handleNewSize(eWindow *wnd, eSize &size, eSize &offset
 void eWindowStyleSkinned::paintWindowDecoration(eWindow *wnd, gPainter &painter, const std::string &title)
 {
        drawBorder(painter, eRect(ePoint(0, 0), wnd->size()), m_border[bsWindow], bpAll);
+       
+       if (m_fnt)
+       {
+               painter.setBackgroundColor(m_color[colWindowTitleBackground]);
+               painter.setForegroundColor(m_color[colWindowTitleForeground]);
+               painter.setFont(m_fnt);
+               painter.renderText(eRect(m_title_offset.width(), m_title_offset.height(), wnd->size().width() - m_title_offset.width(), m_border[bsWindow].m_border_top - m_title_offset.height()), title);
+       }
 }
 
 void eWindowStyleSkinned::paintBackground(gPainter &painter, const ePoint &offset, const eSize &size)
 {
-       painter.setBackgroundColor(m_background_color);
+       painter.setBackgroundColor(m_color[colBackground]);
        painter.clear();
 }
 
@@ -46,19 +56,23 @@ void eWindowStyleSkinned::setStyle(gPainter &painter, int what)
        switch (what)
        {
        case styleLabel:
-               painter.setForegroundColor(gColor(0x1F));
+               painter.setForegroundColor(m_color[colLabelForeground]);
                break;
        case styleListboxSelected:
-               painter.setForegroundColor(gColor(0x1F));
-               painter.setBackgroundColor(gColor(0x1A));
+               painter.setForegroundColor(m_color[colListboxSelectedForeground]);
+               painter.setBackgroundColor(m_color[colListboxSelectedBackground]);
                break;
        case styleListboxNormal:
-               painter.setForegroundColor(gColor(0x1C));
-               painter.setBackgroundColor(m_background_color);
+               painter.setForegroundColor(m_color[colListboxForeground]);
+               painter.setBackgroundColor(m_color[colListboxBackground]);
                break;
        case styleListboxMarked:
-               painter.setForegroundColor(gColor(0x2F));
-               painter.setBackgroundColor(gColor(0x2A));
+               painter.setForegroundColor(m_color[colListboxMarkedForeground]);
+               painter.setBackgroundColor(m_color[colListboxMarkedBackground]);
+               break;
+       case styleListboxMarkedAndSelected:
+               painter.setForegroundColor(m_color[colListboxMarkedAndSelectedForeground]);
+               painter.setBackgroundColor(m_color[colListboxMarkedAndSelectedBackground]);
                break;
        }
 }
@@ -186,13 +200,13 @@ RESULT eWindowStyleSkinned::getFont(int what, ePtr<gFont> &fnt)
        switch (what)
        {
        case fontStatic:
-               fnt = new gFont("Arial", 12);
+               fnt = new gFont("Regular", 12);
                break;
        case fontButton:
-               fnt = new gFont("Arial", 20);
+               fnt = new gFont("Regular", 20);
                break;
        case fontTitlebar:
-               fnt = new gFont("Arial", 25);
+               fnt = new gFont("Regular", 25);
                break;
        default:
                return -1;
@@ -200,6 +214,11 @@ RESULT eWindowStyleSkinned::getFont(int what, ePtr<gFont> &fnt)
        return 0;
 }
 
+void eWindowStyleSkinned::setPixmap(int bs, int bp, ePtr<gPixmap> &ptr)
+{
+       setPixmap(bs, bp, *(ptr.operator->()));
+}
+
 void eWindowStyleSkinned::setPixmap(int bs, int bp, gPixmap &pixmap)
 {
        if ((bs >= bsMax) || (bs < 0))
@@ -226,23 +245,36 @@ void eWindowStyleSkinned::setPixmap(int bs, int bp, gPixmap &pixmap)
                if (m_border[bs].m_pixmap[i])
                        if (m_border[bs].m_border_bottom < m_border[bs].m_pixmap[i]->size().height())
                                m_border[bs].m_border_bottom = m_border[bs].m_pixmap[i]->size().height();
-       for (int i = 0; i < 9; i += 3)
-               if (m_border[bs].m_pixmap[i])
-                       if (m_border[bs].m_border_left < m_border[bs].m_pixmap[i]->size().width())
-                               m_border[bs].m_border_left = m_border[bs].m_pixmap[i]->size().width();
-       for (int i = 2; i < 9; i += 3)
-               if (m_border[bs].m_pixmap[i])
-                       if (m_border[bs].m_border_right < m_border[bs].m_pixmap[i]->size().width())
-                               m_border[bs].m_border_right = m_border[bs].m_pixmap[i]->size().width();
-       eDebug("recalced border size for %d: %d:%d %d:%d",
+
+       if (m_border[bs].m_pixmap[3])
+               m_border[bs].m_border_left = m_border[bs].m_pixmap[3]->size().width();
+       else
+               m_border[bs].m_border_left = 0;
+       
+       if (m_border[bs].m_pixmap[5])
+               m_border[bs].m_border_right = m_border[bs].m_pixmap[5]->size().width();
+       else
+               m_border[bs].m_border_right = 0;
+
+/*     eDebug("recalced border size for %d: %d:%d %d:%d",
                bs, 
                m_border[bs].m_border_left, m_border[bs].m_border_top, 
-               m_border[bs].m_border_right, m_border[bs].m_border_bottom); 
+               m_border[bs].m_border_right, m_border[bs].m_border_bottom);  */
+}
+
+void eWindowStyleSkinned::setColor(int what, const gRGB &col)
+{
+       if ((what < colMax) && (what >= 0))
+               m_color[what] = col;
+}
+
+void eWindowStyleSkinned::setTitleOffset(const eSize &offset)
+{
+       m_title_offset = offset;
 }
 
-void eWindowStyleSkinned::setDefaultBackgroundColor(const gRGB &back)
+void eWindowStyleSkinned::setTitleFont(gFont *fnt)
 {
-       m_background_color = back;
-       eDebug("set default background color!");
+       m_fnt = fnt;
 }