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 <map>
9#include <vector>
10#include <verdigris>
11
12namespace score
13{
15struct SCORE_LIB_BASE_EXPORT OnlineExample
16{
17 QString id;
18 QString name;
19 QString description;
20 QString section;
21 QString group;
22 QString category;
23 QString page;
24 QString file;
25 QString format;
26 QString image;
27 qint64 size{};
30 QString fingerprint;
31};
32
34class SCORE_LIB_BASE_EXPORT OnlineExamples : public QObject
35{
36 W_OBJECT(OnlineExamples)
37
38public:
39 explicit OnlineExamples(QObject* parent = nullptr);
40 ~OnlineExamples() override;
41
42 static QString manifestUrl();
43 static QString installRoot();
44
45 const std::vector<OnlineExample>& examples() const noexcept { return m_examples; }
46
48 void loadCache();
49
51 void refresh();
52
55 static QString installFolder(const OnlineExample& ex);
56
58 static QString contentFolder(const QString& folder);
59
61 static QString localPath(const OnlineExample& ex);
62
66 static bool changedOnline(const OnlineExample& ex);
67
74 void install(
75 const OnlineExample& ex, std::function<void(QString)> done, bool replace = false);
76
77 bool isDownloading(const OnlineExample& ex) const;
78
79 void updated() E_SIGNAL(SCORE_LIB_BASE_EXPORT, updated)
80
81private:
82 void refresh(bool conditional);
83 static QString cacheFolder();
84 void parse(const QByteArray& json);
85 static QString write(const OnlineExample& ex, const QByteArray& data);
86
87 std::vector<OnlineExample> m_examples;
89 std::map<QString, std::vector<std::function<void(QString)>>> m_downloads;
90 QString m_etag;
91};
92}
Reads, caches and refreshes the documentation site's manifest.
Definition OnlineExamples.hpp:35
Base toolkit upon which the software is built.
Definition Application.cpp:83
One entry of assets/scores/index.json.
Definition OnlineExamples.hpp:16
QString file
The .score or .zip to download.
Definition OnlineExamples.hpp:24
QString id
e.g.
Definition OnlineExamples.hpp:17
QString section
"examples", "reference"...
Definition OnlineExamples.hpp:20
QString fingerprint
Definition OnlineExamples.hpp:30
QString group
Folder within the section.
Definition OnlineExamples.hpp:21
QString format
"score" or "zip"
Definition OnlineExamples.hpp:25
QString page
Documentation page, may be empty.
Definition OnlineExamples.hpp:23