33 lines
691 B
C
33 lines
691 B
C
|
|
#pragma once
|
||
|
|
|
||
|
|
#include <Arduino.h>
|
||
|
|
#include <vector>
|
||
|
|
#include "settings.h"
|
||
|
|
|
||
|
|
class ImmichClient;
|
||
|
|
|
||
|
|
class PhotoQueue {
|
||
|
|
public:
|
||
|
|
void begin(ImmichClient& client, SettingsManager& settings);
|
||
|
|
bool sync();
|
||
|
|
String next();
|
||
|
|
String random();
|
||
|
|
String current();
|
||
|
|
size_t size();
|
||
|
|
bool needsResync();
|
||
|
|
String findPortraitPair(size_t startIndex);
|
||
|
|
|
||
|
|
private:
|
||
|
|
ImmichClient* _client = nullptr;
|
||
|
|
SettingsManager* _settings = nullptr;
|
||
|
|
|
||
|
|
std::vector<String> _queue;
|
||
|
|
size_t _cursor = 0;
|
||
|
|
unsigned long _lastSyncTime = 0;
|
||
|
|
|
||
|
|
void shuffle();
|
||
|
|
void sortChronological(bool reverse);
|
||
|
|
void applyFavoritesWeighting();
|
||
|
|
std::vector<String> getSelectedAlbumIds();
|
||
|
|
};
|