Skip to content

Commit 393c022

Browse files
committed
added visible parts and copyright options to job params
1 parent 6f1ec39 commit 393c022

File tree

4 files changed

+62
-9
lines changed

4 files changed

+62
-9
lines changed

src/converter/internal/convertercontroller.cpp

Lines changed: 41 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ Ret ConverterController::batchConvert(const muse::io::path_t& batchJobFile, cons
7878
progress->progress(current, total, job.in.toStdString());
7979
}
8080

81-
Ret ret = fileConvert(job.in, job.out, openParams, soundProfile, extensionUri, job.transposeOptions, job.pageNum);
81+
Ret ret = fileConvert(job.in, job.out, openParams, soundProfile, extensionUri, job.transposeOptions, job.pageNum, job.visibleParts,
82+
job.copyright);
8283
if (!ret) {
8384
errors.emplace_back(String(u"failed convert, err: %1, in: %2, out: %3")
8485
.arg(String::fromStdString(ret.toString())).arg(job.in.toString()).arg(job.out.toString()));
@@ -125,7 +126,8 @@ Ret ConverterController::fileConvert(const muse::io::path_t& in, const muse::io:
125126
const String& soundProfile,
126127
const muse::UriQuery& extensionUri,
127128
const std::optional<notation::TransposeOptions>& transposeOptions,
128-
const std::optional<size_t>& pageNum)
129+
const std::optional<size_t>& pageNum, const std::vector<size_t>& visibleParts,
130+
const muse::String& copyright)
129131
{
130132
TRACEFUNC;
131133

@@ -162,6 +164,16 @@ Ret ConverterController::fileConvert(const muse::io::path_t& in, const muse::io:
162164
}
163165
}
164166

167+
if (!visibleParts.empty()) {
168+
ConverterUtils::setVisibleParts(notationProject->masterNotation()->notation(), visibleParts);
169+
}
170+
171+
if (!copyright.isEmpty()) {
172+
ProjectMeta meta = notationProject->metaInfo();
173+
meta.copyright += copyright;
174+
notationProject->setMetaInfo(meta);
175+
}
176+
165177
globalContext()->setCurrentProject(notationProject);
166178

167179
DEFER {
@@ -298,6 +310,33 @@ RetVal<ConverterController::BatchJob> ConverterController::parseBatchJob(const m
298310
job.pageNum = pageVal.toInt() - 1;
299311
}
300312

313+
QJsonValue visibleParts = obj[u"visibleParts"];
314+
if (!visibleParts.isUndefined()) {
315+
if (visibleParts.isArray()) {
316+
const QJsonArray partsArray = visibleParts.toArray();
317+
for (const auto part : partsArray) {
318+
if (part.isDouble()) {
319+
job.visibleParts.push_back(part.toInt());
320+
} else {
321+
LOGE() << "Visible parts value must be a Number";
322+
}
323+
}
324+
} else {
325+
rv.ret = make_ret(Err::BatchJobFileFailedParse, err.errorString().toStdString());
326+
return rv;
327+
}
328+
}
329+
330+
QJsonValue copyright = obj[u"copyright"];
331+
if (!copyright.isUndefined()) {
332+
if (copyright.isString()) {
333+
job.copyright = copyright.toString();
334+
} else {
335+
rv.ret = make_ret(Err::BatchJobFileFailedParse, err.errorString().toStdString());
336+
return rv;
337+
}
338+
}
339+
301340
const QJsonValue outValue = obj[u"out"];
302341
if (outValue.isString()) {
303342
job.out = correctUserInputPath(outValue.toString());

src/converter/internal/convertercontroller.h

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,12 @@ class ConverterController : public IConverterController, public muse::Injectable
4848
: muse::Injectable(iocCtx) {}
4949

5050
muse::Ret fileConvert(const muse::io::path_t& in, const muse::io::path_t& out, const OpenParams& openParams = {},
51-
const muse::String& soundProfile = muse::String(),
52-
const muse::UriQuery& extensionUri = muse::UriQuery(), const std::string& transposeOptionsJson = {},
53-
const std::optional<size_t>& pageNum = std::nullopt) override;
51+
const muse::String& soundProfile = muse::String(), const muse::UriQuery& extensionUri = muse::UriQuery(),
52+
const std::string& transposeOptionsJson = {}, const std::optional<size_t>& pageNum = std::nullopt) override;
5453

5554
muse::Ret batchConvert(const muse::io::path_t& batchJobFile, const OpenParams& openParams = {},
56-
const muse::String& soundProfile = muse::String(),
57-
const muse::UriQuery& extensionUri = muse::UriQuery(), muse::ProgressPtr progress = nullptr) override;
55+
const muse::String& soundProfile = muse::String(), const muse::UriQuery& extensionUri = muse::UriQuery(),
56+
muse::ProgressPtr progress = nullptr) override;
5857

5958
muse::Ret convertScoreParts(const muse::io::path_t& in, const muse::io::path_t& out, const OpenParams& openParams = {}) override;
6059

@@ -80,15 +79,19 @@ class ConverterController : public IConverterController, public muse::Injectable
8079
muse::io::path_t out;
8180
std::optional<notation::TransposeOptions> transposeOptions;
8281
std::optional<size_t> pageNum;
82+
std::vector<size_t> visibleParts;
83+
muse::String copyright;
8384
};
8485

8586
using BatchJob = std::vector<Job>;
87+
using TransposeOpts = std::optional<notation::TransposeOptions>;
8688

8789
muse::RetVal<BatchJob> parseBatchJob(const muse::io::path_t& batchJobFile) const;
8890

8991
muse::Ret fileConvert(const muse::io::path_t& in, const muse::io::path_t& out, const OpenParams& openParams = {},
90-
const muse::String& soundProfile = muse::String(),
91-
const muse::UriQuery& extensionUri = muse::UriQuery(), const std::optional<notation::TransposeOptions>& transposeOptions = std::nullopt, const std::optional<size_t>& pageNum = std::nullopt);
92+
const muse::String& soundProfile = muse::String(), const muse::UriQuery& extensionUri = muse::UriQuery(),
93+
const TransposeOpts& transposeOptions = std::nullopt, const std::optional<size_t>& pageNum = std::nullopt,
94+
const std::vector<size_t>& visibleParts = std::vector<size_t>(), const muse::String& copyright = muse::String());
9295

9396
muse::Ret convertScoreParts(project::INotationWriterPtr writer, notation::IMasterNotationPtr masterNotation,
9497
const muse::io::path_t& out);

src/converter/internal/converterutils.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,13 @@ Ret ConverterUtils::applyTranspose(const INotationPtr notation, const TransposeO
128128

129129
return ok ? make_ret(Ret::Code::Ok) : make_ret(Err::TransposeFailed);
130130
}
131+
132+
void ConverterUtils::setVisibleParts(const INotationPtr notation, const std::vector<size_t>& visibleParts)
133+
{
134+
const INotationPartsPtr parts = notation->parts();
135+
for (const Part* p : parts->partList()) {
136+
// Receiving in a 0 based order
137+
const size_t id = p->id().toUint64() - 1;
138+
parts->setPartVisible(p->id(), muse::contains(visibleParts, id));
139+
}
140+
}

src/converter/internal/converterutils.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,5 +33,6 @@ class ConverterUtils
3333

3434
static muse::Ret applyTranspose(const notation::INotationPtr notation, const std::string& optionsJson);
3535
static muse::Ret applyTranspose(const notation::INotationPtr notation, const notation::TransposeOptions& options);
36+
static void setVisibleParts(const notation::INotationPtr notation, const std::vector<size_t>& visibleParts);
3637
};
3738
}

0 commit comments

Comments
 (0)