This commit is contained in:
Joey Yakimowich-Payne 2026-01-30 09:24:46 -07:00
commit a07f94c93d
10 changed files with 718 additions and 25 deletions

View file

@ -84,11 +84,28 @@ bool PresetManager::savePreset(const QString &path, warppipe::Client *client,
layoutArray.append(nodeLayout);
}
QJsonArray volumesArray;
for (auto qtId : model->allNodeIds()) {
const WarpNodeData *data = model->warpNodeData(qtId);
if (!data)
continue;
auto vs = model->nodeVolumeState(qtId);
if (vs.volume != 1.0f || vs.mute) {
QJsonObject volObj;
volObj["name"] = QString::fromStdString(data->info.name);
volObj["volume"] = static_cast<double>(vs.volume);
volObj["mute"] = vs.mute;
volumesArray.append(volObj);
}
}
QJsonObject root;
root["version"] = 1;
root["virtual_devices"] = devicesArray;
root["routing"] = routingArray;
root["layout"] = layoutArray;
if (!volumesArray.isEmpty())
root["volumes"] = volumesArray;
QFileInfo fi(path);
QDir dir = fi.absoluteDir();
@ -173,5 +190,27 @@ bool PresetManager::loadPreset(const QString &path, warppipe::Client *client,
}
model->refreshFromClient();
if (root.contains("volumes")) {
QJsonArray volumesArray = root["volumes"].toArray();
for (const auto &val : volumesArray) {
QJsonObject obj = val.toObject();
std::string name = obj["name"].toString().toStdString();
float volume = static_cast<float>(obj["volume"].toDouble(1.0));
bool mute = obj["mute"].toBool(false);
for (auto qtId : model->allNodeIds()) {
const WarpNodeData *data = model->warpNodeData(qtId);
if (data && data->info.name == name) {
WarpGraphModel::NodeVolumeState vs;
vs.volume = volume;
vs.mute = mute;
model->setNodeVolumeState(qtId, vs);
break;
}
}
}
}
return true;
}