import QtQuick 2.6 import QtQuick.Window 2.2 import QtQuick.Controls 1.4 import QtQuick.Controls 2.0 as NewControls import QtQuick.Layouts 1.1 import TaskManager 1.0 Window { id: root visible: true width: 745 height: 480 TaskManager { id: taskmgr onUpdateProcess: { var index = findId(tid_); libraryModel.set(index, {"cmd": cmd_, "tid": tid_, "user": euid_, "system_cpu": scpu_, "user_cpu": ucpu_, "resident_memory": resident_memory_, "state": state_}); } onAddProcess: { libraryModel.append({"cmd": cmd_, "tid": tid_, "user": euid_, "system_cpu": scpu_, "user_cpu": ucpu_, "resident_memory": resident_memory_, "state": state_}); } onRemoveProcess: { var index = findId(tid_); libraryModel.remove(index); } function findId(tid) { for(var i = 0; i < libraryModel.count; i++) { if(tid == libraryModel.get(i).tid) { return i; } } } Component.onCompleted: { taskmgr.open(bindingAddress); } onShowProcessInfo: { infoPopup.infoText = info_; } } ListModel { id: libraryModel } Rectangle { id: mainview width: parent.width height: parent.height Row { id: buttonRow width: parent.width anchors.top: mainview.top RowLayout { id: buttonRowLayout spacing: 6 NewControls.Popup { id: infoPopup x: 200 y: 200 width: 300 height: 200 modal: true focus: true closePolicy: NewControls.Popup.CloseOnPressOutsideParent property var infoText: "Getting extra information for process" function doOpen(tid) { taskmgr.getExtraInfo(tid) infoPopup.open() } contentItem: Text { text: infoPopup.infoText } } Button { id: infoButton text: "Info" enabled: tableView.currentRow != -1 onClicked: infoPopup.doOpen(libraryModel.get(tableView.currentRow).tid) } Button { id: killButton text: "Kill" enabled: tableView.currentRow != -1 onClicked: { tableView.selection.forEach( function(rowIndex) { taskmgr.kill(libraryModel.get(rowIndex).tid)} ) tableView.selection.clear() } } } } TableView { id: tableView height: parent.height - buttonRow.height width: parent.width anchors.top: buttonRow.bottom TableViewColumn { role: "cmd" title: "Process" width: 150 } TableViewColumn { role: "tid" title: "ID" width: 80 } TableViewColumn { role: "user" title: "User" width: 80 } TableViewColumn { role: "system_cpu" title: "System %" width: 100 } TableViewColumn { role: "user_cpu" title: "User %" width: 100 } TableViewColumn { role: "resident_memory" title: "Memory" width: 100 } TableViewColumn { role: "state" title: "State" width: 90 } model: libraryModel } } }