2017-01-03 01:05:30 +03: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-30 10:13:57 +03:00
# ifndef WINDOWINFOWRAP_H
# define WINDOWINFOWRAP_H
2016-12-28 10:55:54 +03:00
2018-12-02 03:05:52 +03:00
// Qt
2017-02-25 05:40:47 +03:00
# include <QWindow>
2016-12-28 10:55:54 +03:00
# include <QRect>
2017-06-09 01:10:49 +03:00
# include <QVariant>
2016-12-28 10:55:54 +03:00
namespace Latte {
2019-05-11 15:43:10 +03:00
namespace WindowSystem {
2016-12-28 10:55:54 +03:00
2017-06-09 01:10:49 +03:00
using WindowId = QVariant ;
2018-07-03 22:15:45 +03:00
class WindowInfoWrap
{
2016-12-28 10:55:54 +03:00
public :
2017-06-09 01:10:49 +03:00
WindowInfoWrap ( ) noexcept
2017-02-25 05:40:47 +03:00
: m_isValid ( false )
, m_isActive ( false )
, m_isMinimized ( false )
2017-03-12 12:01:27 +03:00
, m_isMaxVert ( false )
2017-03-24 06:20:35 +03:00
, m_isMaxHoriz ( false )
2017-02-25 05:40:47 +03:00
, m_isFullscreen ( false )
2017-03-24 06:06:59 +03:00
, m_isShaded ( false )
2017-02-25 05:40:47 +03:00
, m_isPlasmaDesktop ( false )
2018-10-28 11:03:22 +03:00
, m_isKeepAbove ( false )
, m_hasSkipTaskbar ( false ) {
2017-02-25 05:40:47 +03:00
}
2017-06-11 00:33:46 +03:00
WindowInfoWrap ( const WindowInfoWrap & o ) noexcept
2017-06-09 01:10:49 +03:00
: m_wid ( o . m_wid )
, m_geometry ( o . m_geometry )
, m_isValid ( o . m_isValid )
, m_isActive ( o . m_isActive )
, m_isMinimized ( o . m_isMinimized )
, m_isMaxVert ( o . m_isMaxVert )
, m_isMaxHoriz ( o . m_isMaxHoriz )
, m_isFullscreen ( o . m_isFullscreen )
, m_isShaded ( o . m_isShaded )
, m_isPlasmaDesktop ( o . m_isPlasmaDesktop )
2018-10-28 11:03:22 +03:00
, m_isKeepAbove ( o . m_isKeepAbove )
, m_hasSkipTaskbar ( o . m_hasSkipTaskbar ) {
2017-06-09 01:10:49 +03:00
}
WindowInfoWrap ( WindowInfoWrap & & o ) noexcept
2017-03-24 06:06:59 +03:00
: m_wid ( std : : move ( o . m_wid ) )
, m_geometry ( std : : move ( o . m_geometry ) )
, m_isValid ( o . m_isValid )
, m_isActive ( o . m_isActive )
, m_isMinimized ( o . m_isMinimized )
, m_isMaxVert ( o . m_isMaxVert )
2017-03-24 06:20:35 +03:00
, m_isMaxHoriz ( o . m_isMaxHoriz )
2017-03-24 06:06:59 +03:00
, m_isFullscreen ( o . m_isFullscreen )
, m_isShaded ( o . m_isShaded )
, m_isPlasmaDesktop ( o . m_isPlasmaDesktop )
2018-10-28 11:03:22 +03:00
, m_isKeepAbove ( o . m_isKeepAbove )
, m_hasSkipTaskbar ( o . m_hasSkipTaskbar ) {
2017-02-25 05:40:47 +03:00
}
2017-03-24 06:06:59 +03:00
inline WindowInfoWrap & operator = ( WindowInfoWrap & & rhs ) noexcept ;
2017-06-09 01:10:49 +03:00
inline WindowInfoWrap & operator = ( const WindowInfoWrap & rhs ) noexcept ;
inline bool operator = = ( const WindowInfoWrap & rhs ) const noexcept ;
inline bool operator < ( const WindowInfoWrap & rhs ) const noexcept ;
inline bool operator > ( const WindowInfoWrap & rhs ) const noexcept ;
2017-03-24 06:06:59 +03:00
2017-06-09 01:10:49 +03:00
inline bool isValid ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsValid ( bool isValid ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline bool isActive ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsActive ( bool isActive ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline bool isMinimized ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsMinimized ( bool isMinimized ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline bool isMaximized ( ) const noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline bool isMaxVert ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsMaxVert ( bool isMaxVert ) noexcept ;
2017-03-12 12:01:27 +03:00
2017-06-09 01:10:49 +03:00
inline bool isMaxHoriz ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsMaxHoriz ( bool isMaxHoriz ) noexcept ;
2017-03-12 12:01:27 +03:00
2017-06-09 01:10:49 +03:00
inline bool isFullscreen ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsFullscreen ( bool isFullscreen ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline bool isShaded ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsShaded ( bool isShaded ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline bool isPlasmaDesktop ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setIsPlasmaDesktop ( bool isPlasmaDesktop ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-12-24 21:54:45 +03:00
inline bool isKeepAbove ( ) const noexcept ;
inline void setIsKeepAbove ( bool isKeepAbove ) noexcept ;
2018-10-28 11:03:22 +03:00
inline bool hasSkipTaskbar ( ) const noexcept ;
inline void setHasSkipTaskbar ( bool skipTaskbar ) noexcept ;
2017-06-09 01:10:49 +03:00
inline QRect geometry ( ) const noexcept ;
2017-03-24 06:06:59 +03:00
inline void setGeometry ( const QRect & geometry ) noexcept ;
2017-02-25 05:40:47 +03:00
2017-06-09 01:10:49 +03:00
inline WindowId wid ( ) const noexcept ;
inline void setWid ( WindowId wid ) noexcept ;
2017-01-16 22:07:49 +03:00
2017-02-25 05:40:47 +03:00
private :
2017-06-09 01:10:49 +03:00
WindowId m_wid { 0 } ;
2017-03-24 06:06:59 +03:00
QRect m_geometry ;
2017-02-25 05:40:47 +03:00
bool m_isValid : 1 ;
bool m_isActive : 1 ;
bool m_isMinimized : 1 ;
2017-03-12 12:01:27 +03:00
bool m_isMaxVert : 1 ;
2017-03-24 06:20:35 +03:00
bool m_isMaxHoriz : 1 ;
2017-02-25 05:40:47 +03:00
bool m_isFullscreen : 1 ;
2017-03-24 06:06:59 +03:00
bool m_isShaded : 1 ;
2017-02-25 05:40:47 +03:00
bool m_isPlasmaDesktop : 1 ;
2017-12-24 21:54:45 +03:00
bool m_isKeepAbove : 1 ;
2018-10-28 11:03:22 +03:00
bool m_hasSkipTaskbar : 1 ;
2017-02-25 05:40:47 +03:00
} ;
2017-01-16 22:07:49 +03:00
2017-02-25 05:40:47 +03:00
// BEGIN: definitions
2017-03-24 06:06:59 +03:00
inline WindowInfoWrap & WindowInfoWrap : : operator = ( WindowInfoWrap & & rhs ) noexcept
2017-02-25 05:40:47 +03:00
{
2017-03-24 06:06:59 +03:00
m_wid = std : : move ( rhs . m_wid ) ;
m_geometry = std : : move ( rhs . m_geometry ) ;
2017-02-25 05:40:47 +03:00
m_isValid = rhs . m_isValid ;
m_isActive = rhs . m_isActive ;
m_isMinimized = rhs . m_isMinimized ;
2017-03-12 12:01:27 +03:00
m_isMaxVert = rhs . m_isMaxVert ;
2017-03-24 06:20:35 +03:00
m_isMaxHoriz = rhs . m_isMaxHoriz ;
2017-02-25 05:40:47 +03:00
m_isFullscreen = rhs . m_isFullscreen ;
2017-03-24 06:12:11 +03:00
m_isShaded = rhs . m_isShaded ;
2017-02-25 05:40:47 +03:00
m_isPlasmaDesktop = rhs . m_isPlasmaDesktop ;
2017-12-24 21:54:45 +03:00
m_isKeepAbove = rhs . m_isKeepAbove ;
2018-10-28 11:03:22 +03:00
m_hasSkipTaskbar = rhs . m_hasSkipTaskbar ;
2017-02-25 05:40:47 +03:00
return * this ;
}
2017-01-16 22:07:49 +03:00
2017-06-09 01:10:49 +03:00
inline WindowInfoWrap & WindowInfoWrap : : operator = ( const WindowInfoWrap & rhs ) noexcept
{
m_wid = rhs . m_wid ;
m_geometry = std : : move ( rhs . m_geometry ) ;
m_isValid = rhs . m_isValid ;
m_isActive = rhs . m_isActive ;
m_isMinimized = rhs . m_isMinimized ;
m_isMaxVert = rhs . m_isMaxVert ;
m_isMaxHoriz = rhs . m_isMaxHoriz ;
m_isFullscreen = rhs . m_isFullscreen ;
m_isShaded = rhs . m_isShaded ;
m_isPlasmaDesktop = rhs . m_isPlasmaDesktop ;
2017-12-24 21:54:45 +03:00
m_isKeepAbove = rhs . m_isKeepAbove ;
2018-10-28 11:03:22 +03:00
m_hasSkipTaskbar = rhs . m_hasSkipTaskbar ;
2017-06-09 01:10:49 +03:00
return * this ;
}
inline bool WindowInfoWrap : : operator = = ( const WindowInfoWrap & rhs ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_wid = = rhs . m_wid ;
}
2017-01-16 22:07:49 +03:00
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : operator < ( const WindowInfoWrap & rhs ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_wid < rhs . m_wid ;
}
2017-01-16 22:07:49 +03:00
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : operator > ( const WindowInfoWrap & rhs ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_wid > rhs . m_wid ;
}
2017-01-16 22:07:49 +03:00
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isValid ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_isValid ;
}
2017-01-16 22:07:49 +03:00
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsValid ( bool isValid ) noexcept
2017-02-25 05:40:47 +03:00
{
m_isValid = isValid ;
}
2017-01-16 22:07:49 +03:00
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isActive ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_isActive ;
}
2017-01-16 22:07:49 +03:00
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsActive ( bool isActive ) noexcept
2017-02-25 05:40:47 +03:00
{
m_isActive = isActive ;
}
2017-01-16 22:07:49 +03:00
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isMinimized ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_isMinimized ;
}
2017-01-16 22:07:49 +03:00
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsMinimized ( bool isMinimized ) noexcept
2017-02-25 05:40:47 +03:00
{
m_isMinimized = isMinimized ;
}
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isMaximized ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
2017-03-24 06:20:35 +03:00
return m_isMaxVert | | m_isMaxHoriz ;
2017-03-12 12:01:27 +03:00
}
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isMaxVert ( ) const noexcept
2017-03-12 12:01:27 +03:00
{
return m_isMaxVert ;
}
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsMaxVert ( bool isMaxVert ) noexcept
2017-03-12 12:01:27 +03:00
{
m_isMaxVert = isMaxVert ;
}
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isMaxHoriz ( ) const noexcept
2017-03-12 12:01:27 +03:00
{
2017-03-24 06:20:35 +03:00
return m_isMaxHoriz ;
2017-02-25 05:40:47 +03:00
}
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsMaxHoriz ( bool isMaxHoriz ) noexcept
2017-02-25 05:40:47 +03:00
{
2017-03-24 06:20:35 +03:00
m_isMaxHoriz = isMaxHoriz ;
2017-02-25 05:40:47 +03:00
}
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isFullscreen ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_isFullscreen ;
}
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsFullscreen ( bool isFullscreen ) noexcept
2017-02-25 05:40:47 +03:00
{
m_isFullscreen = isFullscreen ;
}
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isShaded ( ) const noexcept
2017-03-24 06:06:59 +03:00
{
return m_isShaded ;
}
inline void WindowInfoWrap : : setIsShaded ( bool isShaded ) noexcept
{
m_isShaded = isShaded ;
}
2017-06-09 01:10:49 +03:00
inline bool WindowInfoWrap : : isPlasmaDesktop ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_isPlasmaDesktop ;
}
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setIsPlasmaDesktop ( bool isPlasmaDesktop ) noexcept
2017-02-25 05:40:47 +03:00
{
m_isPlasmaDesktop = isPlasmaDesktop ;
}
2017-12-24 21:54:45 +03:00
inline bool WindowInfoWrap : : isKeepAbove ( ) const noexcept
{
return m_isKeepAbove ;
}
inline void WindowInfoWrap : : setIsKeepAbove ( bool isKeepAbove ) noexcept
{
m_isKeepAbove = isKeepAbove ;
}
2018-10-28 11:03:22 +03:00
inline bool WindowInfoWrap : : hasSkipTaskbar ( ) const noexcept
{
return m_hasSkipTaskbar ;
}
inline void WindowInfoWrap : : setHasSkipTaskbar ( bool skipTaskbar ) noexcept
{
m_hasSkipTaskbar = skipTaskbar ;
}
2017-06-09 01:10:49 +03:00
inline QRect WindowInfoWrap : : geometry ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_geometry ;
}
2017-03-24 06:06:59 +03:00
inline void WindowInfoWrap : : setGeometry ( const QRect & geometry ) noexcept
2017-02-25 05:40:47 +03:00
{
m_geometry = geometry ;
}
2017-06-09 01:10:49 +03:00
inline WindowId WindowInfoWrap : : wid ( ) const noexcept
2017-02-25 05:40:47 +03:00
{
return m_wid ;
}
2017-06-09 01:10:49 +03:00
inline void WindowInfoWrap : : setWid ( WindowId wid ) noexcept
2017-02-25 05:40:47 +03:00
{
m_wid = wid ;
}
2016-12-28 10:55:54 +03:00
2017-02-25 05:40:47 +03:00
// END: definitions
2016-12-28 10:55:54 +03:00
}
2019-05-11 15:43:10 +03:00
}
2016-12-28 10:55:54 +03:00
2016-12-30 10:13:57 +03:00
# endif // WINDOWINFOWRAP_H