This commit is contained in:
Tiago Batista Cardoso
2026-01-25 16:01:11 +01:00
parent 600f617c85
commit 3c17b5fa1f
6 changed files with 22 additions and 69 deletions

View File

@@ -22,7 +22,6 @@ enum ServerStatus {
pub struct P2PClientApp {
remaining: std::time::Duration, // temps restant
last_update: std::time::Instant, // pour calculer delta
timer_started: bool,
network_cmd_tx: Sender<NetworkCommand>,
network_event_rx: Receiver<NetworkEvent>,
@@ -65,7 +64,6 @@ impl P2PClientApp {
Self {
remaining: std::time::Duration::from_secs(0),
timer_started: false,
last_update: std::time::Instant::now(),
network_cmd_tx: cmd_tx,
network_event_rx: event_rx,
@@ -106,10 +104,9 @@ impl P2PClientApp {
impl eframe::App for P2PClientApp {
fn update(&mut self, ctx: &Context, _frame: &mut eframe::Frame) {
if matches!(self.server_status, ServerStatus::Connected) && !self.timer_started {
if matches!(self.server_status, ServerStatus::Connected) {
self.remaining = std::time::Duration::from_secs(30 * 60);
self.last_update = std::time::Instant::now();
self.timer_started = true;
}
let now = std::time::Instant::now();
@@ -437,18 +434,27 @@ impl eframe::App for P2PClientApp {
if self.show_network_window {
match self.server_status {
ServerStatus::Connected | ServerStatus::ConnectedHandshake => {
let desired = egui::vec2(300.0, 0.0); // width 300, auto-height if 0
ui.set_min_size(desired);
ui.vertical(|ui| {
if ui.button("Disconnect").clicked() {
println!("Disconnecting...");
let _ = self.network_cmd_tx.send(NetworkCommand::Disconnect());
self.server_status = ServerStatus::NotConnected;
self.remaining = std::time::Duration::from_secs(0);
self.timer_started = false;
self.show_network_window = false;
}
});
egui::Window::new("Network")
.resizable(false)
.collapsible(false)
.title_bar(false)
.show(ctx, |ui| {
let desired = egui::vec2(300.0, 0.0); // width 300, auto-height if 0
ui.set_min_size(desired);
ui.vertical(|ui| {
if ui.button("Disconnect").clicked() {
println!("Disconnecting...");
let _ = self
.network_cmd_tx
.send(NetworkCommand::Disconnect());
self.server_status = ServerStatus::NotConnected;
self.remaining = std::time::Duration::from_secs(0);
self.show_network_window = false;
self.loaded_fs.clear();
self.active_peer = None;
}
});
});
}
ServerStatus::NotConnected => {
egui::Window::new("Network")