will_umount method in Activity

This commit is contained in:
veeso
2021-03-21 17:16:52 +01:00
parent 30c2aa144b
commit f0d87ff8c4
9 changed files with 95 additions and 50 deletions

View File

@@ -32,7 +32,7 @@ use crate::system::config_client::ConfigClient;
use crate::system::environment;
use crate::ui::activities::{
auth_activity::AuthActivity, filetransfer_activity::FileTransferActivity,
setup_activity::SetupActivity, Activity,
setup_activity::SetupActivity, Activity, ExitReason,
};
use crate::ui::context::{Context, FileTransferParams};
@@ -147,20 +147,24 @@ impl ActivityManager {
// Draw activity
activity.on_draw();
// Check if has to be terminated
if activity.quit {
// Quit activities
result = None;
break;
}
if activity.setup {
// User requested activity
result = Some(NextActivity::SetupActivity);
break;
}
if activity.submit {
// User submitted, set next activity
result = Some(NextActivity::FileTransfer);
break;
if let Some(exit_reason) = activity.will_umount() {
match exit_reason {
ExitReason::Quit => {
result = None;
break;
}
ExitReason::EnterSetup => {
// User requested activity
result = Some(NextActivity::SetupActivity);
break;
}
ExitReason::Connect => {
// User submitted, set next activity
result = Some(NextActivity::FileTransfer);
break;
}
_ => { /* Nothing to do */ }
}
}
// Sleep for ticks
sleep(self.interval);
@@ -197,15 +201,19 @@ impl ActivityManager {
// Draw activity
activity.on_draw();
// Check if has to be terminated
if activity.quit {
// Quit activities
result = None;
break;
}
if activity.disconnected {
// User disconnected, set next activity to authentication
result = Some(NextActivity::Authentication);
break;
if let Some(exit_reason) = activity.will_umount() {
match exit_reason {
ExitReason::Quit => {
result = None;
break;
}
ExitReason::Disconnect => {
// User disconnected, set next activity to authentication
result = Some(NextActivity::Authentication);
break;
}
_ => { /* Nothing to do */ }
}
}
// Sleep for ticks
sleep(self.interval);
@@ -234,7 +242,7 @@ impl ActivityManager {
// Draw activity
activity.on_draw();
// Check if activity has terminated
if activity.quit {
if let Some(ExitReason::Quit) = activity.will_umount() {
break;
}
// Sleep for ticks