X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=app%2Fapi%2FLightMediaScanner.qml;fp=app%2Fapi%2FLightMediaScanner.qml;h=cbacb8cfa6db1aa76d9a5e13ec89a2de6aac801e;hb=71b6e40301a2e23edfeaea5c33187db14c4d8917;hp=d0b71376c9fe9ffae70b05f9c283e129e5acf218;hpb=213feb8d7c8c1d4ef75fc72df38e598c1ff44458;p=apps%2Fmediaplayer.git diff --git a/app/api/LightMediaScanner.qml b/app/api/LightMediaScanner.qml index d0b7137..cbacb8c 100644 --- a/app/api/LightMediaScanner.qml +++ b/app/api/LightMediaScanner.qml @@ -26,6 +26,7 @@ WebSocket { property string statusString: "waiting..." property string apiString: "media-manager" property var verbs: [] + property var items: [] property string payloadLength: "9999" readonly property var msgid: { @@ -35,6 +36,16 @@ WebSocket { "event": 5 } + function validateItem(media) { + for (var i = 0; i < media.length; i++) { + var item = media[i] + if (root.items.indexOf(item) < 0) { + playlist.addItem(item) + root.items.push(item) + } + } + } + onTextMessageReceived: { var json = JSON.parse(message) console.debug("Raw response: " + message) @@ -49,7 +60,7 @@ WebSocket { var verb = verbs.shift() if (verb == "media_result") { console.debug("Media result returned") - playlist.addItems(response.Media) + validateItem(response.Media) } break case msgid.reterr: @@ -60,11 +71,18 @@ WebSocket { var event = payload.event if (event == "media-manager/media_added") { console.debug("Media is inserted") - playlist.addItems(json[2].data.Media) + validateItem(json[2].data.Media) } else if (event == "media-manager/media_removed") { + var removed = 0 console.debug("Media is removed") player.stop() - playlist.clear() + + for (var i = 0; i < root.items.length; i++) { + if (root.items[i].startsWith(json[2].data.Path)) { + playlist.removeItem(i - removed++) + } + } + root.items = root.items.filter(function (item) { return !item.startsWith(json[2].data.Path) }) } break }