X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=WindowManager%2Fsrc%2Fwindowmanager.hpp;h=89f255e150008b48d13c65639d9c780f39285b65;hb=09f2f0036f122e49aa49e6c446d723850192a725;hp=ee779aa89202825aa00ab33383aba1f8914880c5;hpb=0a468d9b5ae7b3e5ba106facf17698d89b1ce200;p=staging%2FHomeScreen.git diff --git a/WindowManager/src/windowmanager.hpp b/WindowManager/src/windowmanager.hpp index ee779aa..89f255e 100644 --- a/WindowManager/src/windowmanager.hpp +++ b/WindowManager/src/windowmanager.hpp @@ -1,5 +1,5 @@ /* - * Copyright (C) 2016 Mentor Graphics Development (Deutschland) GmbH + * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,27 +18,63 @@ #define WINDOWMANAGER_HPP #include +#include +#include +#include "windowmanager_adaptor.h" -#ifdef __arm__ -extern "C" { -#include "ilm/ilm_control.h" -} +#ifdef HAVE_IVI_LAYERMANAGEMENT_API +#include #endif - - class WindowManager : public QObject { Q_OBJECT + public: - explicit WindowManager(QObject *parent = 0); + explicit WindowManager(int displayId, QObject *parent = 0); ~WindowManager(); + + void start(); private: + WindowmanagerAdaptor *mp_windowManagerAdaptor; + QList m_layouts; + QMap *mp_layoutAreaToSurfaceIdAssignment; + + int m_currentLayout; + + int m_screenId; + unsigned int m_screenWidth; + unsigned int m_screenHeight; + + void dumpScene(); + +#ifdef HAVE_IVI_LAYERMANAGEMENT_API + t_ilm_layer* m_showLayers; + QMap m_appSurfaces; + QMap m_appLayers; + int getLayerRenderOrder(t_ilm_layer* id_array); + + void createNewLayer(const int layerId); + + t_ilm_layer getAppLayerID(const pid_t pid); + + pid_t m_pending_to_show; + + void addSurface(const t_ilm_surface surfaceId); + t_ilm_layer addSurfaceToAppLayer(pid_t pid, const int surfaceId); + void addSurfaceToLayer(const int surfaceId, const int layerId); + + void configureHomeScreenMainSurface(const t_ilm_surface surface, const t_ilm_int width, const t_ilm_int height); + void configureAppSurface(const pid_t pid, const t_ilm_surface surface, const t_ilm_int width, const t_ilm_int height); +#endif + void updateScreen(); public: + static void* myThis; -#ifdef __arm__ +#ifdef HAVE_IVI_LAYERMANAGEMENT_API + // for general notifications void notificationFunc_non_static(ilmObjectType object, t_ilm_uint id, t_ilm_bool created); @@ -46,9 +82,45 @@ public: t_ilm_uint id, t_ilm_bool created, void* user_data); + + + // for surface notifications + void surfaceCallbackFunction_non_static(t_ilm_surface surface, + struct ilmSurfaceProperties* surfaceProperties, + t_ilm_notification_mask mask); + static void surfaceCallbackFunction_static(t_ilm_surface surface, + struct ilmSurfaceProperties* surfaceProperties, + t_ilm_notification_mask mask); + #endif public slots: + +// from windowmanager_adaptor.h +public: // PROPERTIES + Q_PROPERTY(int layoutId READ layoutId) + int layoutId() const; + + Q_PROPERTY(QString layoutName READ layoutName) + QString layoutName() const; + +public Q_SLOTS: // METHODS + int addLayout(int layoutId, const QString &layoutName, const QList &surfaceAreas); + int deleteLayoutById(int layoutId); + QList getAllLayouts(); + // QList getAllSurfacesOfProcess(int pid); + QList getAvailableLayouts(int numberOfAppSurfaces); + // QList getAvailableSurfaces(); + QString getLayoutName(int layoutId); + void hideLayer(int layer); + int setLayoutById(int layoutId); + int setLayoutByName(const QString &layoutName); + int setSurfaceToLayoutArea(int surfaceId, int layoutAreaId); + void showLayer(int layer); + void showAppLayer(int pid); + +Q_SIGNALS: // SIGNALS + void surfaceVisibilityChanged(int surfaceId, bool visible); }; #endif // WINDOWMANAGER_HPP