mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-02-23 08:06:11 +00:00
LibGUI: Support editing filenames through FileSystemModel :^)
This commit is contained in:
@@ -39,6 +39,7 @@
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
@@ -606,4 +607,24 @@ void FileSystemModel::set_should_show_dotfiles(bool show)
|
||||
update();
|
||||
}
|
||||
|
||||
bool FileSystemModel::is_editable(const ModelIndex& index) const
|
||||
{
|
||||
if (!index.is_valid())
|
||||
return false;
|
||||
return index.column() == Column::Name;
|
||||
}
|
||||
|
||||
void FileSystemModel::set_data(const ModelIndex& index, const Variant& data)
|
||||
{
|
||||
ASSERT(is_editable(index));
|
||||
Node& node = const_cast<Node&>(this->node(index));
|
||||
auto dirname = LexicalPath(node.full_path()).dirname();
|
||||
auto new_full_path = String::formatted("{}/{}", dirname, data.to_string());
|
||||
int rc = rename(node.full_path().characters(), new_full_path.characters());
|
||||
if (rc < 0) {
|
||||
if (on_error)
|
||||
on_error(errno, strerror(errno));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user