summaryrefslogtreecommitdiff
path: root/plugins/MirandaG15/src/CEventLog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/MirandaG15/src/CEventLog.cpp')
-rw-r--r--plugins/MirandaG15/src/CEventLog.cpp120
1 files changed, 120 insertions, 0 deletions
diff --git a/plugins/MirandaG15/src/CEventLog.cpp b/plugins/MirandaG15/src/CEventLog.cpp
new file mode 100644
index 0000000000..dd82d923f4
--- /dev/null
+++ b/plugins/MirandaG15/src/CEventLog.cpp
@@ -0,0 +1,120 @@
+#include "stdafx.h"
+#include "CEventLog.h"
+#include "CConfig.h"
+#include "CAppletManager.h"
+
+//************************************************************************
+// constructor
+//************************************************************************
+CEventLog::CEventLog()
+{
+ m_dwLastScroll = 0;
+}
+
+//************************************************************************
+// destructor
+//************************************************************************
+CEventLog::~CEventLog()
+{
+
+}
+
+//************************************************************************
+// deinitializes the list
+//************************************************************************
+bool CEventLog::Shutdown()
+{
+ if(!CLCDList<CEventLogEntry*>::Shutdown())
+ return false;
+
+ return true;
+}
+
+//************************************************************************
+// initializes the list
+//************************************************************************
+bool CEventLog::Initialize()
+{
+ if(!CLCDList<CEventLogEntry*>::Initialize())
+ return false;
+
+ return true;
+}
+
+//************************************************************************
+// Called to set the objects font
+//************************************************************************
+bool CEventLog::SetFont(LOGFONT &lf)
+{
+ if(!CLCDList<CEventLogEntry*>::SetFont(lf))
+ return false;
+
+ SetEntryHeight(m_iFontHeight<6?6:m_iFontHeight);
+
+ return true;
+}
+
+//************************************************************************
+// adds an entry to the list
+//************************************************************************
+CListItem<CEventLogEntry*> *CEventLog::AddItem(CEventLogEntry *pEntry)
+{
+ CListItem<CEventLogEntry*> *pItem = CLCDList<CEventLogEntry*>::AddItem(pEntry);
+ if(GetEntryCount() > CConfig::GetIntSetting(NOTIFY_LOGSIZE))
+ RemoveItem(((CListItem<CEventLogEntry*>*)GetFirstEntry())->GetItemData());
+
+ if(GetTickCount() - m_dwLastScroll > 10000)
+ SetPosition(pItem);
+ return pItem;
+}
+
+//************************************************************************
+// Called to delete the specified entry
+//************************************************************************
+void CEventLog::DeleteEntry(CEventLogEntry *pEntry)
+{
+ delete pEntry;
+}
+
+//************************************************************************
+// Called to draw the specified entry
+//************************************************************************
+void CEventLog::DrawEntry(CLCDGfx *pGfx,CEventLogEntry *pEntry,bool bSelected)
+{
+ SelectObject(pGfx->GetHDC(),m_hFont);
+
+ bool bLargeIcons = GetEntryHeight() > 8;
+ int iOffset = (m_iFontHeight-(bLargeIcons?8:6))/2;
+ HBITMAP hBitmap = CAppletManager::GetInstance()->GetEventBitmap(pEntry->eType,bLargeIcons);
+ pGfx->DrawBitmap(0,iOffset<0?0:iOffset,bLargeIcons?8:6,bLargeIcons?8:6,hBitmap);
+
+ iOffset = bLargeIcons?10:7;
+ if(CConfig::GetBoolSetting(NOTIFY_TIMESTAMPS))
+ pGfx->DrawText(iOffset,0,pGfx->GetClipWidth()-iOffset,pEntry->strTimestamp + pEntry->strValue);
+ else
+ pGfx->DrawText(iOffset,0,pGfx->GetClipWidth()-iOffset,pEntry->strValue);
+
+ if(bSelected && GetTickCount() - m_dwLastScroll < 1000)
+ {
+ RECT invert = { 0,0,GetWidth(),m_iFontHeight};
+ InvertRect(pGfx->GetHDC(),&invert);
+ }
+}
+
+
+void CEventLog::SetPosition(CListEntry<CEventLogEntry*> *pEntry)
+{
+ CLCDList<CEventLogEntry*>::SetPosition(pEntry);
+}
+
+bool CEventLog::ScrollUp()
+{
+ m_dwLastScroll = GetTickCount();
+ return CLCDList<CEventLogEntry*>::ScrollUp();
+}
+
+bool CEventLog::ScrollDown()
+{
+ m_dwLastScroll = GetTickCount();
+ return CLCDList<CEventLogEntry*>::ScrollDown();
+}