@@ -21,10 +21,10 @@ import Utils 0.1
22 id: applicationManager
22 id: applicationManager
24− property var mainStageApplications: ApplicationManager.mainStageApplications
24+ property var mainStageApplications: mainStageModel
25− property var sideStageApplications: ApplicationManager.sideStageApplications
25+ property var sideStageApplications: sideStageModel
26− property var mainStageFocusedApplication: mainStageModel
26+ property var mainStageFocusedApplication: null
27− property var sideStageFocusedApplication: sideStageModel
27+ property var sideStageFocusedApplication: null
28 property bool sideStageEnabled: true
28 property bool sideStageEnabled: true
29 signal focusRequested(string desktopFile)
29 signal focusRequested(string desktopFile)
30 property bool keyboardVisible: ApplicationManager.keyboardVisible
30 property bool keyboardVisible: ApplicationManager.keyboardVisible
@@ -40,9 +40,11 @@ Item {
40 filterRegExp: RegExp(ApplicationInfo.MainStage)
40 filterRegExp: RegExp(ApplicationInfo.MainStage)
42 onCountChanged: { print("MODEL Main:", count, ApplicationManager.RoleStage, ApplicationManager.RoleFocused)
42 onCountChanged: { print("MODEL Main:", count, ApplicationManager.RoleStage, ApplicationManager.RoleFocused)
43− mainStageFocusedApplication = mainStageModel.findFirst(ApplicationManager.RoleFocused, true);
43+ mainStageFocusedApplication = ApplicationManager.get(mainStageModel.findFirst(ApplicationManager.RoleFocused, true));
44 print("MS", mainStageFocusedApplication)
44 print("MS", mainStageFocusedApplication)
46+ onLayoutChanged: print("LAYOUT")
47+ onDataChanged: print("DATA")
48 SortFilterProxyModel {
50 SortFilterProxyModel {
@@ -53,32 +55,46 @@ Item {
53 filterRegExp: RegExp(ApplicationInfo.SideStage)
55 filterRegExp: RegExp(ApplicationInfo.SideStage)
55 onDataChanged: { print("MODEL Side", count)
57 onDataChanged: { print("MODEL Side", count)
56− sideStageFocusedApplication = sideStageModel.findFirst(ApplicationManager.RoleFocused, true);
58+ sideStageFocusedApplication = ApplicationManager.get(sideStageModel.findFirst(ApplicationManager.RoleFocused, true));
57 print("SS", sideStageFocusedApplication)
59 print("SS", sideStageFocusedApplication)
61 function activateApplication(desktopFile, argument) {
63 function activateApplication(desktopFile, argument) {
62− var application;
64+ var appId;
63− application = getApplicationFromDesktopFile(desktopFile, ApplicationInfo.MainStage);
65+
64− if (application == null) {
66+ // HACK: might be called with appId, but mostly with desktopFile
65− application = getApplicationFromDesktopFile(desktopFile, ApplicationInfo.SideStage);
67+ if (desktopFile.indexOf(".desktop") = -1) {
68+ appId = desktopFileToAppId(desktopFile);
73+ var application = ApplicationManager.findApplication(appId);
67− if (application != null) {
74+ if (application !== null) {
68 return application;
75 return application;
71 var execFlags = sideStageEnabled ? ApplicationManager.NoFlag : ApplicationManager.ForceMainStage;
78 var execFlags = sideStageEnabled ? ApplicationManager.NoFlag : ApplicationManager.ForceMainStage;
73 if (argument) {
80 if (argument) {
74− return ApplicationManager.startProcess(desktopFile, execFlags, [argument]);
81+ return ApplicationManager.startApplication(appId, execFlags, [argument]);
76− return ApplicationManager.startProcess(desktopFile, execFlags);
83+ return ApplicationManager.startApplication(appId, execFlags);
80 function stopProcess(application) {
87 function stopProcess(application) {
90+ // HACK: might be called with appId, or else with Application object
91+ if (typeof application == "string") {
92+ appId = desktopFileToAppId(application.desktopFile);
81− ApplicationManager.stopProcess(application)
97+ ApplicationManager.stopProcess(appId);
84 function focusApplication(application) {
100 function focusApplication(application) {
@@ -86,59 +102,39 @@ Item {
89− ApplicationManager.focusApplication(application.handle);
105+ ApplicationManager.focusApplication(application.appId);
92 function unfocusCurrentApplication() {
108 function unfocusCurrentApplication() {
93− ApplicationManager.unfocusCurrentApplication(ApplicationInfo.MainStage);
109+ ApplicationManager.unfocusCurrentApplication();
96− function moveRunningApplicationStackPosition(from, to, stage) {
112+ function moveRunningApplicationStackPosition(from, to, stage) { //FIXME: stage unused!
98− if (stage == ApplicationInfo.SideStage) {
99− applications = ApplicationManager.sideStageApplications;
101− applications = ApplicationManager.mainStageApplications;
103− // FIXME: applications.move(0, 0) crashes
104− if (from !== to && from >= 0 && to >= 0) applications.move(from, to);
113+ if (from !== to && from >= 0 && to >= 0) ApplicationManager.move(from, to);
107 function getApplicationFromDesktopFile(desktopFile, stage) {
116 function getApplicationFromDesktopFile(desktopFile, stage) {
108 var foundSideStageApp, foundMainStageApp;
117 var foundSideStageApp, foundMainStageApp;
118+ var appId = desktopFileToAppId(desktopFile);
110− foundMainStageApp = __find(desktopFile, ApplicationManager.mainStageApplications)
120+ for (var i = 0, len = ApplicationManager.count; i < len; i++ ) {
111− if (stage == ApplicationInfo.MainStage) {
121+ var app = ApplicationManager.get(i);
112− return foundMainStageApp;
114− foundSideStageApp = __find(desktopFile, ApplicationManager.sideStageApplications)
115− if (stage == ApplicationInfo.SideStage) {
116− return foundSideStageApp;
119− // if stage not specified, return whichever app running on either stage
120− return (foundMainStageApp) ? foundMainStageApp : foundSideStageApp;
123− function __find(desktopFile, applications) {
123+ // if stage not specified, return whichever app running on either stage
124− for (var i = 0; i < applications.count; i++ ) {
124+ if (app.appId == appId && (stage == undefined || app.stage == stage)) {
125− var application = applications.get(i);
126− if (application.desktopFile == desktopFile) {
127− return application;
125+ return app;
134 function desktopFileToAppId(desktopFile) {
130 function desktopFileToAppId(desktopFile) {
135− var right = desktopFile.lastIndexOf(".desktop")
131+ var right = desktopFile.lastIndexOf(".desktop");
136− var left = desktopFile.lastIndexOf("/")
132+ var left = desktopFile.lastIndexOf("/");
137 if (left == -1 || right == -1 || left == right) {
133 if (left == -1 || right == -1 || left == right) {
138− console.log("ApplicationManagerWrapper: unable to extract appId from " + desktopFile)
134+ console.log("ApplicationManagerWrapper: unable to extract appId from '" + desktopFile + "'");
139 return "";
135 return "";
141− return desktopFile.substring(left+1, right)
137+ return desktopFile.substring(left+1, right);
144 function appIdToDesktopFile(desktopFile) {
140 function appIdToDesktopFile(desktopFile) {