ProcessTableView.cpp 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #include "ProcessTableView.h"
  2. #include "ProcessTableModel.h"
  3. #include <LibGUI/GSortingProxyTableModel.h>
  4. #include <stdio.h>
  5. ProcessTableView::ProcessTableView(GWidget* parent)
  6. : GTableView(parent)
  7. {
  8. set_model(make<GSortingProxyTableModel>(make<ProcessTableModel>()));
  9. model()->set_key_column_and_sort_order(ProcessTableModel::Column::CPU, GSortOrder::Descending);
  10. start_timer(1000);
  11. model()->update();
  12. }
  13. ProcessTableView::~ProcessTableView()
  14. {
  15. }
  16. void ProcessTableView::timer_event(GTimerEvent&)
  17. {
  18. model()->update();
  19. }
  20. void ProcessTableView::model_notification(const GModelNotification& notification)
  21. {
  22. if (notification.type() == GModelNotification::ModelUpdated) {
  23. if (on_status_message)
  24. on_status_message(String::format("%d processes", model()->row_count()));
  25. return;
  26. }
  27. }
  28. pid_t ProcessTableView::selected_pid() const
  29. {
  30. if (!model()->selected_index().is_valid())
  31. return -1;
  32. return model()->data({ model()->selected_index().row(), ProcessTableModel::Column::PID }, GTableModel::Role::Sort).as_int();
  33. }