[aurorae] Use enum type for Decoration Buttons
Defines the DecorationButton type in DecorationOptions (needs to be re-defined due to QML limitations) and exports the buttons as a QList<int> property (again QML limitations). All QML files are switched from string to the new enum type.
This commit is contained in:
parent
07294b49f2
commit
73e0a6586c
12 changed files with 161 additions and 122 deletions
|
@ -69,22 +69,34 @@ QFont DecorationOptions::titleFont() const
|
|||
return KDecoration::options()->font(m_active);
|
||||
}
|
||||
|
||||
QString DecorationOptions::titleButtonsLeft() const
|
||||
QList<int> DecorationOptions::titleButtonsLeft() const
|
||||
{
|
||||
QList<KDecorationDefines::DecorationButton> buttons;
|
||||
if (KDecoration::options()->customButtonPositions()) {
|
||||
return KDecoration::options()->titleButtonsLeft();
|
||||
buttons = KDecoration::options()->titleButtonsLeft();
|
||||
} else {
|
||||
return KDecorationOptions::defaultTitleButtonsLeft();
|
||||
buttons = KDecorationOptions::defaultTitleButtonsLeft();
|
||||
}
|
||||
QList<int> ret;
|
||||
for (auto it : buttons) {
|
||||
ret << static_cast<int>(it);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
QString DecorationOptions::titleButtonsRight() const
|
||||
QList<int> DecorationOptions::titleButtonsRight() const
|
||||
{
|
||||
QList<KDecorationDefines::DecorationButton> buttons;
|
||||
if (KDecoration::options()->customButtonPositions()) {
|
||||
return KDecoration::options()->titleButtonsRight();
|
||||
buttons = KDecoration::options()->titleButtonsRight();
|
||||
} else {
|
||||
return KDecorationOptions::defaultTitleButtonsRight();
|
||||
buttons = KDecorationOptions::defaultTitleButtonsRight();
|
||||
}
|
||||
QList<int> ret;
|
||||
for (auto it : buttons) {
|
||||
ret << static_cast<int>(it);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
QObject *DecorationOptions::decoration() const
|
||||
|
|
|
@ -52,6 +52,7 @@ class DecorationOptions : public QObject
|
|||
{
|
||||
Q_OBJECT
|
||||
Q_ENUMS(BorderSize)
|
||||
Q_ENUMS(DecorationButton)
|
||||
/**
|
||||
* The decoration Object for which this set of options should be used. The decoration is
|
||||
* required to get the correct colors and fonts depending on whether the decoration represents
|
||||
|
@ -90,28 +91,12 @@ class DecorationOptions : public QObject
|
|||
Q_PROPERTY(QFont titleFont READ titleFont NOTIFY fontChanged)
|
||||
/**
|
||||
* The buttons to be positioned on the left side of the titlebar from left to right.
|
||||
*
|
||||
* Characters in the returned string have the following meaning:
|
||||
* <ul>
|
||||
* <li>'M' menu button</li>
|
||||
* <li>'S' on all desktops button</li>
|
||||
* <li>'H' quickhelp button</li>
|
||||
* <li>'I' minimize button</li>
|
||||
* <li>'A' maximize button</li>
|
||||
* <li>'X' close button</li>
|
||||
* <li>'F' keep above button</li>
|
||||
* <li>'B' keep below button</li>
|
||||
* <li>'L' shade button</li>
|
||||
* <li>'_' explicit spacer</li>
|
||||
* </ul>
|
||||
* @todo: make this a list of enum values
|
||||
**/
|
||||
Q_PROPERTY(QString titleButtonsLeft READ titleButtonsLeft NOTIFY titleButtonsChanged)
|
||||
Q_PROPERTY(QList<int> titleButtonsLeft READ titleButtonsLeft NOTIFY titleButtonsChanged)
|
||||
/**
|
||||
* The buttons to be positioned on the right side of the titlebar from left to right.
|
||||
* @see titleButtonsRight
|
||||
**/
|
||||
Q_PROPERTY(QString titleButtonsRight READ titleButtonsRight NOTIFY titleButtonsChanged)
|
||||
Q_PROPERTY(QList<int> titleButtonsRight READ titleButtonsRight NOTIFY titleButtonsChanged)
|
||||
public:
|
||||
enum BorderSize {
|
||||
BorderTiny, ///< Minimal borders
|
||||
|
@ -124,6 +109,34 @@ public:
|
|||
BorderNoSides, ///< No borders on sides
|
||||
BorderNone ///< No borders except title
|
||||
};
|
||||
/**
|
||||
* Enum values to identify the decorations buttons which should be used
|
||||
* by the decoration.
|
||||
*
|
||||
*/
|
||||
enum DecorationButton {
|
||||
/**
|
||||
* Invalid button value. A decoration should not create a button for
|
||||
* this type.
|
||||
*/
|
||||
DecorationButtonNone,
|
||||
DecorationButtonMenu,
|
||||
DecorationButtonApplicationMenu,
|
||||
DecorationButtonOnAllDesktops,
|
||||
DecorationButtonQuickHelp,
|
||||
DecorationButtonMinimize,
|
||||
DecorationButtonMaximizeRestore,
|
||||
DecorationButtonClose,
|
||||
DecorationButtonKeepAbove,
|
||||
DecorationButtonKeepBelow,
|
||||
DecorationButtonShade,
|
||||
DecorationButtonResize,
|
||||
/**
|
||||
* The decoration should create an empty spacer instead of a button for
|
||||
* this type.
|
||||
*/
|
||||
DecorationButtonExplicitSpacer
|
||||
};
|
||||
explicit DecorationOptions(QObject *parent = 0);
|
||||
virtual ~DecorationOptions();
|
||||
|
||||
|
@ -134,8 +147,8 @@ public:
|
|||
QColor borderColor() const;
|
||||
QColor resizeHandleColor() const;
|
||||
QFont titleFont() const;
|
||||
QString titleButtonsLeft() const;
|
||||
QString titleButtonsRight() const;
|
||||
QList<int> titleButtonsLeft() const;
|
||||
QList<int> titleButtonsRight() const;
|
||||
QObject *decoration() const;
|
||||
void setDecoration(QObject *decoration);
|
||||
|
||||
|
|
|
@ -16,10 +16,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.qtextracomponents 2.0 as QtExtra
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
DecorationButton {
|
||||
id: appMenuButton
|
||||
buttonType: "N"
|
||||
buttonType: DecorationOptions.DecorationButtonApplicationMenu
|
||||
visible: decoration.appMenu
|
||||
QtExtra.QIconItem {
|
||||
icon: decoration.icon
|
||||
|
|
|
@ -16,38 +16,39 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
DecorationButton {
|
||||
function widthForButton() {
|
||||
switch (buttonType) {
|
||||
case "M":
|
||||
case DecorationOptions.DecorationButtonMenu:
|
||||
// menu
|
||||
return auroraeTheme.buttonWidthMenu;
|
||||
case "N":
|
||||
case DecorationOptions.DecorationButtonApplicationMenu:
|
||||
// app menu
|
||||
return auroraeTheme.buttonWidthAppMenu;
|
||||
case "S":
|
||||
case DecorationOptions.DecorationButtonOnAllDesktops:
|
||||
// all desktops
|
||||
return auroraeTheme.buttonWidthAllDesktops;
|
||||
case "H":
|
||||
case DecorationOptions.DecorationButtonQuickHelp:
|
||||
// help
|
||||
return auroraeTheme.buttonWidthHelp;
|
||||
case "I":
|
||||
case DecorationOptions.DecorationButtonMinimize:
|
||||
// minimize
|
||||
return auroraeTheme.buttonWidthMinimize;
|
||||
case "A":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||
// maximize
|
||||
return auroraeTheme.buttonWidthMaximizeRestore;
|
||||
case "X":
|
||||
case DecorationOptions.DecorationButtonClose:
|
||||
// close
|
||||
return auroraeTheme.buttonWidthClose;
|
||||
case "F":
|
||||
case DecorationOptions.DecorationButtonKeepAbove:
|
||||
// keep above
|
||||
return auroraeTheme.buttonWidthKeepAbove;
|
||||
case "B":
|
||||
case DecorationOptions.DecorationButtonKeepBelow:
|
||||
// keep below
|
||||
return auroraeTheme.buttonWidthKeepBelow;
|
||||
case "L":
|
||||
case DecorationOptions.DecorationButtonShade:
|
||||
// shade
|
||||
return auroraeTheme.buttonWidthShade;
|
||||
default:
|
||||
|
@ -56,31 +57,31 @@ DecorationButton {
|
|||
}
|
||||
function pathForButton() {
|
||||
switch (buttonType) {
|
||||
case "S":
|
||||
case DecorationOptions.DecorationButtonOnAllDesktops:
|
||||
// all desktops
|
||||
return auroraeTheme.allDesktopsButtonPath;
|
||||
case "H":
|
||||
case DecorationOptions.DecorationButtonQuickHelp:
|
||||
// help
|
||||
return auroraeTheme.helpButtonPath;
|
||||
case "I":
|
||||
case DecorationOptions.DecorationButtonMinimize:
|
||||
// minimize
|
||||
return auroraeTheme.minimizeButtonPath;
|
||||
case "A":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||
// maximize
|
||||
return auroraeTheme.maximizeButtonPath;
|
||||
case "R":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore + 100:
|
||||
// maximize
|
||||
return auroraeTheme.restoreButtonPath;
|
||||
case "X":
|
||||
case DecorationOptions.DecorationButtonClose:
|
||||
// close
|
||||
return auroraeTheme.closeButtonPath;
|
||||
case "F":
|
||||
case DecorationOptions.DecorationButtonKeepAbove:
|
||||
// keep above
|
||||
return auroraeTheme.keepAboveButtonPath;
|
||||
case "B":
|
||||
case DecorationOptions.DecorationButtonKeepBelow:
|
||||
// keep below
|
||||
return auroraeTheme.keepBelowButtonPath;
|
||||
case "L":
|
||||
case DecorationOptions.DecorationButtonShade:
|
||||
// shade
|
||||
return auroraeTheme.shadeButtonPath;
|
||||
default:
|
||||
|
@ -205,7 +206,7 @@ DecorationButton {
|
|||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
if (buttonType == "H" && !decoration.providesContextHelp) {
|
||||
if (buttonType == DecorationOptions.DecorationButtonQuickHelp && !decoration.providesContextHelp) {
|
||||
visible = false;
|
||||
} else {
|
||||
visible = buttonSvg.imagePath != "";
|
||||
|
|
|
@ -16,30 +16,31 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.plasma.core 2.0 as PlasmaCore
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
Item {
|
||||
function createButtons() {
|
||||
var component = Qt.createComponent("AuroraeButton.qml");
|
||||
for (var i=0; i<buttons.length; i++) {
|
||||
if (buttons.charAt(i) == "_") {
|
||||
if (buttons[i] == DecorationOptions.DecorationButtonExplicitSpacer) {
|
||||
Qt.createQmlObject("import QtQuick 2.0; Item { width: auroraeTheme.explicitButtonSpacer * auroraeTheme.buttonSizeFactor; height: auroraeTheme.buttonHeight * auroraeTheme.buttonSizeFactor }",
|
||||
groupRow, "explicitSpacer" + buttons + i);
|
||||
} else if (buttons.charAt(i) == "M") {
|
||||
} else if (buttons[i] == DecorationOptions.DecorationButtonMenu) {
|
||||
Qt.createQmlObject("import QtQuick 2.0; MenuButton { width: auroraeTheme.buttonWidthMenu * auroraeTheme.buttonSizeFactor; height: auroraeTheme.buttonHeight * auroraeTheme.buttonSizeFactor }",
|
||||
groupRow, "menuButton" + buttons + i);
|
||||
} else if (buttons.charAt(i) == "N") {
|
||||
} else if (buttons[i] == DecorationOptions.DecorationButtonApplicationMenu) {
|
||||
Qt.createQmlObject("import QtQuick 2.0; AppMenuButton { width: auroraeTheme.buttonWidthAppMenu * auroraeTheme.buttonSizeFactor; height: auroraeTheme.buttonHeight * auroraeTheme.buttonSizeFactor }",
|
||||
groupRow, "appMenuButton" + buttons + i);
|
||||
} else if (buttons.charAt(i) == "A") {
|
||||
} else if (buttons[i] == DecorationOptions.DecorationButtonMaximizeRestore) {
|
||||
var maximizeComponent = Qt.createComponent("AuroraeMaximizeButton.qml");
|
||||
maximizeComponent.createObject(groupRow);
|
||||
} else {
|
||||
component.createObject(groupRow, {buttonType: buttons.charAt(i)});
|
||||
component.createObject(groupRow, {buttonType: buttons[i]});
|
||||
}
|
||||
}
|
||||
}
|
||||
id: group
|
||||
property string buttons
|
||||
property var buttons
|
||||
property bool animate: false
|
||||
|
||||
Row {
|
||||
|
|
|
@ -15,6 +15,7 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
Item {
|
||||
id: button
|
||||
|
@ -23,7 +24,7 @@ Item {
|
|||
AuroraeButton {
|
||||
id: maximizeButton
|
||||
anchors.fill: parent
|
||||
buttonType: "A"
|
||||
buttonType: DecorationOptions.DecorationButtonMaximizeRestore
|
||||
opacity: (!decoration.maximized || auroraeTheme.restoreButtonPath == "") ? 1 : 0
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
|
@ -34,7 +35,7 @@ Item {
|
|||
AuroraeButton {
|
||||
id: restoreButton
|
||||
anchors.fill: parent
|
||||
buttonType: "R"
|
||||
buttonType: DecorationOptions.DecorationButtonMaximizeRestore + 100
|
||||
opacity: (decoration.maximized && auroraeTheme.restoreButtonPath != "") ? 1 : 0
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
|
|
|
@ -15,43 +15,44 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
Item {
|
||||
function createButtons() {
|
||||
for (var i=0; i<buttons.length; i++) {
|
||||
var component = undefined;
|
||||
switch (buttons.charAt(i)) {
|
||||
case "_":
|
||||
switch (buttons[i]) {
|
||||
case DecorationOptions.DecorationButtonExplicitSpacer:
|
||||
component = explicitSpacerComponent;
|
||||
break;
|
||||
case "A":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||
component = group.maximizeButton;
|
||||
break;
|
||||
case "B":
|
||||
case DecorationOptions.DecorationButtonKeepBelow:
|
||||
component = group.keepBelowButton;
|
||||
break;
|
||||
case "F":
|
||||
case DecorationOptions.DecorationButtonKeepAbove:
|
||||
component = group.keepAboveButton;
|
||||
break;
|
||||
case "H":
|
||||
case DecorationOptions.DecorationButtonQuickHelp:
|
||||
component = group.helpButton;
|
||||
break;
|
||||
case "I":
|
||||
case DecorationOptions.DecorationButtonMinimize:
|
||||
component = group.minimizeButton;
|
||||
break;
|
||||
case "L":
|
||||
case DecorationOptions.DecorationButtonShade:
|
||||
component = group.shadeButton;
|
||||
break;
|
||||
case "M":
|
||||
case DecorationOptions.DecorationButtonMenu:
|
||||
component = group.menuButton;
|
||||
break;
|
||||
case "N":
|
||||
case DecorationOptions.DecorationButtonApplicationMenu:
|
||||
component = group.appMenuButton;
|
||||
break;
|
||||
case "S":
|
||||
case DecorationOptions.DecorationButtonOnAllDesktops:
|
||||
component = group.allDesktopsButton;
|
||||
break;
|
||||
case "X":
|
||||
case DecorationOptions.DecorationButtonClose:
|
||||
component = group.closeButton;
|
||||
break;
|
||||
}
|
||||
|
@ -63,7 +64,7 @@ Item {
|
|||
}
|
||||
}
|
||||
id: group
|
||||
property string buttons
|
||||
property variant buttons
|
||||
property int explicitSpacer
|
||||
property alias spacing: groupRow.spacing
|
||||
|
||||
|
|
|
@ -15,23 +15,23 @@ You should have received a copy of the GNU General Public License
|
|||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
Item {
|
||||
id: button
|
||||
property string buttonType : ""
|
||||
property int buttonType : DecorationOptions.DecorationButtonNone
|
||||
property bool hovered: false
|
||||
property bool pressed: false
|
||||
property bool toggled: false
|
||||
enabled: {
|
||||
switch (button.buttonType) {
|
||||
case "X":
|
||||
case DecorationOptions.DecorationButtonClose:
|
||||
return decoration.closeable;
|
||||
case "A":
|
||||
case "R":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||
return decoration.maximizeable;
|
||||
case "I":
|
||||
case DecorationOptions.DecorationButtonMinimize:
|
||||
return decoration.minimizeable;
|
||||
case "_":
|
||||
case DecorationOptions.DecorationButtonExplicitSpacer:
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
|
@ -41,10 +41,9 @@ Item {
|
|||
anchors.fill: parent
|
||||
acceptedButtons: {
|
||||
switch (button.buttonType) {
|
||||
case "M":
|
||||
case DecorationOptions.DecorationButtonMenu:
|
||||
return Qt.LeftButton | Qt.RightButton;
|
||||
case "A":
|
||||
case "R":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||
return Qt.LeftButton | Qt.RightButton | Qt.MiddleButton;
|
||||
default:
|
||||
return Qt.LeftButton;
|
||||
|
@ -57,67 +56,66 @@ Item {
|
|||
onReleased: button.pressed = false
|
||||
onClicked: {
|
||||
switch (button.buttonType) {
|
||||
case "M":
|
||||
case DecorationOptions.DecorationButtonMenu:
|
||||
// menu
|
||||
decoration.menuClicked();
|
||||
break;
|
||||
case "N":
|
||||
case DecorationOptions.DecorationButtonApplicationMenu:
|
||||
// app menu
|
||||
decoration.appMenuClicked();
|
||||
break;
|
||||
case "S":
|
||||
case DecorationOptions.DecorationButtonOnAllDesktops:
|
||||
// all desktops
|
||||
decoration.toggleOnAllDesktops();
|
||||
break;
|
||||
case "H":
|
||||
case DecorationOptions.DecorationButtonQuickHelp:
|
||||
// help
|
||||
decoration.showContextHelp();
|
||||
break;
|
||||
case "I":
|
||||
case DecorationOptions.DecorationButtonMinimize:
|
||||
// minimize
|
||||
decoration.minimize();
|
||||
break;
|
||||
case "A":
|
||||
case "R":
|
||||
case DecorationOptions.DecorationButtonMaximizeRestore:
|
||||
// maximize
|
||||
decoration.maximize(mouse.button);
|
||||
break;
|
||||
case "X":
|
||||
case DecorationOptions.DecorationButtonClose:
|
||||
// close
|
||||
decoration.closeWindow();
|
||||
break;
|
||||
case "F":
|
||||
case DecorationOptions.DecorationButtonKeepAbove:
|
||||
// keep above
|
||||
decoration.toggleKeepAbove();
|
||||
break;
|
||||
case "B":
|
||||
case DecorationOptions.DecorationButtonKeepBelow:
|
||||
// keep below
|
||||
decoration.toggleKeepBelow();
|
||||
break;
|
||||
case "L":
|
||||
case DecorationOptions.DecorationButtonShade:
|
||||
// shade
|
||||
decoration.toggleShade();
|
||||
break;
|
||||
}
|
||||
}
|
||||
onDoubleClicked: {
|
||||
if (button.buttonType == "M") {
|
||||
if (button.buttonType == DecorationOptions.DecorationButtonMenu) {
|
||||
decoration.closeWindow();
|
||||
}
|
||||
}
|
||||
Component.onCompleted: {
|
||||
switch (button.buttonType) {
|
||||
case "S":
|
||||
case DecorationOptions.DecorationButtonOnAllDesktops:
|
||||
// all desktops
|
||||
button.toggled = decoration.onAllDesktops;
|
||||
break;
|
||||
case "F":
|
||||
case DecorationOptions.DecorationButtonKeepAbove:
|
||||
button.toggled = decoration.keepAbove;
|
||||
break;
|
||||
case "B":
|
||||
case DecorationOptions.DecorationButtonKeepBelow:
|
||||
button.toggled = decoration.keepBelow;
|
||||
break;
|
||||
case "L":
|
||||
case DecorationOptions.DecorationButtonShade:
|
||||
button.toggled = decoration.shade;
|
||||
break;
|
||||
}
|
||||
|
@ -125,25 +123,25 @@ Item {
|
|||
Connections {
|
||||
target: decoration
|
||||
onShadeChanged: {
|
||||
if (button.buttonType != "L") {
|
||||
if (button.buttonType != DecorationOptions.DecorationButtonShade) {
|
||||
return;
|
||||
}
|
||||
button.toggled = decoration.shade;
|
||||
}
|
||||
onKeepBelowChanged: {
|
||||
if (button.buttonType != "B") {
|
||||
if (button.buttonType != DecorationOptions.DecorationButtonKeepBelow) {
|
||||
return;
|
||||
}
|
||||
button.toggled = decoration.keepBelow;
|
||||
}
|
||||
onKeepAboveChanged: {
|
||||
if (button.buttonType != "F") {
|
||||
if (button.buttonType != DecorationOptions.DecorationButtonKeepAbove) {
|
||||
return;
|
||||
}
|
||||
button.toggled = decoration.keepAbove;
|
||||
}
|
||||
onDesktopChanged: {
|
||||
if (button.buttonType != "S") {
|
||||
if (button.buttonType != DecorationOptions.DecorationButtonOnAllDesktops) {
|
||||
return;
|
||||
}
|
||||
button.toggled = decoration.onAllDesktops;
|
||||
|
|
|
@ -16,11 +16,12 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|||
*********************************************************************/
|
||||
import QtQuick 2.0
|
||||
import org.kde.qtextracomponents 2.0 as QtExtra
|
||||
import org.kde.kwin.decoration 0.1
|
||||
|
||||
DecorationButton {
|
||||
property bool closeOnDoubleClick: true
|
||||
id: menuButton
|
||||
buttonType: "M"
|
||||
buttonType: DecorationOptions.DecorationButtonMenu
|
||||
QtExtra.QIconItem {
|
||||
icon: decoration.icon
|
||||
anchors.fill: parent
|
||||
|
|
|
@ -55,45 +55,55 @@ QPixmap PlastikButtonProvider::requestPixmap(const QString &id, QSize *size, con
|
|||
shadow = true;
|
||||
}
|
||||
ButtonIcon button;
|
||||
if (idParts[0] == QStringLiteral("X")) {
|
||||
switch (static_cast<KDecorationDefines::DecorationButton>(idParts[0].toInt())) {
|
||||
case KDecorationDefines::DecorationButtonClose:
|
||||
button = CloseIcon;
|
||||
} else if (idParts[0] == QStringLiteral("A")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonMaximizeRestore:
|
||||
if (toggled) {
|
||||
button = MaxRestoreIcon;
|
||||
} else {
|
||||
button = MaxIcon;
|
||||
}
|
||||
} else if (idParts[0] == QStringLiteral("I")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonMinimize:
|
||||
button = MinIcon;
|
||||
} else if (idParts[0] == QStringLiteral("H")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonQuickHelp:
|
||||
button = HelpIcon;
|
||||
} else if (idParts[0] == QStringLiteral("S")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonOnAllDesktops:
|
||||
if (toggled) {
|
||||
button = NotOnAllDesktopsIcon;
|
||||
} else {
|
||||
button = OnAllDesktopsIcon;
|
||||
}
|
||||
} else if (idParts[0] == QStringLiteral("F")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonKeepAbove:
|
||||
if (toggled) {
|
||||
button = NoKeepAboveIcon;
|
||||
} else {
|
||||
button = KeepAboveIcon;
|
||||
}
|
||||
} else if (idParts[0] == QStringLiteral("B")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonKeepBelow:
|
||||
if (toggled) {
|
||||
button = NoKeepBelowIcon;
|
||||
} else {
|
||||
button = KeepBelowIcon;
|
||||
}
|
||||
} else if (idParts[0] == QStringLiteral("L")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonShade:
|
||||
if (toggled) {
|
||||
button = UnShadeIcon;
|
||||
} else {
|
||||
button = ShadeIcon;
|
||||
}
|
||||
} else if (idParts[0] == QStringLiteral("N")) {
|
||||
break;
|
||||
case KDecorationDefines::DecorationButtonApplicationMenu:
|
||||
button = AppMenuIcon;
|
||||
} else {
|
||||
break;
|
||||
default:
|
||||
// not recognized icon
|
||||
return QQuickImageProvider::requestPixmap(id, size, requestedSize);
|
||||
}
|
||||
|
|
|
@ -23,7 +23,7 @@ DecorationButton {
|
|||
function colorize() {
|
||||
var highlightColor = null;
|
||||
if (button.pressed) {
|
||||
if (button.buttonType == "X") {
|
||||
if (button.buttonType == DecorationOptions.DecorationButtonClose) {
|
||||
highlightColor = colorHelper.foreground(decoration.active, ColorHelper.NegativeText);
|
||||
} else {
|
||||
highlightColor = options.titleBarColor;
|
||||
|
@ -31,7 +31,7 @@ DecorationButton {
|
|||
highlightColor = colorHelper.shade(highlightColor, ColorHelper.ShadowShade);
|
||||
highlightColor = colorHelper.multiplyAlpha(highlightColor, 0.3);
|
||||
} else if (button.hovered) {
|
||||
if (button.buttonType == "X") {
|
||||
if (button.buttonType == DecorationOptions.DecorationButtonClose) {
|
||||
highlightColor = colorHelper.foreground(decoration.active, ColorHelper.NegativeText);
|
||||
} else {
|
||||
highlightColor = options.titleBarColor;
|
||||
|
@ -140,10 +140,10 @@ DecorationButton {
|
|||
}
|
||||
Component.onCompleted: {
|
||||
colorize();
|
||||
if (buttonType == "H") {
|
||||
if (buttonType == DecorationOptions.DecorationButtonQuickHelp) {
|
||||
visible = decoration.providesContextHelp;
|
||||
}
|
||||
if (buttonType == "N") {
|
||||
if (buttonType == DecorationOptions.DecorationButtonApplicationMenu) {
|
||||
visible = decoration.appMenu;
|
||||
}
|
||||
}
|
||||
|
@ -153,7 +153,7 @@ DecorationButton {
|
|||
target: decoration
|
||||
onActiveChanged: button.colorize()
|
||||
onAppMenuChanged: {
|
||||
if (buttonType == "N") {
|
||||
if (buttonType == DecorationOptions.DecorationButtonApplicationMenu) {
|
||||
visible = decoration.appMenu;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -349,56 +349,56 @@ Decoration {
|
|||
Component {
|
||||
id: maximizeButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "A"
|
||||
buttonType: DecorationOptions.DecorationButtonMaximizeRestore
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: keepBelowButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "B"
|
||||
buttonType: DecorationOptions.DecorationButtonKeepBelow
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: keepAboveButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "F"
|
||||
buttonType: DecorationOptions.DecorationButtonKeepAbove
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: helpButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "H"
|
||||
buttonType: DecorationOptions.DecorationButtonQuickHelp
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: minimizeButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "I"
|
||||
buttonType: DecorationOptions.DecorationButtonMinimize
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: shadeButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "L"
|
||||
buttonType: DecorationOptions.DecorationButtonShade
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: stickyButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "S"
|
||||
buttonType: DecorationOptions.DecorationButtonOnAllDesktops
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: closeButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "X"
|
||||
buttonType: DecorationOptions.DecorationButtonClose
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
|
@ -412,7 +412,7 @@ Decoration {
|
|||
Component {
|
||||
id: appMenuButtonComponent
|
||||
PlastikButton {
|
||||
buttonType: "N"
|
||||
buttonType: DecorationOptions.DecorationButtonApplicationMenu
|
||||
size: root.buttonSize
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue