// SPDX-License-Identifier: MIT // // EmulationStation Desktop Edition // ISimpleGameListView.h // // Interface that defines a simple gamelist view. // #ifndef ES_APP_VIEWS_GAME_LIST_ISIMPLE_GAME_LIST_VIEW_H #define ES_APP_VIEWS_GAME_LIST_ISIMPLE_GAME_LIST_VIEW_H #include "views/gamelist/IGameListView.h" #include "components/ImageComponent.h" #include "components/TextComponent.h" #include <stack> class ISimpleGameListView : public IGameListView { public: ISimpleGameListView(Window* window, FileData* root); virtual ~ISimpleGameListView(); // Called when a FileData* is added, has its metadata changed, or is removed. virtual void onFileChanged(FileData* file, bool reloadGameList) override; // Called whenever the theme changes. virtual void onThemeChanged(const std::shared_ptr<ThemeData>& theme) override; virtual FileData* getCursor() override = 0; virtual void setCursor(FileData*) override = 0; virtual void addPlaceholder(FileData*) override = 0; virtual bool input(InputConfig* config, Input input) override; virtual void launch(FileData* game) override = 0; virtual const std::vector<std::string>& getFirstLetterIndex() override = 0; // These functions are used to retain the folder cursor history, for instance // during a view reload. The calling function stores the history temporarily. void copyCursorHistory(std::vector<FileData*>& cursorHistory) override { cursorHistory = mCursorStackHistory; }; void populateCursorHistory(std::vector<FileData*>& cursorHistory) override { mCursorStackHistory = cursorHistory; }; protected: virtual std::string getQuickSystemSelectRightButton() = 0; virtual std::string getQuickSystemSelectLeftButton() = 0; virtual void populateList(const std::vector<FileData*>& files, FileData* firstEntry) = 0; void generateGamelistInfo(FileData* cursor, FileData* firstEntry); void generateFirstLetterIndex(const std::vector<FileData*>& files); TextComponent mHeaderText; ImageComponent mHeaderImage; ImageComponent mBackground; std::vector<GuiComponent*> mThemeExtras; std::stack<FileData*> mCursorStack; std::vector<FileData*> mCursorStackHistory; // This game is randomly selected in the grouped custom collections view. FileData* mRandomGame; std::vector<std::string> mFirstLetterIndex; unsigned int mGameCount; unsigned int mFavoritesGameCount; unsigned int mFilteredGameCount; unsigned int mFilteredGameCountAll; bool mIsFiltered; bool mIsFolder; }; #endif // ES_APP_VIEWS_GAME_LIST_ISIMPLE_GAME_LIST_VIEW_H