Something went wrong. Try again.
A fork of https://github.com/crosspoint-reader/crosspoint-reader
Something went wrong. Try again.
2.0 kB · 61 lines
C
at master
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162#pragma once#include <Logging.h>
#include <cassert>#include <memory>#include <string>#include <utility>
#include "ActivityManager.h" // for using the ActivityManager singleton#include "ActivityResult.h"#include "GfxRenderer.h"#include "MappedInputManager.h"#include "RenderLock.h"
class Activity { friend class ActivityManager;
protected: std::string name; GfxRenderer& renderer; MappedInputManager& mappedInput;
ActivityResultHandler resultHandler; ActivityResult result;
public: explicit Activity(std::string name, GfxRenderer& renderer, MappedInputManager& mappedInput) : name(std::move(name)), renderer(renderer), mappedInput(mappedInput) {} virtual ~Activity() = default; virtual void onEnter(); virtual void onExit(); virtual void loop() {}
virtual void render(RenderLock&&) {}
// If immediate is true, the update will be triggered immediately. // Otherwise, it will be deferred until the end of the current loop iteration. virtual void requestUpdate(bool immediate = false);
// Request an immediate render and block until it completes. virtual void requestUpdateAndWait();
virtual bool skipLoopDelay() { return false; } virtual bool preventAutoSleep() { return false; } virtual bool isReaderActivity() const { return false; }
// Start a new activity without destroying the current one // Note: requestUpdate() will be invoked automatically once resultHandler finishes void startActivityForResult(std::unique_ptr<Activity>&& activity, ActivityResultHandler resultHandler);
// Set the result to be passed back to the previous activity when this activity finishes void setResult(ActivityResult&& result);
// Finish this activity and return to the previous one on the stack (if any) void finish();
// Convenience method to facilitate API transition to ActivityManager // TODO: remove this in near future void onGoHome(); void onSelectBook(const std::string& path);};