#include "application-property-helper.h" #include 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; } } 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; } }