ukui-screensaver/BiometricAuth/biometricdeviceinfo.cpp

182 lines
5.2 KiB
C++

/**
* Copyright (C) 2018 Tianjin KYLIN Information Technology Co., Ltd.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301, USA.
**/
#include "biometricdeviceinfo.h"
#include <QDebug>
#include <QtDBus>
//#include <QDBusAbstractInterface>
QString DeviceType::getDeviceType(int deviceType)
{
if(deviceType >= __MAX_NR_TYPES)
{
return "";
}
QMetaEnum meta = QMetaEnum::fromType<Type>();
const char *typeString = meta.valueToKey(deviceType);
return QString(typeString);
}
QString DeviceType::getDeviceType_tr(int deviceType)
{
switch(deviceType)
{
case FingerPrint:
return tr("FingerPrint");
case FingerVein:
return tr("FingerVein");
case Iris:
return tr("Iris");
case Face:
return tr("Face");
case VoicePrint:
return tr("VoicePrint");
default:
return "";
}
}
QDebug operator <<(QDebug stream, const DeviceInfo &deviceInfo)
{
stream << "["
<< deviceInfo.id
<< deviceInfo.shortName
<< deviceInfo.fullName
<< deviceInfo.deviceType
<< deviceInfo.driverEnable
<< deviceInfo.deviceNum
<< "]";
return stream;
}
QDBusArgument &operator <<(QDBusArgument &arg, const DeviceInfo &deviceInfo)
{
arg.beginStructure();
arg << deviceInfo.id
<< deviceInfo.shortName
<< deviceInfo.fullName
<< deviceInfo.driverEnable
<< deviceInfo.deviceNum
<< deviceInfo.deviceType
<< deviceInfo.storageType
<< deviceInfo.eigType
<< deviceInfo.verifyType
<< deviceInfo.identifyType
<< deviceInfo.busType
<< deviceInfo.deviceStatus
<< deviceInfo.OpsStatus;
arg.endStructure();
return arg;
}
const QDBusArgument &operator >>(const QDBusArgument &arg, DeviceInfo &deviceInfo)
{
arg.beginStructure();
arg >> deviceInfo.id
>> deviceInfo.shortName
>> deviceInfo.fullName
>> deviceInfo.driverEnable
>> deviceInfo.deviceNum
>> deviceInfo.deviceType
>> deviceInfo.storageType
>> deviceInfo.eigType
>> deviceInfo.verifyType
>> deviceInfo.identifyType
>> deviceInfo.busType
>> deviceInfo.deviceStatus
>> deviceInfo.OpsStatus;
arg.endStructure();
return arg;
}
void registerMetaType()
{
qRegisterMetaType<DeviceInfo>("DeviceInfo");
qDBusRegisterMetaType<DeviceInfo>();
}
QString GetDefaultDevice(const QString &userName)
{
//QString configPath = QString("/home/%1/" UKUI_BIOMETRIC_CONFIG_PATH).arg(userName);
QString configPath = QDir::homePath() + "/" + UKUI_BIOMETRIC_CONFIG_PATH;
QSettings settings(configPath, QSettings::IniFormat);
qDebug() << "configure path: " << settings.fileName();
QString defaultDevice = settings.value("DefaultDevice").toString();
if(defaultDevice.isEmpty())
{
QSettings sysSettings(UKUI_BIOMETRIC_SYS_CONFIG_PATH, QSettings::IniFormat);
defaultDevice = sysSettings.value("DefaultDevice").toString();
}
return defaultDevice;
}
static int getValueFromSettings(const QString &userName, const QString &key, int defaultValue = 3)
{
//从家目录下的配置文件中获取
//QString configPath = QString("/home/%1/" UKUI_BIOMETRIC_CONFIG_PATH).arg(userName);
QString configPath = QDir::homePath() + "/" + UKUI_BIOMETRIC_CONFIG_PATH;
QSettings settings(configPath, QSettings::IniFormat);
QString valueStr = settings.value(key).toString();
//如果没有获取到,则从系统配置文件中获取
if(valueStr.isEmpty())
{
QSettings sysSettings(UKUI_BIOMETRIC_SYS_CONFIG_PATH, QSettings::IniFormat);
valueStr = sysSettings.value(key).toString();
}
bool ok;
int value = valueStr.toInt(&ok);
if( (value == 0 && !ok) || valueStr.isEmpty() )
{
value = defaultValue;
}
return value;
}
bool GetHiddenSwitchButton()
{
QSettings sysSettings(UKUI_BIOMETRIC_SYS_CONFIG_PATH, QSettings::IniFormat);
if(sysSettings.contains("HiddenSwitchButton"))
return sysSettings.value("HiddenSwitchButton").toBool();
else
return false;
}
int GetFailedTimes()
{
QSettings sysSettings(UKUI_BIOMETRIC_SYS_CONFIG_PATH, QSettings::IniFormat);
if(sysSettings.contains("MaxFailedTimes"))
return sysSettings.value("MaxFailedTimes").toInt();
else
return 3;
}
int GetMaxFailedAutoRetry(const QString &userName)
{
return getValueFromSettings(userName, "MaxFailedAutoRetry");
}
int GetMaxTimeoutAutoRetry(const QString &userName)
{
return getValueFromSettings(userName, "MaxTimeoutAutoRetry");
}