mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:52:43 +00:00 
			
		
		
		
	 4f3234148a
			
		
	
	
		4f3234148a
		
	
	
	
	
		
			
			This patch expands the object model of this program quite a bit. We now have a RemoteProcess object that contains a list of remote root RemoteObject objects. The RemoteProcess vends a RemoteObjectGraphModel&, and indices in that model have internal_data() pointing to a corresponding RemoteObject. RemoteObjects in turn vend a RemoteObjectPropertyModel&, which is what we use to show the object properties. This is pretty cool :^)
		
			
				
	
	
		
			46 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			46 lines
		
	
	
	
		
			1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include "RemoteObjectPropertyModel.h"
 | |
| #include "RemoteObject.h"
 | |
| 
 | |
| RemoteObjectPropertyModel::RemoteObjectPropertyModel(RemoteObject& object)
 | |
|     : m_object(object)
 | |
| {
 | |
| }
 | |
| 
 | |
| int RemoteObjectPropertyModel::row_count(const GModelIndex&) const
 | |
| {
 | |
|     return m_properties.size();
 | |
| }
 | |
| 
 | |
| String RemoteObjectPropertyModel::column_name(int column) const
 | |
| {
 | |
|     switch (column) {
 | |
|     case Column::Name:
 | |
|         return "Name";
 | |
|     case Column::Value:
 | |
|         return "Value";
 | |
|     }
 | |
|     ASSERT_NOT_REACHED();
 | |
| }
 | |
| 
 | |
| GVariant RemoteObjectPropertyModel::data(const GModelIndex& index, Role role) const
 | |
| {
 | |
|     auto& property = m_properties[index.row()];
 | |
|     if (role == Role::Display) {
 | |
|         switch (index.column()) {
 | |
|         case Column::Name:
 | |
|             return property.name;
 | |
|         case Column::Value:
 | |
|             return property.value;
 | |
|         }
 | |
|     }
 | |
|     return {};
 | |
| }
 | |
| 
 | |
| void RemoteObjectPropertyModel::update()
 | |
| {
 | |
|     m_properties.clear();
 | |
|     m_object.json.for_each_member([this](auto& name, auto& value) {
 | |
|         m_properties.append({ name, value });
 | |
|     });
 | |
|     did_update();
 | |
| }
 |