- Add a "scheduler" key to the config file that lets you define multiple image selectors and time windows they are valid for

This commit is contained in:
Alfred Reynolds
2021-08-21 15:58:16 +12:00
parent de7af88e53
commit 66d619f49e
5 changed files with 237 additions and 58 deletions

View File

@@ -4,6 +4,7 @@
#include <iostream>
#include <memory>
#include <QStringList>
#include <QVector>
#include "imagestructs.h"
class MainWindow;
@@ -13,6 +14,7 @@ class ImageSelector
{
public:
ImageSelector(std::unique_ptr<PathTraverser>& pathTraverser);
ImageSelector(); // use case for when you don't own your own traverser
virtual ~ImageSelector();
virtual const ImageDetails getNextImage(const ImageDisplayOptions &baseOptions) = 0;
void setDebugMode(bool debugModeIn);
@@ -61,4 +63,22 @@ private:
void reloadImagesIfEmpty();
QStringList images;
};
class ListImageSelector : public ImageSelector
{
public:
ListImageSelector();
virtual ~ListImageSelector();
virtual const ImageDetails getNextImage(const ImageDisplayOptions &baseOptions);
void AddImageSelector(std::unique_ptr<ImageSelector>& selector, const QVector<DisplayTimeWindow> &displayTimeWindows, const bool exclusiveIn);
private:
struct SelectoryEntry {
std::unique_ptr<ImageSelector> selector;
QVector<DisplayTimeWindow> displayTimeWindows;
bool exclusive = false;
};
std::vector<SelectoryEntry> imageSelectors;
std::vector<SelectoryEntry>::iterator currentSelector;
};
#endif // IMAGESELECTOR_H