/* This file is part of the KDE libraries Copyright (C) 2007 Andreas Hartmetz This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library 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 Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include "kshortcutwidget.h" #include "kiconloader.h" #include "ui_kshortcutwidget.h" class KShortcutWidgetPrivate { public: KShortcutWidgetPrivate(KShortcutWidget *q) : q(q) {} //private slots void priKeySequenceChanged(const QKeySequence &); void altKeySequenceChanged(const QKeySequence &); //members KShortcutWidget *const q; Ui::KShortcutWidget ui; KShortcut cut; bool holdChangedSignal; }; KShortcutWidget::KShortcutWidget(QWidget *parent) : QWidget(parent), d(new KShortcutWidgetPrivate(this)) { d->holdChangedSignal = false; d->ui.setupUi(this); connect(d->ui.priEditor, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(priKeySequenceChanged(QKeySequence))); connect(d->ui.altEditor, SIGNAL(keySequenceChanged(QKeySequence)), this, SLOT(altKeySequenceChanged(QKeySequence))); } KShortcutWidget::~KShortcutWidget() { delete d; } void KShortcutWidget::setModifierlessAllowed(bool allow) { d->ui.priEditor->setModifierlessAllowed(allow); d->ui.altEditor->setModifierlessAllowed(allow); } bool KShortcutWidget::isModifierlessAllowed() { return d->ui.priEditor->isModifierlessAllowed(); } void KShortcutWidget::setClearButtonsShown(bool show) { d->ui.priEditor->setClearButtonShown(show); d->ui.altEditor->setClearButtonShown(show); } KShortcut KShortcutWidget::shortcut() const { KShortcut ret; ret.setPrimary(d->ui.priEditor->keySequence()); ret.setAlternate(d->ui.altEditor->keySequence()); return ret; } void KShortcutWidget::setCheckActionCollections(const QList& actionCollections) { d->ui.priEditor->setCheckActionCollections(actionCollections); d->ui.altEditor->setCheckActionCollections(actionCollections); } //slot void KShortcutWidget::applyStealShortcut() { d->ui.priEditor->applyStealShortcut(); d->ui.altEditor->applyStealShortcut(); } //slot void KShortcutWidget::setShortcut(const KShortcut &newSc) { if (newSc == d->cut) return; d->holdChangedSignal = true; d->ui.priEditor->setKeySequence(newSc.primary()); d->ui.altEditor->setKeySequence(newSc.alternate()); d->holdChangedSignal = false; emit shortcutChanged(d->cut); } //slot void KShortcutWidget::clearShortcut() { setShortcut(KShortcut()); } //private slot void KShortcutWidgetPrivate::priKeySequenceChanged(const QKeySequence &seq) { cut.setPrimary(seq); if (!holdChangedSignal) emit q->shortcutChanged(cut); } //private slot void KShortcutWidgetPrivate::altKeySequenceChanged(const QKeySequence &seq) { cut.setAlternate(seq); if (!holdChangedSignal) emit q->shortcutChanged(cut); } #include "moc_kshortcutwidget.cpp"