ProcessTableModel.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #pragma once
  2. #include <AK/AKString.h>
  3. #include <AK/HashMap.h>
  4. #include <AK/Vector.h>
  5. #include <LibGUI/GTableModel.h>
  6. #include <unistd.h>
  7. class ProcessTableModel final : public GTableModel {
  8. public:
  9. ProcessTableModel();
  10. virtual ~ProcessTableModel() override;
  11. virtual int row_count() const override;
  12. virtual int column_count() const override;
  13. virtual String column_name(int column) const override;
  14. virtual int column_width(int column) const override;
  15. virtual GModelIndex selected_index() const override;
  16. virtual void set_selected_index(GModelIndex) override;
  17. virtual String data(int row, int column) const override;
  18. virtual void update() override;
  19. pid_t selected_pid() const;
  20. private:
  21. struct ProcessState {
  22. pid_t pid;
  23. unsigned nsched;
  24. String name;
  25. String state;
  26. String user;
  27. String priority;
  28. unsigned linear;
  29. unsigned committed;
  30. float cpu_percent;
  31. };
  32. struct Process {
  33. ProcessState current_state;
  34. ProcessState previous_state;
  35. };
  36. HashMap<pid_t, OwnPtr<Process>> m_processes;
  37. Vector<pid_t> m_pids;
  38. int m_selected_row { -1 };
  39. };