diff --git a/LaunchAPPL/Server/LaunchAPPLServer.cc b/LaunchAPPL/Server/LaunchAPPLServer.cc index da2519d5b1..a545dc4da4 100644 --- a/LaunchAPPL/Server/LaunchAPPLServer.cc +++ b/LaunchAPPL/Server/LaunchAPPLServer.cc @@ -239,6 +239,7 @@ protected: public: void setListener(StreamListener *l) { listener = l; } + virtual ~ConnectionProvider() {} virtual Stream* getStream() = 0; virtual void idle() {} virtual void suspend() {} @@ -317,7 +318,7 @@ public: void onReset() { - statusDisplay->SetStatus(AppStatus::ready, 0, 0); + statusDisplay->SetStatus(gPrefs.port ? AppStatus::readyPrinter : AppStatus::readyModem, 0, 0); state = State::command; } @@ -344,7 +345,9 @@ public: dataSize = *(const uint32_t*)(p+8); rsrcSize = *(const uint32_t*)(p+12); - statusDisplay->SetStatus(AppStatus::downloading, 0, dataSize + rsrcSize); + statusDisplay->SetStatus(command == RemoteCommand::upgradeLauncher ? + AppStatus::upgrading : AppStatus::downloading, + 0, dataSize + rsrcSize); FSDelete("\pRetro68App", 0); Create("\pRetro68App", 0, creator, type); @@ -364,7 +367,7 @@ public: FSWrite(refNum, &count, p); remainingSize -= count; - statusDisplay->SetStatus(AppStatus::downloading, dataSize - remainingSize, dataSize + rsrcSize); + statusDisplay->SetProgress(dataSize - remainingSize, dataSize + rsrcSize); if(remainingSize) return count; @@ -385,7 +388,7 @@ public: FSWrite(refNum, &count, p); remainingSize -= count; - statusDisplay->SetStatus(AppStatus::downloading, dataSize + rsrcSize - remainingSize, dataSize + rsrcSize); + statusDisplay->SetProgress(dataSize + rsrcSize - remainingSize, dataSize + rsrcSize); if(remainingSize) return count; @@ -447,9 +450,8 @@ public: } else { - state = State::command; connection->resume(); - statusDisplay->SetStatus(AppStatus::ready, 0, 0); + onReset(); } } else if(state == State::wait && nullEventCounter > 3) @@ -482,8 +484,7 @@ public: } if(outSizeRemaining == 0 && stream->allDataArrived()) { - state = State::command; - statusDisplay->SetStatus(AppStatus::ready, 0, 0); + onReset(); } } } diff --git a/LaunchAPPL/Server/LaunchAPPLServer.r b/LaunchAPPL/Server/LaunchAPPLServer.r index f5e0ecb60b..aa614e0daf 100644 --- a/LaunchAPPL/Server/LaunchAPPLServer.r +++ b/LaunchAPPL/Server/LaunchAPPLServer.r @@ -102,7 +102,9 @@ resource 'WIND' (129, "Main") { resource 'STR#' (128, purgeable) { { "Listening on Modem Port..."; + "Listening on Printer Port..."; "Downloading Application..."; + "Downloading Upgrade..."; "Running Application..."; "Sending Results..."; } diff --git a/LaunchAPPL/Server/StatusDisplay.cc b/LaunchAPPL/Server/StatusDisplay.cc index 6369794e32..62273bd729 100644 --- a/LaunchAPPL/Server/StatusDisplay.cc +++ b/LaunchAPPL/Server/StatusDisplay.cc @@ -69,8 +69,6 @@ StatusDisplay::StatusDisplay() DiffRgn(background, tmp, background); } DisposeRgn(tmp); - - SetStatus(AppStatus::ready); } StatusDisplay::~StatusDisplay() @@ -176,7 +174,7 @@ void StatusDisplay::Idle() } long newTimeRemaining = -1; - if(status == AppStatus::downloading) + if(status == AppStatus::downloading || status == AppStatus::upgrading) { long now = TickCount(); if(now - startTime > 60 && progressDone > 4000) @@ -206,7 +204,7 @@ void StatusDisplay::SetStatus(AppStatus stat) if(stat != status) { status = stat; - if(status == AppStatus::downloading) + if(status == AppStatus::downloading || status == AppStatus::upgrading) startTime = TickCount(); GetIndString(statusString,128,(short)stat); SetPort(statusWindow); diff --git a/LaunchAPPL/Server/StatusDisplay.h b/LaunchAPPL/Server/StatusDisplay.h index a877b42211..c99bcaa7ca 100644 --- a/LaunchAPPL/Server/StatusDisplay.h +++ b/LaunchAPPL/Server/StatusDisplay.h @@ -5,10 +5,12 @@ enum class AppStatus { empty = 0, - ready = 1, - downloading = 2, - running = 3, - uploading = 4 + readyModem = 1, + readyPrinter, + downloading, + upgrading, + running, + uploading }; class StatusDisplay