ReactOS 0.4.16-dev-2104-gb84fa49
CBalloonQueue Class Reference
Collaboration diagram for CBalloonQueue:

Classes

struct  Info
 

Public Member Functions

 CBalloonQueue ()
 
void Init (HWND hwndParent, CNotifyToolbar *toolbar, CTooltips *balloons)
 
void Deinit ()
 
bool OnTimer (int timerId)
 
void UpdateInfo (InternalIconData *notifyItem)
 
void RemoveInfo (InternalIconData *notifyItem)
 
void CloseCurrent ()
 

Static Public Attributes

static const int TimerInterval = 2000
 
static const int BalloonsTimerId = 1
 
static const int MinTimeout = 10000
 
static const int MaxTimeout = 30000
 
static const int CooldownBetweenBalloons = 2000
 

Private Member Functions

int IndexOf (InternalIconData *pdata)
 
void SetTimer (int length)
 
void Show (Info &info)
 
void Close (IN OUT InternalIconData *notifyItem, IN UINT uReason)
 

Private Attributes

HWND m_hwndParent
 
CTooltipsm_tooltips
 
CAtlList< Infom_queue
 
CNotifyToolbarm_toolbar
 
InternalIconDatam_current
 
bool m_currentClosed
 
int m_timer
 

Detailed Description

Definition at line 85 of file syspager.cpp.

Constructor & Destructor Documentation

◆ CBalloonQueue()

CBalloonQueue::CBalloonQueue ( )

Definition at line 508 of file syspager.cpp.

508 :
513 m_currentClosed(false),
514 m_timer(-1)
515{
516}
HWND m_hwndParent
Definition: syspager.cpp:115
CTooltips * m_tooltips
Definition: syspager.cpp:117
CNotifyToolbar * m_toolbar
Definition: syspager.cpp:121
bool m_currentClosed
Definition: syspager.cpp:124
InternalIconData * m_current
Definition: syspager.cpp:123
#define NULL
Definition: types.h:112

Member Function Documentation

◆ Close()

void CBalloonQueue::Close ( IN OUT InternalIconData notifyItem,
IN UINT  uReason 
)
private

Definition at line 650 of file syspager.cpp.

651{
652 TRACE("HideBalloonTip called\n");
653
654 if (m_current == notifyItem && !m_currentClosed)
655 {
657
658 // Prevent Re-entry
659 m_currentClosed = true;
662 }
663}
static const int CooldownBetweenBalloons
Definition: syspager.cpp:92
void SetTimer(int length)
Definition: syspager.cpp:617
bool SendNotifyCallback(InternalIconData *notifyItem, UINT uMsg)
Definition: syspager.cpp:1095
VOID TrackDeactivate()
Definition: rosctrls.h:723
#define TRACE(s)
Definition: solgame.cpp:4

◆ CloseCurrent()

void CBalloonQueue::CloseCurrent ( )

Definition at line 598 of file syspager.cpp.

599{
600 if (m_current != NULL)
601 {
602 Close(m_current, NIN_BALLOONTIMEOUT);
603 }
604}
@ Close
Definition: sacdrv.h:268

Referenced by CSysPagerWnd::OnBalloonPop().

◆ Deinit()

void CBalloonQueue::Deinit ( )

Definition at line 525 of file syspager.cpp.

526{
527 if (m_timer >= 0)
528 {
530 }
531}
BOOL WINAPI KillTimer(_In_opt_ HWND, _In_ UINT_PTR)

Referenced by CSysPagerWnd::OnDestroy().

◆ IndexOf()

int CBalloonQueue::IndexOf ( InternalIconData pdata)
private

Definition at line 606 of file syspager.cpp.

607{
608 int count = m_toolbar->GetButtonCount();
609 for (int i = 0; i < count; i++)
610 {
611 if (m_toolbar->GetItemData(i) == pdata)
612 return i;
613 }
614 return -1;
615}
GLuint GLuint GLsizei count
Definition: gl.h:1545
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static PROTOCOLDATA * pdata
Definition: protocol.c:158

Referenced by Show().

◆ Init()

void CBalloonQueue::Init ( HWND  hwndParent,
CNotifyToolbar toolbar,
CTooltips balloons 
)

Definition at line 518 of file syspager.cpp.

519{
521 m_toolbar = toolbar;
522 m_tooltips = balloons;
523}
static HWND hwndParent
Definition: cryptui.c:300

Referenced by CSysPagerWnd::OnCreate().

◆ OnTimer()

bool CBalloonQueue::OnTimer ( int  timerId)

Definition at line 533 of file syspager.cpp.

534{
535 if (timerId != m_timer)
536 return false;
537
539 m_timer = -1;
540
542 {
543 Close(m_current, NIN_BALLOONTIMEOUT);
544 }
545 else
546 {
547 m_current = NULL;
548 m_currentClosed = false;
549 if (!m_queue.IsEmpty())
550 {
551 Info info = m_queue.RemoveHead();
552 Show(info);
553 }
554 }
555
556 return true;
557}
CAtlList< Info > m_queue
Definition: syspager.cpp:119
void Show(Info &info)
Definition: syspager.cpp:622
_Must_inspect_result_ _In_ WDFCHILDLIST _In_ PWDF_CHILD_LIST_ITERATOR _Out_ WDFDEVICE _Inout_opt_ PWDF_CHILD_RETRIEVE_INFO Info
Definition: wdfchildlist.h:690

Referenced by CSysPagerWnd::OnTimer().

◆ RemoveInfo()

void CBalloonQueue::RemoveInfo ( InternalIconData notifyItem)

Definition at line 583 of file syspager.cpp.

584{
585 Close(notifyItem, NIN_BALLOONHIDE);
586
587 POSITION position = m_queue.GetHeadPosition();
588 while(position != NULL)
589 {
590 Info& info = m_queue.GetNext(position);
591 if (info.pSource == notifyItem)
592 {
593 m_queue.RemoveAt(position);
594 }
595 }
596}

Referenced by CNotifyToolbar::RemoveButton().

◆ SetTimer()

void CBalloonQueue::SetTimer ( int  length)
private

Definition at line 617 of file syspager.cpp.

618{
620}
static const int BalloonsTimerId
Definition: syspager.cpp:89
GLuint GLsizei GLsizei * length
Definition: glext.h:6040

Referenced by Close(), SetTimer(), and Show().

◆ Show()

void CBalloonQueue::Show ( Info info)
private

Definition at line 622 of file syspager.cpp.

623{
624 TRACE("ShowBalloonTip called for flags=%x text=%ws; title=%ws\n", info.uIcon, info.szInfo, info.szInfoTitle);
625
626 // TODO: NIF_REALTIME, NIIF_NOSOUND, other Vista+ flags
627
628 m_current = info.pSource;
629 RECT rc;
630 m_toolbar->GetItemRect(IndexOf(m_current), &rc);
632 const WORD x = (rc.left + rc.right) / 2;
633 const WORD y = (rc.top + rc.bottom) / 2;
634
635 m_tooltips->SetTitle(info.szInfoTitle, info.uIcon);
638 m_tooltips->UpdateTipText(m_hwndParent, reinterpret_cast<LPARAM>(m_toolbar->m_hWnd), info.szInfo);
640
641 int timeout = info.uTimeout;
644
646
647 m_toolbar->SendNotifyCallback(m_current, NIN_BALLOONSHOW);
648}
HWND m_hWnd
Definition: atlwin.h:273
BOOL ClientToScreen(LPPOINT lpPoint) const
Definition: atlwin.h:393
static const int MinTimeout
Definition: syspager.cpp:90
static const int MaxTimeout
Definition: syspager.cpp:91
int IndexOf(InternalIconData *pdata)
Definition: syspager.cpp:606
INT SetMaxTipWidth(IN OPTIONAL INT width=-1)
Definition: rosctrls.h:793
VOID UpdateTipText(IN HWND hwndToolOwner, IN UINT uId, IN PCWSTR szText, IN HINSTANCE hinstResourceOwner=NULL)
Definition: rosctrls.h:685
BOOL SetTitle(PCWSTR szTitleText, WPARAM icon=0)
Definition: rosctrls.h:710
VOID TrackActivate(IN HWND hwndToolOwner, IN UINT uId)
Definition: rosctrls.h:715
VOID TrackPosition(IN WORD x, IN WORD y)
Definition: rosctrls.h:728
unsigned short WORD
Definition: ntddk_ex.h:93
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
LONG_PTR LPARAM
Definition: minwindef.h:175
Definition: windef.h:99
LONG right
Definition: windef.h:102
LONG bottom
Definition: windef.h:103
LONG top
Definition: windef.h:101
LONG left
Definition: windef.h:100
Definition: dhcpd.h:248
#define BALLOON_MAXWIDTH
Definition: syspager.cpp:24

Referenced by OnTimer(), and UpdateInfo().

◆ UpdateInfo()

void CBalloonQueue::UpdateInfo ( InternalIconData notifyItem)

Definition at line 559 of file syspager.cpp.

560{
561 size_t len = 0;
562 HRESULT hr = StringCchLength(notifyItem->szInfo, _countof(notifyItem->szInfo), &len);
563 if (SUCCEEDED(hr) && len > 0)
564 {
565 Info info(notifyItem);
566
567 // If m_current == notifyItem, we want to replace the previous balloon even if there is a queue.
568 if (m_current != notifyItem && (m_current != NULL || !m_queue.IsEmpty()))
569 {
570 m_queue.AddTail(info);
571 }
572 else
573 {
574 Show(info);
575 }
576 }
577 else
578 {
579 Close(notifyItem, NIN_BALLOONHIDE);
580 }
581}
GLenum GLsizei len
Definition: glext.h:6722
#define SUCCEEDED(hr)
Definition: intsafe.h:50
HRESULT hr
Definition: shlfolder.c:183
#define _countof(array)
Definition: sndvol32.h:70
#define StringCchLength
Definition: strsafe.h:829
CHAR szInfo[256]
Definition: shellapi.h:240

Referenced by CNotifyToolbar::AddButton(), and CNotifyToolbar::UpdateButton().

Member Data Documentation

◆ BalloonsTimerId

const int CBalloonQueue::BalloonsTimerId = 1
static

Definition at line 89 of file syspager.cpp.

Referenced by SetTimer().

◆ CooldownBetweenBalloons

const int CBalloonQueue::CooldownBetweenBalloons = 2000
static

Definition at line 92 of file syspager.cpp.

Referenced by Close().

◆ m_current

InternalIconData* CBalloonQueue::m_current
private

Definition at line 123 of file syspager.cpp.

Referenced by Close(), CloseCurrent(), OnTimer(), Show(), and UpdateInfo().

◆ m_currentClosed

bool CBalloonQueue::m_currentClosed
private

Definition at line 124 of file syspager.cpp.

Referenced by Close(), and OnTimer().

◆ m_hwndParent

HWND CBalloonQueue::m_hwndParent
private

Definition at line 115 of file syspager.cpp.

Referenced by Deinit(), Init(), OnTimer(), SetTimer(), and Show().

◆ m_queue

CAtlList<Info> CBalloonQueue::m_queue
private

Definition at line 119 of file syspager.cpp.

Referenced by OnTimer(), RemoveInfo(), and UpdateInfo().

◆ m_timer

int CBalloonQueue::m_timer
private

Definition at line 126 of file syspager.cpp.

Referenced by Deinit(), OnTimer(), and SetTimer().

◆ m_toolbar

CNotifyToolbar* CBalloonQueue::m_toolbar
private

Definition at line 121 of file syspager.cpp.

Referenced by Close(), IndexOf(), Init(), and Show().

◆ m_tooltips

CTooltips* CBalloonQueue::m_tooltips
private

Definition at line 117 of file syspager.cpp.

Referenced by Close(), Init(), and Show().

◆ MaxTimeout

const int CBalloonQueue::MaxTimeout = 30000
static

Definition at line 91 of file syspager.cpp.

Referenced by Show().

◆ MinTimeout

const int CBalloonQueue::MinTimeout = 10000
static

Definition at line 90 of file syspager.cpp.

Referenced by Show().

◆ TimerInterval

const int CBalloonQueue::TimerInterval = 2000
static

Definition at line 88 of file syspager.cpp.


The documentation for this class was generated from the following file: