mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-30 18:12:45 +00:00 
			
		
		
		
	 556c4ac358
			
		
	
	
		556c4ac358
		
	
	
	
	
		
			
			When the `FilteringOptions::SortByScore` flag is set, filtered indices are sorted by match score in descending order, meaning the most relevant results should appear first. The default behavior of FilteringProxyModel is unchanged.
		
			
				
	
	
		
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2021, sin-ack <sin-ack@protonmail.com>
 | |
|  *
 | |
|  * SPDX-License-Identifier: BSD-2-Clause
 | |
|  */
 | |
| 
 | |
| #include "BasicModel.h"
 | |
| 
 | |
| GUI::Variant BasicModel::data(GUI::ModelIndex const& index, GUI::ModelRole role) const
 | |
| {
 | |
|     if (role != GUI::ModelRole::Display)
 | |
|         return {};
 | |
|     if (!is_within_range(index))
 | |
|         return {};
 | |
| 
 | |
|     return m_items.at(index.row());
 | |
| }
 | |
| 
 | |
| GUI::Model::MatchResult BasicModel::data_matches(GUI::ModelIndex const& index, GUI::Variant const& data) const
 | |
| {
 | |
|     if (!is_within_range(index))
 | |
|         return { TriState::False };
 | |
|     if (!data.is_string())
 | |
|         return { TriState::False };
 | |
| 
 | |
|     auto& value = m_items.at(index.row());
 | |
| 
 | |
|     if (value.contains(data.as_string()))
 | |
|         return { TriState::True };
 | |
| 
 | |
|     return { TriState::False };
 | |
| }
 | |
| 
 | |
| void BasicModel::invalidate()
 | |
| {
 | |
|     Model::invalidate();
 | |
|     if (on_invalidate)
 | |
|         on_invalidate();
 | |
| }
 | |
| 
 | |
| GUI::ModelIndex BasicModel::index(int row, int column, GUI::ModelIndex const& parent) const
 | |
| {
 | |
|     if (column != 0)
 | |
|         return {};
 | |
|     if (parent.is_valid())
 | |
|         return {};
 | |
|     if (row < 0 || row >= static_cast<int>(m_items.size()))
 | |
|         return {};
 | |
| 
 | |
|     return create_index(row, column);
 | |
| }
 | |
| 
 | |
| void BasicModel::add_item(DeprecatedString const& item)
 | |
| {
 | |
|     begin_insert_rows({}, m_items.size(), m_items.size());
 | |
|     m_items.append(item);
 | |
|     end_insert_rows();
 | |
| 
 | |
|     did_update(UpdateFlag::DontInvalidateIndices);
 | |
| }
 | |
| 
 | |
| void BasicModel::remove_item(GUI::ModelIndex const& index)
 | |
| {
 | |
|     if (!index.is_valid() || !is_within_range(index))
 | |
|         return;
 | |
| 
 | |
|     begin_delete_rows({}, index.row(), index.row());
 | |
|     m_items.remove(index.row());
 | |
|     end_delete_rows();
 | |
| 
 | |
|     did_update(UpdateFlag::DontInvalidateIndices);
 | |
| }
 |