2008-08-06 18:36:30 +00:00
// This file is part of BOINC.
2006-12-29 21:55:23 +00:00
// http://boinc.berkeley.edu
2008-08-06 18:36:30 +00:00
// Copyright (C) 2008 University of California
2006-12-29 21:55:23 +00:00
//
2008-08-06 18:36:30 +00:00
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
2006-12-29 21:55:23 +00:00
//
2008-08-06 18:36:30 +00:00
// BOINC is distributed in the hope that it will be useful,
2006-12-29 21:55:23 +00:00
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
2008-08-06 18:36:30 +00:00
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see <http://www.gnu.org/licenses/>.
2006-12-29 21:55:23 +00:00
# if defined(__GNUG__) && !defined(__APPLE__)
# pragma implementation "ViewTransfersGrid.h"
# endif
# include "stdwx.h"
# include "BOINCGUIApp.h"
# include "BOINCBaseFrame.h"
# include "MainDocument.h"
# include "AdvancedFrame.h"
# include "BOINCTaskCtrl.h"
# include "ViewTransfersGrid.h"
# include "Events.h"
# include "error_numbers.h"
# include "res/xfer.xpm"
# define COLUMN_PROJECT 0
# define COLUMN_FILE 1
# define COLUMN_PROGRESS 2
# define COLUMN_SIZE 3
# define COLUMN_TIME 4
# define COLUMN_SPEED 5
# define COLUMN_STATUS 6
2008-03-05 14:41:24 +00:00
# define COLUMN_HIDDEN_URL 7
# define NUM_COLUMNS (COLUMN_HIDDEN_URL+1)
2006-12-29 21:55:23 +00:00
// buttons in the "tasks" area
# define BTN_RETRY 0
# define BTN_ABORT 1
IMPLEMENT_DYNAMIC_CLASS ( CViewTransfersGrid , CBOINCBaseView )
BEGIN_EVENT_TABLE ( CViewTransfersGrid , CBOINCBaseView )
EVT_BUTTON ( ID_TASK_TRANSFERS_RETRYNOW , CViewTransfersGrid : : OnTransfersRetryNow )
EVT_BUTTON ( ID_TASK_TRANSFERS_ABORT , CViewTransfersGrid : : OnTransfersAbort )
2007-04-04 21:20:53 +00:00
EVT_GRID_SELECT_CELL ( CViewTransfersGrid : : OnGridSelectCell )
EVT_GRID_RANGE_SELECT ( CViewTransfersGrid : : OnGridSelectRange )
2006-12-29 21:55:23 +00:00
END_EVENT_TABLE ( )
CViewTransfersGrid : : CViewTransfersGrid ( )
{ }
CViewTransfersGrid : : CViewTransfersGrid ( wxNotebook * pNotebook ) :
CBOINCBaseView ( pNotebook )
{
//
// Setup View
//
wxFlexGridSizer * itemFlexGridSizer = new wxFlexGridSizer ( 2 , 0 , 0 ) ;
wxASSERT ( itemFlexGridSizer ) ;
itemFlexGridSizer - > AddGrowableRow ( 0 ) ;
itemFlexGridSizer - > AddGrowableCol ( 1 ) ;
m_pTaskPane = new CBOINCTaskCtrl ( this , ID_TASK_TRANSFERSGRIDVIEW , DEFAULT_TASK_FLAGS ) ;
wxASSERT ( m_pTaskPane ) ;
m_pGridPane = new CBOINCGridCtrl ( this , ID_LIST_TRANSFERSGRIDVIEW ) ;
wxASSERT ( m_pGridPane ) ;
itemFlexGridSizer - > Add ( m_pTaskPane , 1 , wxGROW | wxALL , 1 ) ;
itemFlexGridSizer - > Add ( m_pGridPane , 1 , wxGROW | wxALL , 1 ) ;
SetSizer ( itemFlexGridSizer ) ;
Layout ( ) ;
// Setup TaskPane
CTaskItemGroup * pGroup = NULL ;
CTaskItem * pItem = NULL ;
wxASSERT ( m_pTaskPane ) ;
wxASSERT ( m_pGridPane ) ;
//
// Setup View
//
pGroup = new CTaskItemGroup ( _ ( " Commands " ) ) ;
m_TaskGroups . push_back ( pGroup ) ;
pItem = new CTaskItem (
_ ( " Retry Now " ) ,
_ ( " Click 'Retry now' to transfer the file now " ) ,
ID_TASK_TRANSFERS_RETRYNOW
) ;
pGroup - > m_Tasks . push_back ( pItem ) ;
2008-03-05 14:41:24 +00:00
pItem = new CTaskItem (
2006-12-29 21:55:23 +00:00
_ ( " Abort Transfer " ) ,
2008-07-08 20:05:07 +00:00
_ ( " Click 'Abort transfer' to delete the file from the transfer queue. This will prevent you from being granted credit for this result. " ) ,
2006-12-29 21:55:23 +00:00
ID_TASK_TRANSFERS_ABORT
) ;
pGroup - > m_Tasks . push_back ( pItem ) ;
// Create Task Pane Items
m_pTaskPane - > UpdateControls ( ) ;
2008-03-05 14:41:24 +00:00
// Create Grid
m_pGridPane - > Setup ( ) ;
m_pGridPane - > SetTable ( new CBOINCGridTable ( 1 , NUM_COLUMNS ) ) ;
m_pGridPane - > SetSelectionMode ( wxGrid : : wxGridSelectRows ) ;
// init grid columns
wxInt32 colSizes [ ] = { 125 , 205 , 60 , 80 , 80 , 80 , 150 , 0 } ;
wxString colTitles [ ] = { _ ( " Project " ) , _ ( " File " ) , _ ( " Progress " ) , _ ( " Size " ) ,
_ ( " Elapsed Time " ) , _ ( " Speed " ) , _ ( " Status " ) , wxEmptyString
} ;
for ( int i = 0 ; i < NUM_COLUMNS ; i + + ) {
m_pGridPane - > SetColLabelValue ( i , colTitles [ i ] ) ;
m_pGridPane - > SetColSize ( i , colSizes [ i ] ) ;
}
//change the default cell renderer
m_pGridPane - > SetDefaultRenderer ( new CBOINCGridCellProgressRenderer ( COLUMN_PROGRESS , false ) ) ;
//set column sort types
m_pGridPane - > SetColumnSortType ( COLUMN_PROGRESS , CST_FLOAT ) ;
m_pGridPane - > SetColumnSortType ( COLUMN_TIME , CST_TIME ) ;
//m_pGridPane->SetColumnSortType(COLUMN_SIZE,CST_FLOAT);
m_pGridPane - > SetColumnSortType ( COLUMN_SPEED , CST_FLOAT ) ;
//set primary key column index
m_pGridPane - > SetPrimaryKeyColumns ( COLUMN_FILE , COLUMN_HIDDEN_URL ) ;
// Hide the URL column
int min_width = m_pGridPane - > GetColMinimalAcceptableWidth ( ) ;
m_pGridPane - > SetColMinimalAcceptableWidth ( 0 ) ;
m_pGridPane - > SetColSize ( COLUMN_HIDDEN_URL , 0 ) ;
m_pGridPane - > SetColMinimalAcceptableWidth ( min_width ) ;
2006-12-29 21:55:23 +00:00
UpdateSelection ( ) ;
}
CViewTransfersGrid : : ~ CViewTransfersGrid ( ) {
EmptyTasks ( ) ;
}
wxString & CViewTransfersGrid : : GetViewName ( ) {
- fixes #207 - HTML entities in BOINC Manager have to be decoded
BOINC Manager can now properly decode HTML entites for the
following elements:
Projects Tab:
Project Name
User Name
Team Name
Work Tab:
Project Name
Application Name
Transfers Tab:
Project Name
Messages Tab:
Project Name
Disk Tab:
Project Name
- fixes #212 - Info in columns misaligned on switching views
- Properly restore which tab view the user left from when going
to the advanced view from the simple view
- Fix the problem that caused the manager to wait for 7 seconds
to display anything on initial startup.
- Store the various Grid/List persisted data seperately so that
the different header sizes don't cause problems.
clientgui/
AdvancedFrame.cpp
BOINCBaseView.cpp, .h
BOINCGridCtrl.cpp
ViewMessages.cpp, .h
ViewMessagesGrid.cpp, .h
ViewProjects.cpp, .h
ViewProjectsGrid.cpp, .h
ViewResources.cpp, .h
ViewStatistics.cpp, .h
ViewTransfers.cpp, .h
ViewTransfersGrid.cpp, .h
ViewWork.cpp, .h
ViewWorkGrid.cpp, .h
lib/
gui_rpc_client_ops.C
svn path=/trunk/boinc/; revision=12761
2007-05-29 05:07:35 +00:00
static wxString strViewName ( _ ( " TransfersGrid " ) ) ;
return strViewName ;
}
wxString & CViewTransfersGrid : : GetViewDisplayName ( ) {
2007-01-26 05:55:02 +00:00
static wxString strViewName ( _ ( " Transfers " ) ) ;
2006-12-29 21:55:23 +00:00
return strViewName ;
}
const char * * CViewTransfersGrid : : GetViewIcon ( ) {
return xfer_xpm ;
}
void CViewTransfersGrid : : OnTransfersRetryNow ( wxCommandEvent & WXUNUSED ( event ) ) {
wxLogTrace ( wxT ( " Function Start/End " ) , wxT ( " CViewTransfersGrid::OnTransfersRetryNow - Function Begin " ) ) ;
CMainDocument * pDoc = wxGetApp ( ) . GetDocument ( ) ;
CAdvancedFrame * pFrame = wxDynamicCast ( GetParent ( ) - > GetParent ( ) - > GetParent ( ) , CAdvancedFrame ) ;
wxASSERT ( pDoc ) ;
wxASSERT ( wxDynamicCast ( pDoc , CMainDocument ) ) ;
wxASSERT ( pFrame ) ;
wxASSERT ( wxDynamicCast ( pFrame , CAdvancedFrame ) ) ;
wxASSERT ( m_pTaskPane ) ;
wxASSERT ( m_pGridPane ) ;
pFrame - > UpdateStatusText ( _ ( " Retrying transfer now... " ) ) ;
2007-03-29 17:50:20 +00:00
wxArrayInt aRows = m_pGridPane - > GetSelectedRows2 ( ) ;
for ( unsigned int i = 0 ; i < aRows . Count ( ) ; i + + ) {
2008-03-05 14:41:24 +00:00
int row = aRows . Item ( i ) ;
wxString fileName = m_pGridPane - > GetCellValue ( row , COLUMN_FILE ) . Trim ( false ) ;
wxString projectURL = m_pGridPane - > GetCellValue ( row , COLUMN_HIDDEN_URL ) . Trim ( false ) ;
pDoc - > TransferRetryNow ( fileName , projectURL ) ;
2007-03-29 17:50:20 +00:00
}
2006-12-29 21:55:23 +00:00
pFrame - > UpdateStatusText ( wxT ( " " ) ) ;
UpdateSelection ( ) ;
pFrame - > ResetReminderTimers ( ) ;
pFrame - > FireRefreshView ( ) ;
wxLogTrace ( wxT ( " Function Start/End " ) , wxT ( " CViewTransfersGrid::OnTransfersRetryNow - Function End " ) ) ;
}
void CViewTransfersGrid : : OnTransfersAbort ( wxCommandEvent & WXUNUSED ( event ) ) {
wxLogTrace ( wxT ( " Function Start/End " ) , wxT ( " CViewTransfersGrid::OnTransfersAbort - Function Begin " ) ) ;
wxInt32 iAnswer = 0 ;
wxString strName = wxEmptyString ;
wxString strMessage = wxEmptyString ;
CMainDocument * pDoc = wxGetApp ( ) . GetDocument ( ) ;
2008-03-05 14:41:24 +00:00
CAdvancedFrame * pFrame = wxDynamicCast ( GetParent ( ) - > GetParent ( ) - > GetParent ( ) , CAdvancedFrame ) ;
2006-12-29 21:55:23 +00:00
wxASSERT ( pDoc ) ;
wxASSERT ( wxDynamicCast ( pDoc , CMainDocument ) ) ;
wxASSERT ( pFrame ) ;
wxASSERT ( wxDynamicCast ( pFrame , CAdvancedFrame ) ) ;
wxASSERT ( m_pGridPane ) ;
if ( ! pDoc - > IsUserAuthorized ( ) )
return ;
2007-03-29 17:50:20 +00:00
pFrame - > UpdateStatusText ( _ ( " Aborting transfer(s)... " ) ) ;
strMessage . Printf (
2008-07-08 20:05:07 +00:00
_ ( " Are you sure you want to abort this file(s) transfer ? \n NOTE: Aborting a transfer will invalidate a task and you \n will not receive credit for it. " ) ) ;
2007-03-29 17:50:20 +00:00
iAnswer = : : wxMessageBox ( strMessage , _ ( " Abort File Transfer(s) " ) , wxYES_NO | wxICON_QUESTION , this ) ;
2008-03-05 14:41:24 +00:00
if ( wxYES = = iAnswer ) {
wxArrayInt aRows = m_pGridPane - > GetSelectedRows2 ( ) ;
for ( unsigned int i = 0 ; i < aRows . Count ( ) ; i + + ) {
int row = aRows . Item ( i ) ;
wxString fileName = m_pGridPane - > GetCellValue ( row , COLUMN_FILE ) . Trim ( false ) ;
wxString projectURL = m_pGridPane - > GetCellValue ( row , COLUMN_HIDDEN_URL ) . Trim ( false ) ;
pDoc - > TransferAbort ( fileName , projectURL ) ;
}
}
2006-12-29 21:55:23 +00:00
pFrame - > UpdateStatusText ( wxT ( " " ) ) ;
UpdateSelection ( ) ;
pFrame - > FireRefreshView ( ) ;
wxLogTrace ( wxT ( " Function Start/End " ) , wxT ( " CViewTransfersGrid::OnTransfersAbort - Function End " ) ) ;
}
wxInt32 CViewTransfersGrid : : GetDocCount ( ) {
return wxGetApp ( ) . GetDocument ( ) - > GetTransferCount ( ) ;
}
void CViewTransfersGrid : : UpdateSelection ( ) {
CTaskItemGroup * pGroup = m_TaskGroups [ 0 ] ;
CBOINCBaseView : : PreUpdateSelection ( ) ;
2007-04-04 21:20:53 +00:00
if ( m_pGridPane - > GetSelectedRows2 ( ) . size ( ) > 0 ) {
2006-12-29 21:55:23 +00:00
m_pTaskPane - > EnableTaskGroupTasks ( pGroup ) ;
} else {
m_pTaskPane - > DisableTaskGroupTasks ( pGroup ) ;
}
CBOINCBaseView : : PostUpdateSelection ( ) ;
}
wxInt32 CViewTransfersGrid : : FormatProjectName ( wxInt32 item , wxString & strBuffer ) const {
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
if ( transfer ) {
- fixes #207 - HTML entities in BOINC Manager have to be decoded
BOINC Manager can now properly decode HTML entites for the
following elements:
Projects Tab:
Project Name
User Name
Team Name
Work Tab:
Project Name
Application Name
Transfers Tab:
Project Name
Messages Tab:
Project Name
Disk Tab:
Project Name
- fixes #212 - Info in columns misaligned on switching views
- Properly restore which tab view the user left from when going
to the advanced view from the simple view
- Fix the problem that caused the manager to wait for 7 seconds
to display anything on initial startup.
- Store the various Grid/List persisted data seperately so that
the different header sizes don't cause problems.
clientgui/
AdvancedFrame.cpp
BOINCBaseView.cpp, .h
BOINCGridCtrl.cpp
ViewMessages.cpp, .h
ViewMessagesGrid.cpp, .h
ViewProjects.cpp, .h
ViewProjectsGrid.cpp, .h
ViewResources.cpp, .h
ViewStatistics.cpp, .h
ViewTransfers.cpp, .h
ViewTransfersGrid.cpp, .h
ViewWork.cpp, .h
ViewWorkGrid.cpp, .h
lib/
gui_rpc_client_ops.C
svn path=/trunk/boinc/; revision=12761
2007-05-29 05:07:35 +00:00
strBuffer = wxT ( " " ) + HtmlEntityDecode ( wxString ( transfer - > project_name . c_str ( ) , wxConvUTF8 ) ) ;
2006-12-29 21:55:23 +00:00
}
return 0 ;
}
wxInt32 CViewTransfersGrid : : FormatFileName ( wxInt32 item , wxString & strBuffer ) const {
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
if ( transfer ) {
2007-04-03 13:14:30 +00:00
strBuffer = wxT ( " " ) + wxString ( transfer - > name . c_str ( ) , wxConvUTF8 ) ;
2006-12-29 21:55:23 +00:00
}
return 0 ;
}
wxInt32 CViewTransfersGrid : : FormatProgress ( wxInt32 item , wxString & strBuffer ) const {
float fBytesSent = 0 ;
float fFileSize = 0 ;
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
if ( transfer ) {
fBytesSent = transfer - > bytes_xferred ;
fFileSize = transfer - > nbytes ;
}
// Curl apparently counts the HTTP header in byte count.
// Prevent this from causing > 100% display
//
if ( fBytesSent > fFileSize ) {
fBytesSent = fFileSize ;
}
if ( 0.0 = = fFileSize ) {
strBuffer = wxT ( " 0% " ) ;
} else {
2007-01-08 08:12:49 +00:00
strBuffer . Printf ( wxT ( " %.2f%% " ) , floor ( ( fBytesSent / fFileSize ) * 10000 ) / 100 ) ;
2006-12-29 21:55:23 +00:00
}
return 0 ;
}
wxInt32 CViewTransfersGrid : : FormatSize ( wxInt32 item , wxString & strBuffer ) const {
float fBytesSent = 0 ;
float fFileSize = 0 ;
double xTera = 1099511627776.0 ;
double xGiga = 1073741824.0 ;
double xMega = 1048576.0 ;
double xKilo = 1024.0 ;
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
if ( transfer ) {
fBytesSent = transfer - > bytes_xferred ;
fFileSize = transfer - > nbytes ;
}
if ( fFileSize ! = 0 ) {
if ( fFileSize > = xTera ) {
strBuffer . Printf ( wxT ( " %0.2f/%0.2f TB " ) , fBytesSent / xTera , fFileSize / xTera ) ;
} else if ( fFileSize > = xGiga ) {
strBuffer . Printf ( wxT ( " %0.2f/%0.2f GB " ) , fBytesSent / xGiga , fFileSize / xGiga ) ;
} else if ( fFileSize > = xMega ) {
strBuffer . Printf ( wxT ( " %0.2f/%0.2f MB " ) , fBytesSent / xMega , fFileSize / xMega ) ;
} else if ( fFileSize > = xKilo ) {
strBuffer . Printf ( wxT ( " %0.2f/%0.2f KB " ) , fBytesSent / xKilo , fFileSize / xKilo ) ;
} else {
strBuffer . Printf ( wxT ( " %0.0f/%0.0f bytes " ) , fBytesSent , fFileSize ) ;
}
} else {
if ( fBytesSent > = xTera ) {
strBuffer . Printf ( wxT ( " %0.2f TB " ) , fBytesSent / xTera ) ;
} else if ( fBytesSent > = xGiga ) {
strBuffer . Printf ( wxT ( " %0.2f GB " ) , fBytesSent / xGiga ) ;
} else if ( fBytesSent > = xMega ) {
strBuffer . Printf ( wxT ( " %0.2f MB " ) , fBytesSent / xMega ) ;
} else if ( fBytesSent > = xKilo ) {
strBuffer . Printf ( wxT ( " %0.2f KB " ) , fBytesSent / xKilo ) ;
} else {
strBuffer . Printf ( wxT ( " %0.0f bytes " ) , fBytesSent ) ;
}
}
2007-04-03 13:14:30 +00:00
strBuffer = wxT ( " " ) + strBuffer ;
2006-12-29 21:55:23 +00:00
return 0 ;
}
wxInt32 CViewTransfersGrid : : FormatTime ( wxInt32 item , wxString & strBuffer ) const {
float fBuffer = 0 ;
wxInt32 iHour = 0 ;
wxInt32 iMin = 0 ;
wxInt32 iSec = 0 ;
wxTimeSpan ts ;
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
if ( transfer ) {
fBuffer = transfer - > time_so_far ;
}
iHour = ( wxInt32 ) ( fBuffer / ( 60 * 60 ) ) ;
iMin = ( wxInt32 ) ( fBuffer / 60 ) % 60 ;
iSec = ( wxInt32 ) ( fBuffer ) % 60 ;
ts = wxTimeSpan ( iHour , iMin , iSec ) ;
2007-04-03 13:14:30 +00:00
strBuffer = wxT ( " " ) + ts . Format ( ) ;
2006-12-29 21:55:23 +00:00
return 0 ;
}
wxInt32 CViewTransfersGrid : : FormatSpeed ( wxInt32 item , wxString & strBuffer ) const {
float fTransferSpeed = 0 ;
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
if ( transfer ) {
if ( transfer - > xfer_active )
fTransferSpeed = transfer - > xfer_speed / 1024 ;
else
fTransferSpeed = 0.0 ;
}
strBuffer . Printf ( wxT ( " %.2f KBps " ) , fTransferSpeed ) ;
return 0 ;
}
wxInt32 CViewTransfersGrid : : FormatStatus ( wxInt32 item , wxString & strBuffer ) const {
CMainDocument * doc = wxGetApp ( ) . GetDocument ( ) ;
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
CC_STATUS status ;
wxASSERT ( doc ) ;
wxASSERT ( wxDynamicCast ( doc , CMainDocument ) ) ;
doc - > GetCoreClientStatus ( status ) ;
wxDateTime dtNextRequest ( ( time_t ) transfer - > next_request_time ) ;
wxDateTime dtNow ( wxDateTime : : Now ( ) ) ;
if ( transfer ) {
if ( dtNextRequest > dtNow ) {
wxTimeSpan tsNextRequest ( dtNextRequest - dtNow ) ;
strBuffer = _ ( " Retry in " ) + tsNextRequest . Format ( ) ;
} else if ( ERR_GIVEUP_DOWNLOAD = = transfer - > status ) {
strBuffer = _ ( " Download failed " ) ;
} else if ( ERR_GIVEUP_UPLOAD = = transfer - > status ) {
strBuffer = _ ( " Upload failed " ) ;
} else {
if ( status . network_suspend_reason ) {
strBuffer = _ ( " Suspended " ) ;
} else {
if ( transfer - > xfer_active ) {
strBuffer = transfer - > generated_locally ? _ ( " Uploading " ) : _ ( " Downloading " ) ;
} else {
strBuffer = transfer - > generated_locally ? _ ( " Upload pending " ) : _ ( " Download pending " ) ;
}
}
}
}
2007-04-03 13:14:30 +00:00
strBuffer = wxT ( " " ) + strBuffer ;
2006-12-29 21:55:23 +00:00
return 0 ;
}
2008-03-05 14:41:24 +00:00
wxInt32 CViewTransfersGrid : : FormatProjectURL ( wxInt32 item , wxString & strBuffer ) const {
FILE_TRANSFER * transfer = wxGetApp ( ) . GetDocument ( ) - > file_transfer ( item ) ;
wxASSERT ( transfer ) ;
if ( transfer ) {
strBuffer = wxString ( transfer - > project_url . c_str ( ) , wxConvUTF8 ) ;
}
return 0 ;
}
2006-12-29 21:55:23 +00:00
bool CViewTransfersGrid : : OnSaveState ( wxConfigBase * pConfig ) {
bool bReturnValue = true ;
wxASSERT ( pConfig ) ;
wxASSERT ( m_pTaskPane ) ;
wxASSERT ( m_pGridPane ) ;
if ( ! m_pTaskPane - > OnSaveState ( pConfig ) ) {
bReturnValue = false ;
}
if ( ! m_pGridPane - > OnSaveState ( pConfig ) ) {
bReturnValue = false ;
}
return bReturnValue ;
}
bool CViewTransfersGrid : : OnRestoreState ( wxConfigBase * pConfig ) {
wxASSERT ( pConfig ) ;
wxASSERT ( m_pTaskPane ) ;
wxASSERT ( m_pGridPane ) ;
if ( ! m_pTaskPane - > OnRestoreState ( pConfig ) ) {
return false ;
}
if ( ! m_pGridPane - > OnRestoreState ( pConfig ) ) {
return false ;
}
return true ;
}
void CViewTransfersGrid : : OnListRender ( wxTimerEvent & WXUNUSED ( event ) ) {
2007-07-31 02:54:56 +00:00
wxInt32 docCount = GetDocCount ( ) ;
2007-04-03 13:14:30 +00:00
// We haven't connected up to the CC yet, there is nothing to display, make sure
// everything is deleted.
2007-07-31 02:54:56 +00:00
if ( docCount < = 0 ) {
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetNumberRows ( ) ) {
m_pGridPane - > DeleteRows ( 0 , m_pGridPane - > GetNumberRows ( ) ) ;
}
return ;
}
// Right-size the grid so that the number of rows matches
// the document state.
2007-07-31 02:54:56 +00:00
if ( docCount ! = m_pGridPane - > GetNumberRows ( ) ) {
if ( docCount > m_pGridPane - > GetNumberRows ( ) ) {
m_pGridPane - > AppendRows ( docCount - m_pGridPane - > GetNumberRows ( ) ) ;
2007-04-03 13:14:30 +00:00
} else {
2008-03-05 07:13:53 +00:00
m_pGridPane - > DeleteRows ( 0 , m_pGridPane - > GetNumberRows ( ) - docCount ) ;
m_bForceUpdateSelection = true ;
2007-04-03 13:14:30 +00:00
}
2007-07-31 02:54:56 +00:00
wxASSERT ( docCount = = m_pGridPane - > GetNumberRows ( ) ) ;
2007-04-03 13:14:30 +00:00
}
2006-12-29 21:55:23 +00:00
2008-03-18 18:19:49 +00:00
m_bIgnoreUIEvents = true ;
2008-03-05 07:13:53 +00:00
m_pGridPane - > SaveSelection ( ) ;
2008-03-18 18:19:49 +00:00
m_bIgnoreUIEvents = false ;
2008-03-05 07:13:53 +00:00
2006-12-29 21:55:23 +00:00
//update cell values
2007-04-03 13:14:30 +00:00
wxString strBuffer ;
int iMax = m_pGridPane - > GetNumberRows ( ) ;
2008-03-05 14:41:24 +00:00
for ( int iRow = 0 ; iRow < iMax ; iRow + + ) {
2006-12-29 21:55:23 +00:00
2008-03-05 14:41:24 +00:00
FormatProjectName ( iRow , strBuffer ) ;
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_PROJECT ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_PROJECT , strBuffer ) ;
}
2006-12-29 21:55:23 +00:00
2007-04-03 13:14:30 +00:00
FormatFileName ( iRow , strBuffer ) ;
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_FILE ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_FILE , strBuffer ) ;
}
2008-03-05 14:41:24 +00:00
FormatProgress ( iRow , strBuffer ) ;
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_PROGRESS ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_PROGRESS , strBuffer ) ;
m_pGridPane - > SetCellAlignment ( iRow , COLUMN_PROGRESS , wxALIGN_CENTRE , wxALIGN_CENTRE ) ;
}
2006-12-29 21:55:23 +00:00
2008-03-05 14:41:24 +00:00
FormatSize ( iRow , strBuffer ) ;
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_SIZE ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_SIZE , strBuffer ) ;
}
2006-12-29 21:55:23 +00:00
2008-03-05 14:41:24 +00:00
FormatTime ( iRow , strBuffer ) ;
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_TIME ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_TIME , strBuffer ) ;
}
2006-12-29 21:55:23 +00:00
2008-03-05 14:41:24 +00:00
FormatSpeed ( iRow , strBuffer ) ;
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_SPEED ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_SPEED , strBuffer ) ;
}
2006-12-29 21:55:23 +00:00
2008-03-05 14:41:24 +00:00
strBuffer = wxEmptyString ;
FormatStatus ( iRow , strBuffer ) ;
2007-04-03 13:14:30 +00:00
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_STATUS ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_STATUS , strBuffer ) ;
}
2008-03-05 14:41:24 +00:00
FormatProjectURL ( iRow , strBuffer ) ;
if ( m_pGridPane - > GetCellValue ( iRow , COLUMN_HIDDEN_URL ) ! = strBuffer ) {
m_pGridPane - > SetCellValue ( iRow , COLUMN_HIDDEN_URL , strBuffer ) ;
}
}
2007-04-03 13:14:30 +00:00
2008-03-05 14:41:24 +00:00
m_pGridPane - > SortData ( ) ;
2008-03-18 18:19:49 +00:00
m_bIgnoreUIEvents = true ;
2008-03-05 14:41:24 +00:00
m_pGridPane - > RestoreSelection ( ) ;
2008-03-18 18:19:49 +00:00
m_bIgnoreUIEvents = false ;
2008-03-05 14:41:24 +00:00
UpdateSelection ( ) ;
2006-12-29 21:55:23 +00:00
}