/******************************************************************** This file contains the B2 configuration widget Copyright (c) 2001 Karol Szwed http://gallium.n3.net/ Copyright (c) 2007 Luciano Montanaro Automove titlebar bits Copyright (c) 2009 Jussi Kekkonen 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 . *********************************************************************/ #include "config.h" #include #include //Added by qt3to4: #include #include #include #include #include extern "C" KDE_EXPORT QObject *allocate_config(KConfig *conf, QWidget *parent) { return(new B2Config(conf, parent)); } /* NOTE: * 'conf' is a pointer to the kwindecoration modules open kwin config, * and is by default set to the "Style" group. * * 'parent' is the parent of the QObject, which is a VBox inside the * Configure tab in kwindecoration */ B2Config::B2Config(KConfig *conf, QWidget *parent) : QObject(parent) { Q_UNUSED( conf ); KGlobal::locale()->insertCatalog("kwin_b2_config"); b2Config = new KConfig("kwinb2rc"); gb = new KVBox(parent); cbColorBorder = new QCheckBox( i18n("Draw window frames using &titlebar colors"), gb); cbColorBorder->setWhatsThis( i18n("When selected, the window borders " "are drawn using the titlebar colors; otherwise, they are " "drawn using normal border colors.")); // Grab Handle showGrabHandleCb = new QCheckBox( i18n("Draw &resize handle"), gb); showGrabHandleCb->setWhatsThis( i18n("When selected, decorations are drawn with a \"grab handle\" " "in the bottom right corner of the windows; " "otherwise, no grab handle is drawn.")); // Automove Titlebar autoMoveTitlebarCb = new QCheckBox( i18n("Auto-move titlebar"), gb); autoMoveTitlebarCb->setWhatsThis( i18n("When selected, titlebars are automatically relocated " "to visible positions; " "otherwise, they are only moved manually using shift+drag.")); // Double click menu option support actionsGB = new QGroupBox(i18n("Actions Settings"), gb); //actionsGB->setOrientation(Qt::Horizontal); QLabel *menuDblClickLabel = new QLabel(actionsGB); menuDblClickLabel->setText(i18n("Double click on menu button:")); menuDblClickOp = new KComboBox(actionsGB); menuDblClickOp->addItem(i18n("Do Nothing")); menuDblClickOp->addItem(i18n("Minimize Window")); menuDblClickOp->addItem(i18n("Shade Window")); menuDblClickOp->addItem(i18n("Close Window")); menuDblClickOp->setWhatsThis( i18n("An action can be associated to a double click " "of the menu button. Leave it to none if in doubt.")); QGridLayout *actionsLayout = new QGridLayout(); QSpacerItem *actionsSpacer = new QSpacerItem(8, 8, QSizePolicy::Expanding, QSizePolicy::Fixed); actionsLayout->addWidget(menuDblClickLabel, 0, 0, Qt::AlignRight); actionsLayout->addWidget(menuDblClickOp, 0, 1); actionsLayout->addItem(actionsSpacer, 0, 2); actionsGB->setLayout(actionsLayout); // Load configuration options KConfigGroup cg(b2Config, "General"); load(cg); // Ensure we track user changes properly connect(cbColorBorder, SIGNAL(clicked()), this, SLOT(slotSelectionChanged())); connect(showGrabHandleCb, SIGNAL(clicked()), this, SLOT(slotSelectionChanged())); connect(autoMoveTitlebarCb, SIGNAL(clicked()), this, SLOT(slotSelectionChanged())); connect(menuDblClickOp, SIGNAL(activated(int)), this, SLOT(slotSelectionChanged())); // Make the widgets visible in kwindecoration gb->show(); } B2Config::~B2Config() { delete b2Config; delete gb; } void B2Config::slotSelectionChanged() { emit changed(); } // Loads the configurable options from the kwinrc config file // It is passed the open config from kwindecoration to improve efficiency void B2Config::load(const KConfigGroup & /*conf*/) { KConfigGroup cg(b2Config, "General"); bool override = cg.readEntry("UseTitleBarBorderColors", false); cbColorBorder->setChecked(override); override = cg.readEntry("DrawGrabHandle", true); showGrabHandleCb->setChecked(override); override = cg.readEntry( "AutoMoveTitleBar", true ); autoMoveTitlebarCb->setChecked(override); QString returnString = cg.readEntry( "MenuButtonDoubleClickOperation", "NoOp"); int op; if (returnString == "Close") { op = 3; } else if (returnString == "Shade") { op = 2; } else if (returnString == "Minimize") { op = 1; } else { op = 0; } menuDblClickOp->setCurrentIndex(op); } static QString opToString(int op) { switch (op) { case 1: return "Minimize"; case 2: return "Shade"; case 3: return "Close"; case 0: default: return "NoOp"; } } // Saves the configurable options to the kwinrc config file void B2Config::save(KConfigGroup & /*conf*/) { KConfigGroup cg(b2Config, "General"); cg.writeEntry("UseTitleBarBorderColors", cbColorBorder->isChecked()); cg.writeEntry("DrawGrabHandle", showGrabHandleCb->isChecked()); cg.writeEntry("AutoMoveTitleBar", autoMoveTitlebarCb->isChecked()); cg.writeEntry("MenuButtonDoubleClickOperation", opToString(menuDblClickOp->currentIndex())); // Ensure others trying to read this config get updated b2Config->sync(); } // Sets UI widget defaults which must correspond to style defaults void B2Config::defaults() { cbColorBorder->setChecked(false); showGrabHandleCb->setChecked(true); autoMoveTitlebarCb->setChecked(true); menuDblClickOp->setCurrentIndex(0); } #include "config.moc" // vi: sw=4 ts=8