diff --git a/common/include/filetypes.h b/common/include/filetypes.h index 45c6ffe..7842b3c 100644 --- a/common/include/filetypes.h +++ b/common/include/filetypes.h @@ -13,4 +13,5 @@ public: static FileType getFileType(const QString &extension); static QString getFiletypeName(FileType fileType); + static QString getFiletypeIcon(FileType fileType); }; \ No newline at end of file diff --git a/common/src/filetypes.cpp b/common/src/filetypes.cpp index 694f4ea..9c94fb0 100644 --- a/common/src/filetypes.cpp +++ b/common/src/filetypes.cpp @@ -25,6 +25,16 @@ const static QMap typeToName{{FileType::Unknown, i18n("Unknow {FileType::CharaMakeParams, i18n("Chara Make Params")}, {FileType::Skeleton, i18n("Skeleton")}}; +const static QMap typeToIcon{{FileType::Unknown, i18n("unknown")}, + {FileType::ExcelList, i18n("x-office-spreadsheet")}, + {FileType::ExcelHeader, i18n("x-office-spreadsheet")}, + {FileType::ExcelData, i18n("x-office-spreadsheet")}, + {FileType::Model, i18n("shape-cuboid-symbolic")}, + {FileType::Texture, i18n("viewimage-symbolic")}, + {FileType::ShaderPackage, i18n("paint-pattern-symbolic")}, + {FileType::CharaMakeParams, i18n("step_object_SoftBody-symbolic")}, + {FileType::Skeleton, i18n("user-symbolic")}}; + FileType FileTypes::getFileType(const QString &extension) { return extensionToType.value(extension, FileType::Unknown); @@ -34,3 +44,8 @@ QString FileTypes::getFiletypeName(FileType fileType) { return typeToName.value(fileType); } + +QString FileTypes::getFiletypeIcon(FileType fileType) +{ + return typeToIcon.value(fileType); +} diff --git a/sagasu/src/filetreemodel.cpp b/sagasu/src/filetreemodel.cpp index 67f9c23..3cb5028 100644 --- a/sagasu/src/filetreemodel.cpp +++ b/sagasu/src/filetreemodel.cpp @@ -2,9 +2,11 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "filetreemodel.h" +#include "filetypes.h" #include "physis.hpp" #include +#include #include FileTreeModel::FileTreeModel(HashDatabase &database, bool showUnknown, const QString &gamePath, GameData *data, QObject *parent) @@ -133,6 +135,15 @@ QVariant FileTreeModel::data(const QModelIndex &index, int role) const return item->name; } } + } else if (role == Qt::DecorationRole) { + if (item->type == TreeType::Folder) { + return QIcon::fromTheme(QStringLiteral("folder-black-symbolic")); + } else if (item->type == TreeType::File) { + QFileInfo info(item->name); + const FileType type = FileTypes::getFileType(info.completeSuffix()); + + return QIcon::fromTheme(FileTypes::getFiletypeIcon(type)); + } } return {};