@@ -0,0 +1,53 @@
1+/*
2+ * Copyright (C) 2014 Canonical, Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License as published by
6+ * the Free Software Foundation; version 3.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ *
13+ * You should have received a copy of the GNU General Public License
14+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
15+ */
16+
17+#include "ApplicationInfo.h"
18+#include "ApplicationDBusAdaptor.h"
19+#include "ApplicationManager.h"
20+#include "SurfaceManager.h"
21+#include "MirSurfaceItem.h"
22+
23+quint32 nextId = 0;
24+
25+ApplicationDBusAdaptor::ApplicationDBusAdaptor(ApplicationManager* applicationManager)
26+ : QDBusAbstractAdaptor(applicationManager)
27+ , m_applicationManager(applicationManager)
28+{
29+}
30+
31+quint32 ApplicationDBusAdaptor::addChildSurface(const QString &appId, const QString &surfaceImage)
32+{
33+ ApplicationInfo* application = m_applicationManager->findApplication(appId);
34+ if (!application) {
35+ qDebug() << "ApplicationDBusAdaptor::addChildSurface - No application for " << appId;
36+ return ~0;
37+ }
38+ quint32 surfaceId = ++nextId;
39+ MirSurfaceItem* surface = new MirSurfaceItem(QString("ChildSurface%1").arg(surfaceId),
40+ MirSurfaceItem::Normal,
41+ MirSurfaceItem::Maximized,
42+ QUrl(surfaceImage));
43+ m_childItems[surfaceId] = surface;
44+ surface->setParentSurface(application->surface());
45+ return surfaceId;
46+}
47+
48+void ApplicationDBusAdaptor::removeChildSurface(int surfaceId)
49+{
50+ if (!m_childItems.contains(surfaceId)) return;
51+ MirSurfaceItem* surface = m_childItems[surfaceId];
52+ surface->setParentSurface(nullptr);
53+}