2017-01-02 17:05:30 -05:00
/*
* Copyright 2016 Smith AR < audoban @ openmailbox . org >
* Michail Vourlakos < mvourlakos @ gmail . com >
*
* This file is part of Latte - Dock
*
* Latte - Dock is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation ; either version 2 of
* the License , or ( at your option ) any later version .
*
* Latte - Dock is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program . If not , see < http : //www.gnu.org/licenses/>.
*/
2016-12-28 02:45:21 -05:00
# include "abstractwindowinterface.h"
2016-12-30 02:13:33 -05:00
# include "xwindowinterface.h"
2017-04-25 17:48:36 +03:00
# include "waylandinterface.h"
2016-12-28 02:45:21 -05:00
# include <QObject>
# include <QQuickWindow>
2016-12-30 02:13:33 -05:00
# include <KWindowSystem>
2016-12-28 02:45:21 -05:00
namespace Latte {
2017-02-24 21:40:47 -05:00
AbstractWindowInterface : : AbstractWindowInterface ( QObject * parent )
: QObject ( parent )
2016-12-28 02:45:21 -05:00
{
}
AbstractWindowInterface : : ~ AbstractWindowInterface ( )
{
}
2017-06-08 17:10:49 -05:00
void AbstractWindowInterface : : addDock ( WindowId wid )
2016-12-30 02:13:33 -05:00
{
2017-02-24 21:40:47 -05:00
m_docks . push_back ( wid ) ;
}
2017-06-08 17:10:49 -05:00
void AbstractWindowInterface : : removeDock ( WindowId wid )
2017-02-24 21:40:47 -05:00
{
2017-03-12 15:14:30 -05:00
auto it = std : : find ( m_docks . begin ( ) , m_docks . end ( ) , wid ) ;
2017-02-24 21:40:47 -05:00
2017-03-12 15:14:30 -05:00
if ( it ! = m_docks . end ( ) )
m_docks . erase ( it ) ;
2017-02-24 21:40:47 -05:00
}
AbstractWindowInterface & AbstractWindowInterface : : self ( )
{
if ( m_wm )
return * m_wm ;
2016-12-30 02:13:33 -05:00
if ( KWindowSystem : : isPlatformWayland ( ) ) {
//! TODO: WaylandWindowInterface
2017-04-25 17:48:36 +03:00
m_wm = std : : make_unique < WaylandInterface > ( ) ;
2017-03-12 15:14:30 -05:00
} else { /* if(KWindowSystem::isPlatformX11) */
2017-02-25 12:38:33 -05:00
m_wm = std : : make_unique < XWindowInterface > ( ) ;
2016-12-30 02:13:33 -05:00
}
2017-01-16 14:07:49 -05:00
2017-02-24 21:40:47 -05:00
return * m_wm ;
2016-12-30 02:13:33 -05:00
}
2016-12-28 02:45:21 -05:00
}
2017-02-24 21:40:47 -05:00
2017-02-25 12:38:33 -05:00
std : : unique_ptr < Latte : : AbstractWindowInterface > Latte : : AbstractWindowInterface : : m_wm ;