diff --git a/Userland/Applications/SystemMonitor/main.cpp b/Userland/Applications/SystemMonitor/main.cpp index ee6a258fe35..4a0ec7211b3 100644 --- a/Userland/Applications/SystemMonitor/main.cpp +++ b/Userland/Applications/SystemMonitor/main.cpp @@ -313,7 +313,7 @@ ErrorOr serenity_main(Main::Arguments arguments) process_model->update(); i32 frequency = Config::read_i32("SystemMonitor"sv, "Monitor"sv, "Frequency"sv, 3); - if (frequency != 1 && frequency != 3 && frequency != 5) { + if (frequency != 0 && frequency != 1 && frequency != 3 && frequency != 5) { frequency = 3; Config::write_i32("SystemMonitor"sv, "Monitor"sv, "Frequency"sv, frequency); } @@ -334,7 +334,8 @@ ErrorOr serenity_main(Main::Arguments arguments) }; update_stats(); auto& refresh_timer = window->add(frequency * 1000, move(update_stats)); - refresh_timer.start(); + if (frequency > 0) + refresh_timer.start(); auto selected_id = [&](ProcessModel::Column column) -> pid_t { if (process_table_view.selection().is_empty()) @@ -453,9 +454,10 @@ ErrorOr serenity_main(Main::Arguments arguments) frequency_action_group.set_exclusive(true); auto make_frequency_action = [&](int seconds) -> ErrorOr { - auto action = GUI::Action::create_checkable(ByteString::formatted("&{} Sec", seconds), [&refresh_timer, seconds](auto&) { + auto action = GUI::Action::create_checkable(ByteString::formatted("&{} Sec", seconds), [&window, &refresh_timer, seconds](auto&) { Config::write_i32("SystemMonitor"sv, "Monitor"sv, "Frequency"sv, seconds); refresh_timer.restart(seconds * 1000); + window->set_title("System Monitor"); }); action->set_status_tip(TRY(String::formatted("Refresh every {} seconds", seconds))); action->set_checked(frequency == seconds); @@ -473,6 +475,16 @@ ErrorOr serenity_main(Main::Arguments arguments) window->set_fullscreen(!window->is_fullscreen()); })); + auto pause_action = GUI::Action::create_checkable("&Paused", [&window, &refresh_timer](auto&) { + Config::write_i32("SystemMonitor"sv, "Monitor"sv, "Frequency"sv, 0); + window->set_title("System Monitor - Paused"); + refresh_timer.stop(); + }); + pause_action->set_status_tip("Pause updates"_string); + pause_action->set_checked(frequency == 0); + frequency_action_group.add_action(*pause_action); + frequency_menu->add_action(*pause_action); + auto help_menu = window->add_menu("&Help"_string); help_menu->add_action(GUI::CommonActions::make_command_palette_action(window)); help_menu->add_action(GUI::CommonActions::make_about_action("System Monitor"_string, app_icon, window));