136 lines
5.6 KiB
C++
136 lines
5.6 KiB
C++
|
|
#include "APP/APP_KeypadModel.h"
|
||
|
|
|
||
|
|
namespace APP {
|
||
|
|
|
||
|
|
APP_KeypadModel::APP_KeypadModel()
|
||
|
|
{
|
||
|
|
appKeyList = {
|
||
|
|
{QStringLiteral("num"), QStringLiteral("Num"), QStringLiteral(""), 0x0053, 0, 0, 1, 1, APP_KeyTone::Aqua},
|
||
|
|
{QStringLiteral("divide"), QStringLiteral("/"), QStringLiteral(""), 0x0054, 0, 1, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("multiply"), QStringLiteral("*"), QStringLiteral(""), 0x0055, 0, 2, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("minus"), QStringLiteral("-"), QStringLiteral(""), 0x0056, 0, 3, 1, 1, APP_KeyTone::Amber},
|
||
|
|
{QStringLiteral("7"), QStringLiteral("7"), QStringLiteral("Home"), 0x005F, 1, 0, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("8"), QStringLiteral("8"), QStringLiteral("↑"), 0x0060, 1, 1, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("9"), QStringLiteral("9"), QStringLiteral("PgUp"), 0x0061, 1, 2, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("plus"), QStringLiteral("+"), QStringLiteral(""), 0x0057, 1, 3, 2, 1, APP_KeyTone::Aqua},
|
||
|
|
{QStringLiteral("4"), QStringLiteral("4"), QStringLiteral("←"), 0x005C, 2, 0, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("5"), QStringLiteral("5"), QStringLiteral(""), 0x005D, 2, 1, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("6"), QStringLiteral("6"), QStringLiteral("→"), 0x005E, 2, 2, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("1"), QStringLiteral("1"), QStringLiteral("End"), 0x0059, 3, 0, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("2"), QStringLiteral("2"), QStringLiteral("↓"), 0x005A, 3, 1, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("3"), QStringLiteral("3"), QStringLiteral("PgDn"), 0x005B, 3, 2, 1, 1, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("enter"), QStringLiteral("Enter"), QStringLiteral(""), 0x0058, 3, 3, 2, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("0"), QStringLiteral("0"), QStringLiteral("Ins"), 0x0062, 4, 0, 1, 2, APP_KeyTone::Normal},
|
||
|
|
{QStringLiteral("dot"), QStringLiteral("."), QStringLiteral("Del"), 0x0063, 4, 2, 1, 1, APP_KeyTone::Normal}
|
||
|
|
};
|
||
|
|
|
||
|
|
appFunctionKeyList = {
|
||
|
|
{QStringLiteral("7"), QStringLiteral("7"), QStringLiteral("功能"), 0x005F, 0, 0, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("8"), QStringLiteral("8"), QStringLiteral("功能"), 0x0060, 0, 1, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("9"), QStringLiteral("9"), QStringLiteral("功能"), 0x0061, 0, 2, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("minus"), QStringLiteral("-"), QStringLiteral("功能"), 0x0056, 0, 3, 1, 1, APP_KeyTone::Amber},
|
||
|
|
{QStringLiteral("4"), QStringLiteral("4"), QStringLiteral("功能"), 0x005C, 1, 0, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("5"), QStringLiteral("5"), QStringLiteral("功能"), 0x005D, 1, 1, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("6"), QStringLiteral("6"), QStringLiteral("功能"), 0x005E, 1, 2, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("plus"), QStringLiteral("+"), QStringLiteral("功能"), 0x0057, 1, 3, 2, 1, APP_KeyTone::Aqua},
|
||
|
|
{QStringLiteral("1"), QStringLiteral("1"), QStringLiteral("功能"), 0x0059, 2, 0, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("2"), QStringLiteral("2"), QStringLiteral("功能"), 0x005A, 2, 1, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("3"), QStringLiteral("3"), QStringLiteral("功能"), 0x005B, 2, 2, 1, 1, APP_KeyTone::Blue},
|
||
|
|
{QStringLiteral("0"), QStringLiteral("0"), QStringLiteral("功能"), 0x0062, 3, 0, 1, 3, APP_KeyTone::Blue}
|
||
|
|
};
|
||
|
|
}
|
||
|
|
|
||
|
|
const QVector<APP_KeyInfo>& APP_KeypadModel::App_Func_GetKeyList() const
|
||
|
|
{
|
||
|
|
return appKeyList;
|
||
|
|
}
|
||
|
|
|
||
|
|
const QVector<APP_KeyInfo>& APP_KeypadModel::App_Func_GetFunctionKeyList() const
|
||
|
|
{
|
||
|
|
return appFunctionKeyList;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool APP_KeypadModel::App_Func_IsLatched(const QString& KeyId) const
|
||
|
|
{
|
||
|
|
return (KeyId == QStringLiteral("num")) && appNumLockOn;
|
||
|
|
}
|
||
|
|
|
||
|
|
bool APP_KeypadModel::App_Func_IsPressed(const QString& KeyId) const
|
||
|
|
{
|
||
|
|
return appPressedKeyIdList.contains(KeyId);
|
||
|
|
}
|
||
|
|
|
||
|
|
quint16 APP_KeypadModel::App_Func_GetUsageFromKeyId(const QString& KeyId) const
|
||
|
|
{
|
||
|
|
for (const APP_KeyInfo& KeyInfo : appKeyList)
|
||
|
|
{
|
||
|
|
if (KeyInfo.id == KeyId)
|
||
|
|
{
|
||
|
|
return KeyInfo.usage;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return 0;
|
||
|
|
}
|
||
|
|
|
||
|
|
void APP_KeypadModel::App_Func_SetNumLockOn(bool IsOn)
|
||
|
|
{
|
||
|
|
appNumLockOn = IsOn;
|
||
|
|
}
|
||
|
|
|
||
|
|
void APP_KeypadModel::App_Func_ClearPressedKeys()
|
||
|
|
{
|
||
|
|
appPressedKeyIdList.clear();
|
||
|
|
}
|
||
|
|
|
||
|
|
void APP_KeypadModel::App_Func_SetPressedKeysFromUsageList(const QVector<quint16>& UsageList)
|
||
|
|
{
|
||
|
|
appPressedKeyIdList.clear();
|
||
|
|
|
||
|
|
for (quint16 Usage : UsageList)
|
||
|
|
{
|
||
|
|
const QString KeyId = App_Func_GetKeyIdFromUsage(App_Func_MapUsageForUi(Usage));
|
||
|
|
if (!KeyId.isEmpty() && !appPressedKeyIdList.contains(KeyId))
|
||
|
|
{
|
||
|
|
appPressedKeyIdList.append(KeyId);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
void APP_KeypadModel::App_Func_SetSwapUsagePair(quint16 UsageLeft, quint16 UsageRight, bool IsEnabled)
|
||
|
|
{
|
||
|
|
appIsSwapOn = IsEnabled;
|
||
|
|
appSwapUsageLeft = UsageLeft;
|
||
|
|
appSwapUsageRight = UsageRight;
|
||
|
|
}
|
||
|
|
|
||
|
|
quint16 APP_KeypadModel::App_Func_MapUsageForUi(quint16 Usage) const
|
||
|
|
{
|
||
|
|
if (!appIsSwapOn || (appSwapUsageLeft == 0) || (appSwapUsageRight == 0) || (appSwapUsageLeft == appSwapUsageRight))
|
||
|
|
{
|
||
|
|
return Usage;
|
||
|
|
}
|
||
|
|
|
||
|
|
if (Usage == appSwapUsageLeft)
|
||
|
|
{
|
||
|
|
return appSwapUsageRight;
|
||
|
|
}
|
||
|
|
|
||
|
|
return (Usage == appSwapUsageRight) ? appSwapUsageLeft : Usage;
|
||
|
|
}
|
||
|
|
|
||
|
|
QString APP_KeypadModel::App_Func_GetKeyIdFromUsage(quint16 Usage) const
|
||
|
|
{
|
||
|
|
for (const APP_KeyInfo& KeyInfo : appKeyList)
|
||
|
|
{
|
||
|
|
if (KeyInfo.usage == Usage)
|
||
|
|
{
|
||
|
|
return KeyInfo.id;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
return QString();
|
||
|
|
}
|
||
|
|
|
||
|
|
} // namespace APP
|