ProcessManager: Make the toolbar actions work again.

We can't grab at the ProcessTableModel directly anymore since we have a
sorting proxy model in the middle now.
This commit is contained in:
Andreas Kling 2019-03-10 02:02:37 +01:00
parent 2336d43abc
commit 0b32ab12f1
Notes: sideshowbarker 2024-07-19 15:05:51 +09:00
4 changed files with 8 additions and 22 deletions

View File

@ -199,10 +199,3 @@ void ProcessTableModel::update()
did_update();
}
pid_t ProcessTableModel::selected_pid() const
{
if (!selected_index().is_valid())
return -1;
return m_pids[selected_index().row()];
}

View File

@ -31,8 +31,6 @@ public:
virtual GVariant data(const GModelIndex&, Role = Role::Display) const override;
virtual void update() override;
pid_t selected_pid() const;
private:
struct ProcessState {
pid_t pid;

View File

@ -6,12 +6,10 @@
ProcessTableView::ProcessTableView(GWidget* parent)
: GTableView(parent)
{
auto process_model = make<ProcessTableModel>();
m_model = process_model.ptr();
set_model(make<GSortingProxyTableModel>(move(process_model)));
GTableView::model()->set_key_column_and_sort_order(ProcessTableModel::Column::CPU, GSortOrder::Descending);
set_model(make<GSortingProxyTableModel>(make<ProcessTableModel>()));
model()->set_key_column_and_sort_order(ProcessTableModel::Column::CPU, GSortOrder::Descending);
start_timer(1000);
model().update();
model()->update();
}
ProcessTableView::~ProcessTableView()
@ -20,19 +18,21 @@ ProcessTableView::~ProcessTableView()
void ProcessTableView::timer_event(GTimerEvent&)
{
model().update();
model()->update();
}
void ProcessTableView::model_notification(const GModelNotification& notification)
{
if (notification.type() == GModelNotification::ModelUpdated) {
if (on_status_message)
on_status_message(String::format("%d processes", model().row_count()));
on_status_message(String::format("%d processes", model()->row_count()));
return;
}
}
pid_t ProcessTableView::selected_pid() const
{
return model().selected_pid();
if (!model()->selected_index().is_valid())
return -1;
return model()->data({ model()->selected_index().row(), ProcessTableModel::Column::PID }, GTableModel::Role::Sort).as_int();
}

View File

@ -20,10 +20,5 @@ protected:
private:
virtual void timer_event(GTimerEvent&) override;
ProcessTableModel& model() { return *m_model; }
const ProcessTableModel& model() const { return *m_model; }
ProcessTableModel* m_model { nullptr };
};