ProcessTableModel.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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. enum Column {
  10. Icon = 0,
  11. Name,
  12. CPU,
  13. State,
  14. Priority,
  15. User,
  16. PID,
  17. Linear,
  18. Physical,
  19. __Count
  20. };
  21. ProcessTableModel();
  22. virtual ~ProcessTableModel() override;
  23. virtual int row_count() const override;
  24. virtual int column_count() const override;
  25. virtual String column_name(int column) const override;
  26. virtual ColumnMetadata column_metadata(int column) const override;
  27. virtual GVariant data(const GModelIndex&, Role = Role::Display) const override;
  28. virtual void update() override;
  29. private:
  30. struct ProcessState {
  31. pid_t pid;
  32. unsigned nsched;
  33. String name;
  34. String state;
  35. String user;
  36. String priority;
  37. size_t linear;
  38. size_t physical;
  39. float cpu_percent;
  40. };
  41. struct Process {
  42. ProcessState current_state;
  43. ProcessState previous_state;
  44. };
  45. HashMap<uid_t, String> m_usernames;
  46. HashMap<pid_t, OwnPtr<Process>> m_processes;
  47. Vector<pid_t> m_pids;
  48. RetainPtr<GraphicsBitmap> m_generic_process_icon;
  49. RetainPtr<GraphicsBitmap> m_high_priority_icon;
  50. RetainPtr<GraphicsBitmap> m_low_priority_icon;
  51. RetainPtr<GraphicsBitmap> m_normal_priority_icon;
  52. };