// Version 1

import QtQuick 2.0

ListModel {
	property string packageType
	property bool loaded: false

	readonly property var executable: ExecUtil {
		id: executable
		property string readStateCommand: '( kpackagetool5 --type="' + packageType + '" --list ; kpackagetool5 --g --type="' + packageType + '" --list ) | cat'

		function readState() {
			executable.exec(readStateCommand)
		}
		Component.onCompleted: {
			readState()
		}

		function parsePackageList(stdout) {
			clear()
			var lines = stdout.split('\n')
			for (var i = 0; i < lines.length; i++) {
				var line = lines[i]
				if (line.indexOf(packageType) >= 0) {
					// Treat line as:
					// Listing service types: KWin/Script in /usr/share/kwin/scripts/
					continue
				}
				var pluginId = line.trim()
				if (pluginId) {
					append({
						pluginId: pluginId,
					})
				}
			}
		}

		onExited: {
			if (command == readStateCommand) {
				parsePackageList(stdout)
				loaded = true
			}
		}

		function startsWith(a, b) {
			if (b.length <= a.length) {
				return a.substr(0, b.length) == b
			} else {
				return false
			}
		}
	}

	function contains(pluginId) {
		for (var i = 0; i < count; i++) {
			var item = get(i)
			if (item.pluginId == pluginId) {
				return true
			}
		}
		return false
	}
}