- manager: if a project has pending trickle up,

show it in the project status


svn path=/trunk/boinc/; revision=21416
This commit is contained in:
David Anderson 2010-05-07 20:41:43 +00:00
parent 7daae1d0c7
commit a62782c910
4 changed files with 36 additions and 19 deletions

View File

@ -3390,3 +3390,13 @@ David 7 May 2010
client/
client_state.cpp
pers_file_xfer.cpp,h
David 7 May 2010
- manager: if a project has pending trickle up,
show it in the project status
clientgui/
ViewProjects.cpp
lib/
gui_rpc_client_ops.cpp
gui_rpc_client.h

View File

@ -109,14 +109,14 @@ static bool CompareViewProjectsItems(int iRowIndex1, int iRowIndex2) {
}
switch (myCViewProjects->m_iSortColumn) {
case COLUMN_PROJECT:
result = project1->m_strProjectName.CmpNoCase(project2->m_strProjectName);
case COLUMN_PROJECT:
result = project1->m_strProjectName.CmpNoCase(project2->m_strProjectName);
break;
case COLUMN_ACCOUNTNAME:
result = project1->m_strAccountName.CmpNoCase(project2->m_strAccountName);
result = project1->m_strAccountName.CmpNoCase(project2->m_strAccountName);
break;
case COLUMN_TEAMNAME:
result = project1->m_strTeamName.CmpNoCase(project2->m_strTeamName);
result = project1->m_strTeamName.CmpNoCase(project2->m_strTeamName);
break;
case COLUMN_TOTALCREDIT:
if (project1->m_fTotalCredit < project2->m_fTotalCredit) {
@ -140,7 +140,7 @@ static bool CompareViewProjectsItems(int iRowIndex1, int iRowIndex2) {
}
break;
case COLUMN_STATUS:
result = project1->m_strStatus.CmpNoCase(project2->m_strStatus);
result = project1->m_strStatus.CmpNoCase(project2->m_strStatus);
break;
}
@ -156,8 +156,8 @@ CViewProjects::CViewProjects()
CViewProjects::CViewProjects(wxNotebook* pNotebook) :
CBOINCBaseView(pNotebook, ID_TASK_PROJECTSVIEW, DEFAULT_TASK_FLAGS, ID_LIST_PROJECTSVIEW, DEFAULT_LIST_MULTI_SEL_FLAGS)
{
CTaskItemGroup* pGroup = NULL;
CTaskItem* pItem = NULL;
CTaskItemGroup* pGroup = NULL;
CTaskItem* pItem = NULL;
wxASSERT(m_pTaskPane);
wxASSERT(m_pListPane);
@ -166,45 +166,45 @@ CViewProjects::CViewProjects(wxNotebook* pNotebook) :
//
// Setup View
//
pGroup = new CTaskItemGroup( _("Commands") );
m_TaskGroups.push_back( pGroup );
pGroup = new CTaskItemGroup( _("Commands") );
m_TaskGroups.push_back( pGroup );
pItem = new CTaskItem(
pItem = new CTaskItem(
_("Update"),
_("Report all completed tasks, get latest credit, get latest preferences, and possibly get more tasks."),
ID_TASK_PROJECT_UPDATE
);
pGroup->m_Tasks.push_back( pItem );
pItem = new CTaskItem(
pItem = new CTaskItem(
_("Suspend"),
_("Suspend tasks for this project."),
ID_TASK_PROJECT_SUSPEND
);
pGroup->m_Tasks.push_back( pItem );
pItem = new CTaskItem(
pItem = new CTaskItem(
_("No new tasks"),
_("Don't get new tasks for this project."),
ID_TASK_PROJECT_NONEWWORK
);
pGroup->m_Tasks.push_back( pItem );
pItem = new CTaskItem(
pItem = new CTaskItem(
_("Reset project"),
_("Delete all files and tasks associated with this project, and get new tasks. You can update the project first to report any completed tasks."),
ID_TASK_PROJECT_RESET
);
pGroup->m_Tasks.push_back( pItem );
pItem = new CTaskItem(
pItem = new CTaskItem(
_("Detach"),
_("Detach computer from this project. Tasks in progress will be lost (use 'Update' first to report any completed tasks)."),
ID_TASK_PROJECT_DETACH
);
pGroup->m_Tasks.push_back( pItem );
pItem = new CTaskItem(
pItem = new CTaskItem(
_("Properties"),
_("Show project details."),
ID_TASK_PROJECT_SHOW_PROPERTIES
@ -275,13 +275,13 @@ wxString CViewProjects::GetKeyValue1(int iRowIndex) {
int CViewProjects::FindRowIndexByKeyValues(wxString& key1, wxString&) {
CProject* project;
unsigned int iRowIndex, n = GetCacheCount();
for(iRowIndex=0; iRowIndex < n; iRowIndex++) {
for(iRowIndex=0; iRowIndex < n; iRowIndex++) {
if (GetProjectCacheAtIndex(project, m_iSortedIndexes[iRowIndex])) {
continue;
}
if((project->m_strProjectURL).IsSameAs(key1)) return iRowIndex;
}
return -1;
}
return -1;
}
@ -1067,11 +1067,14 @@ void CViewProjects::GetDocStatus(wxInt32 item, wxString& strBuffer) const {
}
if (project->sched_rpc_pending) {
append_to_status(strBuffer, _("Scheduler request pending"));
append_to_status(strBuffer, wxString(rpc_reason_string(project->sched_rpc_pending), wxConvUTF8));
append_to_status(strBuffer, wxString(rpc_reason_string(project->sched_rpc_pending), wxConvUTF8));
}
if (project->scheduler_rpc_in_progress) {
append_to_status(strBuffer, _("Scheduler request in progress"));
}
if (project->trickle_up_pending) {
append_to_status(strBuffer, _("Trickle up message pending"));
}
wxDateTime dtNextRPC((time_t)project->min_rpc_time);
wxDateTime dtNow(wxDateTime::Now());
if (dtNextRPC > dtNow) {

View File

@ -140,6 +140,7 @@ public:
bool anonymous_platform;
bool master_url_fetch_pending; // need to fetch and parse the master URL
int sched_rpc_pending; // need to contact scheduling server
// encodes the reason for the request
bool non_cpu_intensive;
bool suspended_via_gui;
bool dont_request_more_work;
@ -147,6 +148,7 @@ public:
bool attached_via_acct_mgr;
bool detach_when_done;
bool ended;
bool trickle_up_pending;
double project_files_downloaded_time;
// when the last project file download was finished
// (i.e. the time when ALL project files were finished downloading)

View File

@ -267,6 +267,7 @@ int PROJECT::parse(MIOFILE& in) {
if (parse_bool(buf, "scheduler_rpc_in_progress", scheduler_rpc_in_progress)) continue;
if (parse_bool(buf, "attached_via_acct_mgr", attached_via_acct_mgr)) continue;
if (parse_bool(buf, "detach_when_done", detach_when_done)) continue;
if (parse_bool(buf, "trickle_up_pending", trickle_up_pending)) continue;
if (match_tag(buf, "<gui_urls>")) {
while (in.fgets(buf, 256)) {
if (match_tag(buf, "</gui_urls>")) break;
@ -326,6 +327,7 @@ void PROJECT::clear() {
scheduler_rpc_in_progress = false;
attached_via_acct_mgr = false;
detach_when_done = false;
trickle_up_pending = false;
project_files_downloaded_time = 0;
last_rpc_time = 0;
gui_urls.clear();