1 // Copyright 2016 Dolphin Emulator Project 2 // Licensed under GPLv2+ 3 // Refer to the license.txt file included. 4 5 #pragma once 6 7 #include <QDialog> 8 #include <QIcon> 9 #include <memory> 10 11 class QStandardItem; 12 class QStandardItemModel; 13 class QTreeView; 14 15 namespace DiscIO 16 { 17 class FileInfo; 18 class Volume; 19 20 struct Partition; 21 } // namespace DiscIO 22 23 class FilesystemWidget final : public QWidget 24 { 25 Q_OBJECT 26 public: 27 explicit FilesystemWidget(std::shared_ptr<DiscIO::Volume> volume); 28 ~FilesystemWidget() override; 29 30 private: 31 void CreateWidgets(); 32 void ConnectWidgets(); 33 void PopulateView(); 34 void PopulateDirectory(int partition_id, QStandardItem* root, const DiscIO::Partition& partition); 35 void PopulateDirectory(int partition_id, QStandardItem* root, const DiscIO::FileInfo& directory); 36 37 QString SelectFolder(); 38 39 void ShowContextMenu(const QPoint&); 40 41 void ExtractPartition(const DiscIO::Partition& partition, const QString& out); 42 void ExtractDirectory(const DiscIO::Partition& partition, const QString& path, 43 const QString& out); 44 void ExtractFile(const DiscIO::Partition& partition, const QString& path, const QString& out); 45 bool ExtractSystemData(const DiscIO::Partition& partition, const QString& out); 46 47 DiscIO::Partition GetPartitionFromID(int id); 48 49 QStandardItemModel* m_tree_model; 50 QTreeView* m_tree_view; 51 52 std::shared_ptr<DiscIO::Volume> m_volume; 53 54 QIcon m_folder_icon; 55 QIcon m_file_icon; 56 }; 57