fix: 优化最近安装显示逻辑

This commit is contained in:
hewenfei 2024-03-11 11:34:06 +08:00
parent 84474ae341
commit 32fb0ab303
1 changed files with 16 additions and 8 deletions

View File

@ -44,17 +44,25 @@ RecentlyInstalledModel::RecentlyInstalledModel(QObject *parent) : QSortFilterPro
bool RecentlyInstalledModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
QModelIndex sourceIndex = sourceModel()->index(source_row, 0, source_parent);
// 是否打开过
if (sourceIndex.data(DataEntity::IsLaunched).toInt() != 0) {
return false;
}
// 是否收藏
if (sourceIndex.data(DataEntity::Favorite).toInt() > 0) {
return false;
}
QDateTime installDate = QDateTime::fromString(sourceIndex.data(DataEntity::InstallationTime).value<QString>(), "yyyy-MM-dd hh:mm:ss");
if (!installDate.isValid()) {
return false;
}
QDateTime currentDateTime = QDateTime::currentDateTime();
// 安装时间小于当前时间差距超过48小时
// 安装时间小于当前时间,差距在[48-0]小时内
// 安装时间大于当前时间
// 安装时间在30天内
qint64 xt = currentDateTime.toSecsSinceEpoch() - installDate.toSecsSinceEpoch();
return (xt >= 0) && (xt <= 48 * 3600);
return (xt >= 0) && (xt <= 30 * 24 * 3600);
}
bool RecentlyInstalledModel::lessThan(const QModelIndex &source_left, const QModelIndex &source_right) const
@ -63,11 +71,11 @@ bool RecentlyInstalledModel::lessThan(const QModelIndex &source_left, const QMod
QDateTime rightInstallDate = QDateTime::fromString(source_right.data(DataEntity::InstallationTime).value<QString>(), "yyyy-MM-dd hh:mm:ss");
qint64 xt = leftInstallDate.toSecsSinceEpoch() - rightInstallDate.toSecsSinceEpoch();
// if (xt == 0) {
// return source_left.data(DataEntity::FirstLetter).value<QString>() < source_right.data(DataEntity::FirstLetter).value<QString>();
// }
if (xt == 0) {
return source_left.data(DataEntity::FirstLetter).value<QString>() < source_right.data(DataEntity::FirstLetter).value<QString>();
}
return xt <= 0;
return xt >= 0;
}
bool RecentlyInstalledModel::event(QEvent *event)