2023-07-24 15:07:18 +00:00
|
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
//
|
2023-12-02 08:52:24 +00:00
|
|
|
// ES-DE Frontend
|
2023-07-24 15:07:18 +00:00
|
|
|
// GuiOrphanedDataCleanup.h
|
|
|
|
//
|
|
|
|
// Removes orphaned game media, gamelist.xml entries and custom collections entries.
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef ES_APP_GUIS_GUI_ORPHANED_DATA_CLEANUP_H
|
|
|
|
#define ES_APP_GUIS_GUI_ORPHANED_DATA_CLEANUP_H
|
|
|
|
|
|
|
|
#include "GuiComponent.h"
|
|
|
|
#include "components/BusyComponent.h"
|
|
|
|
#include "guis/GuiSettings.h"
|
|
|
|
#include "views/ViewController.h"
|
|
|
|
|
|
|
|
#include <atomic>
|
|
|
|
#include <mutex>
|
|
|
|
#include <thread>
|
|
|
|
|
|
|
|
class GuiOrphanedDataCleanup : public GuiComponent
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
GuiOrphanedDataCleanup(std::function<void()> reloadCallback);
|
|
|
|
~GuiOrphanedDataCleanup();
|
|
|
|
|
|
|
|
void cleanupMediaFiles();
|
|
|
|
void cleanupGamelists();
|
|
|
|
void cleanupCollections();
|
|
|
|
|
|
|
|
void update(int deltaTime) override;
|
|
|
|
void render(const glm::mat4& parentTrans) override;
|
|
|
|
|
|
|
|
private:
|
|
|
|
void onSizeChanged() override;
|
|
|
|
bool input(InputConfig* config, Input input) override;
|
|
|
|
|
|
|
|
std::vector<HelpPrompt> getHelpPrompts() override;
|
|
|
|
HelpStyle getHelpStyle() override { return ViewController::getInstance()->getViewHelpStyle(); }
|
|
|
|
|
|
|
|
Renderer* mRenderer;
|
|
|
|
NinePatchComponent mBackground;
|
|
|
|
ComponentGrid mGrid;
|
|
|
|
BusyComponent mBusyAnim;
|
|
|
|
std::function<void()> mReloadCallback;
|
|
|
|
|
|
|
|
std::shared_ptr<ComponentGrid> mButtons;
|
|
|
|
std::shared_ptr<ButtonComponent> mButton1;
|
|
|
|
std::shared_ptr<ButtonComponent> mButton2;
|
|
|
|
std::shared_ptr<ButtonComponent> mButton3;
|
|
|
|
std::shared_ptr<ButtonComponent> mButton4;
|
|
|
|
|
|
|
|
std::shared_ptr<TextComponent> mTitle;
|
|
|
|
std::shared_ptr<TextComponent> mStatus;
|
|
|
|
std::shared_ptr<TextComponent> mDescriptionHeader;
|
|
|
|
std::shared_ptr<TextComponent> mDescription;
|
|
|
|
std::shared_ptr<TextComponent> mSystemProcessingHeader;
|
|
|
|
std::shared_ptr<TextComponent> mEntryCountHeader;
|
|
|
|
std::shared_ptr<TextComponent> mSystemProcessing;
|
|
|
|
std::shared_ptr<TextComponent> mEntryCount;
|
|
|
|
std::shared_ptr<TextComponent> mErrorHeader;
|
|
|
|
std::shared_ptr<TextComponent> mError;
|
|
|
|
|
|
|
|
std::unique_ptr<std::thread> mThread;
|
|
|
|
std::mutex mMutex;
|
|
|
|
int mCursorPos;
|
|
|
|
|
|
|
|
std::string mMediaDescription;
|
|
|
|
std::string mGamelistDescription;
|
|
|
|
std::string mCollectionsDescription;
|
|
|
|
std::string mCurrentSystem;
|
|
|
|
std::string mErrorMessage;
|
|
|
|
|
|
|
|
std::string mMediaDirectory;
|
|
|
|
std::vector<std::string> mMediaTypes;
|
|
|
|
|
|
|
|
std::atomic<bool> mIsProcessing;
|
|
|
|
std::atomic<bool> mStopProcessing;
|
|
|
|
std::atomic<bool> mCompleted;
|
|
|
|
std::atomic<bool> mFailed;
|
|
|
|
std::atomic<bool> mNeedsReloading;
|
|
|
|
std::atomic<int> mProcessedCount;
|
|
|
|
bool mHasCustomCollections;
|
2023-11-05 13:40:02 +00:00
|
|
|
bool mCaseSensitiveFilesystem;
|
2023-07-24 15:07:18 +00:00
|
|
|
|
|
|
|
enum class CleanupType {
|
|
|
|
MEDIA,
|
|
|
|
GAMELISTS,
|
|
|
|
COLLECTIONS
|
|
|
|
};
|
|
|
|
|
|
|
|
CleanupType mCleanupType;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // ES_APP_GUIS_GUI_ORPHANED_DATA_CLEANUP_H
|