#include "stdafx.h" #include "CScreen.h" #include "CConfig.h" //************************************************************************ // Constructor //************************************************************************ CScreen::CScreen() : m_bHideButtons(false) { } //************************************************************************ // Destructor //************************************************************************ CScreen::~CScreen() { } //************************************************************************ // Initializes the screen //************************************************************************ bool CScreen::Initialize() { if(!CLCDScreen::Initialize()) return false; // initialize the four button labels for (int i = 0; i < 4; i++) { m_aButtons[i].Initialize(); m_aButtons[i].SetSize(17, 3); m_aButtons[i].Show(0); m_abShowButtons[i] = false; m_ahBitmaps[i] = nullptr; if(GetWidth() == 160) { m_aButtons[i].SetOrigin(10+i*29+(i/2)*36, GetHeight()-3); } else { m_aButtons[i].SetOrigin((280/4)*(i+0.5f) + (i/2)*40, GetHeight()-3); } AddObject(&m_aButtons[i]); } /* m_Clock.Initialize(); m_Clock.SetOrigin(68,0); m_Clock.SetSize(40,2); m_Clock.SetText(L"23:00 - "); m_Clock.SetFontFaceName(L"Small Fonts");//Digital Limit 3х3 C")); m_Clock.SetFontPointSize(10); //m_Clock.SetFont(CConfig::GetFont(FONT_CLIST)); AddObject(&m_Clock); */ return true; } //************************************************************************ // Shutdown the scren //************************************************************************ bool CScreen::Shutdown() { if(!CLCDScreen::Shutdown()) return false; for(int i=0; i < 4; i++) if(m_ahBitmaps[i] != nullptr) DeleteObject(m_ahBitmaps[i]); return true; } //************************************************************************ // Updates the screen //************************************************************************ bool CScreen::Update() { if(!CLCDScreen::Update()) return false; return true; } //************************************************************************ // Draws the screen //************************************************************************ bool CScreen::Draw(CLCDGfx *pGfx) { if(!CLCDScreen::Draw(pGfx)) return false; for(int i=0;i<4;i++) if(m_aButtons[i].IsVisible()) { pGfx->DrawLine(0,GetHeight()-5,GetWidth(),GetHeight()-5); break; } return true; } //************************************************************************ // Set the specified button label //************************************************************************ void CScreen::SetButtonBitmap(int iButton, int iBitmap) { if(iButton <0 || iButton > 3) return; if(iBitmap == 0) { m_aButtons[iButton].Show(0); m_abShowButtons[iButton] = false; } else { if(m_ahBitmaps[iButton] != nullptr) DeleteObject(m_ahBitmaps[iButton]); m_ahBitmaps[iButton] = (HBITMAP)LoadImage(g_plugin.getInst(), MAKEINTRESOURCE(iBitmap), IMAGE_BITMAP,17, 3, LR_MONOCHROME); m_aButtons[iButton].SetBitmap(m_ahBitmaps[iButton]); if(CConfig::GetBoolSetting(SHOW_LABELS)) m_aButtons[iButton].Show(1); m_abShowButtons[iButton] = true; } } //************************************************************************ // shows/hides the buttons //************************************************************************ void CScreen::ShowButtons(bool bShow) { m_bHideButtons = !bShow; UpdateButtons(); } //************************************************************************ // Update the buttons //************************************************************************ void CScreen::UpdateButtons() { for (int i = 0; i < 4; i++) { if(GetWidth() == 160) { m_aButtons[i].SetOrigin(10+i*29+(i/2)*36, GetHeight()-3); } else { m_aButtons[i].SetOrigin((280/4)*(i+0.5f) + (i/2)*40, GetHeight()-3); } if(m_abShowButtons[i]) m_aButtons[i].Show(CConfig::GetBoolSetting(SHOW_LABELS) && !m_bHideButtons); } } //************************************************************************ // Called when an event is received //************************************************************************ void CScreen::OnEventReceived(CEvent*) { } //************************************************************************ // Called when the configuration has changed //************************************************************************ void CScreen::OnConfigChanged() { UpdateButtons(); } //************************************************************************ // Called when the screens size has changed //************************************************************************ void CScreen::OnSizeChanged() { CLCDScreen::OnSizeChanged(); UpdateButtons(); }