File indexing completed on 2024-05-19 04:54:22
0001 /* 0002 SPDX-FileCopyrightText: 2017 Nicolas Carion 0003 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0004 */ 0005 0006 #include "effectfilter.hpp" 0007 #include "abstractmodel/treeitem.hpp" 0008 #include "assets/assetlist/model/assettreemodel.hpp" 0009 #include "effecttreemodel.hpp" 0010 0011 EffectFilter::EffectFilter(QObject *parent) 0012 : AssetFilter(parent) 0013 { 0014 m_type_enabled = false; 0015 } 0016 0017 void EffectFilter::setFilterType(bool enabled, AssetListType::AssetType type) 0018 { 0019 m_type_enabled = enabled; 0020 m_type_value = type; 0021 invalidateFilter(); 0022 } 0023 0024 void EffectFilter::reloadFilterOnFavorite() 0025 { 0026 if (m_type_enabled && m_type_value == AssetListType::AssetType::Favorites) { 0027 invalidateFilter(); 0028 } 0029 } 0030 0031 bool EffectFilter::filterType(const std::shared_ptr<TreeItem> &item) const 0032 { 0033 auto itemType = item->dataColumn(AssetTreeModel::TypeCol).value<AssetListType::AssetType>(); 0034 if (itemType == AssetListType::AssetType::Hidden) { 0035 return false; 0036 } 0037 if (!m_type_enabled) { 0038 return true; 0039 } 0040 if (m_type_value == AssetListType::AssetType::Favorites) { 0041 return item->dataColumn(AssetTreeModel::FavCol).toBool(); 0042 } 0043 if (m_type_value == AssetListType::AssetType::Preferred) { 0044 return item->dataColumn(AssetTreeModel::PreferredCol).toBool(); 0045 } 0046 if (m_type_value == AssetListType::AssetType::Custom) { 0047 return itemType == m_type_value || itemType == AssetListType::AssetType::CustomAudio || itemType == AssetListType::Template || 0048 itemType == AssetListType::TemplateAudio; 0049 } 0050 return itemType == m_type_value; 0051 } 0052 0053 bool EffectFilter::applyAll(std::shared_ptr<TreeItem> item) const 0054 { 0055 if (!m_name_value.isEmpty()) { 0056 if (m_type_value == AssetListType::AssetType::Preferred) { 0057 return filterName(item); 0058 } 0059 return filterType(item) && filterName(item); 0060 } else { 0061 return filterType(item); 0062 } 0063 }