This repository has been archived on 2025-03-20. You can view files and clone it, but cannot push or open issues or pull requests.
The-Powder-Toy/src/gui/filebrowser/FileBrowserActivity.h
2023-05-11 12:40:23 +02:00

65 lines
1.6 KiB
C++

#pragma once
#include "common/String.h"
#include "Activity.h"
#include "tasks/TaskListener.h"
#include <vector>
#include <functional>
#include <memory>
class SaveFile;
namespace ui
{
class Label;
class ScrollPanel;
class ProgressBar;
}
class LoadFilesTask;
class FileBrowserActivity: public TaskListener, public WindowActivity
{
using OnSelected = std::function<void (std::unique_ptr<SaveFile>)>;
LoadFilesTask * loadFiles;
OnSelected onSelected;
ui::ScrollPanel * itemList;
ui::Label * infoText;
std::vector<std::unique_ptr<SaveFile>> files;
bool createButtons = false;
std::vector<ui::Component*> components;
std::vector<ui::Component*> componentsQueue;
ByteString directory;
bool hasQueuedSearch;
ByteString queuedSearch;
ui::ProgressBar * progressBar;
int totalFiles;
int filesX, filesY, buttonPadding;
int fileX, fileY;
int buttonWidth, buttonHeight, buttonAreaWidth, buttonAreaHeight, buttonXOffset, buttonYOffset;
void populateList();
void cleanup();
public:
FileBrowserActivity(ByteString directory, OnSelected onSelected = nullptr);
virtual ~FileBrowserActivity();
void OnDraw() override;
void OnTick(float dt) override;
void OnTryExit(ExitMethod method) override;
void OnMouseDown(int x, int y, unsigned button) override;
void loadDirectory(ByteString directory, ByteString search);
void SelectSave(int index);
void DeleteSave(int index);
void RenameSave(int index);
void DoSearch(ByteString search);
void NotifyDone(Task * task) override;
void NotifyError(Task * task) override;
void NotifyProgress(Task * task) override;
void NotifyStatus(Task * task) override;
};