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;
    }
}