1 /* 2 SPDX-FileCopyrightText: 2017 Nicolas Carion 3 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 4 */ 5 6 #include "effectfilter.hpp" 7 #include "abstractmodel/treeitem.hpp" 8 #include "assets/assetlist/model/assettreemodel.hpp" 9 #include "effecttreemodel.hpp" 10 EffectFilter(QObject * parent)11EffectFilter::EffectFilter(QObject *parent) 12 : AssetFilter(parent) 13 { 14 m_type_enabled = false; 15 } 16 setFilterType(bool enabled,AssetListType::AssetType type)17void EffectFilter::setFilterType(bool enabled, AssetListType::AssetType type) 18 { 19 m_type_enabled = enabled; 20 m_type_value = type; 21 invalidateFilter(); 22 } 23 reloadFilterOnFavorite()24void EffectFilter::reloadFilterOnFavorite() 25 { 26 if (m_type_enabled && m_type_value == AssetListType::AssetType::Favorites) { 27 invalidateFilter(); 28 } 29 } 30 filterType(const std::shared_ptr<TreeItem> & item) const31bool EffectFilter::filterType(const std::shared_ptr<TreeItem> &item) const 32 { 33 auto itemType = item->dataColumn(AssetTreeModel::typeCol).value<AssetListType::AssetType>(); 34 if (itemType == AssetListType::AssetType::Hidden) { 35 return false; 36 } 37 if (!m_type_enabled) { 38 return true; 39 } 40 if (m_type_value == AssetListType::AssetType::Favorites) { 41 return item->dataColumn(AssetTreeModel::favCol).toBool(); 42 } 43 if (m_type_value == AssetListType::AssetType::Preferred) { 44 return item->dataColumn(AssetTreeModel::preferredCol).toBool(); 45 } 46 if (m_type_value == AssetListType::AssetType::Custom) { 47 return itemType == m_type_value || itemType == AssetListType::AssetType::CustomAudio; 48 } 49 return itemType == m_type_value; 50 } 51 applyAll(std::shared_ptr<TreeItem> item) const52bool EffectFilter::applyAll(std::shared_ptr<TreeItem> item) const 53 { 54 if (!m_name_value.isEmpty()) { 55 if (m_type_value == AssetListType::AssetType::Preferred) { 56 return filterName(item); 57 } 58 return filterType(item) && filterName(item); 59 } else { 60 return filterType(item); 61 } 62 } 63