mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 22:27:35 +00:00
Make it possible to sort a GTableModel by column+order.
This is accomplished by putting a GSortingProxyTableModel between the model and the view. It's pretty simplistic but it works for this use case. :^)
This commit is contained in:
parent
0680fe2383
commit
7d1142c7d9
16 changed files with 278 additions and 40 deletions
|
@ -3,19 +3,6 @@
|
|||
#include <stdio.h>
|
||||
#include <pwd.h>
|
||||
|
||||
enum Column {
|
||||
Icon = 0,
|
||||
Name,
|
||||
CPU,
|
||||
State,
|
||||
Priority,
|
||||
User,
|
||||
PID,
|
||||
Linear,
|
||||
Physical,
|
||||
__Count
|
||||
};
|
||||
|
||||
ProcessTableModel::ProcessTableModel()
|
||||
{
|
||||
setpwent();
|
||||
|
|
|
@ -8,6 +8,19 @@
|
|||
|
||||
class ProcessTableModel final : public GTableModel {
|
||||
public:
|
||||
enum Column {
|
||||
Icon = 0,
|
||||
Name,
|
||||
CPU,
|
||||
State,
|
||||
Priority,
|
||||
User,
|
||||
PID,
|
||||
Linear,
|
||||
Physical,
|
||||
__Count
|
||||
};
|
||||
|
||||
ProcessTableModel();
|
||||
virtual ~ProcessTableModel() override;
|
||||
|
||||
|
|
|
@ -1,11 +1,15 @@
|
|||
#include "ProcessTableView.h"
|
||||
#include "ProcessTableModel.h"
|
||||
|
||||
#include <LibGUI/GSortingProxyTableModel.h>
|
||||
#include <stdio.h>
|
||||
|
||||
ProcessTableView::ProcessTableView(GWidget* parent)
|
||||
: GTableView(parent)
|
||||
{
|
||||
set_model(make<ProcessTableModel>());
|
||||
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);
|
||||
start_timer(1000);
|
||||
model().update();
|
||||
}
|
||||
|
@ -32,13 +36,3 @@ pid_t ProcessTableView::selected_pid() const
|
|||
{
|
||||
return model().selected_pid();
|
||||
}
|
||||
|
||||
inline ProcessTableModel& ProcessTableView::model()
|
||||
{
|
||||
return static_cast<ProcessTableModel&>(*GTableView::model());
|
||||
}
|
||||
|
||||
inline const ProcessTableModel& ProcessTableView::model() const
|
||||
{
|
||||
return static_cast<const ProcessTableModel&>(*GTableView::model());
|
||||
}
|
||||
|
|
|
@ -21,7 +21,9 @@ protected:
|
|||
private:
|
||||
virtual void timer_event(GTimerEvent&) override;
|
||||
|
||||
ProcessTableModel& model();
|
||||
const ProcessTableModel& model() const;
|
||||
ProcessTableModel& model() { return *m_model; }
|
||||
const ProcessTableModel& model() const { return *m_model; }
|
||||
|
||||
ProcessTableModel* m_model { nullptr };
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue