ny commit

This commit is contained in:
Niels
2025-05-28 20:47:14 +02:00
commit d4cd7f8bdc
324 changed files with 7462 additions and 0 deletions
+61
View File
@@ -0,0 +1,61 @@
import QtQuick 2.0
import QtQuick.XmlListModel 2.0
XmlListModel {
property bool finished: true
property bool clear: false
property ListModel stationsModel: ListModel {id: stationsModel}
// onFinishedChanged: console.log("*** FINISHED: "+finished+" ***")
//onClearChanged: if (clear) {stationsModel.clear()}
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) {addToModel()}
if (status === XmlListModel.Loading) finished = false;
if (status === XmlListModel.Error) finished = true
if (status === XmlListModel.Null) finished = true
}
function addToModel() {
for(var i = 0; i < count; i++) {
stationsModel.append({
"stationuuid" : get(i).stationuuid,
"name" : get(i).name,
"homepage" : get(i).homepage,
"favicon" : get(i).favicon,
"tags" : get(i).tags,
"codec" : get(i).codec,
"bitrate" : get(i).bitrate,
"hls" : get(i).hls,
"url_resolved" : get(i).url_resolved,
"country" : get(i).country,
"countrycode" : get(i).countrycode,
"votes" : get(i).votes,
"clicktrend" : get(i).clicktrend,
"clickcount" : get(i).clickcount,
"lastcheckok" : get(i).lastcheckok
})
}
finished = true
// console.log(" ***** APPENDED ******")
}
}
+69
View File
@@ -0,0 +1,69 @@
import QtQuick 2.0
import QtQuick.XmlListModel 2.0
Item {
property bool running: true
property string filter: ""
property alias countryModel: countryModel
property alias source: xmlModel.source
function addtomodel(){
countryModel.clear()
var cname
var filt
for(var i = 0; i < xmlModel.count; i++) {
cname = getCountryName(xmlModel.get(i).name)
//if (cname) filt = cname.toLowerCase()
if (cname) {filt = cname.toLowerCase(); if (filt.indexOf(filter) !== -1) countryModel.append({"name" : cname, "alpha_2" : xmlModel.get(i).name,"stationcount" : xmlModel.get(i).stationcount})}
//console.log(cname)
}
countryModel.listModelSort(countryModel, compareElements)
//numberOfCountries = i
countryCount = countryModel.count
// console.log("COUNTRIESMODEL DONE: "+countryModel.count)
running = false
}
function compareElements(elem1, elem2) {
return elem1.name.localeCompare(elem2.name)
}
ListModel {
id: countryModel
function listModelSort(listModel, compareFunc) {
var indexes = new Array(listModel.count);
for (var i = 0; i < listModel.count; i++) indexes[i] = i;
indexes.sort(function (indexA, indexB) { return compareFunc(get(indexA), get(indexB)) } );
var sorted = 0;
while (sorted < indexes.length && sorted === indexes[sorted]) sorted++;
if (sorted === indexes.length) return;
for (i = sorted; i < indexes.length; i++) {
var idx = indexes[i];
listModel.move(idx, listModel.count - 1, 1);
listModel.insert(idx, { } );
}
listModel.remove(sorted, indexes.length - sorted);
}
}
XmlListModel {
id: xmlModel
query: "/result/countrycode"
//source: radioServers.serverUrl + type + "/countrycodes?hidebroken=true"
XmlRole { name: "name"; query: "@name/string()" }
XmlRole { name: "stationcount"; query: "@stationcount/string()" }
onStatusChanged: {
//if (status === XmlListModel.Loading) loadingInfo = "Preloading countries"
if (status === XmlListModel.Ready) {
addtomodel()
running = false
}
//if (status === XmlListModel.Loading) running = true;
}
}
onFilterChanged: addtomodel()
}
+517
View File
@@ -0,0 +1,517 @@
import QtQuick 2.0
ListModel {
id: countryNameModel
ListElement {code: "AF"}
ListElement {code: "AX"}
ListElement {code: "AL"}
ListElement {code: "DZ"}
ListElement {code: "AS"}
ListElement {code: "AD"}
ListElement {code: "AO"}
ListElement {code: "AI"}
ListElement {code: "AQ"}
ListElement {code: "AG"}
ListElement {code: "AR"}
ListElement {code: "AM"}
ListElement {code: "AW"}
ListElement {code: "AU"}
ListElement {code: "AT"}
ListElement {code: "AZ"}
ListElement {code: "BS"}
ListElement {code: "BH"}
ListElement {code: "BD"}
ListElement {code: "BB"}
ListElement {code: "BY"}
ListElement {code: "BE"}
ListElement {code: "BZ"}
ListElement {code: "BJ"}
ListElement {code: "BM"}
ListElement {code: "BT"}
ListElement {code: "BO"}
ListElement {code: "BA"}
ListElement {code: "BW"}
ListElement {code: "BV"}
ListElement {code: "BR"}
ListElement {code: "IO"}
ListElement {code: "VG"}
ListElement {code: "BN"}
ListElement {code: "BG"}
ListElement {code: "BF"}
ListElement {code: "BI"}
ListElement {code: "KH"}
ListElement {code: "CM"}
ListElement {code: "CA"}
ListElement {code: "CV"}
ListElement {code: "BQ"}
ListElement {code: "KY"}
ListElement {code: "CF"}
ListElement {code: "TD"}
ListElement {code: "CL"}
ListElement {code: "CN"}
ListElement {code: "CX"}
ListElement {code: "CC"}
ListElement {code: "CO"}
ListElement {code: "KM"}
ListElement {code: "CG"}
ListElement {code: "CD"}
ListElement {code: "CK"}
ListElement {code: "CR"}
ListElement {code: "CI"}
ListElement {code: "HR"}
ListElement {code: "CU"}
ListElement {code: "CW"}
ListElement {code: "CY"}
ListElement {code: "CZ"}
ListElement {code: "DK"}
ListElement {code: "DJ"}
ListElement {code: "DM"}
ListElement {code: "DO"}
ListElement {code: "EC"}
ListElement {code: "EG"}
ListElement {code: "SV"}
ListElement {code: "GQ"}
ListElement {code: "ER"}
ListElement {code: "EE"}
ListElement {code: "SZ"}
ListElement {code: "ET"}
ListElement {code: "FK"}
ListElement {code: "FO"}
ListElement {code: "FJ"}
ListElement {code: "FI"}
ListElement {code: "FR"}
ListElement {code: "GF"}
ListElement {code: "PF"}
ListElement {code: "TF"}
ListElement {code: "GA"}
ListElement {code: "GM"}
ListElement {code: "GE"}
ListElement {code: "DE"}
ListElement {code: "GH"}
ListElement {code: "GI"}
ListElement {code: "GR"}
ListElement {code: "GL"}
ListElement {code: "GD"}
ListElement {code: "GP"}
ListElement {code: "GU"}
ListElement {code: "GT"}
ListElement {code: "GG"}
ListElement {code: "GN"}
ListElement {code: "GW"}
ListElement {code: "GY"}
ListElement {code: "HT"}
ListElement {code: "HM"}
ListElement {code: "HN"}
ListElement {code: "HK"}
ListElement {code: "HU"}
ListElement {code: "IS"}
ListElement {code: "IN"}
ListElement {code: "ID"}
ListElement {code: "IR"}
ListElement {code: "IQ"}
ListElement {code: "IE"}
ListElement {code: "IM"}
ListElement {code: "IL"}
ListElement {code: "IT"}
ListElement {code: "JM"}
ListElement {code: "JP"}
ListElement {code: "JE"}
ListElement {code: "JO"}
ListElement {code: "KZ"}
ListElement {code: "KE"}
ListElement {code: "KI"}
ListElement {code: "KW"}
ListElement {code: "KG"}
ListElement {code: "LA"}
ListElement {code: "LV"}
ListElement {code: "LB"}
ListElement {code: "LS"}
ListElement {code: "LR"}
ListElement {code: "LY"}
ListElement {code: "LI"}
ListElement {code: "LT"}
ListElement {code: "LU"}
ListElement {code: "MO"}
ListElement {code: "MG"}
ListElement {code: "MW"}
ListElement {code: "MY"}
ListElement {code: "MV"}
ListElement {code: "ML"}
ListElement {code: "MT"}
ListElement {code: "MH"}
ListElement {code: "MQ"}
ListElement {code: "MR"}
ListElement {code: "MU"}
ListElement {code: "YT"}
ListElement {code: "MX"}
ListElement {code: "FM"}
ListElement {code: "MD"}
ListElement {code: "MC"}
ListElement {code: "MN"}
ListElement {code: "ME"}
ListElement {code: "MS"}
ListElement {code: "MA"}
ListElement {code: "MZ"}
ListElement {code: "MM"}
ListElement {code: "NA"}
ListElement {code: "NR"}
ListElement {code: "NP"}
ListElement {code: "NL"}
ListElement {code: "NC"}
ListElement {code: "NZ"}
ListElement {code: "NI"}
ListElement {code: "NE"}
ListElement {code: "NG"}
ListElement {code: "NU"}
ListElement {code: "NF"}
ListElement {code: "KP"}
ListElement {code: "MK"}
ListElement {code: "MP"}
ListElement {code: "NO"}
ListElement {code: "OM"}
ListElement {code: "PK"}
ListElement {code: "PW"}
ListElement {code: "PS"}
ListElement {code: "PA"}
ListElement {code: "PG"}
ListElement {code: "PY"}
ListElement {code: "PE"}
ListElement {code: "PH"}
ListElement {code: "PN"}
ListElement {code: "PL"}
ListElement {code: "PT"}
ListElement {code: "PR"}
ListElement {code: "QA"}
ListElement {code: "RE"}
ListElement {code: "RO"}
ListElement {code: "RU"}
ListElement {code: "RW"}
ListElement {code: "WS"}
ListElement {code: "SM"}
ListElement {code: "ST"}
ListElement {code: "SA"}
ListElement {code: "SN"}
ListElement {code: "RS"}
ListElement {code: "SC"}
ListElement {code: "SL"}
ListElement {code: "SG"}
ListElement {code: "SX"}
ListElement {code: "SK"}
ListElement {code: "SI"}
ListElement {code: "SB"}
ListElement {code: "SO"}
ListElement {code: "ZA"}
ListElement {code: "GS"}
ListElement {code: "KR"}
ListElement {code: "SS"}
ListElement {code: "ES"}
ListElement {code: "LK"}
ListElement {code: "BL"}
ListElement {code: "SH"}
ListElement {code: "KN"}
ListElement {code: "LC"}
ListElement {code: "MF"}
ListElement {code: "PM"}
ListElement {code: "VC"}
ListElement {code: "SD"}
ListElement {code: "SR"}
ListElement {code: "SJ"}
ListElement {code: "SE"}
ListElement {code: "CH"}
ListElement {code: "SY"}
ListElement {code: "TW"}
ListElement {code: "TJ"}
ListElement {code: "TZ"}
ListElement {code: "TH"}
ListElement {code: "TL"}
ListElement {code: "TG"}
ListElement {code: "TK"}
ListElement {code: "TO"}
ListElement {code: "TT"}
ListElement {code: "TN"}
ListElement {code: "TR"}
ListElement {code: "TM"}
ListElement {code: "TC"}
ListElement {code: "TV"}
ListElement {code: "UM"}
ListElement {code: "VI"}
ListElement {code: "UG"}
ListElement {code: "UA"}
ListElement {code: "AE"}
ListElement {code: "GB"}
ListElement {code: "US"}
ListElement {code: "UY"}
ListElement {code: "UZ"}
ListElement {code: "VU"}
ListElement {code: "VA"}
ListElement {code: "VE"}
ListElement {code: "VN"}
ListElement {code: "WF"}
ListElement {code: "EH"}
ListElement {code: "YE"}
ListElement {code: "ZM"}
ListElement {code: "ZW"}
ListElement {code: "XK"}
ListElement {code: "ZZXX"}
// Workaround to be able to use qsTr for translating the country names (qsTr doesn't work in ListModel/ListElement ... :( ..)
function countryname(index) {
if (countryname["text"] === undefined) {
countryname.text = [
qsTr("Afghanistan"),
qsTr("Åland Islands"),
qsTr("Albania"),
qsTr("Algeria"),
qsTr("American Samoa"),
qsTr("Andorra"),
qsTr("Angola"),
qsTr("Anguilla"),
qsTr("Antarctica"),
qsTr("Antigua & Barbuda"),
qsTr("Argentina"),
qsTr("Armenia"),
qsTr("Aruba"),
qsTr("Australia"),
qsTr("Austria"),
qsTr("Azerbaijan"),
qsTr("Bahamas"),
qsTr("Bahrain"),
qsTr("Bangladesh"),
qsTr("Barbados"),
qsTr("Belarus"),
qsTr("Belgium"),
qsTr("Belize"),
qsTr("Benin"),
qsTr("Bermuda"),
qsTr("Bhutan"),
qsTr("Bolivia"),
qsTr("Bosnia & Herzegovina"),
qsTr("Botswana"),
qsTr("Bouvet Island"),
qsTr("Brazil"),
qsTr("British Indian Ocean Territory"),
qsTr("British Virgin Islands"),
qsTr("Brunei"),
qsTr("Bulgaria"),
qsTr("Burkina Faso"),
qsTr("Burundi"),
qsTr("Cambodia"),
qsTr("Cameroon"),
qsTr("Canada"),
qsTr("Cape Verde"),
qsTr("Caribbean Netherlands"),
qsTr("Cayman Islands"),
qsTr("Central African Republic"),
qsTr("Chad"),
qsTr("Chile"),
qsTr("China"),
qsTr("Christmas Island"),
qsTr("Cocos (Keeling) Islands"),
qsTr("Colombia"),
qsTr("Comoros"),
qsTr("Congo - Brazzaville"),
qsTr("Congo - Kinshasa"),
qsTr("Cook Islands"),
qsTr("Costa Rica"),
qsTr("Côte dIvoire"),
qsTr("Croatia"),
qsTr("Cuba"),
qsTr("Curaçao"),
qsTr("Cyprus"),
qsTr("Czechia"),
qsTr("Denmark"),
qsTr("Djibouti"),
qsTr("Dominica"),
qsTr("Dominican Republic"),
qsTr("Ecuador"),
qsTr("Egypt"),
qsTr("El Salvador"),
qsTr("Equatorial Guinea"),
qsTr("Eritrea"),
qsTr("Estonia"),
qsTr("Eswatini"),
qsTr("Ethiopia"),
qsTr("Falkland Islands"),
qsTr("Faroe Islands"),
qsTr("Fiji"),
qsTr("Finland"),
qsTr("France"),
qsTr("French Guiana"),
qsTr("French Polynesia"),
qsTr("French Southern Territories"),
qsTr("Gabon"),
qsTr("Gambia"),
qsTr("Georgia"),
qsTr("Germany"),
qsTr("Ghana"),
qsTr("Gibraltar"),
qsTr("Greece"),
qsTr("Greenland"),
qsTr("Grenada"),
qsTr("Guadeloupe"),
qsTr("Guam"),
qsTr("Guatemala"),
qsTr("Guernsey"),
qsTr("Guinea"),
qsTr("Guinea-Bissau"),
qsTr("Guyana"),
qsTr("Haiti"),
qsTr("Heard & McDonald Islands"),
qsTr("Honduras"),
qsTr("Hong Kong SAR China"),
qsTr("Hungary"),
qsTr("Iceland"),
qsTr("India"),
qsTr("Indonesia"),
qsTr("Iran"),
qsTr("Iraq"),
qsTr("Ireland"),
qsTr("Isle of Man"),
qsTr("Israel"),
qsTr("Italy"),
qsTr("Jamaica"),
qsTr("Japan"),
qsTr("Jersey"),
qsTr("Jordan"),
qsTr("Kazakhstan"),
qsTr("Kenya"),
qsTr("Kiribati"),
qsTr("Kuwait"),
qsTr("Kyrgyzstan"),
qsTr("Laos"),
qsTr("Latvia"),
qsTr("Lebanon"),
qsTr("Lesotho"),
qsTr("Liberia"),
qsTr("Libya"),
qsTr("Liechtenstein"),
qsTr("Lithuania"),
qsTr("Luxembourg"),
qsTr("Macao SAR China"),
qsTr("Madagascar"),
qsTr("Malawi"),
qsTr("Malaysia"),
qsTr("Maldives"),
qsTr("Mali"),
qsTr("Malta"),
qsTr("Marshall Islands"),
qsTr("Martinique"),
qsTr("Mauritania"),
qsTr("Mauritius"),
qsTr("Mayotte"),
qsTr("Mexico"),
qsTr("Micronesia"),
qsTr("Moldova"),
qsTr("Monaco"),
qsTr("Mongolia"),
qsTr("Montenegro"),
qsTr("Montserrat"),
qsTr("Morocco"),
qsTr("Mozambique"),
qsTr("Myanmar (Burma)"),
qsTr("Namibia"),
qsTr("Nauru"),
qsTr("Nepal"),
qsTr("Netherlands"),
qsTr("New Caledonia"),
qsTr("New Zealand"),
qsTr("Nicaragua"),
qsTr("Niger"),
qsTr("Nigeria"),
qsTr("Niue"),
qsTr("Norfolk Island"),
qsTr("North Korea"),
qsTr("North Macedonia"),
qsTr("Northern Mariana Islands"),
qsTr("Norway"),
qsTr("Oman"),
qsTr("Pakistan"),
qsTr("Palau"),
qsTr("Palestinian Territories"),
qsTr("Panama"),
qsTr("Papua New Guinea"),
qsTr("Paraguay"),
qsTr("Peru"),
qsTr("Philippines"),
qsTr("Pitcairn Islands"),
qsTr("Poland"),
qsTr("Portugal"),
qsTr("Puerto Rico"),
qsTr("Qatar"),
qsTr("Réunion"),
qsTr("Romania"),
qsTr("Russia"),
qsTr("Rwanda"),
qsTr("Samoa"),
qsTr("San Marino"),
qsTr("São Tomé & Príncipe"),
qsTr("Saudi Arabia"),
qsTr("Senegal"),
qsTr("Serbia"),
qsTr("Seychelles"),
qsTr("Sierra Leone"),
qsTr("Singapore"),
qsTr("Sint Maarten"),
qsTr("Slovakia"),
qsTr("Slovenia"),
qsTr("Solomon Islands"),
qsTr("Somalia"),
qsTr("South Africa"),
qsTr("South Georgia & South Sandwich Islands"),
qsTr("South Korea"),
qsTr("South Sudan"),
qsTr("Spain"),
qsTr("Sri Lanka"),
qsTr("St. Barthélemy"),
qsTr("St. Helena"),
qsTr("St. Kitts & Nevis"),
qsTr("St. Lucia"),
qsTr("St. Martin"),
qsTr("St. Pierre & Miquelon"),
qsTr("St. Vincent & Grenadines"),
qsTr("Sudan"),
qsTr("Suriname"),
qsTr("Svalbard & Jan Mayen"),
qsTr("Sweden"),
qsTr("Switzerland"),
qsTr("Syria"),
qsTr("Taiwan"),
qsTr("Tajikistan"),
qsTr("Tanzania"),
qsTr("Thailand"),
qsTr("Timor-Leste"),
qsTr("Togo"),
qsTr("Tokelau"),
qsTr("Tonga"),
qsTr("Trinidad & Tobago"),
qsTr("Tunisia"),
qsTr("Turkey"),
qsTr("Turkmenistan"),
qsTr("Turks & Caicos Islands"),
qsTr("Tuvalu"),
qsTr("U.S. Outlying Islands"),
qsTr("U.S. Virgin Islands"),
qsTr("Uganda"),
qsTr("Ukraine"),
qsTr("United Arab Emirates"),
qsTr("United Kingdom"),
qsTr("United States"),
qsTr("Uruguay"),
qsTr("Uzbekistan"),
qsTr("Vanuatu"),
qsTr("Vatican City"),
qsTr("Venezuela"),
qsTr("Vietnam"),
qsTr("Wallis & Futuna"),
qsTr("Western Sahara"),
qsTr("Yemen"),
qsTr("Zambia"),
qsTr("Zimbabwe "),
qsTr("Kosovo"),
qsTr("No country")
]
}
return countryname.text[index]
}
}
+50
View File
@@ -0,0 +1,50 @@
import QtQuick 2.0
import QtQuick.XmlListModel 2.0
Item {
// radio-browser advanced:
////property int bitrateMin: 0
////property int bitrateMax: 1000000
////property string state: ""
////property bool stateExact: false
////property string language: ""
////property bool languageExact: false
////property string tagList: "" // commaseparated string
property string name: ""
property bool nameExact: false
property string countrycode: ""
property string tag: ""
property bool tagExcact: false
property string codec: ""
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: 150
property string source: ""
// Allradio specific:
property string country: countrycode ? radioBrowser.getCountryName(countrycode) : "World"
property alias finished: searchModel.finished
property string filterString
property alias stationsModel: searchModel.stationsModel
property bool clear: false
property AdvancedSearchModel searchModel : AdvancedSearchModel {id:searchModel}
onSourceChanged: {searchModel.source = source}
onClearChanged: if (clear) {searchModel.clear;searchModel.stationsModel.clear();offset=0;clear=false}
function getStations() {
searchModel.xml=""
filterString = ""
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
}
}
+83
View File
@@ -0,0 +1,83 @@
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;
}
}
+5
View File
@@ -0,0 +1,5 @@
import QtQuick 2.0
Item {
}
+42
View File
@@ -0,0 +1,42 @@
import QtQuick 2.0
ListModel {
ListElement {
name: "Name"
description: "Search by name"
icon: "../images/bysearch_t.png"
page: "SearchStationsPage.qml"
}
ListElement {
name: "Countries"
description: "Search by tag"
icon: "../images/bycountry_t.png"
page: "CountryListPage.qml"
}
/* ListElement {
name: "New/Changed"
description: "View by new/changed"
icon: "../images/bylatest_t.png"
page: "CrNewChangedPage.qml"
}
ListElement {
name: "Recently played"
description: "View by recently played"
icon: "../images/lastplayed_t.png"
page: "CrRecentPlayedPage.qml"
}
ListElement {
name: "Most votes"
description: "View by most votes"
icon: "../images/byvote_t.png"
page: "CrTopVotedPage.qml"
}
ListElement {
name: "Most Played"
description: "Viwe by most played"
icon: "../images/mostclicked_t.png"
page: "CrMostPlayedPage.qml"
}*/
}
+50
View File
@@ -0,0 +1,50 @@
import QtQuick 2.0
import QtQuick.XmlListModel 2.0
Item {
property string filter: ""
property bool clear: false
property bool running: false
property alias tagsListModel: tagModel
property int maxCount: 0
// property alias tagsListModel: xmlModel
property alias source: xmlModel.source
onClearChanged: if (clear===true) {xmlModel.xml="";clear=false}
ListModel {id: tagModel}
XmlListModel {
id: xmlModel
query: "/result/tag"
XmlRole { name: "tag"; query: "@name/string()" }
XmlRole { name: "stationcount"; query: "@stationcount/string()" }
onStatusChanged: {
if (status === XmlListModel.Ready) {
addtomodel()
// console.log("TAGSLISTMODEL DONE: "+xmlModel.count)
tagCount = xmlModel.count
}
}
}
function addtomodel(){
tagModel.clear()
var cname
var count
var filt
for(var i = 0; i < xmlModel.count; i++) {
cname = xmlModel.get(i).tag
count = xmlModel.get(i).stationcount
if (count > 99) {
if (count > maxCount) maxCount = count
filt = cname.toLowerCase(); if (filt.indexOf(filter) !== -1) tagModel.append({"tag" : cname, "stationcount" : xmlModel.get(i).stationcount})
}
// cname = getCountryName(xmlModel.get(i).name)
// if (cname) {filt = cname.toLowerCase(); if (filt.indexOf(filter) !== -1) countryModel.append({"name" : cname, "alpha_2" : xmlModel.get(i).name,"stationcount" : xmlModel.get(i).stationcount})}
}
//countryModel.listModelSort(countryModel, compareElements)
//numberOfCountries = i
running = false
}
}