Fix trash file not update to gsettings change issue,link to bug#136022.

This commit is contained in:
HeMeihong 2022-08-26 11:20:38 +08:00 committed by Yue-Lan
parent 83f5562cb0
commit 2702becdfb
2 changed files with 14 additions and 28 deletions

View File

@ -173,8 +173,7 @@ void RecentAndTrashPropertiesPage::init()
nullptr,
nullptr);
QString deletion_date = g_file_info_get_attribute_as_string(info, G_FILE_ATTRIBUTE_TRASH_DELETION_DATE);
deletion_date = deletion_date.replace("T", " ");
QString deletion_date = m_fileInfo->deletionDate();
quint64 delete_width = FIXED_ROW_WIDTH - delete_label->fontMetrics().width(tr("Deletion Date: "));
delete_label->setText(label->fontMetrics().elidedText(deletion_date, Qt::ElideMiddle, delete_width));
delete_label->setWordWrap(true);
@ -182,28 +181,15 @@ void RecentAndTrashPropertiesPage::init()
if (QGSettings::isSchemaInstalled("org.ukui.control-center.panel.plugins")) {
QGSettings *settings = new QGSettings("org.ukui.control-center.panel.plugins", "", this);
connect(settings, &QGSettings::changed, this, [=](const QString &key) {
if(key == "date") {
QString current_text = delete_label->text();
QString new_date_type = settings->get("date").toString();
//cn : 1999/11/11
//en : 1999-11-11
if ((new_date_type == "cn") && current_text.contains("-")) {
delete_label->setText(current_text.replace("-", "/"));
} else if ((new_date_type == "en") && current_text.contains("/")) {
delete_label->setText(current_text.replace("/", "-"));
}
if(key == "date" || "hoursystem" == key) {
QDateTime deleteTime = QDateTime::fromMSecsSinceEpoch(m_fileInfo->deletionTime (), Qt::LocalTime);
QString format = GlobalSettings::getInstance()->getSystemTimeFormat();
QString deletion_date = deleteTime.toString(format);
quint64 delete_width = FIXED_ROW_WIDTH - delete_label->fontMetrics().width(tr("Deletion Date: "));
delete_label->setText(label->fontMetrics().elidedText(deletion_date, Qt::ElideMiddle, delete_width));
delete_label->setWordWrap(true);
}
});
QString current_text = delete_label->text();
QString new_date_type = settings->get("date").toString();
if ((new_date_type == "cn") && current_text.contains("-")) {
delete_label->setText(current_text.replace("-", "/"));
} else if ((new_date_type == "en") && current_text.contains("/")) {
delete_label->setText(current_text.replace("/", "-"));
}
}
g_object_unref(info);

View File

@ -411,12 +411,12 @@ void FileInfoJob::refreshInfoContents(GFileInfo *new_info)
if (g_file_info_has_attribute(new_info, "trash::deletion-date"))
{
QString deletionDate = g_file_info_get_attribute_as_string(new_info, G_FILE_ATTRIBUTE_TRASH_DELETION_DATE);
info->m_deletion_date = deletionDate.replace("T", " ");
QDateTime dateTime = QDateTime::fromString (deletionDate, "yyyy-MM-dd HH:mm:ss");
info->m_deletion_date_uint64 = dateTime.toMSecsSinceEpoch ();
QString deletionDate = g_file_info_get_attribute_as_string(new_info, G_FILE_ATTRIBUTE_TRASH_DELETION_DATE);
info->m_deletion_date = deletionDate.replace("T", " ");
QDateTime dateTime = QDateTime::fromString (deletionDate, "yyyy-MM-dd HH:mm:ss");
info->m_deletion_date_uint64 = dateTime.toMSecsSinceEpoch ();
date = QDateTime::fromMSecsSinceEpoch(info->m_deletion_date_uint64);
info->m_deletion_date = date.toString(systemTimeFormat);
}
if (g_file_info_has_attribute(new_info, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH)) {
auto origPath = g_file_info_get_attribute_byte_string(new_info, G_FILE_ATTRIBUTE_TRASH_ORIG_PATH);