83 lines
2.6 KiB
C++
83 lines
2.6 KiB
C++
/*
|
|
*(C) 2006 Roku LLC
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License Version 2 as published
|
|
* by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* without any warranty; without even the implied warranty of
|
|
* merchantability or fitness for a particular purpose. See the GNU General
|
|
* Public License for more details.
|
|
*
|
|
* Please read README.txt in the same directory as this source file for
|
|
* further license information.
|
|
*/
|
|
|
|
#ifndef NOTIFYICON_H
|
|
#define NOTIFYICON_H
|
|
|
|
#include "ServiceControl.h"
|
|
#include "ServerEvents.h"
|
|
|
|
class CNotifyIcon
|
|
: public CWindowImpl<CNotifyIcon>,
|
|
public ServiceStatusObserver,
|
|
public ServerEvents::Observer
|
|
{
|
|
typedef CWindowImpl<CNotifyIcon> base;
|
|
|
|
NOTIFYICONDATA m_nid;
|
|
HICON m_running_icon;
|
|
HICON m_stopped_icon;
|
|
UINT m_registered_activation_message;
|
|
|
|
enum { TIMER_ID = 43 };
|
|
enum { WM_SERVEREVENT = WM_APP + 42 };
|
|
|
|
enum { PRIVATE_WM_NOTIFYICON = WM_USER + 42 };
|
|
|
|
BEGIN_MSG_MAP(CNotifyIcon)
|
|
MESSAGE_HANDLER(PRIVATE_WM_NOTIFYICON, OnNotifyIconMessage)
|
|
COMMAND_ID_HANDLER(ID_CONFIGURE, OnConfigure)
|
|
COMMAND_ID_HANDLER(ID_EXIT, OnExit)
|
|
MESSAGE_HANDLER(m_registered_activation_message, OnRegisteredActivation)
|
|
MESSAGE_HANDLER(WM_SERVEREVENT, OnServerEvent)
|
|
MESSAGE_HANDLER(WM_WTSSESSION_CHANGE, OnSessionChange)
|
|
MSG_WM_TIMER(OnTimer)
|
|
MSG_WM_CLOSE(OnClose)
|
|
END_MSG_MAP()
|
|
|
|
// Message handlers
|
|
void OnContextMenu();
|
|
LRESULT OnNotifyIconMessage(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
LRESULT OnConfigure(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
|
|
LRESULT OnExit(WORD /*wNotifyCode*/, WORD wID, HWND /*hWndCtl*/, BOOL& /*bHandled*/);
|
|
LRESULT OnRegisteredActivation(UINT, WPARAM, LPARAM, BOOL &bHandled);
|
|
LRESULT OnServerEvent(UINT, WPARAM, LPARAM, BOOL &bHandled);
|
|
LRESULT OnSessionChange(UINT, WPARAM, LPARAM, BOOL &bHandled);
|
|
void OnTimer(UINT id, TIMERPROC proc);
|
|
void OnClose();
|
|
|
|
void PopupBalloon(UINT title_id, UINT text_id, DWORD flags = NIIF_INFO);
|
|
|
|
void InflictIconState();
|
|
void Update();
|
|
|
|
// Terminal services stuff on XP.
|
|
void EnableUserSwitchNotifications();
|
|
|
|
// ServiceStatusObserver
|
|
void OnServiceStatus(Service::Status old_status, Service::Status new_status);
|
|
|
|
// ServerEvents::Observer
|
|
void OnServerEvent(UINT32 id, UINT32 intval, const CString &str);
|
|
|
|
public:
|
|
CNotifyIcon();
|
|
BOOL Create();
|
|
void Destroy();
|
|
|
|
};
|
|
|
|
#endif // NOTIFYICON_H
|