Allow to save "selected objects" only as JSON

This commit is contained in:
Klaus Basan
2018-10-17 19:38:07 +02:00
parent 6d696cfd91
commit f4822b69dd
4 changed files with 52 additions and 24 deletions

View File

@@ -740,16 +740,22 @@ namespace BlackGui
}
template <typename ObjectType, typename ContainerType, bool UseCompare>
QJsonObject CListModelBase<ObjectType, ContainerType, UseCompare>::toJson() const
QJsonObject CListModelBase<ObjectType, ContainerType, UseCompare>::toJson(bool selectedOnly) const
{
const CVariant variant = CVariant::fromValue(container());
const CVariant variant = CVariant::fromValue(
selectedOnly && m_selectionModel ?
m_selectionModel->selectedObjects() :
container());
return variant.toJson();
}
template <typename ObjectType, typename ContainerType, bool UseCompare>
QString CListModelBase<ObjectType, ContainerType, UseCompare>::toJsonString(QJsonDocument::JsonFormat format) const
QString CListModelBase<ObjectType, ContainerType, UseCompare>::toJsonString(QJsonDocument::JsonFormat format, bool selectedOnly) const
{
const CVariant variant = CVariant::fromValue(container());
const CVariant variant = CVariant::fromValue(
selectedOnly && m_selectionModel ?
m_selectionModel->selectedObjects() :
container());
return variant.toJsonString(format);
}

View File

@@ -54,7 +54,7 @@ namespace BlackGui
static constexpr int asyncThreshold = 50;
//! Destructor
virtual ~CListModelBaseNonTemplate() {}
virtual ~CListModelBaseNonTemplate() override {}
//! \name Functions from QStandardItemModel
//! @{
@@ -125,10 +125,10 @@ namespace BlackGui
void emitDataChanged(int startRowIndex, int endRowIndex);
//! Convert to JSON
virtual QJsonObject toJson() const = 0;
virtual QJsonObject toJson(bool selectedOnly = false) const = 0;
//! Convert to JSON string
virtual QString toJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Indented) const = 0;
virtual QString toJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Indented, bool selectedOnly = false) const = 0;
signals:
//! Asynchronous update finished
@@ -194,8 +194,8 @@ namespace BlackGui
//! \name Functions from CListModelBaseNonTemplate
//! @{
virtual QJsonObject toJson() const override;
virtual QString toJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Indented) const override;
virtual QJsonObject toJson(bool selectedOnly = false) const override;
virtual QString toJsonString(QJsonDocument::JsonFormat format = QJsonDocument::Indented, bool selectedOnly = false) const override;
virtual bool isOrderable() const override;
//! @}