##// END OF EJS Templates
Variable deletion (3)...
Alexandre Leroux -
r306:ec40cfe998fe
parent child
Show More
@@ -34,6 +34,7 public:
34 34 * Deletes from the controller the variable passed in parameter.
35 35 *
36 36 * Delete a variable includes:
37 * - the deletion of the model variable
37 38 * - the deletion of the provider associated with the variable
38 39 * - removing the cache associated with the variable
39 40 *
@@ -30,6 +30,12 public:
30 30 std::shared_ptr<Variable> createVariable(const QString &name,
31 31 const SqpDateTime &dateTime) noexcept;
32 32
33 /**
34 * Deletes a variable from the model, if it exists
35 * @param variable the variable to delete
36 */
37 void deleteVariable(std::shared_ptr<Variable> variable) noexcept;
38
33 39 std::shared_ptr<Variable> variable(int index) const;
34 40
35 41 // /////////////////////////// //
@@ -99,6 +99,9 void VariableController::deleteVariable(std::shared_ptr<Variable> variable) noex
99 99 // Clears cache
100 100 impl->m_VariableCacheController->clear(variable);
101 101
102 // Deletes from model
103 impl->m_VariableModel->deleteVariable(variable);
104 }
102 105
103 106 void VariableController::deleteVariables(
104 107 const QVector<std::shared_ptr<Variable> > &variables) noexcept
@@ -69,6 +69,32 std::shared_ptr<Variable> VariableModel::createVariable(const QString &name,
69 69 return variable;
70 70 }
71 71
72 void VariableModel::deleteVariable(std::shared_ptr<Variable> variable) noexcept
73 {
74 if (!variable) {
75 qCCritical(LOG_Variable()) << "Can't delete a null variable from the model";
76 return;
77 }
78
79 // Finds variable in the model
80 auto begin = impl->m_Variables.cbegin();
81 auto end = impl->m_Variables.cend();
82 auto it = std::find(begin, end, variable);
83 if (it != end) {
84 auto removeIndex = std::distance(begin, it);
85
86 // Deletes variable
87 beginRemoveRows({}, removeIndex, removeIndex);
88 impl->m_Variables.erase(it);
89 endRemoveRows();
90 }
91 else {
92 qCritical(LOG_VariableModel())
93 << tr("Can't delete variable %1 from the model: the variable is not in the model")
94 .arg(variable->name());
95 }
96 }
97
72 98 std::shared_ptr<Variable> VariableModel::variable(int index) const
73 99 {
74 100 return (index >= 0 && index < impl->m_Variables.size()) ? impl->m_Variables[index] : nullptr;
General Comments 0
You need to be logged in to leave comments. Login now