mirror of https://github.com/BOINC/boinc.git
MGR: Allow updates to continue behind the notification alert
svn path=/trunk/boinc/; revision=21028
This commit is contained in:
parent
fd0b7a7ce2
commit
ff154f035f
|
@ -44,6 +44,7 @@
|
|||
|
||||
DEFINE_EVENT_TYPE(wxEVT_TASKBAR_RELOADSKIN)
|
||||
DEFINE_EVENT_TYPE(wxEVT_TASKBAR_REFRESH)
|
||||
DEFINE_EVENT_TYPE(wxEVT_TASKBAR_NOTIFICATION_ALERT)
|
||||
|
||||
BEGIN_EVENT_TABLE(CTaskBarIcon, wxTaskBarIconEx)
|
||||
|
||||
|
@ -51,6 +52,7 @@ BEGIN_EVENT_TABLE(CTaskBarIcon, wxTaskBarIconEx)
|
|||
EVT_CLOSE(CTaskBarIcon::OnClose)
|
||||
EVT_TASKBAR_REFRESH(CTaskBarIcon::OnRefresh)
|
||||
EVT_TASKBAR_RELOADSKIN(CTaskBarIcon::OnReloadSkin)
|
||||
EVT_TASKBAR_NOTIFICATION_ALERT(CTaskBarIcon::OnNotificationAlert)
|
||||
EVT_TASKBAR_LEFT_DCLICK(CTaskBarIcon::OnLButtonDClick)
|
||||
#ifndef __WXMAC__
|
||||
EVT_TASKBAR_RIGHT_DOWN(CTaskBarIcon::OnRButtonDown)
|
||||
|
@ -316,6 +318,30 @@ void CTaskBarIcon::OnReloadSkin(CTaskbarEvent& WXUNUSED(event)) {
|
|||
}
|
||||
|
||||
|
||||
void CTaskBarIcon::OnNotificationAlert(CTaskbarEvent& WXUNUSED(event)) {
|
||||
CSkinAdvanced* pSkinAdvanced = wxGetApp().GetSkinManager()->GetAdvanced();
|
||||
wxString strTitle;
|
||||
|
||||
strTitle.Printf(
|
||||
_("%s Notices"),
|
||||
pSkinAdvanced->GetApplicationName().c_str()
|
||||
);
|
||||
|
||||
// Do not use SafeMessageBox here because we want to continue
|
||||
// doing periodic RPCs to get messages, get notices, etc.
|
||||
wxMessageDialog* pDlg = new wxMessageDialog(
|
||||
NULL,
|
||||
_("One or more notices are now available for viewing."),
|
||||
strTitle,
|
||||
wxOK
|
||||
);
|
||||
pDlg->ShowModal();
|
||||
if (pDlg) {
|
||||
pDlg->Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CTaskBarIcon::FireReloadSkin() {
|
||||
CTaskbarEvent event(wxEVT_TASKBAR_RELOADSKIN, this);
|
||||
AddPendingEvent(event);
|
||||
|
@ -698,18 +724,16 @@ void CTaskBarIcon::UpdateNoticeStatus() {
|
|||
m_iLastNotificationCount = iNoticeCount;
|
||||
m_dtLastNotificationAlertExecuted = wxDateTime::Now();
|
||||
|
||||
strTitle.Printf(
|
||||
_("%s Notices"),
|
||||
pSkinAdvanced->GetApplicationName().c_str()
|
||||
);
|
||||
wxString strMessage = _("One or more notices are now available for viewing.");
|
||||
|
||||
if (IsBalloonsSupported()) {
|
||||
// Display balloon
|
||||
strTitle.Printf(
|
||||
_("%s Notices"),
|
||||
pSkinAdvanced->GetApplicationName().c_str()
|
||||
);
|
||||
QueueBalloon(
|
||||
m_iconTaskBarNormal,
|
||||
strTitle,
|
||||
strMessage,
|
||||
_("One or more notices are now available for viewing."),
|
||||
BALLOONTYPE_INFO
|
||||
);
|
||||
} else {
|
||||
|
@ -723,13 +747,10 @@ void CTaskBarIcon::UpdateNoticeStatus() {
|
|||
// If Manager is now hidden, alert will appear when Manager is shown.
|
||||
int currentTabView = pFrame->GetCurrentViewPage();
|
||||
if (! (currentTabView & VW_NOTIF)) {
|
||||
// Do not use SafeMessageBox here because we want to continue
|
||||
// doing periodic RPCs to get messages, get notices, etc.
|
||||
wxMessageDialog* pDlg = new wxMessageDialog(NULL, strMessage, strTitle, wxOK);
|
||||
pDlg->ShowModal();
|
||||
if (pDlg) {
|
||||
pDlg->Destroy();
|
||||
}
|
||||
// Don't run the alert from within the taskbar Refresh event to
|
||||
// allow updates to continue behind the notification alert
|
||||
CTaskbarEvent event(wxEVT_TASKBAR_NOTIFICATION_ALERT, this);
|
||||
AddPendingEvent(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -50,6 +50,7 @@ public:
|
|||
void OnClose(wxCloseEvent& event);
|
||||
void OnRefresh(CTaskbarEvent& event);
|
||||
void OnReloadSkin(CTaskbarEvent& event);
|
||||
void OnNotificationAlert(CTaskbarEvent& event);
|
||||
|
||||
void OnNotificationClick(wxTaskBarIconExEvent& event);
|
||||
void OnShutdown(wxTaskBarIconExEvent& event);
|
||||
|
@ -139,10 +140,12 @@ public:
|
|||
BEGIN_DECLARE_EVENT_TYPES()
|
||||
DECLARE_EVENT_TYPE( wxEVT_TASKBAR_RELOADSKIN, 10100 )
|
||||
DECLARE_EVENT_TYPE( wxEVT_TASKBAR_REFRESH, 10101 )
|
||||
DECLARE_EVENT_TYPE( wxEVT_TASKBAR_NOTIFICATION_ALERT, 10102 )
|
||||
END_DECLARE_EVENT_TYPES()
|
||||
|
||||
#define EVT_TASKBAR_RELOADSKIN(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_TASKBAR_RELOADSKIN, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL),
|
||||
#define EVT_TASKBAR_REFRESH(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_TASKBAR_REFRESH, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL),
|
||||
#define EVT_TASKBAR_NOTIFICATION_ALERT(fn) DECLARE_EVENT_TABLE_ENTRY(wxEVT_TASKBAR_NOTIFICATION_ALERT, -1, -1, (wxObjectEventFunction) (wxEventFunction) &fn, NULL),
|
||||
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue