mirror of
https://github.com/SerenityOS/serenity
synced 2026-05-15 03:16:44 +02:00
SystemMonitor: Add an action to pause updates
This commit is contained in:
@@ -313,7 +313,7 @@ ErrorOr<int> 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<int> serenity_main(Main::Arguments arguments)
|
||||
};
|
||||
update_stats();
|
||||
auto& refresh_timer = window->add<Core::Timer>(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<int> serenity_main(Main::Arguments arguments)
|
||||
frequency_action_group.set_exclusive(true);
|
||||
|
||||
auto make_frequency_action = [&](int seconds) -> ErrorOr<void> {
|
||||
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<int> 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));
|
||||
|
||||
Reference in New Issue
Block a user