Loading...
Searching...
No Matches
OnlineExamples.hpp
1#pragma once
2#include <QObject>
3#include <QString>
4
5#include <score_lib_base_export.h>
6
7#include <functional>
8#include <vector>
9#include <verdigris>
10
11namespace score
12{
14struct SCORE_LIB_BASE_EXPORT OnlineExample
15{
16 QString id;
17 QString name;
18 QString description;
19 QString section;
20 QString group;
21 QString category;
22 QString page;
23 QString file;
24 QString format;
25 QString image;
26 qint64 size{};
27};
28
30class SCORE_LIB_BASE_EXPORT OnlineExamples : public QObject
31{
32 W_OBJECT(OnlineExamples)
33
34public:
35 explicit OnlineExamples(QObject* parent = nullptr);
36 ~OnlineExamples() override;
37
38 static QString manifestUrl();
39 static QString installRoot();
40
41 const std::vector<OnlineExample>& examples() const noexcept { return m_examples; }
42
44 void loadCache();
45
47 void refresh();
48
49 static QString installFolder(const OnlineExample& ex);
50
52 static QString localPath(const OnlineExample& ex);
53
55 void install(const OnlineExample& ex, std::function<void(QString)> done);
56
57 void updated() W_SIGNAL(updated)
58
59private:
60 void refresh(bool conditional);
61 static QString cacheFolder();
62 void parse(const QByteArray& json);
63 static QString write(const OnlineExample& ex, const QByteArray& data);
64
65 std::vector<OnlineExample> m_examples;
66 QString m_etag;
67};
68}
Reads, caches and refreshes the documentation site's manifest.
Definition OnlineExamples.hpp:31
Base toolkit upon which the software is built.
Definition Application.cpp:108
One entry of assets/scores/index.json.
Definition OnlineExamples.hpp:15
QString file
The .score or .zip to download.
Definition OnlineExamples.hpp:23
QString id
e.g.
Definition OnlineExamples.hpp:16
QString section
"examples", "reference"...
Definition OnlineExamples.hpp:19
QString group
Folder within the section.
Definition OnlineExamples.hpp:20
QString format
"score" or "zip"
Definition OnlineExamples.hpp:24
QString page
Documentation page, may be empty.
Definition OnlineExamples.hpp:22