Browse Source

Spreadsheet: Add CellChange constructor for changes in type metadata

Allows the creation of CellChanges where the change is in the type
metadata instead of in data.
huttongrabiel 2 years ago
parent
commit
40725c7c8c

+ 5 - 0
Userland/Applications/Spreadsheet/Cell.cpp

@@ -62,6 +62,11 @@ void Cell::set_type(StringView name)
     VERIFY_NOT_REACHED();
 }
 
+void Cell::set_type_metadata(CellTypeMetadata const& metadata)
+{
+    m_type_metadata = metadata;
+}
+
 void Cell::set_type_metadata(CellTypeMetadata&& metadata)
 {
     m_type_metadata = move(metadata);

+ 1 - 0
Userland/Applications/Spreadsheet/Cell.h

@@ -74,6 +74,7 @@ struct Cell : public Weakable<Cell> {
 
     void set_type(StringView name);
     void set_type(CellType const*);
+    void set_type_metadata(CellTypeMetadata const&);
     void set_type_metadata(CellTypeMetadata&&);
 
     Position const& position() const { return m_position; }

+ 7 - 0
Userland/Applications/Spreadsheet/Spreadsheet.cpp

@@ -770,4 +770,11 @@ CellChange::CellChange(Cell& cell, DeprecatedString const& previous_data)
     m_new_data = cell.data();
 }
 
+CellChange::CellChange(Cell& cell, CellTypeMetadata const& previous_type_metadata)
+    : m_cell(cell)
+    , m_previous_type_metadata(previous_type_metadata)
+{
+    m_new_type_metadata = cell.type_metadata();
+}
+
 }

+ 5 - 0
Userland/Applications/Spreadsheet/Spreadsheet.h

@@ -25,15 +25,20 @@ namespace Spreadsheet {
 class CellChange {
 public:
     CellChange(Cell&, DeprecatedString const&);
+    CellChange(Cell&, CellTypeMetadata const&);
 
     auto& cell() { return m_cell; }
     auto& previous_data() { return m_previous_data; }
     auto& new_data() { return m_new_data; }
+    auto& previous_type_metadata() { return m_previous_type_metadata; }
+    auto& new_type_metadata() { return m_new_type_metadata; }
 
 private:
     Cell& m_cell;
     DeprecatedString m_previous_data;
     DeprecatedString m_new_data;
+    CellTypeMetadata m_previous_type_metadata;
+    CellTypeMetadata m_new_type_metadata;
 };
 
 class Sheet : public Core::Object {