1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-19 18:37:34 +00:00
serenity/Applications/FileManager/DirectoryTableView.cpp
Andreas Kling e14dd06b8c FileManager: Hook up a GSortingProxyTableModel so we get sorted files. :^)
The next step here is coming up with a nice way to always put directories
ahead of files.
2019-03-09 14:52:25 +01:00

45 lines
1.3 KiB
C++

#include "DirectoryTableView.h"
#include <LibGUI/GSortingProxyTableModel.h>
DirectoryTableView::DirectoryTableView(GWidget* parent)
: GTableView(parent)
{
auto directory_model = make<DirectoryTableModel>();
m_model = directory_model.ptr();
set_model(make<GSortingProxyTableModel>(move(directory_model)));
GTableView::model()->set_key_column_and_sort_order(DirectoryTableModel::Column::Name, GSortOrder::Ascending);
}
DirectoryTableView::~DirectoryTableView()
{
}
void DirectoryTableView::open(const String& path)
{
model().open(path);
}
void DirectoryTableView::model_notification(const GModelNotification& notification)
{
if (notification.type() == GModelNotification::Type::ModelUpdated) {
set_status_message(String::format("%d item%s (%u byte%s)",
model().row_count(),
model().row_count() != 1 ? "s" : "",
model().bytes_in_files(),
model().bytes_in_files() != 1 ? "s" : ""));
if (on_path_change)
on_path_change(model().path());
}
}
void DirectoryTableView::set_status_message(const String& message)
{
if (on_status_message)
on_status_message(message);
}
void DirectoryTableView::open_parent_directory()
{
model().open(String::format("%s/..", model().path().characters()));
}