mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-23 18:32:49 +00:00

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.
134 lines
4.2 KiB
C++
134 lines
4.2 KiB
C++
/* This file is part of the KDE libraries
|
|
*
|
|
* Copyright (c) 2010 Aurélien Gâteau <agateau@kde.org>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 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
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
* 02110-1301 USA
|
|
*/
|
|
#include "kdualaction.h"
|
|
|
|
#include <QIcon>
|
|
|
|
#include <kdebug.h>
|
|
|
|
#include "kdualaction_p.h"
|
|
|
|
//---------------------------------------------------------------------
|
|
// KDualActionPrivate
|
|
//---------------------------------------------------------------------
|
|
void KDualActionPrivate::init(KDualAction *q_ptr)
|
|
{
|
|
q = q_ptr;
|
|
autoToggle = true;
|
|
isActive = false;
|
|
|
|
QObject::connect(q, SIGNAL(triggered()), q, SLOT(slotTriggered()));
|
|
}
|
|
|
|
void KDualActionPrivate::updateFromCurrentState()
|
|
{
|
|
KGuiItem& currentItem = item(isActive);
|
|
QAction* qq = static_cast<QAction*>(q);
|
|
qq->setIcon(currentItem.icon());
|
|
qq->setText(currentItem.text());
|
|
qq->setToolTip(currentItem.toolTip());
|
|
}
|
|
|
|
void KDualActionPrivate::slotTriggered()
|
|
{
|
|
if (!autoToggle) {
|
|
return;
|
|
}
|
|
q->setActive(!isActive);
|
|
q->activeChangedByUser(isActive);
|
|
}
|
|
|
|
//---------------------------------------------------------------------
|
|
// KDualAction
|
|
//---------------------------------------------------------------------
|
|
KDualAction::KDualAction(const QString &inactiveText, const QString &activeText, QObject *parent)
|
|
: KAction(parent)
|
|
, d(new KDualActionPrivate)
|
|
{
|
|
d->init(this);
|
|
d->item(false).setText(inactiveText);
|
|
d->item(true).setText(activeText);
|
|
d->updateFromCurrentState();
|
|
}
|
|
|
|
KDualAction::KDualAction(QObject *parent)
|
|
: KAction(parent)
|
|
, d(new KDualActionPrivate)
|
|
{
|
|
d->init(this);
|
|
}
|
|
|
|
KDualAction::~KDualAction()
|
|
{
|
|
delete d;
|
|
}
|
|
|
|
void KDualAction::setActiveGuiItem(const KGuiItem &item) { d->setGuiItem(true, item); }
|
|
KGuiItem KDualAction::activeGuiItem() const { return d->item(true); }
|
|
void KDualAction::setInactiveGuiItem(const KGuiItem &item) { d->setGuiItem(false, item); }
|
|
KGuiItem KDualAction::inactiveGuiItem() const { return d->item(false); }
|
|
|
|
void KDualAction::setActiveIcon(const QIcon &icon) { d->setIcon(true, icon); }
|
|
QIcon KDualAction::activeIcon() const { return d->item(true).icon(); }
|
|
void KDualAction::setInactiveIcon(const QIcon &icon) { d->setIcon(false, icon); }
|
|
QIcon KDualAction::inactiveIcon() const { return d->item(false).icon(); }
|
|
|
|
void KDualAction::setActiveText(const QString &text) { d->setText(true, text); }
|
|
QString KDualAction::activeText() const { return d->item(true).text(); }
|
|
void KDualAction::setInactiveText(const QString &text) { d->setText(false, text); }
|
|
QString KDualAction::inactiveText() const { return d->item(false).text(); }
|
|
|
|
void KDualAction::setActiveToolTip(const QString &toolTip) { d->setToolTip(true, toolTip); }
|
|
QString KDualAction::activeToolTip() const { return d->item(true).toolTip(); }
|
|
void KDualAction::setInactiveToolTip(const QString &toolTip) { d->setToolTip(false, toolTip); }
|
|
QString KDualAction::inactiveToolTip() const { return d->item(false).toolTip(); }
|
|
|
|
void KDualAction::setIconForStates(const QIcon &icon)
|
|
{
|
|
setInactiveIcon(icon);
|
|
setActiveIcon(icon);
|
|
}
|
|
|
|
void KDualAction::setAutoToggle(bool value)
|
|
{
|
|
d->autoToggle = value;
|
|
}
|
|
|
|
bool KDualAction::autoToggle() const
|
|
{
|
|
return d->autoToggle;
|
|
}
|
|
|
|
void KDualAction::setActive(bool active)
|
|
{
|
|
if (active == d->isActive) {
|
|
return;
|
|
}
|
|
d->isActive = active;
|
|
d->updateFromCurrentState();
|
|
activeChanged(active);
|
|
}
|
|
|
|
bool KDualAction::isActive() const
|
|
{
|
|
return d->isActive;
|
|
}
|
|
|
|
#include "moc_kdualaction.cpp"
|