From 97b5778172572504c8dfbe173b18281e786270c0 Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Fri, 25 Apr 2025 16:18:26 +0200 Subject: Initial commit --- qt-quick/adapter.h | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 qt-quick/adapter.h (limited to 'qt-quick/adapter.h') diff --git a/qt-quick/adapter.h b/qt-quick/adapter.h new file mode 100644 index 0000000..bde618f --- /dev/null +++ b/qt-quick/adapter.h @@ -0,0 +1,55 @@ +#ifndef ADAPTER_H +#define ADAPTER_H + +#include "../nissy-core/cpp/nissy.h" + +#include +#include +#include +#include + +struct SolveOptions { + nissy::cube cube; + nissy::solver *solver; + unsigned minmoves; + unsigned maxmoves; + unsigned maxsolutions; + unsigned optimal; +}; + +class NissyAdapter : public QObject { + Q_OBJECT + QML_SINGLETON + QML_ELEMENT + +public: + static constexpr int maxSolutionsHardLimit = 9999; + + NissyAdapter(); + + Q_INVOKABLE bool isValidScramble(QString); + Q_INVOKABLE void requestSolve( + QString scramble, + QString solver, + int minmoves, + int maxmoves, + int maxsolutions, + int optimal + ); + +signals: + void solutionsReady(QString, QString); + void solverError(QString); + void appendLog(QString); + +private: + std::vector solvers; + std::function writeLog; + + void initSolver(const std::string&); + void startSolve(SolveOptions); + bool loadSolverData(nissy::solver&); + void logLine(std::string); +}; + +#endif -- cgit v1.3