123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- /*
- * Copyright (c) 2021, Gunnar Beutner <gunnar@beutner.name>
- *
- * SPDX-License-Identifier: BSD-2-Clause
- */
- #include "ProcessPickerWidget.h"
- #include "Profile.h"
- #include <LibGUI/BoxLayout.h>
- #include <LibGUI/ItemListModel.h>
- #include <LibGUI/Label.h>
- ProcessPickerWidget::ProcessPickerWidget(Profile& profile)
- : m_profile(profile)
- {
- set_layout<GUI::HorizontalBoxLayout>();
- set_fixed_height(30);
- set_frame_shape(Gfx::FrameShape::NoFrame);
- auto& label = add<GUI::Label>("Process:");
- label.set_fixed_width(50);
- label.set_text_alignment(Gfx::TextAlignment::CenterRight);
- m_process_combo = add<GUI::ComboBox>();
- m_process_combo->set_only_allow_values_from_model(true);
- m_processes.append("All processes");
- for (auto& process : m_profile.processes())
- m_processes.append(String::formatted("{}: {}", process.pid, process.executable));
- m_process_combo->set_model(*GUI::ItemListModel<String>::create(m_processes));
- m_process_combo->set_selected_index(0);
- m_process_combo->on_change = [this](auto&, const GUI::ModelIndex& index) {
- if (index.row() == 0) {
- m_profile.clear_process_filter();
- } else {
- auto& process = m_profile.processes()[index.row() - 1];
- auto end_valid = process.end_valid == 0 ? m_profile.last_timestamp() : process.end_valid;
- m_profile.set_process_filter(process.pid, process.start_valid, end_valid);
- }
- };
- }
- ProcessPickerWidget::~ProcessPickerWidget()
- {
- }
|