mirror of
https://github.com/RGBCube/serenity
synced 2025-05-22 14:05:07 +00:00
ProcessManager: Use a single timer for refreshing the view.
Also add a menu for changing the update frequency to some nice values.
This commit is contained in:
parent
d73ed74d1c
commit
ac19fabaaf
4 changed files with 25 additions and 8 deletions
|
@ -37,7 +37,6 @@ MemoryStatsWidget::MemoryStatsWidget(GWidget* parent)
|
||||||
m_kmalloc_label = build_widgets_for_label("Kernel heap:");
|
m_kmalloc_label = build_widgets_for_label("Kernel heap:");
|
||||||
m_kmalloc_count_label = build_widgets_for_label("Calls kmalloc/kfree:");
|
m_kmalloc_count_label = build_widgets_for_label("Calls kmalloc/kfree:");
|
||||||
|
|
||||||
start_timer(1000);
|
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,15 +8,14 @@ ProcessTableView::ProcessTableView(GWidget* parent)
|
||||||
{
|
{
|
||||||
set_model(GSortingProxyModel::create(ProcessModel::create()));
|
set_model(GSortingProxyModel::create(ProcessModel::create()));
|
||||||
model()->set_key_column_and_sort_order(ProcessModel::Column::CPU, GSortOrder::Descending);
|
model()->set_key_column_and_sort_order(ProcessModel::Column::CPU, GSortOrder::Descending);
|
||||||
start_timer(1000);
|
refresh();
|
||||||
model()->update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ProcessTableView::~ProcessTableView()
|
ProcessTableView::~ProcessTableView()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void ProcessTableView::timer_event(CTimerEvent&)
|
void ProcessTableView::refresh()
|
||||||
{
|
{
|
||||||
model()->update();
|
model()->update();
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,10 +13,9 @@ public:
|
||||||
|
|
||||||
pid_t selected_pid() const;
|
pid_t selected_pid() const;
|
||||||
|
|
||||||
protected:
|
void refresh();
|
||||||
virtual void model_notification(const GModelNotification&) override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual void timer_event(CTimerEvent&) override;
|
virtual void model_notification(const GModelNotification&) override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#include <LibCore/CTimer.h>
|
||||||
#include <LibGUI/GWindow.h>
|
#include <LibGUI/GWindow.h>
|
||||||
#include <LibGUI/GWidget.h>
|
#include <LibGUI/GWidget.h>
|
||||||
#include <LibGUI/GBoxLayout.h>
|
#include <LibGUI/GBoxLayout.h>
|
||||||
|
@ -20,8 +21,12 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
auto* toolbar = new GToolBar(widget);
|
auto* toolbar = new GToolBar(widget);
|
||||||
auto* process_table_view = new ProcessTableView(widget);
|
auto* process_table_view = new ProcessTableView(widget);
|
||||||
|
auto* memory_stats_widget = new MemoryStatsWidget(widget);
|
||||||
|
|
||||||
new MemoryStatsWidget(widget);
|
auto* refresh_timer = new CTimer(1000, [&] {
|
||||||
|
process_table_view->refresh();
|
||||||
|
memory_stats_widget->refresh();
|
||||||
|
});
|
||||||
|
|
||||||
auto kill_action = GAction::create("Kill process", GraphicsBitmap::load_from_file("/res/icons/kill16.png"), [process_table_view] (const GAction&) {
|
auto kill_action = GAction::create("Kill process", GraphicsBitmap::load_from_file("/res/icons/kill16.png"), [process_table_view] (const GAction&) {
|
||||||
pid_t pid = process_table_view->selected_pid();
|
pid_t pid = process_table_view->selected_pid();
|
||||||
|
@ -59,6 +64,21 @@ int main(int argc, char** argv)
|
||||||
process_menu->add_action(continue_action.copy_ref());
|
process_menu->add_action(continue_action.copy_ref());
|
||||||
menubar->add_menu(move(process_menu));
|
menubar->add_menu(move(process_menu));
|
||||||
|
|
||||||
|
auto frequency_menu = make<GMenu>("Frequency");
|
||||||
|
frequency_menu->add_action(GAction::create("0.5 sec", [refresh_timer] (auto&) {
|
||||||
|
refresh_timer->restart(500);
|
||||||
|
}));
|
||||||
|
frequency_menu->add_action(GAction::create("1 sec", [refresh_timer] (auto&) {
|
||||||
|
refresh_timer->restart(1000);
|
||||||
|
}));
|
||||||
|
frequency_menu->add_action(GAction::create("3 sec", [refresh_timer] (auto&) {
|
||||||
|
refresh_timer->restart(3000);
|
||||||
|
}));
|
||||||
|
frequency_menu->add_action(GAction::create("5 sec", [refresh_timer] (auto&) {
|
||||||
|
refresh_timer->restart(5000);
|
||||||
|
}));
|
||||||
|
menubar->add_menu(move(frequency_menu));
|
||||||
|
|
||||||
auto help_menu = make<GMenu>("Help");
|
auto help_menu = make<GMenu>("Help");
|
||||||
help_menu->add_action(GAction::create("About", [] (const GAction&) {
|
help_menu->add_action(GAction::create("About", [] (const GAction&) {
|
||||||
dbgprintf("FIXME: Implement Help/About\n");
|
dbgprintf("FIXME: Implement Help/About\n");
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue