You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
326 lines
12 KiB
326 lines
12 KiB
/******************************************************************** |
|
KWin - the KDE window manager |
|
This file is part of the KDE project. |
|
|
|
Copyright (C) 2009 Martin Gräßlin <mgraesslin@kde.org> |
|
|
|
This program 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. |
|
|
|
This program 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/>. |
|
*********************************************************************/ |
|
|
|
#ifndef TABBOXCONFIG_H |
|
#define TABBOXCONFIG_H |
|
|
|
#include <QString> |
|
|
|
/** |
|
* @file |
|
* This file defines the class TabBoxConfig. |
|
* |
|
* @author Martin Gräßlin <mgraesslin@kde.org> |
|
* @since 4.4 |
|
*/ |
|
|
|
namespace KWin |
|
{ |
|
namespace TabBox |
|
{ |
|
class TabBoxConfigPrivate; |
|
|
|
/** |
|
* The TabBoxConfig class holds all configuration options for the TabBox. |
|
* The TabBoxHandler contains a pointer to an object of this class and is |
|
* used by all classes of TabBox. The config defines what kind of data the |
|
* TabBox is displaying and how the layout looks like. There can be different |
|
* Config sets and by setting a new config in the TabBoxHandler the behaviour |
|
* of the TabBox is changed immediately. |
|
* |
|
* @author Martin Gräßlin <mgraesslin@kde.org> |
|
* @since 4.4 |
|
*/ |
|
class TabBoxConfig |
|
{ |
|
public: |
|
/** |
|
* ClientDesktopMode defines whether windows from the current desktop or from all |
|
* desktops are included in the TabBoxClient List in the TabBoxClientModel |
|
*/ |
|
enum ClientDesktopMode { |
|
AllDesktopsClients, ///< TabBoxClients from all desktops are included. |
|
OnlyCurrentDesktopClients, ///< Only TabBoxClients on current desktop are included |
|
ExcludeCurrentDesktopClients ///< Exclude TabBoxClients on current desktop |
|
}; |
|
/** |
|
* ClientActivitiesMode defines whether windows from the current activity or from all |
|
* activities are included in the TabBoxClient List in the TabBoxClientModel |
|
*/ |
|
enum ClientActivitiesMode { |
|
AllActivitiesClients, ///< TabBoxClients from all Activities are included. |
|
OnlyCurrentActivityClients, ///< Only TabBoxClients on current activity are included |
|
ExcludeCurrentActivityClients ///< Exclude TabBoxClients on current activity |
|
}; |
|
/** |
|
* ClientApplicationsMode defines which windows from the current application or from all |
|
* applications are included in the TabBoxClient List in the TabBoxClientModel |
|
*/ |
|
enum ClientApplicationsMode { |
|
AllWindowsAllApplications, ///< TabBoxClients from all applications are included |
|
OneWindowPerApplication, ///< Only one TabBoxClient for each application is included |
|
AllWindowsCurrentApplication ///< Only TabBoxClients for the current application are included |
|
}; |
|
/** |
|
* ClientMinimizedMode defines which windows are included in the TabBoxClient List |
|
* in the TabBoxClientModel based on whether they are minimized or not |
|
*/ |
|
enum ClientMinimizedMode { |
|
IgnoreMinimizedStatus, ///< TabBoxClients are included no matter they are minimized or not |
|
ExcludeMinimizedClients, ///< Exclude minimized TabBoxClients |
|
OnlyMinimizedClients ///< Only minimized TabBoxClients are included |
|
}; |
|
/** |
|
* ShowDesktopMode defines whether a TabBoxClient representing the desktop |
|
* is included in the TabBoxClient List in the TabBoxClientModel |
|
*/ |
|
enum ShowDesktopMode { |
|
DoNotShowDesktopClient, ///< A TabBoxClient representing the desktop is not included |
|
ShowDesktopClient ///< A TabBoxClient representing the desktop is included |
|
}; |
|
/** |
|
* ClientActivitiesMode defines whether windows from the current activity or from all |
|
* activities are included in the TabBoxClient List in the TabBoxClientModel |
|
*/ |
|
enum ClientMultiScreenMode { |
|
IgnoreMultiScreen, ///< TabBoxClients are included independently of the screen they are on |
|
OnlyCurrentScreenClients, ///< Only TabBoxClients on current screen are included |
|
ExcludeCurrentScreenClients ///< Exclude TabBoxClients from the current screen |
|
}; |
|
/** |
|
* ClientSwitchingMode defines the sorting of the TabBoxClients in the |
|
* TabBoxClientModel. |
|
*/ |
|
enum ClientSwitchingMode { |
|
FocusChainSwitching, ///< Sort by recently used. Most recently used TabBoxClient is the first |
|
StackingOrderSwitching ///< Sort by current stacking order |
|
}; |
|
/** |
|
* DesktopSwitchingMode defines the sorting of the desktops in the |
|
* TabBoxDesktopModel. |
|
*/ |
|
enum DesktopSwitchingMode { |
|
MostRecentlyUsedDesktopSwitching,///< Sort by recently used. Most recently used desktop is the first |
|
StaticDesktopSwitching///< Static sorting in numerical ascending order |
|
}; |
|
/** |
|
* TabBoxMode defines what kind of items the TabBox is displaying and which |
|
* Model is used |
|
*/ |
|
enum TabBoxMode { |
|
ClientTabBox,///< TabBox uses TabBoxClientModel |
|
DesktopTabBox///< TabBox uses TabBoxDesktopModel |
|
}; |
|
TabBoxConfig(); |
|
~TabBoxConfig(); |
|
TabBoxConfig& operator=(const TabBoxConfig& object); |
|
|
|
// getters |
|
/** |
|
* @return If the TabBox should be shown or not |
|
* This option does not apply for TabBoxMode DesktopTabBox. |
|
* @see setShowTabBox |
|
* @see defaultShowTabBox |
|
*/ |
|
bool isShowTabBox() const; |
|
/** |
|
* @return If Highlight Window effect should be used. |
|
* This option does not apply for TabBoxMode DesktopTabBox. |
|
* @see setHighlightWindows |
|
* @see defaultHighlightWindows |
|
*/ |
|
bool isHighlightWindows() const; |
|
/** |
|
* @return The current TabBoxMode |
|
* @see setTabBoxMode |
|
*/ |
|
TabBoxMode tabBoxMode() const; |
|
/** |
|
* @return The current ClientDesktopMode |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setClientDesktopMode |
|
* @see defaultDesktopMode |
|
*/ |
|
ClientDesktopMode clientDesktopMode() const; |
|
/** |
|
* @return The current ClientActivitiesMode |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setClientActivitiesMode |
|
* @see defaultActivitiesMode |
|
*/ |
|
ClientActivitiesMode clientActivitiesMode() const; |
|
/** |
|
* @return The current ClientApplicationsMode |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setClientApplicationsMode |
|
* @see defaultApplicationsMode |
|
*/ |
|
ClientApplicationsMode clientApplicationsMode() const; |
|
/** |
|
* @return The current ClientMinimizedMode |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setClientMinimizedMode |
|
* @see defaultMinimizedMode |
|
*/ |
|
ClientMinimizedMode clientMinimizedMode() const; |
|
/** |
|
* @return The current ShowDesktopMode |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setShowDesktopMode |
|
* @see defaultShowDesktopMode |
|
*/ |
|
ShowDesktopMode showDesktopMode() const; |
|
/** |
|
* @return The current ClientMultiScreenMode |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setClientMultiScreenMode |
|
* @see defaultMultiScreenMode |
|
*/ |
|
ClientMultiScreenMode clientMultiScreenMode() const; |
|
/** |
|
* @return The current ClientSwitchingMode. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see setClientSwitchingMode |
|
* @see defaultSwitchingMode |
|
*/ |
|
ClientSwitchingMode clientSwitchingMode() const; |
|
/** |
|
* @return The current DesktopSwitchingMode |
|
* This option only applies for TabBoxMode DesktopTabBox. |
|
* @see setDesktopSwitchingMode |
|
*/ |
|
DesktopSwitchingMode desktopSwitchingMode() const; |
|
/** |
|
* @return Then name of the current ItemLayout |
|
* @see setlayoutName |
|
*/ |
|
QString& layoutName() const; |
|
|
|
// setters |
|
/** |
|
* @param show The tabbox should be shown or not. |
|
* This option does not apply for TabBoxMode DesktopTabBox. |
|
* @see isShowTabBox |
|
*/ |
|
void setShowTabBox(bool show); |
|
/** |
|
* @param highlight Highlight Windows effect should be used or not. |
|
* This option does not apply for TabBoxMode DesktopTabBox. |
|
* @see isHighlightWindows |
|
*/ |
|
void setHighlightWindows(bool highlight); |
|
/** |
|
* @param mode The new TabBoxMode to be used. |
|
* @see tabBoxMode |
|
*/ |
|
void setTabBoxMode(TabBoxMode mode); |
|
/** |
|
* @param desktopMode The new ClientDesktopMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see clientDesktopMode |
|
*/ |
|
void setClientDesktopMode(ClientDesktopMode desktopMode); |
|
/** |
|
* @param activitiesMode The new ClientActivitiesMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see clientActivitiesMode |
|
*/ |
|
void setClientActivitiesMode(ClientActivitiesMode activitiesMode); |
|
/** |
|
* @param applicationsMode The new ClientApplicationsMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see clientApplicationsMode |
|
*/ |
|
void setClientApplicationsMode(ClientApplicationsMode applicationsMode); |
|
/** |
|
* @param minimizedMode The new ClientMinimizedMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see clientMinimizedMode |
|
*/ |
|
void setClientMinimizedMode(ClientMinimizedMode minimizedMode); |
|
/** |
|
* @param showDesktopMode The new ShowDesktopMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see showDesktopMode |
|
*/ |
|
void setShowDesktopMode(ShowDesktopMode showDesktopMode); |
|
/** |
|
* @param multiScreenMode The new ClientMultiScreenMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see clientMultiScreenMode |
|
*/ |
|
void setClientMultiScreenMode(ClientMultiScreenMode multiScreenMode); |
|
/** |
|
* @param switchingMode The new ClientSwitchingMode to be used. |
|
* This option only applies for TabBoxMode ClientTabBox. |
|
* @see clientSwitchingMode |
|
*/ |
|
void setClientSwitchingMode(ClientSwitchingMode switchingMode); |
|
/** |
|
* @param switchingMode The new DesktopSwitchingMode to be used. |
|
* This option only applies for TabBoxMode DesktopTabBox. |
|
* @see desktopSwitchingMode |
|
*/ |
|
void setDesktopSwitchingMode(DesktopSwitchingMode switchingMode); |
|
/** |
|
* @param name The new ItemLayout config name |
|
* @see layoutName |
|
*/ |
|
void setLayoutName(const QString& name); |
|
|
|
// some static methods to access default values |
|
static ClientDesktopMode defaultDesktopMode() { |
|
return OnlyCurrentDesktopClients; |
|
} |
|
static ClientActivitiesMode defaultActivitiesMode() { |
|
return OnlyCurrentActivityClients; |
|
} |
|
static ClientApplicationsMode defaultApplicationsMode() { |
|
return AllWindowsAllApplications; |
|
} |
|
static ClientMinimizedMode defaultMinimizedMode() { |
|
return IgnoreMinimizedStatus; |
|
} |
|
static ShowDesktopMode defaultShowDesktopMode() { |
|
return DoNotShowDesktopClient; |
|
} |
|
static ClientMultiScreenMode defaultMultiScreenMode() { |
|
return IgnoreMultiScreen; |
|
} |
|
static ClientSwitchingMode defaultSwitchingMode() { |
|
return FocusChainSwitching; |
|
} |
|
static bool defaultShowTabBox() { |
|
return true; |
|
} |
|
static bool defaultHighlightWindow() { |
|
return true; |
|
} |
|
static QString defaultLayoutName() { |
|
return QStringLiteral("sidebar"); |
|
} |
|
private: |
|
TabBoxConfigPrivate* d; |
|
}; |
|
|
|
} // namespace TabBox |
|
} // namespace KWin |
|
|
|
#endif // TABBOXCONFIG_H
|
|
|