harbour-allradio/qml/models/GetCountryStations___.qml
2025-05-28 20:47:14 +02:00

84 lines
3.6 KiB
QML

import QtQuick 2.0
import QtQuick.XmlListModel 2.0
XmlListModel {
// radio-browser advanced:
property string name: ""
property bool nameExact: false
property string countrycode: ""
////property string state: ""
////property bool stateExact: false
////property string language: ""
////property bool languageExact: false
property string tag: ""
property bool tagExcact: false
////property string tagList: "" // commaseparated string
property string codec: ""
////property int bitrateMin: 0
////property int bitrateMax: 1000000
property string order: "" // name, url, homepage, favicon, tags, country, state, language, votes, codec, bitrate, lastcheckok, lastchecktime, clicktimestamp, clickcount, clicktrend, random
property bool reverse: false//order === name ? false : true // true if name
property int offset: 0
property int limit: 100000
// Allradio specific:
// property string filter: ""
property string country: radioBrowser.getCountryName(countrycode)
// property string searchby: "name"
// property string searchorder: "clickcount"
property bool running: false
property string filterString
//property AdvancedSearchModel searchModel : AdvancedSearchModel {id:searchModel}
onRunningChanged: {console.log("RUNNING: "+running);if (running) getStations()}
//onNameChanged: if (name !== "") tag = ""
//onTagChanged: if (tag !=="") name = ""
function getStations() {
xml=""
source=""
filterString = ""
//filterString = "&name="+name+"&nameExact="+nameExact+"&countrycode="+countrycode+"&tag="+tag+"&tagExact="+tagExcact+"&codec="+codec+"&order="+order+"&reverse="+reverse
if (name !== "") {filterString = "&name="+name+"&nameExact="+nameExact}
if (countrycode !== "") filterString = filterString + "&countrycode="+countrycode
if (tag !== "") filterString = filterString + "&tag="+tag+"&tagExact="+tagExcact
if (codec !== "") filterString = filterString + "&codec="+codec
if (order !== "") filterString = filterString + "&order="+order
if (order === "name") reverse = false; else reverse = true
filterString = filterString + "&reverse="+reverse + "&offset="+offset+"&limit="+limit
console.log(radioBrowser.serverUrl + "/xml/stations/search?hidebroken=true"+filterString)
source = radioBrowser.serverUrl + "/xml/stations/search?hidebroken=true"+filterString
}
query: "/result/station"
XmlRole { name: "stationuuid"; query: "@stationuuid/string()" }
XmlRole { name: "name"; query: "@name/string()" }
XmlRole { name: "homepage"; query: "@homepage/string()" }
XmlRole { name: "favicon"; query: "@favicon/string()" }
XmlRole { name: "tags"; query: "@tags/string()" }
XmlRole { name: "codec"; query: "@codec/string()" }
XmlRole { name: "bitrate"; query: "@bitrate/string()" }
XmlRole { name: "hls"; query: "@hls/string()" }
XmlRole { name: "url_resolved"; query: "@url_resolved/string()" }
XmlRole { name: "country"; query: "@country/string()" }
XmlRole { name: "countrycode"; query: "@countrycode/string()" }
XmlRole { name: "votes"; query: "@votes/string()" }
XmlRole { name: "clicktrend"; query: "@clicktrend/string()" }
XmlRole { name: "clickcount"; query: "@clickcount/string()" }
XmlRole { name: "lastcheckok"; query: "@lastcheckok/string()" }
onStatusChanged: {
if (status === XmlListModel.Ready) {running = false}
//if (status === XmlListModel.Loading) running = true;
if (status === XmlListModel.Error) running = false;
if (status === XmlListModel.Null) running = false;
}
}