Files
pilotclient/src/blackcore/actionbind.cpp
Mat Sutcliffe 57ff07592a [AFV] CInputManager stores icon indexes instead of QPixmap instances
The GUI converts icon indexes to QPixmap indexes when needed.
This fixes the context unittest that was broken by audio context changes.
2019-10-11 19:00:52 +01:00

62 lines
1.8 KiB
C++

/* Copyright (C) 2017
* swift project community / contributors
*
* This file is part of swift project. It is subject to the license terms in the LICENSE file found in the top-level
* directory of this distribution. No part of swift project, including this file, may be copied, modified, propagated,
* or distributed except according to the terms contained in the LICENSE file.
*/
#include "actionbind.h"
namespace BlackCore
{
CActionBind::CActionBind(const QString &action, BlackMisc::CIcons::IconIndex icon, QObject *parent)
: QObject(parent)
{
CActionBind::registerAction(action, icon);
}
QString CActionBind::registerAction(const QString &action, BlackMisc::CIcons::IconIndex icon)
{
if (!sApp || sApp->isShuttingDown()) { return {}; }
if (sApp->getApplicationInfo().isUnitTest()) { return {}; }
const QString a = CActionBind::normalizeAction(action);
Q_ASSERT_X(sApp && sApp->getInputManager(), Q_FUNC_INFO, "Missing input manager");
sApp->getInputManager()->registerAction(a, icon);
return a;
}
CActionBind::~CActionBind()
{
// void
}
void CActionBind::unbind()
{
if (m_index < 0) { return; }
if (sApp->getApplicationInfo().isUnitTest()) { return; }
Q_ASSERT_X(sApp && sApp->getInputManager(), Q_FUNC_INFO, "Missing input manager");
sApp->getInputManager()->unbind(m_index);
m_index = -1;
}
void CActionBind::shutdown()
{
unbind();
if (m_deleteCallback)
{
m_deleteCallback();
}
}
QString CActionBind::normalizeAction(const QString &action)
{
QString n = action.trimmed();
if (!n.startsWith('/')) { n.insert(0, QChar('/')); }
if (n.endsWith('/')) { n.remove(n.length() - 1 , 1);}
return n;
}
}