async _applyFilter(oEvent) {
			const oList = this.byId("productList");
			const oBinding = oList.getBinding("items");
			const aSelectedFilterItems = oEvent.getParameter("filterItems");
			const oCustomFilter =  this.byId("categoryFilterDialog").getFilterItems()[1];
			const oCustomKeys = {};
			const aFilters = [];
			const aAvailableFilters = [];
			const aPriceFilters = [];
			const aSupplierFilters = [];

			// Add the slider custom filter if the user selects some values
			if (oCustomFilter.getCustomControl().getAggregation("content")[0].getValue()
					!== oCustomFilter.getCustomControl().getAggregation("content")[0].getMin()
				|| oCustomFilter.getCustomControl().getAggregation("content")[0].getValue2()
					!== oCustomFilter.getCustomControl().getAggregation("content")[0].getMax()) {
				aSelectedFilterItems.push(oCustomFilter);
			}
			let oFilter;
			aSelectedFilterItems.forEach((oItem) => {
				const sFilterKey = oItem.getProperty("key");
				let iValueLow;
				let iValueHigh;
				switch (sFilterKey) {
					case "Available":
						oFilter = new Filter("Status", FilterOperator.EQ, "A");
						aAvailableFilters.push(oFilter);
						break;
					case "OutOfStock":
						oFilter = new Filter("Status", FilterOperator.EQ, "O");
						aAvailableFilters.push(oFilter);
						break;
					case "Discontinued":
						oFilter = new Filter("Status", FilterOperator.EQ, "D");
						aAvailableFilters.push(oFilter);
						break;
					case "Price":
						iValueLow = oItem.getCustomControl().getAggregation("content")[0].getValue();
						iValueHigh = oItem.getCustomControl().getAggregation("content")[0].getValue2();
						oFilter = new Filter("Price", FilterOperator.BT, iValueLow, iValueHigh);
						aPriceFilters.push(oFilter);
						oCustomKeys["priceKey"] = {Price: true};
						break;
					default:
						oFilter = new Filter("SupplierName", FilterOperator.EQ, sFilterKey);
						aSupplierFilters.push(oFilter);

				}
			});
			if (aAvailableFilters.length > 0) {
				aFilters.push(new Filter({filters: aAvailableFilters}));
			}
			if (aPriceFilters.length > 0) {
				aFilters.push(new Filter({filters: aPriceFilters}));
			}
			if (aSupplierFilters.length > 0) {
				aFilters.push(new Filter({filters: aSupplierFilters}));
			}
			oFilter = new Filter({filters: aFilters, and: true});
			if (aFilters.length > 0) {
				const oResourceBundle = await this.requestResourceBundle();
				oBinding.filter(oFilter);
				this.byId("categoryInfoToolbar").setVisible(true);
				let sText = oResourceBundle.getText("filterByText") + " ";
				let sSeparator = "";
				const oFilterKey = oEvent.getParameter("filterCompoundKeys");
				const oKeys = {...oFilterKey, ...oCustomKeys};
				for (const key in oKeys) {
					if (oKeys.hasOwnProperty(key)) {
						sText = sText + sSeparator  + oResourceBundle.getText(key,
							[this._iLowFilterPreviousValue, this._iHighFilterPreviousValue]);
						sSeparator = ", ";
					}
				}
				this.byId("categoryInfoToolbarTitle").setText(sText);
			} else {
				oBinding.filter(null);
				this.byId("categoryInfoToolbar").setVisible(false);
				this.byId("categoryInfoToolbarTitle").setText("");
			}
		}
Applies selected filters to the category list and update text and visibility of the info toolbar.
@param {sap.ui.base.Event} oEvent the press event of the sap.m.Button