mirror of https://github.com/BOINC/boinc.git
*** empty log message ***
svn path=/trunk/boinc/; revision=4697
This commit is contained in:
parent
6b3b8dc99e
commit
d93292b797
|
@ -20458,3 +20458,31 @@ Bruce 2 Dec 2004
|
|||
user/
|
||||
explain_state.php
|
||||
|
||||
Rom 2 Dec 2004
|
||||
- Bug Fix: Each view now contains a display cache; the display cache
|
||||
is synchronized during the regularly scheduled list render event.
|
||||
The control grabs the necessary information from the cache instead
|
||||
of cycling down to the document. Due to the way listviews were
|
||||
implemented on some platforms I believe this will fix some refresh
|
||||
problems where the data wasn’t being updated in a timely manor.
|
||||
This also had the added benefit of increasing performance on displaying
|
||||
updates.
|
||||
- Fill in the missing piece for the memory leak detection to proplerly
|
||||
display the file and line number information per allocation for the
|
||||
GUI on Windows
|
||||
- Rename the CC and GUI on all platforms to match that of Windows.
|
||||
|
||||
/
|
||||
configure.ac
|
||||
clientgui/
|
||||
BOINCBaseView.cpp, .h
|
||||
BOINCGUIApp.cpp
|
||||
MainFrame.cpp, .h
|
||||
stdwx.h
|
||||
ViewMessages.cpp, .h
|
||||
ViewProjects.cpp, .h
|
||||
ViewResources.cpp, .h
|
||||
ViewTransfers.cpp, .h
|
||||
ViewWork.cpp, .h
|
||||
clientgui/msw/
|
||||
taskbarex.h
|
||||
|
|
|
@ -54,11 +54,6 @@ CBOINCBaseView::CBOINCBaseView( wxNotebook* pNotebook, wxWindowID iHtmlWindowID,
|
|||
m_bProcessingTaskRenderEvent = false;
|
||||
m_bProcessingListRenderEvent = false;
|
||||
|
||||
m_iCacheFrom = 0;
|
||||
m_iCacheTo = 0;
|
||||
|
||||
m_iCount = 0;
|
||||
|
||||
m_bItemSelected = false;
|
||||
|
||||
m_strQuickTip = wxEmptyString;
|
||||
|
@ -111,15 +106,10 @@ char** CBOINCBaseView::GetViewIcon()
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::_GetListRowCount()
|
||||
{
|
||||
return GetListRowCount();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::GetListRowCount()
|
||||
{
|
||||
return 0;
|
||||
wxASSERT(NULL != m_pListPane);
|
||||
return m_pListPane->GetItemCount();
|
||||
}
|
||||
|
||||
|
||||
|
@ -135,6 +125,72 @@ void CBOINCBaseView::FireOnListRender ( wxTimerEvent& event )
|
|||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::FireOnSaveState( wxConfigBase* pConfig )
|
||||
{
|
||||
return OnSaveState( pConfig );
|
||||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::FireOnRestoreState( wxConfigBase* pConfig )
|
||||
{
|
||||
return OnRestoreState( pConfig );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnChar( wxKeyEvent& event )
|
||||
{
|
||||
OnChar( event );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnListSelected( wxListEvent& event )
|
||||
{
|
||||
OnListSelected( event );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnListDeselected( wxListEvent& event )
|
||||
{
|
||||
OnListDeselected( event );
|
||||
}
|
||||
|
||||
|
||||
wxString CBOINCBaseView::FireOnListGetItemText( long item, long column ) const
|
||||
{
|
||||
return OnListGetItemText( item, column );
|
||||
}
|
||||
|
||||
|
||||
int CBOINCBaseView::FireOnListGetItemImage( long item ) const
|
||||
{
|
||||
return OnListGetItemImage( item );
|
||||
}
|
||||
|
||||
|
||||
wxListItemAttr* CBOINCBaseView::FireOnListGetItemAttr( long item ) const
|
||||
{
|
||||
return OnListGetItemAttr( item );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnTaskLinkClicked( const wxHtmlLinkInfo& link )
|
||||
{
|
||||
OnTaskLinkClicked( link );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y )
|
||||
{
|
||||
OnTaskCellMouseHover( cell, x, y );
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::GetDocCount()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::OnTaskRender ( wxTimerEvent& event )
|
||||
{
|
||||
if (!m_bProcessingTaskRenderEvent)
|
||||
|
@ -165,83 +221,59 @@ void CBOINCBaseView::OnListRender ( wxTimerEvent& event )
|
|||
|
||||
wxASSERT(NULL != m_pListPane);
|
||||
|
||||
wxInt32 iCount = _GetListRowCount();
|
||||
if ( iCount != m_iCount )
|
||||
wxInt32 iDocCount = GetDocCount();
|
||||
wxInt32 iCacheCount = GetCacheCount();
|
||||
if ( iDocCount != iCacheCount )
|
||||
{
|
||||
m_iCount = iCount;
|
||||
if ( 0 >= iCount )
|
||||
if ( 0 >= iDocCount )
|
||||
{
|
||||
EmptyCache();
|
||||
m_pListPane->DeleteAllItems();
|
||||
m_iCacheFrom = 0;
|
||||
m_iCacheTo = 0;
|
||||
}
|
||||
else
|
||||
m_pListPane->SetItemCount(iCount);
|
||||
{
|
||||
if ( iDocCount > iCacheCount )
|
||||
{
|
||||
wxInt32 iIndex = 0;
|
||||
wxInt32 iReturnValue = -1;
|
||||
for ( iIndex = iCacheCount; iIndex <= iDocCount; iIndex++ )
|
||||
{
|
||||
iReturnValue = AddCacheElement();
|
||||
wxASSERT( 0 == iReturnValue );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
wxInt32 iIndex = 0;
|
||||
wxInt32 iReturnValue = -1;
|
||||
for ( iIndex = iDocCount; iIndex >= iCacheCount; iIndex-- )
|
||||
{
|
||||
iReturnValue = RemoveCacheElement();
|
||||
wxASSERT( 0 == iReturnValue );
|
||||
}
|
||||
}
|
||||
|
||||
SyncronizeCache();
|
||||
m_pListPane->SetItemCount(iDocCount);
|
||||
|
||||
if (EnsureLastItemVisible())
|
||||
{
|
||||
m_pListPane->EnsureVisible(iCacheCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( 1 <= m_iCacheTo )
|
||||
{
|
||||
wxInt32 iRowIndex = 0;
|
||||
wxInt32 iColumnIndex = 0;
|
||||
wxInt32 iColumnTotal = 0;
|
||||
wxString strDocumentText = wxEmptyString;
|
||||
wxString strListPaneText = wxEmptyString;
|
||||
bool bNeedRefreshData = false;
|
||||
wxListItem liItem;
|
||||
|
||||
liItem.SetMask(wxLIST_MASK_TEXT);
|
||||
iColumnTotal = m_pListPane->GetColumnCount();
|
||||
|
||||
for ( iRowIndex = m_iCacheFrom; iRowIndex <= m_iCacheTo; iRowIndex++ )
|
||||
{
|
||||
bNeedRefreshData = false;
|
||||
liItem.SetId(iRowIndex);
|
||||
|
||||
for ( iColumnIndex = 0; iColumnIndex < iColumnTotal; iColumnIndex++ )
|
||||
{
|
||||
strDocumentText.Empty();
|
||||
strListPaneText.Empty();
|
||||
|
||||
strDocumentText = OnListGetItemText( iRowIndex, iColumnIndex );
|
||||
|
||||
liItem.SetColumn(iColumnIndex);
|
||||
m_pListPane->GetItem(liItem);
|
||||
strListPaneText = liItem.GetText();
|
||||
|
||||
if ( !strDocumentText.IsSameAs(strListPaneText) )
|
||||
bNeedRefreshData = true;
|
||||
}
|
||||
|
||||
if ( bNeedRefreshData )
|
||||
{
|
||||
m_pListPane->RefreshItem( iRowIndex );
|
||||
}
|
||||
}
|
||||
}
|
||||
SyncronizeCache();
|
||||
}
|
||||
|
||||
m_bProcessingListRenderEvent = false;
|
||||
}
|
||||
|
||||
m_pListPane->Refresh();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::FireOnSaveState( wxConfigBase* pConfig )
|
||||
{
|
||||
return OnSaveState( pConfig );
|
||||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::FireOnRestoreState( wxConfigBase* pConfig )
|
||||
{
|
||||
return OnRestoreState( pConfig );
|
||||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::OnSaveState( wxConfigBase* pConfig )
|
||||
{
|
||||
bool bReturnValue = true;
|
||||
|
@ -278,46 +310,8 @@ bool CBOINCBaseView::OnRestoreState( wxConfigBase* pConfig )
|
|||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnListCacheHint( wxListEvent& event )
|
||||
void CBOINCBaseView::OnChar( wxKeyEvent& event )
|
||||
{
|
||||
OnListCacheHint( event );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnListSelected( wxListEvent& event )
|
||||
{
|
||||
OnListSelected( event );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnListDeselected( wxListEvent& event )
|
||||
{
|
||||
OnListDeselected( event );
|
||||
}
|
||||
|
||||
|
||||
wxString CBOINCBaseView::FireOnListGetItemText( long item, long column ) const
|
||||
{
|
||||
return OnListGetItemText( item, column );
|
||||
}
|
||||
|
||||
|
||||
int CBOINCBaseView::FireOnListGetItemImage( long item ) const
|
||||
{
|
||||
return OnListGetItemImage( item );
|
||||
}
|
||||
|
||||
|
||||
wxListItemAttr* CBOINCBaseView::FireOnListGetItemAttr( long item ) const
|
||||
{
|
||||
return OnListGetItemAttr( item );
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::OnListCacheHint( wxListEvent& event )
|
||||
{
|
||||
m_iCacheFrom = event.GetCacheFrom();
|
||||
m_iCacheTo = event.GetCacheTo();
|
||||
}
|
||||
|
||||
|
||||
|
@ -363,15 +357,21 @@ wxListItemAttr* CBOINCBaseView::OnListGetItemAttr( long WXUNUSED(item) ) const
|
|||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnTaskLinkClicked( const wxHtmlLinkInfo& link )
|
||||
wxString CBOINCBaseView::OnDocGetItemText( long WXUNUSED(item), long WXUNUSED(column) ) const
|
||||
{
|
||||
OnTaskLinkClicked( link );
|
||||
return wxString("Undefined");
|
||||
}
|
||||
|
||||
|
||||
void CBOINCBaseView::FireOnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y )
|
||||
wxString CBOINCBaseView::OnDocGetItemImage( long WXUNUSED(item) ) const
|
||||
{
|
||||
OnTaskCellMouseHover( cell, x, y );
|
||||
return wxString("Undefined");
|
||||
}
|
||||
|
||||
|
||||
wxString CBOINCBaseView::OnDocGetItemAttr( long WXUNUSED(item) ) const
|
||||
{
|
||||
return wxString("Undefined");
|
||||
}
|
||||
|
||||
|
||||
|
@ -404,6 +404,86 @@ void CBOINCBaseView::SetCurrentQuickTip( const wxString& strQuickTip, const wxSt
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::AddCacheElement()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::EmptyCache()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::GetCacheCount()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::RemoveCacheElement()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::SyncronizeCache()
|
||||
{
|
||||
wxInt32 iRowIndex = 0;
|
||||
wxInt32 iRowTotal = 0;
|
||||
wxInt32 iColumnIndex = 0;
|
||||
wxInt32 iColumnTotal = 0;
|
||||
wxString strDocumentText = wxEmptyString;
|
||||
wxString strListPaneText = wxEmptyString;
|
||||
wxInt32 iReturnValue = -1;
|
||||
bool bNeedRefreshData = false;
|
||||
|
||||
iRowTotal = GetDocCount();
|
||||
iColumnTotal = m_pListPane->GetColumnCount();
|
||||
|
||||
for ( iRowIndex = 0; iRowIndex < iRowTotal; iRowIndex++ )
|
||||
{
|
||||
bNeedRefreshData = false;
|
||||
|
||||
for ( iColumnIndex = 0; iColumnIndex < iColumnTotal; iColumnIndex++ )
|
||||
{
|
||||
strDocumentText.Empty();
|
||||
strListPaneText.Empty();
|
||||
|
||||
strDocumentText = OnDocGetItemText( iRowIndex, iColumnIndex );
|
||||
strListPaneText = OnListGetItemText( iRowIndex, iColumnIndex );
|
||||
|
||||
if ( !strDocumentText.IsSameAs(strListPaneText) )
|
||||
{
|
||||
iReturnValue = UpdateCache( iRowIndex, iColumnIndex, strDocumentText );
|
||||
wxASSERT( 0 == iReturnValue );
|
||||
bNeedRefreshData = true;
|
||||
}
|
||||
}
|
||||
|
||||
if ( bNeedRefreshData )
|
||||
{
|
||||
m_pListPane->RefreshItem( iRowIndex );
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CBOINCBaseView::UpdateCache( long item, long column, wxString& strNewData )
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::EnsureLastItemVisible()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool CBOINCBaseView::UpdateQuickTip( const wxString& strCurrentLink, const wxString& strQuickTip, const wxString& strQuickTipText )
|
||||
{
|
||||
bool bRetVal;
|
||||
|
|
|
@ -44,6 +44,7 @@ class CBOINCBaseView : public wxPanel
|
|||
DECLARE_DYNAMIC_CLASS( CBOINCBaseView )
|
||||
|
||||
public:
|
||||
|
||||
CBOINCBaseView();
|
||||
CBOINCBaseView(
|
||||
wxNotebook* pNotebook,
|
||||
|
@ -59,27 +60,11 @@ public:
|
|||
virtual char** GetViewIcon();
|
||||
virtual wxInt32 GetListRowCount();
|
||||
|
||||
virtual void OnTaskRender( wxTimerEvent& event );
|
||||
virtual void OnListRender( wxTimerEvent& event );
|
||||
|
||||
virtual bool OnSaveState( wxConfigBase* pConfig );
|
||||
virtual bool OnRestoreState( wxConfigBase* pConfig );
|
||||
|
||||
virtual void OnListCacheHint( wxListEvent& event );
|
||||
virtual void OnListSelected( wxListEvent& event );
|
||||
virtual void OnListDeselected( wxListEvent& event );
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
virtual int OnListGetItemImage( long item ) const;
|
||||
virtual wxListItemAttr* OnListGetItemAttr( long item ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
void FireOnTaskRender( wxTimerEvent& event );
|
||||
void FireOnListRender( wxTimerEvent& event );
|
||||
bool FireOnSaveState( wxConfigBase* pConfig );
|
||||
bool FireOnRestoreState( wxConfigBase* pConfig );
|
||||
void FireOnListCacheHint( wxListEvent& event );
|
||||
void FireOnChar( wxKeyEvent& event );
|
||||
void FireOnListSelected( wxListEvent& event );
|
||||
void FireOnListDeselected( wxListEvent& event );
|
||||
wxString FireOnListGetItemText( long item, long column ) const;
|
||||
|
@ -88,26 +73,51 @@ public:
|
|||
void FireOnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
void FireOnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
protected:
|
||||
|
||||
virtual wxInt32 GetDocCount();
|
||||
|
||||
virtual void OnTaskRender( wxTimerEvent& event );
|
||||
virtual void OnListRender( wxTimerEvent& event );
|
||||
|
||||
virtual bool OnSaveState( wxConfigBase* pConfig );
|
||||
virtual bool OnRestoreState( wxConfigBase* pConfig );
|
||||
|
||||
virtual void OnChar( wxKeyEvent& event );
|
||||
virtual void OnListSelected( wxListEvent& event );
|
||||
virtual void OnListDeselected( wxListEvent& event );
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
virtual int OnListGetItemImage( long item ) const;
|
||||
virtual wxListItemAttr* OnListGetItemAttr( long item ) const;
|
||||
|
||||
virtual wxString OnDocGetItemText( long item, long column ) const;
|
||||
virtual wxString OnDocGetItemImage( long item ) const;
|
||||
virtual wxString OnDocGetItemAttr( long item ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
wxString GetCurrentQuickTip();
|
||||
wxString GetCurrentQuickTipText();
|
||||
void SetCurrentQuickTip( const wxString& strQuickTip, const wxString& strQuickTipText );
|
||||
|
||||
virtual wxInt32 AddCacheElement();
|
||||
virtual wxInt32 EmptyCache();
|
||||
virtual wxInt32 GetCacheCount();
|
||||
virtual wxInt32 RemoveCacheElement();
|
||||
virtual wxInt32 SyncronizeCache();
|
||||
virtual wxInt32 UpdateCache( long item, long column, wxString& strNewData );
|
||||
|
||||
virtual bool EnsureLastItemVisible();
|
||||
|
||||
virtual bool UpdateQuickTip( const wxString& strCurrentLink, const wxString& strQuickTip, const wxString& strQuickTipText );
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
protected:
|
||||
|
||||
wxInt32 _GetListRowCount();
|
||||
|
||||
bool m_bProcessingTaskRenderEvent;
|
||||
bool m_bProcessingListRenderEvent;
|
||||
|
||||
wxInt32 m_iCacheFrom;
|
||||
wxInt32 m_iCacheTo;
|
||||
|
||||
wxInt32 m_iCount;
|
||||
|
||||
bool m_bItemSelected;
|
||||
|
||||
wxString m_strQuickTip;
|
||||
|
|
|
@ -298,9 +298,10 @@ void CBOINCGUIApp::ShutdownBOINCCore()
|
|||
if ( wxProcess::Exists( m_lBOINCCoreProccessId ) )
|
||||
{
|
||||
m_pDocument->CoreClientQuit();
|
||||
/*
|
||||
for ( iCount = 0; iCount <= 10; iCount++ )
|
||||
{
|
||||
if ( !wxProcess::Exists( m_lBOINCCoreProccessId ) )
|
||||
if ( !bClientQuit && !wxProcess::Exists( m_lBOINCCoreProccessId ) )
|
||||
{
|
||||
bClientQuit = true;
|
||||
continue;
|
||||
|
@ -310,6 +311,7 @@ void CBOINCGUIApp::ShutdownBOINCCore()
|
|||
|
||||
if ( !bClientQuit )
|
||||
::wxKill( m_lBOINCCoreProccessId );
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -64,10 +64,10 @@ BEGIN_EVENT_TABLE (CMainFrame, wxFrame)
|
|||
EVT_IDLE(CMainFrame::OnIdle)
|
||||
EVT_CLOSE(CMainFrame::OnClose)
|
||||
EVT_SIZE(CMainFrame::OnSize)
|
||||
EVT_CHAR(CMainFrame::OnChar)
|
||||
EVT_UPDATE_UI_RANGE(ID_ACTIVITYRUNALWAYS, ID_ACTIVITYSUSPEND, CMainFrame::OnUpdateActivitySelection)
|
||||
EVT_UPDATE_UI_RANGE(ID_NETWORKRUNALWAYS, ID_NETWORKSUSPEND, CMainFrame::OnUpdateNetworkSelection)
|
||||
EVT_NOTEBOOK_PAGE_CHANGED(ID_FRAMENOTEBOOK, CMainFrame::OnNotebookSelectionChanged)
|
||||
EVT_LIST_CACHE_HINT(wxID_ANY, CMainFrame::OnListCacheHint)
|
||||
EVT_LIST_ITEM_SELECTED(wxID_ANY, CMainFrame::OnListSelected)
|
||||
EVT_LIST_ITEM_DESELECTED(wxID_ANY, CMainFrame::OnListDeselected)
|
||||
EVT_TIMER(ID_FRAMERENDERTIMER, CMainFrame::OnFrameRender)
|
||||
|
@ -819,6 +819,28 @@ void CMainFrame::OnSize( wxSizeEvent& event )
|
|||
}
|
||||
|
||||
|
||||
void CMainFrame::OnChar( wxKeyEvent& event )
|
||||
{
|
||||
if ( IsShown() )
|
||||
{
|
||||
wxWindow* pwndNotebookPage = NULL;
|
||||
CBOINCBaseView* pView = NULL;
|
||||
|
||||
wxASSERT(NULL != m_pNotebook);
|
||||
|
||||
pwndNotebookPage = m_pNotebook->GetPage( event.GetId() - ID_LIST_BASE );
|
||||
wxASSERT(NULL != pwndNotebookPage);
|
||||
|
||||
pView = wxDynamicCast(pwndNotebookPage, CBOINCBaseView);
|
||||
wxASSERT(NULL != pView);
|
||||
|
||||
pView->FireOnChar( event );
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void CMainFrame::OnNotebookSelectionChanged( wxNotebookEvent& event )
|
||||
{
|
||||
if ( (-1 != event.GetSelection()) && IsShown() )
|
||||
|
@ -843,28 +865,6 @@ void CMainFrame::OnNotebookSelectionChanged( wxNotebookEvent& event )
|
|||
}
|
||||
|
||||
|
||||
void CMainFrame::OnListCacheHint( wxListEvent& event )
|
||||
{
|
||||
if ( IsShown() )
|
||||
{
|
||||
wxWindow* pwndNotebookPage = NULL;
|
||||
CBOINCBaseView* pView = NULL;
|
||||
|
||||
wxASSERT(NULL != m_pNotebook);
|
||||
|
||||
pwndNotebookPage = m_pNotebook->GetPage( event.GetId() - ID_LIST_BASE );
|
||||
wxASSERT(NULL != pwndNotebookPage);
|
||||
|
||||
pView = wxDynamicCast(pwndNotebookPage, CBOINCBaseView);
|
||||
wxASSERT(NULL != pView);
|
||||
|
||||
pView->FireOnListCacheHint( event );
|
||||
}
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
void CMainFrame::OnListSelected( wxListEvent& event )
|
||||
{
|
||||
if ( IsShown() )
|
||||
|
|
|
@ -58,10 +58,11 @@ public:
|
|||
void OnIdle ( wxIdleEvent& event );
|
||||
void OnClose( wxCloseEvent& event );
|
||||
void OnSize( wxSizeEvent& event );
|
||||
void OnChar( wxKeyEvent& event );
|
||||
|
||||
|
||||
void OnNotebookSelectionChanged( wxNotebookEvent& event );
|
||||
|
||||
void OnListCacheHint( wxListEvent& event );
|
||||
void OnListSelected( wxListEvent& event );
|
||||
void OnListDeselected( wxListEvent& event );
|
||||
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
#include "ViewMessages.h"
|
||||
#include "Events.h"
|
||||
|
||||
#include "wx/arrimpl.cpp"
|
||||
|
||||
|
||||
#include "res/mess.xpm"
|
||||
#include "res/task.xpm"
|
||||
#include "res/tips.xpm"
|
||||
|
@ -71,7 +74,84 @@ const wxString LINKDESC_TASKCOPYMESSAGE =
|
|||
" or control key while clicking on the next desired message.");
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(CViewMessages, CBOINCBaseView)
|
||||
WX_DEFINE_OBJARRAY( CMessageCache );
|
||||
|
||||
|
||||
CMessage::CMessage()
|
||||
{
|
||||
m_strPriority = wxEmptyString;
|
||||
m_strProjectName = wxEmptyString;
|
||||
m_strTime = wxEmptyString;
|
||||
m_strMessage = wxEmptyString;
|
||||
}
|
||||
|
||||
|
||||
CMessage::~CMessage()
|
||||
{
|
||||
m_strPriority.Clear();
|
||||
m_strProjectName.Clear();
|
||||
m_strTime.Clear();
|
||||
m_strMessage.Clear();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::GetProjectName( wxString& strProjectName )
|
||||
{
|
||||
strProjectName = m_strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::GetPriority( wxString& strPriority )
|
||||
{
|
||||
strPriority = m_strPriority;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::GetTime( wxString& strTime )
|
||||
{
|
||||
strTime = m_strTime;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::GetMessage( wxString& strMessage )
|
||||
{
|
||||
strMessage = m_strMessage;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::SetProjectName( wxString& strProjectName )
|
||||
{
|
||||
m_strProjectName = strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::SetPriority( wxString& strPriority )
|
||||
{
|
||||
m_strPriority = strPriority;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::SetTime( wxString& strTime )
|
||||
{
|
||||
m_strTime = strTime;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CMessage::SetMessage( wxString& strMessage )
|
||||
{
|
||||
m_strMessage = strMessage;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS( CViewMessages, CBOINCBaseView )
|
||||
|
||||
|
||||
CViewMessages::CViewMessages()
|
||||
|
@ -145,7 +225,7 @@ char** CViewMessages::GetViewIcon()
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::GetListRowCount()
|
||||
wxInt32 CViewMessages::GetDocCount()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
|
@ -156,81 +236,21 @@ wxInt32 CViewMessages::GetListRowCount()
|
|||
}
|
||||
|
||||
|
||||
void CViewMessages::OnListRender(wxTimerEvent &event)
|
||||
{
|
||||
if (!m_bProcessingListRenderEvent)
|
||||
{
|
||||
m_bProcessingListRenderEvent = true;
|
||||
|
||||
wxASSERT(NULL != m_pListPane);
|
||||
|
||||
wxInt32 iCount = _GetListRowCount();
|
||||
if ( iCount != m_iCount )
|
||||
{
|
||||
m_iCount = iCount;
|
||||
if ( 0 >= iCount )
|
||||
m_pListPane->DeleteAllItems();
|
||||
else
|
||||
{
|
||||
m_pListPane->SetItemCount(iCount);
|
||||
m_pListPane->EnsureVisible(iCount-1);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( 1 <= m_iCacheTo )
|
||||
{
|
||||
wxListItem liListItemMessage;
|
||||
wxString strListItemMessage;
|
||||
wxString strDocumentItemMessage;
|
||||
|
||||
FormatMessage(m_iCacheTo, strDocumentItemMessage);
|
||||
|
||||
liListItemMessage.SetId(m_iCacheTo);
|
||||
liListItemMessage.SetColumn(COLUMN_MESSAGE);
|
||||
liListItemMessage.SetMask(wxLIST_MASK_TEXT);
|
||||
|
||||
m_pListPane->GetItem(liListItemMessage);
|
||||
|
||||
strListItemMessage = liListItemMessage.GetText();
|
||||
|
||||
if ( !strDocumentItemMessage.IsSameAs(strListItemMessage) )
|
||||
{
|
||||
m_pListPane->RefreshItems(m_iCacheFrom, m_iCacheTo);
|
||||
m_pListPane->EnsureVisible(m_iCacheTo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_bProcessingListRenderEvent = false;
|
||||
}
|
||||
|
||||
m_pListPane->Refresh();
|
||||
|
||||
event.Skip();
|
||||
}
|
||||
|
||||
|
||||
wxString CViewMessages::OnListGetItemText( long item, long column ) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
wxASSERT(NULL != pDoc);
|
||||
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
|
||||
CMessage& message = m_MessageCache.Item( item );
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
if (item == m_iCacheFrom) pDoc->CachedStateLock();
|
||||
FormatProjectName( item, strBuffer );
|
||||
message.GetProjectName( strBuffer );
|
||||
break;
|
||||
case COLUMN_TIME:
|
||||
FormatTime( item, strBuffer );
|
||||
message.GetTime( strBuffer );
|
||||
break;
|
||||
case COLUMN_MESSAGE:
|
||||
FormatMessage( item, strBuffer );
|
||||
if (item == m_iCacheTo) pDoc->CachedStateUnlock();
|
||||
message.GetMessage( strBuffer );
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -240,25 +260,46 @@ wxString CViewMessages::OnListGetItemText( long item, long column ) const
|
|||
|
||||
wxListItemAttr* CViewMessages::OnListGetItemAttr( long item ) const
|
||||
{
|
||||
wxListItemAttr* pAttribute = NULL;
|
||||
wxInt32 iBuffer = 0;
|
||||
wxListItemAttr* pAttribute = NULL;
|
||||
CMessage& message = m_MessageCache.Item( item );
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
wxGetApp().GetDocument()->GetMessagePriority(item, iBuffer);
|
||||
message.GetPriority( strBuffer );
|
||||
|
||||
switch(iBuffer)
|
||||
if ( wxT("E") == strBuffer )
|
||||
{
|
||||
case PRIORITY_INFO:
|
||||
pAttribute = m_pMessageInfoAttr;
|
||||
break;
|
||||
case PRIORITY_ERROR:
|
||||
pAttribute = m_pMessageErrorAttr;
|
||||
break;
|
||||
pAttribute = m_pMessageErrorAttr;
|
||||
}
|
||||
else
|
||||
{
|
||||
pAttribute = m_pMessageInfoAttr;
|
||||
}
|
||||
|
||||
return pAttribute;
|
||||
}
|
||||
|
||||
|
||||
wxString CViewMessages::OnDocGetItemText( long item, long column ) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
FormatProjectName( item, strBuffer );
|
||||
break;
|
||||
case COLUMN_TIME:
|
||||
FormatTime( item, strBuffer );
|
||||
break;
|
||||
case COLUMN_MESSAGE:
|
||||
FormatMessage( item, strBuffer );
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
||||
void CViewMessages::OnTaskLinkClicked( const wxHtmlLinkInfo& link )
|
||||
{
|
||||
wxInt32 iIndex = -1;
|
||||
|
@ -348,6 +389,70 @@ void CViewMessages::OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord WXUNUSED(x),
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::AddCacheElement()
|
||||
{
|
||||
CMessage* pItem = new CMessage();
|
||||
wxASSERT( NULL != pItem );
|
||||
if ( NULL != pItem )
|
||||
{
|
||||
m_MessageCache.Add( pItem );
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::EmptyCache()
|
||||
{
|
||||
m_MessageCache.Empty();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::GetCacheCount()
|
||||
{
|
||||
return m_MessageCache.GetCount();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::RemoveCacheElement()
|
||||
{
|
||||
m_MessageCache.RemoveAt( GetCacheCount() - 1 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::UpdateCache( long item, long column, wxString& strNewData )
|
||||
{
|
||||
CMessage& message = m_MessageCache.Item( item );
|
||||
wxString strPriority = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
message.SetProjectName( strNewData );
|
||||
break;
|
||||
case COLUMN_TIME:
|
||||
message.SetTime( strNewData );
|
||||
break;
|
||||
case COLUMN_MESSAGE:
|
||||
message.SetMessage( strNewData );
|
||||
break;
|
||||
}
|
||||
|
||||
FormatPriority( item, strPriority );
|
||||
message.SetPriority( strPriority );
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool CViewMessages::EnsureLastItemVisible()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void CViewMessages::UpdateSelection()
|
||||
{
|
||||
wxASSERT(NULL != m_pTaskPane);
|
||||
|
@ -415,6 +520,32 @@ wxInt32 CViewMessages::FormatProjectName( wxInt32 item, wxString& strBuffer ) co
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::FormatPriority( wxInt32 item, wxString& strBuffer ) const
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
wxInt32 iBuffer = 0;
|
||||
|
||||
wxASSERT(NULL != pDoc);
|
||||
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
|
||||
|
||||
strBuffer.Clear();
|
||||
|
||||
pDoc->GetMessagePriority(item, iBuffer);
|
||||
|
||||
switch(iBuffer)
|
||||
{
|
||||
case PRIORITY_INFO:
|
||||
strBuffer = wxT("I");
|
||||
break;
|
||||
case PRIORITY_ERROR:
|
||||
strBuffer = wxT("E");
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewMessages::FormatTime( wxInt32 item, wxString& strBuffer ) const
|
||||
{
|
||||
wxDateTime dtBuffer(wxDateTime::Now());
|
||||
|
|
|
@ -31,6 +31,33 @@
|
|||
|
||||
#include "BOINCBaseView.h"
|
||||
|
||||
|
||||
class CMessage : public wxObject
|
||||
{
|
||||
public:
|
||||
CMessage();
|
||||
~CMessage();
|
||||
|
||||
wxInt32 GetProjectName( wxString& strProjectName );
|
||||
wxInt32 GetPriority( wxString& strPriority );
|
||||
wxInt32 GetTime( wxString& strTime );
|
||||
wxInt32 GetMessage( wxString& strMessage );
|
||||
|
||||
wxInt32 SetProjectName( wxString& strProjectName );
|
||||
wxInt32 SetPriority( wxString& strPriority );
|
||||
wxInt32 SetTime( wxString& strTime );
|
||||
wxInt32 SetMessage( wxString& strMessage );
|
||||
|
||||
protected:
|
||||
wxString m_strProjectName;
|
||||
wxString m_strPriority;
|
||||
wxString m_strTime;
|
||||
wxString m_strMessage;
|
||||
};
|
||||
|
||||
WX_DECLARE_OBJARRAY( CMessage, CMessageCache );
|
||||
|
||||
|
||||
class CViewMessages : public CBOINCBaseView
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( CViewMessages )
|
||||
|
@ -43,17 +70,8 @@ public:
|
|||
|
||||
virtual wxString GetViewName();
|
||||
virtual char** GetViewIcon();
|
||||
virtual wxInt32 GetListRowCount();
|
||||
|
||||
virtual void OnListRender( wxTimerEvent& event );
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
virtual wxListItemAttr* OnListGetItemAttr( long item ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
private:
|
||||
protected:
|
||||
|
||||
bool m_bTaskHeaderHidden;
|
||||
bool m_bTaskCopyAllHidden;
|
||||
|
@ -64,6 +82,34 @@ private:
|
|||
wxListItemAttr* m_pMessageInfoAttr;
|
||||
wxListItemAttr* m_pMessageErrorAttr;
|
||||
|
||||
CMessageCache m_MessageCache;
|
||||
|
||||
virtual wxInt32 GetDocCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
virtual wxListItemAttr* OnListGetItemAttr( long item ) const;
|
||||
|
||||
virtual wxString OnDocGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
virtual wxInt32 AddCacheElement();
|
||||
virtual wxInt32 EmptyCache();
|
||||
virtual wxInt32 GetCacheCount();
|
||||
virtual wxInt32 RemoveCacheElement();
|
||||
virtual wxInt32 UpdateCache( long item, long column, wxString& strNewData );
|
||||
|
||||
virtual bool EnsureLastItemVisible();
|
||||
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
wxInt32 FormatProjectName( wxInt32 item, wxString& strBuffer ) const;
|
||||
wxInt32 FormatPriority( wxInt32 item, wxString& strBuffer ) const;
|
||||
wxInt32 FormatTime( wxInt32 item, wxString& strBuffer ) const;
|
||||
wxInt32 FormatMessage( wxInt32 item, wxString& strBuffer ) const;
|
||||
|
||||
#ifndef NOCLIPBOARD
|
||||
bool m_bClipboardOpen;
|
||||
wxString m_strClipboardData;
|
||||
|
@ -72,12 +118,6 @@ private:
|
|||
bool CloseClipboard();
|
||||
#endif
|
||||
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
wxInt32 FormatProjectName( wxInt32 item, wxString& strBuffer ) const;
|
||||
wxInt32 FormatTime( wxInt32 item, wxString& strBuffer ) const;
|
||||
wxInt32 FormatMessage( wxInt32 item, wxString& strBuffer ) const;
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -34,6 +34,9 @@
|
|||
#include "DlgAttachProject.h"
|
||||
#include "Events.h"
|
||||
|
||||
#include "wx/arrimpl.cpp"
|
||||
|
||||
|
||||
#include "res/boinc.xpm"
|
||||
#include "res/proj.xpm"
|
||||
#include "res/task.xpm"
|
||||
|
@ -116,6 +119,131 @@ const wxString LINKDESC_WEBPROJECT =
|
|||
const wxString LINK_WEB = wxT(SECTION_WEB ":");
|
||||
|
||||
|
||||
WX_DEFINE_OBJARRAY( CProjectCache );
|
||||
|
||||
|
||||
CProject::CProject()
|
||||
{
|
||||
m_strProjectName = wxEmptyString;
|
||||
m_strAccountName = wxEmptyString;
|
||||
m_strTeamName = wxEmptyString;
|
||||
m_strTotalCredit = wxEmptyString;
|
||||
m_strAVGCredit = wxEmptyString;
|
||||
m_strResourceShare = wxEmptyString;
|
||||
m_strStatus = wxEmptyString;
|
||||
}
|
||||
|
||||
|
||||
CProject::~CProject()
|
||||
{
|
||||
m_strProjectName.Clear();
|
||||
m_strAccountName.Clear();
|
||||
m_strTeamName.Clear();
|
||||
m_strTotalCredit.Clear();
|
||||
m_strAVGCredit.Clear();
|
||||
m_strResourceShare.Clear();
|
||||
m_strStatus.Clear();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetProjectName( wxString& strProjectName )
|
||||
{
|
||||
strProjectName = m_strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetAccountName( wxString& strAccountName )
|
||||
{
|
||||
strAccountName = m_strAccountName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetTeamName( wxString& strTeamName )
|
||||
{
|
||||
strTeamName = m_strTeamName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetTotalCredit( wxString& strTotalCredit )
|
||||
{
|
||||
strTotalCredit = m_strTotalCredit;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetAVGCredit( wxString& strAVGCredit )
|
||||
{
|
||||
strAVGCredit = m_strAVGCredit;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetResourceShare( wxString& strResourceShare )
|
||||
{
|
||||
strResourceShare = m_strResourceShare;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::GetStatus( wxString& strStatus )
|
||||
{
|
||||
strStatus = m_strStatus;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetProjectName( wxString& strProjectName )
|
||||
{
|
||||
m_strProjectName = strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetAccountName( wxString& strAccountName )
|
||||
{
|
||||
m_strAccountName = strAccountName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetTeamName( wxString& strTeamName )
|
||||
{
|
||||
m_strTeamName = strTeamName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetTotalCredit( wxString& strTotalCredit )
|
||||
{
|
||||
m_strTotalCredit = strTotalCredit;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetAVGCredit( wxString& strAVGCredit )
|
||||
{
|
||||
m_strAVGCredit = strAVGCredit;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetResourceShare( wxString& strResourceShare )
|
||||
{
|
||||
m_strResourceShare = strResourceShare;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CProject::SetStatus( wxString& strStatus )
|
||||
{
|
||||
m_strStatus = strStatus;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(CViewProjects, CBOINCBaseView)
|
||||
|
||||
|
||||
|
@ -186,7 +314,7 @@ char** CViewProjects::GetViewIcon()
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewProjects::GetListRowCount()
|
||||
wxInt32 CViewProjects::GetDocCount()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
|
@ -199,16 +327,45 @@ wxInt32 CViewProjects::GetListRowCount()
|
|||
|
||||
wxString CViewProjects::OnListGetItemText(long item, long column) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
wxASSERT(NULL != pDoc);
|
||||
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
|
||||
CProject& project = m_ProjectCache.Item( item );
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
project.GetProjectName( strBuffer );
|
||||
break;
|
||||
case COLUMN_ACCOUNTNAME:
|
||||
project.GetAccountName( strBuffer );
|
||||
break;
|
||||
case COLUMN_TEAMNAME:
|
||||
project.GetTeamName( strBuffer );
|
||||
break;
|
||||
case COLUMN_TOTALCREDIT:
|
||||
project.GetTotalCredit( strBuffer );
|
||||
break;
|
||||
case COLUMN_AVGCREDIT:
|
||||
project.GetAVGCredit( strBuffer );
|
||||
break;
|
||||
case COLUMN_RESOURCESHARE:
|
||||
project.GetResourceShare( strBuffer );
|
||||
break;
|
||||
case COLUMN_STATUS:
|
||||
project.GetStatus( strBuffer );
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
||||
wxString CViewProjects::OnDocGetItemText(long item, long column) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
if (item == m_iCacheFrom) pDoc->CachedStateLock();
|
||||
FormatProjectName( item, strBuffer );
|
||||
break;
|
||||
case COLUMN_ACCOUNTNAME:
|
||||
|
@ -228,7 +385,6 @@ wxString CViewProjects::OnListGetItemText(long item, long column) const
|
|||
break;
|
||||
case COLUMN_STATUS:
|
||||
FormatStatus( item, strBuffer );
|
||||
if (item == m_iCacheTo) pDoc->CachedStateUnlock();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -437,6 +593,72 @@ void CViewProjects::OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord WXUNUSED(x),
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewProjects::AddCacheElement()
|
||||
{
|
||||
CProject* pItem = new CProject();
|
||||
wxASSERT( NULL != pItem );
|
||||
if ( NULL != pItem )
|
||||
{
|
||||
m_ProjectCache.Add( pItem );
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewProjects::EmptyCache()
|
||||
{
|
||||
m_ProjectCache.Empty();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewProjects::GetCacheCount()
|
||||
{
|
||||
return m_ProjectCache.GetCount();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewProjects::RemoveCacheElement()
|
||||
{
|
||||
m_ProjectCache.RemoveAt( GetCacheCount() - 1 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewProjects::UpdateCache( long item, long column, wxString& strNewData )
|
||||
{
|
||||
CProject& project = m_ProjectCache.Item( item );
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
project.SetProjectName( strNewData );
|
||||
break;
|
||||
case COLUMN_ACCOUNTNAME:
|
||||
project.SetAccountName( strNewData );
|
||||
break;
|
||||
case COLUMN_TEAMNAME:
|
||||
project.SetTeamName( strNewData );
|
||||
break;
|
||||
case COLUMN_TOTALCREDIT:
|
||||
project.SetTotalCredit( strNewData );
|
||||
break;
|
||||
case COLUMN_AVGCREDIT:
|
||||
project.SetAVGCredit( strNewData );
|
||||
break;
|
||||
case COLUMN_RESOURCESHARE:
|
||||
project.SetResourceShare( strNewData );
|
||||
break;
|
||||
case COLUMN_STATUS:
|
||||
project.SetStatus( strNewData );
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CViewProjects::UpdateSelection()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
|
|
@ -31,6 +31,42 @@
|
|||
|
||||
#include "BOINCBaseView.h"
|
||||
|
||||
|
||||
class CProject : public wxObject
|
||||
{
|
||||
public:
|
||||
CProject();
|
||||
~CProject();
|
||||
|
||||
wxInt32 GetProjectName( wxString& strProjectName );
|
||||
wxInt32 GetAccountName( wxString& strAccountName );
|
||||
wxInt32 GetTeamName( wxString& strTeamName );
|
||||
wxInt32 GetTotalCredit( wxString& strTotalCredit );
|
||||
wxInt32 GetAVGCredit( wxString& strAVGCredit );
|
||||
wxInt32 GetResourceShare( wxString& strResourceShare );
|
||||
wxInt32 GetStatus( wxString& strStatus );
|
||||
|
||||
wxInt32 SetProjectName( wxString& strProjectName );
|
||||
wxInt32 SetAccountName( wxString& strAccountName );
|
||||
wxInt32 SetTeamName( wxString& strTeamName );
|
||||
wxInt32 SetTotalCredit( wxString& strTotalCredit );
|
||||
wxInt32 SetAVGCredit( wxString& strAVGCredit );
|
||||
wxInt32 SetResourceShare( wxString& strResourceShare );
|
||||
wxInt32 SetStatus( wxString& strStatus );
|
||||
|
||||
protected:
|
||||
wxString m_strProjectName;
|
||||
wxString m_strAccountName;
|
||||
wxString m_strTeamName;
|
||||
wxString m_strTotalCredit;
|
||||
wxString m_strAVGCredit;
|
||||
wxString m_strResourceShare;
|
||||
wxString m_strStatus;
|
||||
};
|
||||
|
||||
WX_DECLARE_OBJARRAY( CProject, CProjectCache );
|
||||
|
||||
|
||||
class CViewProjects : public CBOINCBaseView
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( CViewProjects )
|
||||
|
@ -43,14 +79,8 @@ public:
|
|||
|
||||
virtual wxString GetViewName();
|
||||
virtual char** GetViewIcon();
|
||||
virtual wxInt32 GetListRowCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
private:
|
||||
protected:
|
||||
|
||||
bool m_bTaskHeaderHidden;
|
||||
bool m_bTaskAttachHidden;
|
||||
|
@ -68,6 +98,23 @@ private:
|
|||
|
||||
bool m_bItemSelected;
|
||||
|
||||
CProjectCache m_ProjectCache;
|
||||
|
||||
virtual wxInt32 GetDocCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual wxString OnDocGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
virtual wxInt32 AddCacheElement();
|
||||
virtual wxInt32 EmptyCache();
|
||||
virtual wxInt32 GetCacheCount();
|
||||
virtual wxInt32 RemoveCacheElement();
|
||||
virtual wxInt32 UpdateCache( long item, long column, wxString& strNewData );
|
||||
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
#include "ViewResources.h"
|
||||
#include "Events.h"
|
||||
|
||||
#include "wx/arrimpl.cpp"
|
||||
|
||||
|
||||
#include "res/usage.xpm"
|
||||
#include "res/task.xpm"
|
||||
#include "res/tips.xpm"
|
||||
|
@ -55,6 +58,51 @@ const wxString LINKDESC_DEFAULT =
|
|||
_("No available options currently defined.");
|
||||
|
||||
|
||||
WX_DEFINE_OBJARRAY( CResourceCache );
|
||||
|
||||
|
||||
CResource::CResource()
|
||||
{
|
||||
m_strProjectName = wxEmptyString;
|
||||
m_strDiskSpace = wxEmptyString;
|
||||
}
|
||||
|
||||
|
||||
CResource::~CResource()
|
||||
{
|
||||
m_strProjectName.Clear();
|
||||
m_strDiskSpace.Clear();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CResource::GetProjectName( wxString& strProjectName )
|
||||
{
|
||||
strProjectName = m_strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CResource::GetDiskSpace( wxString& strDiskSpace )
|
||||
{
|
||||
strDiskSpace = m_strDiskSpace;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CResource::SetProjectName( wxString& strProjectName )
|
||||
{
|
||||
m_strProjectName = strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CResource::SetDiskSpace( wxString& strDiskSpace )
|
||||
{
|
||||
m_strDiskSpace = strDiskSpace;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(CViewResources, CBOINCBaseView)
|
||||
|
||||
|
||||
|
@ -114,7 +162,7 @@ char** CViewResources::GetViewIcon()
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewResources::GetListRowCount()
|
||||
wxInt32 CViewResources::GetDocCount()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
|
@ -127,23 +175,37 @@ wxInt32 CViewResources::GetListRowCount()
|
|||
|
||||
wxString CViewResources::OnListGetItemText( long item, long column ) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
wxASSERT(NULL != pDoc);
|
||||
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
|
||||
CResource& resource = m_ResourceCache.Item( item );
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
resource.GetProjectName( strBuffer );
|
||||
break;
|
||||
case COLUMN_DISKSPACE:
|
||||
resource.GetDiskSpace( strBuffer );
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
||||
wxString CViewResources::OnDocGetItemText( long item, long column ) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
if (item == m_iCacheFrom) pDoc->CachedStateLock();
|
||||
FormatProjectName( item, strBuffer );
|
||||
break;
|
||||
case COLUMN_DISKSPACE:
|
||||
FormatDiskSpace( item, strBuffer );
|
||||
if (item == m_iCacheTo) pDoc->CachedStateUnlock();
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
@ -200,6 +262,57 @@ void CViewResources::OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord WXUNUSED(x)
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewResources::AddCacheElement()
|
||||
{
|
||||
CResource* pItem = new CResource();
|
||||
wxASSERT( NULL != pItem );
|
||||
if ( NULL != pItem )
|
||||
{
|
||||
m_ResourceCache.Add( pItem );
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewResources::EmptyCache()
|
||||
{
|
||||
m_ResourceCache.Empty();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewResources::GetCacheCount()
|
||||
{
|
||||
return m_ResourceCache.GetCount();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewResources::RemoveCacheElement()
|
||||
{
|
||||
m_ResourceCache.RemoveAt( GetCacheCount() - 1 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewResources::UpdateCache( long item, long column, wxString& strNewData )
|
||||
{
|
||||
CResource& resource = m_ResourceCache.Item( item );
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
resource.SetProjectName( strNewData );
|
||||
break;
|
||||
case COLUMN_DISKSPACE:
|
||||
resource.SetDiskSpace( strNewData );
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CViewResources::UpdateSelection()
|
||||
{
|
||||
wxASSERT(NULL != m_pTaskPane);
|
||||
|
|
|
@ -31,6 +31,27 @@
|
|||
|
||||
#include "BOINCBaseView.h"
|
||||
|
||||
|
||||
class CResource : public wxObject
|
||||
{
|
||||
public:
|
||||
CResource();
|
||||
~CResource();
|
||||
|
||||
wxInt32 GetProjectName( wxString& strProjectName );
|
||||
wxInt32 GetDiskSpace( wxString& strDiskSpace );
|
||||
|
||||
wxInt32 SetProjectName( wxString& strProjectName );
|
||||
wxInt32 SetDiskSpace( wxString& strDiskSpace );
|
||||
|
||||
protected:
|
||||
wxString m_strProjectName;
|
||||
wxString m_strDiskSpace;
|
||||
};
|
||||
|
||||
WX_DECLARE_OBJARRAY( CResource, CResourceCache );
|
||||
|
||||
|
||||
class CViewResources : public CBOINCBaseView
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( CViewResources )
|
||||
|
@ -43,14 +64,8 @@ public:
|
|||
|
||||
virtual wxString GetViewName();
|
||||
virtual char** GetViewIcon();
|
||||
virtual wxInt32 GetListRowCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
private:
|
||||
protected:
|
||||
|
||||
bool m_bTaskHeaderHidden;
|
||||
|
||||
|
@ -58,6 +73,23 @@ private:
|
|||
|
||||
bool m_bItemSelected;
|
||||
|
||||
CResourceCache m_ResourceCache;
|
||||
|
||||
virtual wxInt32 GetDocCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual wxString OnDocGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
virtual wxInt32 AddCacheElement();
|
||||
virtual wxInt32 EmptyCache();
|
||||
virtual wxInt32 GetCacheCount();
|
||||
virtual wxInt32 RemoveCacheElement();
|
||||
virtual wxInt32 UpdateCache( long item, long column, wxString& strNewData );
|
||||
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
|
|
|
@ -34,6 +34,9 @@
|
|||
#include "Events.h"
|
||||
#include "error_numbers.h"
|
||||
|
||||
#include "wx/arrimpl.cpp"
|
||||
|
||||
|
||||
#include "res/xfer.xpm"
|
||||
#include "res/task.xpm"
|
||||
#include "res/tips.xpm"
|
||||
|
@ -71,6 +74,131 @@ const wxString LINKDESC_TASKABORT =
|
|||
"This will prevent you from being granted credit for this result.");
|
||||
|
||||
|
||||
WX_DEFINE_OBJARRAY( CTransferCache );
|
||||
|
||||
|
||||
CTransfer::CTransfer()
|
||||
{
|
||||
m_strProjectName = wxEmptyString;
|
||||
m_strFileName = wxEmptyString;
|
||||
m_strProgress = wxEmptyString;
|
||||
m_strSize = wxEmptyString;
|
||||
m_strTime = wxEmptyString;
|
||||
m_strSpeed = wxEmptyString;
|
||||
m_strStatus = wxEmptyString;
|
||||
}
|
||||
|
||||
|
||||
CTransfer::~CTransfer()
|
||||
{
|
||||
m_strProjectName.Clear();
|
||||
m_strFileName.Clear();
|
||||
m_strProgress.Clear();
|
||||
m_strSize.Clear();
|
||||
m_strTime.Clear();
|
||||
m_strSpeed.Clear();
|
||||
m_strStatus.Clear();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetProjectName( wxString& strProjectName )
|
||||
{
|
||||
strProjectName = m_strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetFileName( wxString& strFileName )
|
||||
{
|
||||
strFileName = m_strFileName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetProgress( wxString& strProgress )
|
||||
{
|
||||
strProgress = m_strProgress;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetSize( wxString& strSize )
|
||||
{
|
||||
strSize = m_strSize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetTime( wxString& strTime )
|
||||
{
|
||||
strTime = m_strTime;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetSpeed( wxString& strSpeed )
|
||||
{
|
||||
strSpeed = m_strSpeed;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::GetStatus( wxString& strStatus )
|
||||
{
|
||||
strStatus = m_strStatus;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetProjectName( wxString& strProjectName )
|
||||
{
|
||||
m_strProjectName = strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetFileName( wxString& strFileName )
|
||||
{
|
||||
m_strFileName = strFileName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetProgress( wxString& strProgress )
|
||||
{
|
||||
m_strProgress = strProgress;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetSize( wxString& strSize )
|
||||
{
|
||||
m_strSize = strSize;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetTime( wxString& strTime )
|
||||
{
|
||||
m_strTime = strTime;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetSpeed( wxString& strSpeed )
|
||||
{
|
||||
m_strSpeed = strSpeed;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CTransfer::SetStatus( wxString& strStatus )
|
||||
{
|
||||
m_strStatus = strStatus;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(CViewTransfers, CBOINCBaseView)
|
||||
|
||||
|
||||
|
@ -135,7 +263,7 @@ char** CViewTransfers::GetViewIcon()
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewTransfers::GetListRowCount()
|
||||
wxInt32 CViewTransfers::GetDocCount()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
|
@ -148,16 +276,45 @@ wxInt32 CViewTransfers::GetListRowCount()
|
|||
|
||||
wxString CViewTransfers::OnListGetItemText(long item, long column) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
wxASSERT(NULL != pDoc);
|
||||
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
|
||||
CTransfer& transfer = m_TransferCache.Item( item );
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
transfer.GetProjectName( strBuffer );
|
||||
break;
|
||||
case COLUMN_FILE:
|
||||
transfer.GetFileName( strBuffer );
|
||||
break;
|
||||
case COLUMN_PROGRESS:
|
||||
transfer.GetProgress( strBuffer );
|
||||
break;
|
||||
case COLUMN_SIZE:
|
||||
transfer.GetSize( strBuffer );
|
||||
break;
|
||||
case COLUMN_TIME:
|
||||
transfer.GetTime( strBuffer );
|
||||
break;
|
||||
case COLUMN_SPEED:
|
||||
transfer.GetSpeed( strBuffer );
|
||||
break;
|
||||
case COLUMN_STATUS:
|
||||
transfer.GetStatus( strBuffer );
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
||||
wxString CViewTransfers::OnDocGetItemText(long item, long column) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
if (item == m_iCacheFrom) pDoc->CachedStateLock();
|
||||
FormatProjectName( item, strBuffer );
|
||||
break;
|
||||
case COLUMN_FILE:
|
||||
|
@ -177,9 +334,9 @@ wxString CViewTransfers::OnListGetItemText(long item, long column) const
|
|||
break;
|
||||
case COLUMN_STATUS:
|
||||
FormatStatus( item, strBuffer );
|
||||
if (item == m_iCacheTo) pDoc->CachedStateUnlock();
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
@ -276,6 +433,72 @@ void CViewTransfers::OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord WXUNUSED(x)
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewTransfers::AddCacheElement()
|
||||
{
|
||||
CTransfer* pItem = new CTransfer();
|
||||
wxASSERT( NULL != pItem );
|
||||
if ( NULL != pItem )
|
||||
{
|
||||
m_TransferCache.Add( pItem );
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewTransfers::EmptyCache()
|
||||
{
|
||||
m_TransferCache.Empty();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewTransfers::GetCacheCount()
|
||||
{
|
||||
return m_TransferCache.GetCount();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewTransfers::RemoveCacheElement()
|
||||
{
|
||||
m_TransferCache.RemoveAt( GetCacheCount() - 1 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewTransfers::UpdateCache( long item, long column, wxString& strNewData )
|
||||
{
|
||||
CTransfer& transfer = m_TransferCache.Item( item );
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
transfer.SetProjectName( strNewData );
|
||||
break;
|
||||
case COLUMN_FILE:
|
||||
transfer.SetFileName( strNewData );
|
||||
break;
|
||||
case COLUMN_PROGRESS:
|
||||
transfer.SetProgress( strNewData );
|
||||
break;
|
||||
case COLUMN_SIZE:
|
||||
transfer.SetSize( strNewData );
|
||||
break;
|
||||
case COLUMN_TIME:
|
||||
transfer.SetTime( strNewData );
|
||||
break;
|
||||
case COLUMN_SPEED:
|
||||
transfer.SetSpeed( strNewData );
|
||||
break;
|
||||
case COLUMN_STATUS:
|
||||
transfer.SetStatus( strNewData );
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CViewTransfers::UpdateSelection()
|
||||
{
|
||||
wxASSERT(NULL != m_pTaskPane);
|
||||
|
|
|
@ -31,6 +31,42 @@
|
|||
|
||||
#include "BOINCBaseView.h"
|
||||
|
||||
|
||||
class CTransfer : public wxObject
|
||||
{
|
||||
public:
|
||||
CTransfer();
|
||||
~CTransfer();
|
||||
|
||||
wxInt32 GetProjectName( wxString& strProjectName );
|
||||
wxInt32 GetFileName( wxString& strFileName );
|
||||
wxInt32 GetProgress( wxString& strProgress );
|
||||
wxInt32 GetSize( wxString& strSize );
|
||||
wxInt32 GetTime( wxString& strTime );
|
||||
wxInt32 GetSpeed( wxString& strSpeed );
|
||||
wxInt32 GetStatus( wxString& strStatus );
|
||||
|
||||
wxInt32 SetProjectName( wxString& strProjectName );
|
||||
wxInt32 SetFileName( wxString& strFileName );
|
||||
wxInt32 SetProgress( wxString& strProgress );
|
||||
wxInt32 SetSize( wxString& strSize );
|
||||
wxInt32 SetTime( wxString& strTime );
|
||||
wxInt32 SetSpeed( wxString& strSpeed );
|
||||
wxInt32 SetStatus( wxString& strStatus );
|
||||
|
||||
protected:
|
||||
wxString m_strProjectName;
|
||||
wxString m_strFileName;
|
||||
wxString m_strProgress;
|
||||
wxString m_strSize;
|
||||
wxString m_strTime;
|
||||
wxString m_strSpeed;
|
||||
wxString m_strStatus;
|
||||
};
|
||||
|
||||
WX_DECLARE_OBJARRAY( CTransfer, CTransferCache );
|
||||
|
||||
|
||||
class CViewTransfers : public CBOINCBaseView
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( CViewTransfers )
|
||||
|
@ -43,14 +79,8 @@ public:
|
|||
|
||||
virtual wxString GetViewName();
|
||||
virtual char** GetViewIcon();
|
||||
virtual wxInt32 GetListRowCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
private:
|
||||
protected:
|
||||
|
||||
bool m_bTaskHeaderHidden;
|
||||
bool m_bTaskRetryHidden;
|
||||
|
@ -60,6 +90,23 @@ private:
|
|||
|
||||
bool m_bItemSelected;
|
||||
|
||||
CTransferCache m_TransferCache;
|
||||
|
||||
virtual wxInt32 GetDocCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual wxString OnDocGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
virtual wxInt32 AddCacheElement();
|
||||
virtual wxInt32 EmptyCache();
|
||||
virtual wxInt32 GetCacheCount();
|
||||
virtual wxInt32 RemoveCacheElement();
|
||||
virtual wxInt32 UpdateCache( long item, long column, wxString& strNewData );
|
||||
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
|
|
|
@ -33,6 +33,9 @@
|
|||
#include "ViewWork.h"
|
||||
#include "Events.h"
|
||||
|
||||
#include "wx/arrimpl.cpp"
|
||||
|
||||
|
||||
#include "res/result.xpm"
|
||||
#include "res/task.xpm"
|
||||
#include "res/tips.xpm"
|
||||
|
@ -82,6 +85,147 @@ const wxString LINKDESC_TASKABORT =
|
|||
"This will prevent you from being granted credit for the result.");
|
||||
|
||||
|
||||
WX_DEFINE_OBJARRAY( CWorkCache );
|
||||
|
||||
|
||||
CWork::CWork()
|
||||
{
|
||||
m_strProjectName = wxEmptyString;
|
||||
m_strApplicationName = wxEmptyString;
|
||||
m_strName = wxEmptyString;
|
||||
m_strCPUTime = wxEmptyString;
|
||||
m_strProgress = wxEmptyString;
|
||||
m_strTimeToCompletion = wxEmptyString;
|
||||
m_strReportDeadline = wxEmptyString;
|
||||
m_strStatus = wxEmptyString;
|
||||
}
|
||||
|
||||
|
||||
CWork::~CWork()
|
||||
{
|
||||
m_strProjectName.Clear();
|
||||
m_strApplicationName.Clear();
|
||||
m_strName.Clear();
|
||||
m_strCPUTime.Clear();
|
||||
m_strProgress.Clear();
|
||||
m_strTimeToCompletion.Clear();
|
||||
m_strReportDeadline.Clear();
|
||||
m_strStatus.Clear();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetProjectName( wxString& strProjectName )
|
||||
{
|
||||
strProjectName = m_strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetApplicationName( wxString& strApplicationName )
|
||||
{
|
||||
strApplicationName = m_strApplicationName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetName( wxString& strName )
|
||||
{
|
||||
strName = m_strName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetCPUTime( wxString& strCPUTime )
|
||||
{
|
||||
strCPUTime = m_strCPUTime;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetProgress( wxString& strProgress )
|
||||
{
|
||||
strProgress = m_strProgress;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetTimeToCompletion( wxString& strTimeToCompletion )
|
||||
{
|
||||
strTimeToCompletion = m_strTimeToCompletion;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetReportDeadline( wxString& strReportDeadline )
|
||||
{
|
||||
strReportDeadline = m_strReportDeadline;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::GetStatus( wxString& strStatus )
|
||||
{
|
||||
strStatus = m_strStatus;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetProjectName( wxString& strProjectName )
|
||||
{
|
||||
m_strProjectName = strProjectName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetApplicationName( wxString& strApplicationName )
|
||||
{
|
||||
m_strApplicationName = strApplicationName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetName( wxString& strName )
|
||||
{
|
||||
m_strName = strName;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetCPUTime( wxString& strCPUTime )
|
||||
{
|
||||
m_strCPUTime = strCPUTime;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetProgress( wxString& strProgress )
|
||||
{
|
||||
m_strProgress = strProgress;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetTimeToCompletion( wxString& strTimeToCompletion )
|
||||
{
|
||||
m_strTimeToCompletion = strTimeToCompletion;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetReportDeadline( wxString& strReportDeadline )
|
||||
{
|
||||
m_strReportDeadline = strReportDeadline;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CWork::SetStatus( wxString& strStatus )
|
||||
{
|
||||
m_strStatus = strStatus;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(CViewWork, CBOINCBaseView)
|
||||
|
||||
|
||||
|
@ -147,7 +291,7 @@ char** CViewWork::GetViewIcon()
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewWork::GetListRowCount()
|
||||
wxInt32 CViewWork::GetDocCount()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
|
@ -160,16 +304,48 @@ wxInt32 CViewWork::GetListRowCount()
|
|||
|
||||
wxString CViewWork::OnListGetItemText( long item, long column ) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
||||
wxASSERT(NULL != pDoc);
|
||||
wxASSERT(wxDynamicCast(pDoc, CMainDocument));
|
||||
CWork& work = m_WorkCache.Item( item );
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
work.GetProjectName( strBuffer );
|
||||
break;
|
||||
case COLUMN_APPLICATION:
|
||||
work.GetApplicationName( strBuffer );
|
||||
break;
|
||||
case COLUMN_NAME:
|
||||
work.GetName( strBuffer );
|
||||
break;
|
||||
case COLUMN_CPUTIME:
|
||||
work.GetCPUTime( strBuffer );
|
||||
break;
|
||||
case COLUMN_PROGRESS:
|
||||
work.GetProgress( strBuffer );
|
||||
break;
|
||||
case COLUMN_TOCOMPLETETION:
|
||||
work.GetTimeToCompletion( strBuffer );
|
||||
break;
|
||||
case COLUMN_REPORTDEADLINE:
|
||||
work.GetReportDeadline( strBuffer );
|
||||
break;
|
||||
case COLUMN_STATUS:
|
||||
work.GetStatus( strBuffer );
|
||||
break;
|
||||
}
|
||||
|
||||
return strBuffer;
|
||||
}
|
||||
|
||||
|
||||
wxString CViewWork::OnDocGetItemText( long item, long column ) const
|
||||
{
|
||||
wxString strBuffer = wxEmptyString;
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
if (item == m_iCacheFrom) pDoc->CachedStateLock();
|
||||
FormatProjectName( item, strBuffer );
|
||||
break;
|
||||
case COLUMN_APPLICATION:
|
||||
|
@ -192,7 +368,6 @@ wxString CViewWork::OnListGetItemText( long item, long column ) const
|
|||
break;
|
||||
case COLUMN_STATUS:
|
||||
FormatStatus( item, strBuffer );
|
||||
if (item == m_iCacheTo) pDoc->CachedStateUnlock();
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -335,6 +510,75 @@ void CViewWork::OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord WXUNUSED(x), wxC
|
|||
}
|
||||
|
||||
|
||||
wxInt32 CViewWork::AddCacheElement()
|
||||
{
|
||||
CWork* pItem = new CWork();
|
||||
wxASSERT( NULL != pItem );
|
||||
if ( NULL != pItem )
|
||||
{
|
||||
m_WorkCache.Add( pItem );
|
||||
return 0;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewWork::EmptyCache()
|
||||
{
|
||||
m_WorkCache.Empty();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewWork::GetCacheCount()
|
||||
{
|
||||
return m_WorkCache.GetCount();
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewWork::RemoveCacheElement()
|
||||
{
|
||||
m_WorkCache.RemoveAt( GetCacheCount() - 1 );
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
wxInt32 CViewWork::UpdateCache( long item, long column, wxString& strNewData )
|
||||
{
|
||||
CWork& work = m_WorkCache.Item( item );
|
||||
|
||||
switch(column)
|
||||
{
|
||||
case COLUMN_PROJECT:
|
||||
work.SetProjectName( strNewData );
|
||||
break;
|
||||
case COLUMN_APPLICATION:
|
||||
work.SetApplicationName( strNewData );
|
||||
break;
|
||||
case COLUMN_NAME:
|
||||
work.SetName( strNewData );
|
||||
break;
|
||||
case COLUMN_CPUTIME:
|
||||
work.SetCPUTime( strNewData );
|
||||
break;
|
||||
case COLUMN_PROGRESS:
|
||||
work.SetProgress( strNewData );
|
||||
break;
|
||||
case COLUMN_TOCOMPLETETION:
|
||||
work.SetTimeToCompletion( strNewData );
|
||||
break;
|
||||
case COLUMN_REPORTDEADLINE:
|
||||
work.SetReportDeadline( strNewData );
|
||||
break;
|
||||
case COLUMN_STATUS:
|
||||
work.SetStatus( strNewData );
|
||||
break;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void CViewWork::UpdateSelection()
|
||||
{
|
||||
CMainDocument* pDoc = wxGetApp().GetDocument();
|
||||
|
|
|
@ -31,6 +31,45 @@
|
|||
|
||||
#include "BOINCBaseView.h"
|
||||
|
||||
|
||||
class CWork : public wxObject
|
||||
{
|
||||
public:
|
||||
CWork();
|
||||
~CWork();
|
||||
|
||||
wxInt32 GetProjectName( wxString& strProjectName );
|
||||
wxInt32 GetApplicationName( wxString& strApplicationName );
|
||||
wxInt32 GetName( wxString& strName );
|
||||
wxInt32 GetCPUTime( wxString& strCPUTime );
|
||||
wxInt32 GetProgress( wxString& strProgress );
|
||||
wxInt32 GetTimeToCompletion( wxString& strTimeToCompletion );
|
||||
wxInt32 GetReportDeadline( wxString& strReportDeadline );
|
||||
wxInt32 GetStatus( wxString& strStatus );
|
||||
|
||||
wxInt32 SetProjectName( wxString& strProjectName );
|
||||
wxInt32 SetApplicationName( wxString& strApplicationName );
|
||||
wxInt32 SetName( wxString& strName );
|
||||
wxInt32 SetCPUTime( wxString& strCPUTime );
|
||||
wxInt32 SetProgress( wxString& strProgress );
|
||||
wxInt32 SetTimeToCompletion( wxString& strTimeToCompletion );
|
||||
wxInt32 SetReportDeadline( wxString& strReportDeadline );
|
||||
wxInt32 SetStatus( wxString& strStatus );
|
||||
|
||||
protected:
|
||||
wxString m_strProjectName;
|
||||
wxString m_strApplicationName;
|
||||
wxString m_strName;
|
||||
wxString m_strCPUTime;
|
||||
wxString m_strProgress;
|
||||
wxString m_strTimeToCompletion;
|
||||
wxString m_strReportDeadline;
|
||||
wxString m_strStatus;
|
||||
};
|
||||
|
||||
WX_DECLARE_OBJARRAY( CWork, CWorkCache );
|
||||
|
||||
|
||||
class CViewWork : public CBOINCBaseView
|
||||
{
|
||||
DECLARE_DYNAMIC_CLASS( CViewWork )
|
||||
|
@ -43,14 +82,8 @@ public:
|
|||
|
||||
virtual wxString GetViewName();
|
||||
virtual char** GetViewIcon();
|
||||
virtual wxInt32 GetListRowCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
private:
|
||||
protected:
|
||||
|
||||
bool m_bTaskHeaderHidden;
|
||||
bool m_bTaskSuspendHidden;
|
||||
|
@ -62,6 +95,23 @@ private:
|
|||
|
||||
bool m_bItemSelected;
|
||||
|
||||
CWorkCache m_WorkCache;
|
||||
|
||||
virtual wxInt32 GetDocCount();
|
||||
|
||||
virtual wxString OnListGetItemText( long item, long column ) const;
|
||||
|
||||
virtual wxString OnDocGetItemText( long item, long column ) const;
|
||||
|
||||
virtual void OnTaskLinkClicked( const wxHtmlLinkInfo& link );
|
||||
virtual void OnTaskCellMouseHover( wxHtmlCell* cell, wxCoord x, wxCoord y );
|
||||
|
||||
virtual wxInt32 AddCacheElement();
|
||||
virtual wxInt32 EmptyCache();
|
||||
virtual wxInt32 GetCacheCount();
|
||||
virtual wxInt32 RemoveCacheElement();
|
||||
virtual wxInt32 UpdateCache( long item, long column, wxString& strNewData );
|
||||
|
||||
virtual void UpdateSelection();
|
||||
virtual void UpdateTaskPane();
|
||||
|
||||
|
|
|
@ -17,11 +17,6 @@
|
|||
#pragma interface "taskbarex.cpp"
|
||||
#endif
|
||||
|
||||
#include <wx/event.h>
|
||||
#include <wx/list.h>
|
||||
#include <wx/icon.h>
|
||||
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// wxTaskBarIconEx
|
||||
// ----------------------------------------------------------------------------
|
||||
|
|
|
@ -80,17 +80,21 @@
|
|||
#include <wx/html/htmlwin.h> // html window support
|
||||
#include <wx/statline.h> // static line support
|
||||
#include <wx/statbmp.h> // static bitmap support
|
||||
#ifndef NOTASKBAR
|
||||
#include <wx/taskbar.h> // taskbar support
|
||||
#endif
|
||||
#include <wx/clipbrd.h> // clipboard support
|
||||
#include <wx/datetime.h> // date/time support
|
||||
#include <wx/textdlg.h>
|
||||
#include <wx/mimetype.h>
|
||||
#include <wx/event.h>
|
||||
#include <wx/list.h>
|
||||
#include <wx/icon.h>
|
||||
#include <wx/utils.h>
|
||||
#include <wx/settings.h>
|
||||
#include <wx/process.h>
|
||||
#include <wx/dynarray.h>
|
||||
|
||||
#ifndef NOTASKBAR
|
||||
#include <wx/taskbar.h> // taskbar support
|
||||
#endif
|
||||
|
||||
|
||||
// Standard Libraries
|
||||
|
@ -140,6 +144,8 @@
|
|||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#include <crtdbg.h>
|
||||
|
||||
#define malloc(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)
|
||||
#define calloc(c, s) _calloc_dbg(c, s, _NORMAL_BLOCK, __FILE__, __LINE__)
|
||||
#define realloc(p, s) _realloc_dbg(p, s, _NORMAL_BLOCK, __FILE__, __LINE__)
|
||||
|
@ -168,6 +174,8 @@
|
|||
|
||||
#endif //_DEBUG
|
||||
|
||||
#define new DEBUG_NEW
|
||||
|
||||
#endif //__WIN32__ && __VISUALC && !__AFX_H__
|
||||
|
||||
#endif //__STDWX_H__
|
||||
|
|
|
@ -87,8 +87,8 @@ AC_DEFINE_UNQUOTED([BOINC_VERSION_STRING], "$BOINC_VERSION_STRING", [String repr
|
|||
AC_DEFINE_UNQUOTED([BOINC_MAJOR_VERSION], $BOINC_MAJOR_VERSION, [Major part of BOINC version number])
|
||||
AC_DEFINE_UNQUOTED([BOINC_MINOR_VERSION], $BOINC_MINOR_VERSION, [Minor part of BOINC version number])
|
||||
AC_DEFINE_UNQUOTED([HOSTTYPE], "$host", [Host for this compilation])
|
||||
AC_SUBST([CLIENT_BIN_FILENAME],[boinc_client_]AC_PACKAGE_VERSION[_$host${EXEEXT}])
|
||||
AC_SUBST([CLIENT_GUI_BIN_FILENAME],[boinc_gui_]AC_PACKAGE_VERSION[_$host${EXEEXT}])
|
||||
AC_SUBST([CLIENT_BIN_FILENAME],[boinc])
|
||||
AC_SUBST([CLIENT_GUI_BIN_FILENAME],[boincmgr])
|
||||
AC_SUBST([TOP_BUILD_DIR], [`pwd`])
|
||||
AC_SUBST([TOP_SOURCE_DIR], [`(cd \`dirname "$0"\` && pwd)`])
|
||||
|
||||
|
|
Loading…
Reference in New Issue