kdelibs/kdeui/widgets/kshortcutwidget.cpp
Ivailo Monev 82fc15f54b generic: use CMake moc instead of automoc4 by default
for compatibilty reasons automoc4 support is not removed but it
shall be in the future. automoc4 has not been maintained for a
while (last commit is from 2011) and the stable release is from
2009.

CMake version >= 2.8.6 provides the functionality for mocking so
I see no reason to not make use of it.
2015-02-27 07:40:26 +00:00

149 lines
3.8 KiB
C++

/* This file is part of the KDE libraries
Copyright (C) 2007 Andreas Hartmetz <ahartmetz@gmail.com>
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;
}
#ifndef KDE_NO_DEPRECATED
void KShortcutWidget::setCheckActionList(const QList<QAction*> &checkList)
{
d->ui.priEditor->setCheckActionList(checkList);
d->ui.altEditor->setCheckActionList(checkList);
}
#endif
void KShortcutWidget::setCheckActionCollections(const QList<KActionCollection *>& 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"