1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-20 18:05:07 +00:00

LibGUI: Add a timer in ProcessChooser to get processes for every 1000ms

This commit is contained in:
Uma Sankar 2020-08-14 22:48:33 +05:30 committed by Andreas Kling
parent cdae3f53f1
commit d5a77de906
2 changed files with 33 additions and 0 deletions

View file

@ -91,6 +91,34 @@ ProcessChooser::ProcessChooser(const StringView& window_title, const StringView&
}; };
table_view.model()->update(); table_view.model()->update();
m_refresh_timer = add<Core::Timer>();
m_refresh_timer->start(m_refresh_interval); // Start the timer to update the processes
m_refresh_timer->on_timeout = [&table_view] {
auto previous_selected_pid = -1; // Store the selection index to not to clear the selection upon update.
if (!table_view.selection().is_empty()) {
auto pid_as_variant = table_view.model()->data(table_view.selection().first(), GUI::Model::Role::Custom);
previous_selected_pid = pid_as_variant.as_i32();
}
table_view.model()->update();
if (previous_selected_pid == -1) {
return;
}
auto model = table_view.model();
auto row_count = model->row_count();
auto column_index = 1; // Corresponds to PID column in the table_view.
for (int row_index = 0; row_index < row_count; ++row_index) {
auto cell_index = model->index(row_index, column_index);
auto pid_as_variant = model->data(cell_index, GUI::Model::Role::Custom);
if (previous_selected_pid == pid_as_variant.as_i32()) {
table_view.selection().set(cell_index); // Set only if PIDs are matched.
}
}
};
} }
ProcessChooser::~ProcessChooser() ProcessChooser::~ProcessChooser()

View file

@ -27,6 +27,7 @@
#pragma once #pragma once
#include <LibGUI/Dialog.h> #include <LibGUI/Dialog.h>
#include <LibCore/Timer.h>
namespace GUI { namespace GUI {
@ -46,6 +47,10 @@ private:
String m_window_title; String m_window_title;
String m_button_label; String m_button_label;
RefPtr<Gfx::Bitmap> m_window_icon; RefPtr<Gfx::Bitmap> m_window_icon;
bool m_refresh_enabled { true };
unsigned m_refresh_interval { 1000 };
RefPtr<Core::Timer> m_refresh_timer;
}; };
} }