// Copyright 2015 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include #include #include #include #include #include class GameListWorker; class GameList : public QWidget { Q_OBJECT public: enum { COLUMN_NAME, COLUMN_FILE_TYPE, COLUMN_SIZE, COLUMN_COUNT, // Number of columns }; explicit GameList(QWidget* parent = nullptr); ~GameList() override; void PopulateAsync(const QString& dir_path, bool deep_scan); void SaveInterfaceLayout(); void LoadInterfaceLayout(); static const QStringList supported_file_extensions; signals: void GameChosen(QString game_path); void ShouldCancelWorker(); void OpenSaveFolderRequested(u64 program_id); private: void AddEntry(const QList& entry_items); void ValidateEntry(const QModelIndex& item); void DonePopulating(); void PopupContextMenu(const QPoint& menu_location); void UpdateWatcherList(const std::string& path, unsigned int recursion); void RefreshGameDirectory(); QTreeView* tree_view = nullptr; QStandardItemModel* item_model = nullptr; GameListWorker* current_worker = nullptr; QFileSystemWatcher watcher; };