If Client connection lost, don't clear message window; show messages grayed out instead

svn path=/trunk/boinc/; revision=14564
This commit is contained in:
Charlie Fenton 2008-01-16 07:20:58 +00:00
parent 8392c6a83d
commit 26f823ad99
4 changed files with 61 additions and 5 deletions

View File

@ -605,3 +605,15 @@ David Jan 15 2008
zip/zip/ zip/zip/
z_fileio.c z_fileio.c
Charlie Jan 15 2008
MGR: When connection to Client is lost, don't clear message window; show
messages grayed out instead.
NOTE: these changes may need to be applied in CViewMessagesGrid class
if we implement that in the future.
clientgui/
MainDocument.cpp
clientgui/
sg_DlgMessages.cpp
ViewMessages.cpp

View File

@ -334,7 +334,7 @@ CMainDocument::CMainDocument() {
m_dtFileTransfersTimestamp = wxDateTime((time_t)0); m_dtFileTransfersTimestamp = wxDateTime((time_t)0);
m_dtDiskUsageTimestamp = wxDateTime((time_t)0); m_dtDiskUsageTimestamp = wxDateTime((time_t)0);
m_dtStatisticsStatusTimestamp = wxDateTime((time_t)0); m_dtStatisticsStatusTimestamp = wxDateTime((time_t)0);
m_dtCachedSimpleGUITimestamp = wxDateTime((time_t)0); m_dtCachedSimpleGUITimestamp = wxDateTime((time_t)0);
} }
@ -434,14 +434,11 @@ int CMainDocument::ResetState() {
state.clear(); state.clear();
host.clear_host_info(); host.clear_host_info();
results.clear(); results.clear();
messages.clear();
ft.clear(); ft.clear();
disk_usage.clear(); disk_usage.clear();
proxy_info.clear(); proxy_info.clear();
ForceCacheUpdate(); ForceCacheUpdate();
m_iMessageSequenceNumber = 0;
return 0; return 0;
} }
@ -1223,11 +1220,16 @@ int CMainDocument::WorkAbort(std::string& strProjectURL, std::string& strName) {
int CMainDocument::CachedMessageUpdate() { int CMainDocument::CachedMessageUpdate() {
int retval; int retval;
static bool in_this_func = false; static bool in_this_func = false;
static bool was_connected = false;
if (in_this_func) return 0; if (in_this_func) return 0;
in_this_func = true; in_this_func = true;
if (IsConnected()) { if (IsConnected()) {
if (! was_connected) {
ResetMessageState();
was_connected = true;
}
retval = rpc.get_messages(m_iMessageSequenceNumber, messages); retval = rpc.get_messages(m_iMessageSequenceNumber, messages);
if (retval) { if (retval) {
wxLogTrace(wxT("Function Status"), wxT("CMainDocument::CachedMessageUpdate - Get Messages Failed '%d'"), retval); wxLogTrace(wxT("Function Status"), wxT("CMainDocument::CachedMessageUpdate - Get Messages Failed '%d'"), retval);
@ -1238,6 +1240,8 @@ int CMainDocument::CachedMessageUpdate() {
int last_ind = messages.messages.size()-1; int last_ind = messages.messages.size()-1;
m_iMessageSequenceNumber = messages.messages[last_ind]->seqno; m_iMessageSequenceNumber = messages.messages[last_ind]->seqno;
} }
} else {
was_connected = false;
} }
done: done:
in_this_func = false; in_this_func = false;

View File

@ -223,6 +223,9 @@ wxInt32 CViewMessages::GetDocCount() {
void CViewMessages::OnListRender (wxTimerEvent& event) { void CViewMessages::OnListRender (wxTimerEvent& event) {
bool isConnected;
static bool was_connected = false;
if (!m_bProcessingListRenderEvent) { if (!m_bProcessingListRenderEvent) {
m_bProcessingListRenderEvent = true; m_bProcessingListRenderEvent = true;
@ -232,6 +235,22 @@ void CViewMessages::OnListRender (wxTimerEvent& event) {
if (0 >= iDocCount) { if (0 >= iDocCount) {
m_pListPane->DeleteAllItems(); m_pListPane->DeleteAllItems();
} else { } else {
// If connection status changed, adjust color of messages display
isConnected = wxGetApp().GetDocument()->IsConnected();
if (was_connected != isConnected) {
was_connected = isConnected;
if (isConnected) {
m_pMessageInfoAttr->SetTextColour(*wxBLACK);
m_pMessageErrorAttr->SetTextColour(*wxRED);
} else {
wxColourDatabase colorBase;
m_pMessageInfoAttr->SetTextColour(wxColour(128, 128, 128));
m_pMessageErrorAttr->SetTextColour(wxColour(255, 128, 128));
}
// Force an update
m_pListPane->SetItemCount(iDocCount);
}
if (m_iPreviousDocCount != iDocCount) if (m_iPreviousDocCount != iDocCount)
m_pListPane->SetItemCount(iDocCount); m_pListPane->SetItemCount(iDocCount);
} }
@ -280,6 +299,7 @@ wxListItemAttr* CViewMessages::OnListGetItemAttr(long item) const {
pAttribute = m_pMessageErrorAttr; pAttribute = m_pMessageErrorAttr;
break; break;
default: default:
pAttribute = m_pMessageInfoAttr;
break; break;
} }
} }

View File

@ -110,7 +110,7 @@ bool CPanelMessages::Create()
m_pList->InsertColumn(COLUMN_TIME, _("Time"), wxLIST_FORMAT_LEFT, 130); m_pList->InsertColumn(COLUMN_TIME, _("Time"), wxLIST_FORMAT_LEFT, 130);
m_pList->InsertColumn(COLUMN_MESSAGE, _("Message"), wxLIST_FORMAT_LEFT, 378); m_pList->InsertColumn(COLUMN_MESSAGE, _("Message"), wxLIST_FORMAT_LEFT, 378);
m_pMessageInfoAttr = new wxListItemAttr(*wxBLACK, *wxWHITE, wxNullFont); m_pMessageInfoAttr = new wxListItemAttr(*wxBLACK, *wxWHITE, wxNullFont);
m_pMessageErrorAttr = new wxListItemAttr(*wxRED, *wxWHITE, wxNullFont); m_pMessageErrorAttr = new wxListItemAttr(*wxRED, *wxWHITE, wxNullFont);
m_pRefreshMessagesTimer = new wxTimer(this, ID_REFRESHMESSAGESTIMER); m_pRefreshMessagesTimer = new wxTimer(this, ID_REFRESHMESSAGESTIMER);
@ -344,6 +344,9 @@ void CPanelMessages::OnEraseBackground(wxEraseEvent& event){
*/ */
void CPanelMessages::OnRefresh(wxTimerEvent& event) { void CPanelMessages::OnRefresh(wxTimerEvent& event) {
bool isConnected;
static bool was_connected = false;
if (!m_bProcessingRefreshEvent) { if (!m_bProcessingRefreshEvent) {
m_bProcessingRefreshEvent = true; m_bProcessingRefreshEvent = true;
@ -353,6 +356,22 @@ void CPanelMessages::OnRefresh(wxTimerEvent& event) {
if (0 >= iDocCount) { if (0 >= iDocCount) {
m_pList->DeleteAllItems(); m_pList->DeleteAllItems();
} else { } else {
// If connection status changed, adjust color of messages display
isConnected = wxGetApp().GetDocument()->IsConnected();
if (was_connected != isConnected) {
was_connected = isConnected;
if (isConnected) {
m_pMessageInfoAttr->SetTextColour(*wxBLACK);
m_pMessageErrorAttr->SetTextColour(*wxRED);
} else {
wxColourDatabase colorBase;
m_pMessageInfoAttr->SetTextColour(wxColour(128, 128, 128));
m_pMessageErrorAttr->SetTextColour(wxColour(255, 128, 128));
}
// Force an update
m_pList->SetItemCount(iDocCount);
}
if (m_iPreviousDocCount != iDocCount) if (m_iPreviousDocCount != iDocCount)
m_pList->SetItemCount(iDocCount); m_pList->SetItemCount(iDocCount);
} }
@ -574,6 +593,7 @@ wxListItemAttr* CPanelMessages::OnListGetItemAttr(long item) const {
pAttribute = m_pMessageErrorAttr; pAttribute = m_pMessageErrorAttr;
break; break;
default: default:
pAttribute = m_pMessageInfoAttr;
break; break;
} }
} }