#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(); }