forked from openkylin/ukui-search
171 lines
5.0 KiB
C++
171 lines
5.0 KiB
C++
#include "application-property-helper.h"
|
|
#include <QDateTime>
|
|
using namespace UkuiSearch;
|
|
namespace UkuiSearch {
|
|
|
|
class ApplicationPropertyHelperPrivate
|
|
{
|
|
friend class ApplicationPropertyHelper;
|
|
private:
|
|
ApplicationProperty::Property m_property;
|
|
QString m_databaseField;
|
|
QMetaType::Type m_valueType;
|
|
};
|
|
}
|
|
ApplicationPropertyHelper::ApplicationPropertyHelper(): d(new ApplicationPropertyHelperPrivate)
|
|
{
|
|
d->m_property = ApplicationProperty::Invalid;
|
|
d->m_valueType = QMetaType::UnknownType;
|
|
}
|
|
|
|
ApplicationPropertyHelper::ApplicationPropertyHelper(ApplicationProperty::Property property): d(new ApplicationPropertyHelperPrivate)
|
|
{
|
|
d->m_property = property;
|
|
switch (property) {
|
|
case ApplicationProperty::DesktopFilePath:
|
|
d->m_databaseField = "DESKTOP_FILE_PATH";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::ModifiedTime:
|
|
d->m_databaseField = "MODIFYED_TIME";
|
|
d->m_valueType = QMetaType::QDateTime;
|
|
break;
|
|
case ApplicationProperty::InsertTime:
|
|
d->m_databaseField = "INSERT_TIME";
|
|
d->m_valueType = QMetaType::QDateTime;
|
|
break;
|
|
case ApplicationProperty::LocalName:
|
|
d->m_databaseField = "LOCAL_NAME";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::NameEn:
|
|
d->m_databaseField = "NAME_EN";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::NameZh:
|
|
d->m_databaseField = "NAME_EN";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::PinyinName:
|
|
d->m_databaseField = "PINYIN_NAME";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::FirstLetterOfPinyin:
|
|
d->m_databaseField = "FIRST_LETTER_OF_PINYIN";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::FirstLetterAll:
|
|
d->m_databaseField = "FIRST_LETTER_ALL";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::Icon:
|
|
d->m_databaseField = "ICON";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::Type:
|
|
d->m_databaseField = "TYPE";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::Category:
|
|
d->m_databaseField = "CATEGORY";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::Exec:
|
|
d->m_databaseField = "EXEC";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::Comment:
|
|
d->m_databaseField = "CATEGORY";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::Md5:
|
|
d->m_databaseField = "MD5";
|
|
d->m_valueType = QMetaType::QString;
|
|
break;
|
|
case ApplicationProperty::LaunchTimes:
|
|
d->m_databaseField = "LAUNCH_TIMES";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
case ApplicationProperty::Favorites:
|
|
d->m_databaseField = "FAVORITES";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
case ApplicationProperty::Launched:
|
|
d->m_databaseField = "LAUNCHED";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
case ApplicationProperty::Top:
|
|
d->m_databaseField = "TOP";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
case ApplicationProperty::Lock:
|
|
d->m_databaseField = "LOCK";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
case ApplicationProperty::DontDisplay:
|
|
d->m_databaseField = "DONT_DISPLAY";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
case ApplicationProperty::AutoStart:
|
|
d->m_databaseField = "AUTO_START";
|
|
d->m_valueType = QMetaType::Int;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
ApplicationPropertyHelper::ApplicationPropertyHelper(const ApplicationPropertyHelper &other): d(new ApplicationPropertyHelperPrivate(*other.d))
|
|
{
|
|
|
|
}
|
|
|
|
ApplicationPropertyHelper::~ApplicationPropertyHelper()
|
|
{
|
|
if(d) {
|
|
delete d;
|
|
d = nullptr;
|
|
}
|
|
}
|
|
|
|
ApplicationPropertyHelper &ApplicationPropertyHelper::operator =(const ApplicationPropertyHelper &rhs)
|
|
{
|
|
*d = *rhs.d;
|
|
return *this;
|
|
}
|
|
|
|
bool ApplicationPropertyHelper::operator ==(const ApplicationPropertyHelper &rhs) const
|
|
{
|
|
return d->m_databaseField == rhs.d->m_databaseField && d->m_valueType == rhs.d->m_valueType;
|
|
}
|
|
|
|
ApplicationProperty::Property ApplicationPropertyHelper::info()
|
|
{
|
|
return d->m_property;
|
|
}
|
|
|
|
QString ApplicationPropertyHelper::dataBaseField()
|
|
{
|
|
return d->m_databaseField;
|
|
}
|
|
|
|
QMetaType::Type ApplicationPropertyHelper::valueType()
|
|
{
|
|
return d->m_valueType;
|
|
}
|
|
|
|
QString ApplicationPropertyHelper::toDataBaseString(QVariant &value)
|
|
{
|
|
switch (d->m_valueType) {
|
|
case QMetaType::Type::UnknownType:
|
|
return QString();
|
|
case QMetaType::Type::QString:
|
|
return value.toString();
|
|
case QMetaType::Type::QDateTime:
|
|
return value.toDateTime().toString("yyyy-MM-dd hh:mm:ss");
|
|
default:
|
|
return {};
|
|
break;
|
|
}
|
|
}
|