@@ -21,10 +21,10 @@ import Utils 0.1
2121Item {
2222 id: applicationManager
2323
24− property var mainStageApplications: ApplicationManager.mainStageApplications
25− property var sideStageApplications: ApplicationManager.sideStageApplications
26− property var mainStageFocusedApplication: mainStageModel
27− property var sideStageFocusedApplication: sideStageModel
24+ property var mainStageApplications: mainStageModel
25+ property var sideStageApplications: sideStageModel
26+ property var mainStageFocusedApplication: null
27+ property var sideStageFocusedApplication: null
2828 property bool sideStageEnabled: true
2929 signal focusRequested(string desktopFile)
3030 property bool keyboardVisible: ApplicationManager.keyboardVisible
@@ -40,9 +40,11 @@ Item {
4040 filterRegExp: RegExp(ApplicationInfo.MainStage)
4141
4242 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));
4444 print("MS", mainStageFocusedApplication)
4545 }
46+ onLayoutChanged: print("LAYOUT")
47+ onDataChanged: print("DATA")
4648 }
4749
4850 SortFilterProxyModel {
@@ -53,32 +55,46 @@ Item {
5355 filterRegExp: RegExp(ApplicationInfo.SideStage)
5456
5557 onDataChanged: { print("MODEL Side", count)
56− sideStageFocusedApplication = sideStageModel.findFirst(ApplicationManager.RoleFocused, true);
58+ sideStageFocusedApplication = ApplicationManager.get(sideStageModel.findFirst(ApplicationManager.RoleFocused, true));
5759 print("SS", sideStageFocusedApplication)
5860 }
5961 }
6062
6163 function activateApplication(desktopFile, argument) {
62− var application;
63− application = getApplicationFromDesktopFile(desktopFile, ApplicationInfo.MainStage);
64− if (application == null) {
65− application = getApplicationFromDesktopFile(desktopFile, ApplicationInfo.SideStage);
64+ var appId;
65+
66+ // HACK: might be called with appId, but mostly with desktopFile
67+ if (desktopFile.indexOf(".desktop") = -1) {
68+ appId = desktopFileToAppId(desktopFile);
69+ } else {
70+ appId = desktopFile;
6671 }
67− if (application != null) {
72+
73+ var application = ApplicationManager.findApplication(appId);
74+ if (application !== null) {
6875 return application;
6976 }
7077
7178 var execFlags = sideStageEnabled ? ApplicationManager.NoFlag : ApplicationManager.ForceMainStage;
7279
7380 if (argument) {
74− return ApplicationManager.startProcess(desktopFile, execFlags, [argument]);
81+ return ApplicationManager.startApplication(appId, execFlags, [argument]);
7582 } else {
76− return ApplicationManager.startProcess(desktopFile, execFlags);
83+ return ApplicationManager.startApplication(appId, execFlags);
7784 }
7885 }
7986
8087 function stopProcess(application) {
81− ApplicationManager.stopProcess(application)
88+ var appId;
89+
90+ // HACK: might be called with appId, or else with Application object
91+ if (typeof application == "string") {
92+ appId = desktopFileToAppId(application.desktopFile);
93+ } else {
94+ appId = application;
95+ }
96+
97+ ApplicationManager.stopProcess(appId);
8298 }
8399
84100 function focusApplication(application) {
@@ -86,59 +102,39 @@ Item {
86102 return;
87103 }
88104
89− ApplicationManager.focusApplication(application.handle);
105+ ApplicationManager.focusApplication(application.appId);
90106 }
91107
92108 function unfocusCurrentApplication() {
93− ApplicationManager.unfocusCurrentApplication(ApplicationInfo.MainStage);
109+ ApplicationManager.unfocusCurrentApplication();
94110 }
95111
96− function moveRunningApplicationStackPosition(from, to, stage) {
97− var applications;
98− if (stage == ApplicationInfo.SideStage) {
99− applications = ApplicationManager.sideStageApplications;
100− } else {
101− applications = ApplicationManager.mainStageApplications;
102− }
103− // FIXME: applications.move(0, 0) crashes
104− if (from !== to && from >= 0 && to >= 0) applications.move(from, to);
112+ function moveRunningApplicationStackPosition(from, to, stage) { //FIXME: stage unused!
113+ if (from !== to && from >= 0 && to >= 0) ApplicationManager.move(from, to);
105114 }
106115
107116 function getApplicationFromDesktopFile(desktopFile, stage) {
108117 var foundSideStageApp, foundMainStageApp;
118+ var appId = desktopFileToAppId(desktopFile);
109119
110− foundMainStageApp = __find(desktopFile, ApplicationManager.mainStageApplications)
111− if (stage == ApplicationInfo.MainStage) {
112− return foundMainStageApp;
113− }
114− foundSideStageApp = __find(desktopFile, ApplicationManager.sideStageApplications)
115− if (stage == ApplicationInfo.SideStage) {
116− return foundSideStageApp;
117− }
118−
119− // if stage not specified, return whichever app running on either stage
120− return (foundMainStageApp) ? foundMainStageApp : foundSideStageApp;
121−
120+ for (var i = 0, len = ApplicationManager.count; i < len; i++ ) {
121+ var app = ApplicationManager.get(i);
122122
123− function __find(desktopFile, applications) {
124− for (var i = 0; i < applications.count; i++ ) {
125− var application = applications.get(i);
126− if (application.desktopFile == desktopFile) {
127− return application;
128− }
123+ // if stage not specified, return whichever app running on either stage
124+ if (app.appId == appId && (stage == undefined || app.stage == stage)) {
125+ return app;
129126 }
130− return null;
131127 }
132128 }
133129
134130 function desktopFileToAppId(desktopFile) {
135− var right = desktopFile.lastIndexOf(".desktop")
136− var left = desktopFile.lastIndexOf("/")
131+ var right = desktopFile.lastIndexOf(".desktop");
132+ var left = desktopFile.lastIndexOf("/");
137133 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 + "'");
139135 return "";
140136 }
141− return desktopFile.substring(left+1, right)
137+ return desktopFile.substring(left+1, right);
142138 }
143139
144140 function appIdToDesktopFile(desktopFile) {