Provide more detail in logout dialog during SaveYourself-related tasks

pull/2/head
Timothy Pearson 11 years ago
parent 7c366d7a44
commit 4a1137459a

@ -249,6 +249,7 @@ private:
TDEHardwareDevices* hwDevices;
int initialClientCount;
int phase2ClientCount;
};
#endif

@ -438,6 +438,55 @@ void KSMServer::saveYourselfDone( KSMClient* client, bool success )
false );
}
}
// RAJA TEST ONLY
bool inPhase2 = true;
for( KSMClient* c = clients.first(); c; c = clients.next()) {
if ( !c->saveYourselfDone && !c->waitForPhase2 ) {
inPhase2 = false;
}
}
if (shutdownNotifierIPDlg) {
int waitingClients = 0;
TQString nextClientToKill;
TQDateTime currentDateTime = TQDateTime::currentDateTime();
TQDateTime oldestFoundDateTime = currentDateTime;
for( KSMClient* c = clients.first(); c; c = clients.next()) {
if (c->saveYourselfDone) {
continue;
}
if( isWM( c ) || isCM( c ) || isNotifier( c ) ) {
continue;
}
waitingClients++;
if (c->program() != "") {
if (c->terminationRequestTimeStamp < oldestFoundDateTime) {
nextClientToKill = c->program();
oldestFoundDateTime = c->terminationRequestTimeStamp;
}
}
}
if (inPhase2) {
if (phase2ClientCount > 0) {
if (nextClientToKill == "") {
static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Notifying remaining applications of logout request (%1/%2)...").arg(phase2ClientCount-waitingClients).arg(phase2ClientCount));
}
else {
static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Notifying remaining applications of logout request (%1/%2, %3)...").arg(phase2ClientCount-waitingClients).arg(phase2ClientCount).arg(nextClientToKill));
}
}
}
else {
if (nextClientToKill == "") {
static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Notifying applications of logout request (%1/%2)...").arg(clients.count()-waitingClients).arg(clients.count()));
}
else {
static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Notifying applications of logout request (%1/%2, %3)...").arg(clients.count()-waitingClients).arg(clients.count()).arg(nextClientToKill));
}
}
}
}
void KSMServer::interactRequest( KSMClient* client, int /*dialogType*/ )
@ -612,10 +661,12 @@ void KSMServer::completeShutdownOrCheckpoint()
}
// do phase 2
phase2ClientCount = 0;
bool waitForPhase2 = false;
for ( KSMClient* c = clients.first(); c; c = clients.next() ) {
if ( !c->saveYourselfDone && c->waitForPhase2 ) {
c->waitForPhase2 = false;
phase2ClientCount++;
SmsSaveYourselfPhase2( c->connection() );
waitForPhase2 = true;
}

Loading…
Cancel
Save