Warning, /plasma/plasma-pa/src/qml/PulseObjectFilterModel.qml is written in an unsupported language. File is not indexed.
0001 import org.kde.kitemmodels as KItemModels 0002 0003 import org.kde.plasma.private.volume 0004 0005 KItemModels.KSortFilterProxyModel { 0006 property var filters: [] 0007 property bool filterOutInactiveDevices: false 0008 property bool filterVirtualDevices: false 0009 0010 onFilterVirtualDevicesChanged: { 0011 invalidate() 0012 } 0013 0014 filterRowCallback: function(source_row, source_parent) { 0015 var idx = sourceModel.index(source_row, 0); 0016 0017 // Don't ever show the dummy output, that's silly 0018 var dummyOutputName = "auto_null" 0019 if (sourceModel.data(idx, sourceModel.KItemModels.KRoleNames.role("Name")) === dummyOutputName) { 0020 return false; 0021 } 0022 0023 // Optionally run the role-based filters 0024 if (filters.length > 0) { 0025 for (var i = 0; i < filters.length; ++i) { 0026 var filter = filters[i]; 0027 if (sourceModel.data(idx, sourceModel.KItemModels.KRoleNames.role(filter.role)) !== filter.value) { 0028 return false; 0029 } 0030 } 0031 } 0032 0033 // Optionally exclude inactive devices 0034 if (filterOutInactiveDevices) { 0035 var ports = sourceModel.data(idx, sourceModel.KItemModels.KRoleNames.role("PulseObject")).ports; 0036 if (ports.length === 1 && ports[0].availability === Port.Unavailable) { 0037 return false; 0038 } 0039 } 0040 0041 if (filterVirtualDevices && sourceModel.data(idx, sourceModel.KItemModels.KRoleNames.role("PulseObject")).virtualDevice) { 0042 return false; 0043 } 0044 0045 return true; 0046 } 0047 }