Expandable sidebar

This commit is contained in:
Joey Yakimowich-Payne 2026-01-27 17:53:50 -07:00
commit e326eabbf8
4 changed files with 125 additions and 17 deletions

View file

@ -549,6 +549,9 @@ void PipeWireGraphModel::autoArrange()
void PipeWireGraphModel::loadLayout()
{
m_layoutByStableId.clear();
m_hasViewState = false;
m_hasSplitterSizes = false;
m_splitterSizes.clear();
const QString path = layoutFilePath();
if (path.isEmpty()) {
return;
@ -578,6 +581,19 @@ void PipeWireGraphModel::loadLayout()
m_viewCenter = QPointF(x, y);
m_hasViewState = true;
}
const QJsonArray splitter = root.value("splitter").toArray();
if (!splitter.isEmpty()) {
QList<int> sizes;
sizes.reserve(splitter.size());
for (const auto &value : splitter) {
sizes.append(value.toInt());
}
if (!sizes.isEmpty()) {
m_splitterSizes = sizes;
m_hasSplitterSizes = true;
}
}
}
}
@ -786,6 +802,13 @@ void PipeWireGraphModel::writeLayoutToFile(const QString &path) const
view["center_x"] = m_viewCenter.x();
view["center_y"] = m_viewCenter.y();
root["view"] = view;
if (m_hasSplitterSizes && !m_splitterSizes.isEmpty()) {
QJsonArray splitter;
for (const auto size : m_splitterSizes) {
splitter.append(size);
}
root["splitter"] = splitter;
}
QFile file(path);
QDir().mkpath(QFileInfo(path).absolutePath());
@ -826,4 +849,20 @@ bool PipeWireGraphModel::viewState(double &scale, QPointF &center) const
center = m_viewCenter;
return true;
}
void PipeWireGraphModel::setSplitterSizes(const QList<int> &sizes)
{
m_splitterSizes = sizes;
m_hasSplitterSizes = !sizes.isEmpty();
}
bool PipeWireGraphModel::splitterSizes(QList<int> &sizes) const
{
if (!m_hasSplitterSizes) {
return false;
}
sizes = m_splitterSizes;
return !sizes.isEmpty();
}
#include <QtNodes/StyleCollection>