ProcessChooser.h 1006 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibCore/Timer.h>
  8. #include <LibGUI/Dialog.h>
  9. #include <LibGUI/RunningProcessesModel.h>
  10. namespace GUI {
  11. class ProcessChooser final : public GUI::Dialog {
  12. C_OBJECT(ProcessChooser);
  13. public:
  14. virtual ~ProcessChooser() override;
  15. pid_t pid() const { return m_pid; }
  16. private:
  17. ProcessChooser(const StringView& window_title = "Process Chooser", const StringView& button_label = "Select", const Gfx::Bitmap* window_icon = nullptr, GUI::Window* parent_window = nullptr);
  18. void set_pid_from_index_and_close(const ModelIndex&);
  19. pid_t m_pid { 0 };
  20. String m_window_title;
  21. String m_button_label;
  22. RefPtr<Gfx::Bitmap> m_window_icon;
  23. RefPtr<TableView> m_table_view;
  24. RefPtr<RunningProcessesModel> m_process_model;
  25. bool m_refresh_enabled { true };
  26. unsigned m_refresh_interval { 1000 };
  27. RefPtr<Core::Timer> m_refresh_timer;
  28. };
  29. }