summaryrefslogtreecommitdiff
path: root/plugins/MirandaG15/src/CEventScreen.cpp
diff options
context:
space:
mode:
authorRobert Pösel <robyer@seznam.cz>2013-10-29 18:17:04 +0000
committerRobert Pösel <robyer@seznam.cz>2013-10-29 18:17:04 +0000
commit4d01f5f5096cb4d22c4a7ba17cc82977c7f5f19b (patch)
tree9353d79ddff12a1c2ced3e300d61a516f2572fb5 /plugins/MirandaG15/src/CEventScreen.cpp
parent2307fd7414d16d4ff936607a215e9a2ca0294741 (diff)
Adopted MirandaG15 plugin
First compilable version and 32-bit only. git-svn-id: http://svn.miranda-ng.org/main/trunk@6681 1316c22d-e87f-b044-9b9b-93d7a3e3ba9c
Diffstat (limited to 'plugins/MirandaG15/src/CEventScreen.cpp')
-rw-r--r--plugins/MirandaG15/src/CEventScreen.cpp239
1 files changed, 239 insertions, 0 deletions
diff --git a/plugins/MirandaG15/src/CEventScreen.cpp b/plugins/MirandaG15/src/CEventScreen.cpp
new file mode 100644
index 0000000000..cda38b07b4
--- /dev/null
+++ b/plugins/MirandaG15/src/CEventScreen.cpp
@@ -0,0 +1,239 @@
+#include "stdafx.h"
+#include "CEventScreen.h"
+#include "CConfig.h"
+#include "CAppletManager.h"
+
+//************************************************************************
+// Constructor
+//************************************************************************
+CEventScreen::CEventScreen()
+{
+}
+
+//************************************************************************
+// Destructor
+//************************************************************************
+CEventScreen::~CEventScreen()
+{
+}
+
+//************************************************************************
+// Initializes the screen
+//************************************************************************
+bool CEventScreen::Initialize()
+{
+ if(!CScreen::Initialize())
+ return false;
+
+ m_EventLog.Initialize();
+ m_EventLog.SetOrigin(0,0);
+ m_EventLog.SetSize(GetWidth()-5,GetHeight()-(CConfig::GetBoolSetting(SHOW_LABELS)?6:0));
+ m_EventLog.SetFont(CConfig::GetFont(FONT_LOG));
+
+ AddObject(&m_EventLog);
+
+ m_Scrollbar.Initialize();
+ m_Scrollbar.SetOrigin(GetWidth()-4,0);
+ m_Scrollbar.SetSize(4,GetHeight()-(CConfig::GetBoolSetting(SHOW_LABELS)?5:0));
+ m_EventLog.SetScrollbar(&m_Scrollbar);
+
+ AddObject(&m_Scrollbar);
+
+ SetButtonBitmap(0,IDB_UP);
+ SetButtonBitmap(1,IDB_DOWN);
+ SetButtonBitmap(2,IDB_CLIST);
+ SetButtonBitmap(3,NULL);
+
+ return true;
+}
+
+//************************************************************************
+// Shutdown the screen
+//************************************************************************
+bool CEventScreen::Shutdown()
+{
+ if(!CScreen::Shutdown())
+ return false;
+
+ return true;
+}
+
+//************************************************************************
+// Updates the screen
+//************************************************************************
+bool CEventScreen::Update()
+{
+ if(!CScreen::Update())
+ return false;
+
+ return true;
+}
+
+//************************************************************************
+// Draws the screen
+//************************************************************************
+bool CEventScreen::Draw(CLCDGfx *pGfx)
+{
+ if(!CScreen::Draw(pGfx))
+ return false;
+
+ return true;
+}
+
+//************************************************************************
+// Called when the screen size has changed
+//************************************************************************
+void CEventScreen::OnSizeChanged()
+{
+ CScreen::OnSizeChanged();
+
+ m_EventLog.SetFont(CConfig::GetFont(FONT_LOG));
+ m_EventLog.SetSize(GetWidth()-5,GetHeight()-(CConfig::GetBoolSetting(SHOW_LABELS)?6:0));
+
+ m_Scrollbar.SetOrigin(GetWidth()-4,0);
+
+ m_Scrollbar.SetSize(4,GetHeight()-(CConfig::GetBoolSetting(SHOW_LABELS)?5:0));
+}
+
+//************************************************************************
+// Called when the configuration has changed
+//************************************************************************
+void CEventScreen::OnConfigChanged()
+{
+ CScreen::OnConfigChanged();
+
+ m_EventLog.SetFont(CConfig::GetFont(FONT_LOG));
+ m_EventLog.SetSize(GetWidth()-5,GetHeight()-(CConfig::GetBoolSetting(SHOW_LABELS)?6:0));
+
+ // Update all timestamps
+ list<CListEntry<CEventLogEntry*>*>::iterator iter = m_EventLog.begin();
+ CListItem<CEventLogEntry*> *pItem = NULL;
+ while(iter != m_EventLog.end())
+ {
+ pItem = static_cast<CListItem<CEventLogEntry*>*>(*iter);
+ pItem->GetItemData()->strTimestamp = CAppletManager::GetFormattedTimestamp(&pItem->GetItemData()->Time) + _T(" ");
+ iter++;
+ }
+
+ m_Scrollbar.SetSize(4,GetHeight()-(CConfig::GetBoolSetting(SHOW_LABELS)?5:0));
+}
+
+//************************************************************************
+// Called when an event is received
+//************************************************************************
+void CEventScreen::OnEventReceived(CEvent *pEvent)
+{
+ // check if the event needs to be listed
+ if(!pEvent->bLog)
+ return;
+
+ // create a list entry structure
+ CEventLogEntry *pEntry = new CEventLogEntry();
+ pEntry->hContact = pEvent->hContact;
+ pEntry->eType = pEvent->eType;
+
+ pEntry->Time = pEvent->Time;
+ pEntry->strTimestamp = CAppletManager::GetFormattedTimestamp(&pEvent->Time) + _T(" ");
+ pEntry->strValue = pEvent->strDescription;
+
+ // add it to the list and scroll to it
+ m_EventLog.AddItem(pEntry);
+
+ UpdateChatButton();
+}
+
+//************************************************************************
+// Updates the 4th softkey label
+//************************************************************************
+void CEventScreen::UpdateChatButton()
+{
+ CListEntry<CEventLogEntry*> *pItem = m_EventLog.GetSelectedEntry();
+ if(!pItem || pItem->GetType() != ITEM)
+ return;
+ CEventLogEntry *pEntry = ((CListItem<CEventLogEntry*>*)pItem)->GetItemData();
+ if(pEntry->hContact)
+ SetButtonBitmap(3,IDB_CHAT);
+ else
+ SetButtonBitmap(3,NULL);
+}
+
+//************************************************************************
+// Called when an LCD-button is pressed
+//************************************************************************
+void CEventScreen::OnLCDButtonDown(int iButton)
+{
+ if(iButton == LGLCDBUTTON_CANCEL) {
+ CAppletManager::GetInstance()->ActivatePreviousScreen();
+ } else if(iButton == LGLCDBUTTON_BUTTON1 || iButton == LGLCDBUTTON_DOWN) {
+ m_EventLog.ScrollDown();
+ UpdateChatButton();
+ } else if(iButton == LGLCDBUTTON_BUTTON0 || iButton == LGLCDBUTTON_UP) {
+ m_EventLog.ScrollUp();
+ UpdateChatButton();
+ } else if(iButton == LGLCDBUTTON_BUTTON2 || iButton == LGLCDBUTTON_MENU) {
+ CAppletManager::GetInstance()->ActivateCListScreen();
+ } else if(iButton == LGLCDBUTTON_BUTTON3 || iButton == LGLCDBUTTON_OK)
+ {
+ CListEntry<CEventLogEntry*> *pItem = m_EventLog.GetSelectedEntry();
+ if(!pItem || pItem->GetType() != ITEM)
+ return;
+ CEventLogEntry *pEntry = ((CListItem<CEventLogEntry*>*)pItem)->GetItemData();
+
+ if(!pEntry->hContact)
+ return;
+
+ // if the contact is an irc chatroom, check if it is hidden (user left the channel)
+ char *szProto = (char *) CallService(MS_PROTO_GETCONTACTBASEPROTO, (WPARAM)pEntry->hContact, 0);
+ CIRCConnection *pIRCCon = CAppletManager::GetInstance()->GetIRCConnection(toTstring(szProto));
+
+ if(pIRCCon && db_get_b(pEntry->hContact, szProto, "ChatRoom", 0) != 0 &&
+ db_get_b((HANDLE)pEntry->hContact,"CList","Hidden",0))
+ return;
+
+ CAppletManager::GetInstance()->ActivateChatScreen(pEntry->hContact);
+ }
+}
+
+//************************************************************************
+// Called when an LCD-button event is repeated
+//************************************************************************
+void CEventScreen::OnLCDButtonRepeated(int iButton)
+{
+ if(iButton == LGLCDBUTTON_BUTTON1 || iButton == LGLCDBUTTON_DOWN) {
+ m_EventLog.ScrollDown();
+ UpdateChatButton();
+ } else if(iButton == LGLCDBUTTON_BUTTON0 || iButton == LGLCDBUTTON_UP) {
+ m_EventLog.ScrollUp();
+ UpdateChatButton();
+ }
+}
+
+//************************************************************************
+// Called when an LCD-button is released
+//************************************************************************
+void CEventScreen::OnLCDButtonUp(int iButton)
+{
+
+}
+
+//************************************************************************
+// Called when the screen is activated
+//************************************************************************
+void CEventScreen::OnActivation()
+{
+
+}
+
+//************************************************************************
+// Called when the screen is deactivated
+//************************************************************************
+void CEventScreen::OnDeactivation()
+{
+}
+
+//************************************************************************
+// Called when the screen has expired
+//************************************************************************
+void CEventScreen::OnExpiration()
+{
+} \ No newline at end of file