X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/8d155558e980197b4dc2180660ea9bc61a23f3d3..e112fc50e0577449990746e1718b79e54748b61f:/src/views/viewproperties.cpp diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp index 7e589019a..8bf3b2531 100644 --- a/src/views/viewproperties.cpp +++ b/src/views/viewproperties.cpp @@ -42,22 +42,14 @@ ViewPropertySettings *ViewProperties::loadProperties(const QString &folderPath) return new ViewPropertySettings(KSharedConfig::openConfig(settingsFile, KConfig::SimpleConfig)); } - auto createTempFile = []() -> QTemporaryFile * { - QTemporaryFile *tempFile = new QTemporaryFile; - tempFile->setAutoRemove(false); - if (!tempFile->open()) { - qCWarning(DolphinDebug) << "Could not open temp file"; - return nullptr; - } - return tempFile; - }; - + std::unique_ptr tempFile(new QTemporaryFile()); + tempFile->setAutoRemove(false); + if (!tempFile->open()) { + qCWarning(DolphinDebug) << "Could not open temp file"; + return nullptr; + } if (QFile::exists(settingsFile)) { // copy settings to tempfile to load them separately - const QTemporaryFile *tempFile = createTempFile(); - if (!tempFile) { - return nullptr; - } QFile::remove(tempFile->fileName()); QFile::copy(settingsFile, tempFile->fileName()); @@ -84,11 +76,6 @@ ViewPropertySettings *ViewProperties::loadProperties(const QString &folderPath) return nullptr; } // load view properties from xattr to temp file then loads into ViewPropertySettings - // clear the temp file - const QTemporaryFile *tempFile = createTempFile(); - if (!tempFile) { - return nullptr; - } QFile outputFile(tempFile->fileName()); outputFile.open(QIODevice::WriteOnly); outputFile.write(viewPropertiesString.toUtf8()); @@ -369,6 +356,19 @@ bool ViewProperties::sortHiddenLast() const return m_node->sortHiddenLast(); } +void ViewProperties::setDynamicViewPassed(bool dynamicViewPassed) +{ + if (m_node->dynamicViewPassed() != dynamicViewPassed) { + m_node->setDynamicViewPassed(dynamicViewPassed); + update(); + } +} + +bool ViewProperties::dynamicViewPassed() const +{ + return m_node->dynamicViewPassed(); +} + void ViewProperties::setVisibleRoles(const QList &roles) { if (roles == visibleRoles()) { @@ -531,9 +531,27 @@ void ViewProperties::save() const auto metaDataKey = QStringLiteral("kde.fm.viewproperties#1"); const auto items = m_node->items(); - const bool allDefault = std::all_of(items.cbegin(), items.cend(), [this](const KConfigSkeletonItem *item) { - return item->name() == "Timestamp" || (item->name() == "Version" && m_node->version() == CurrentViewPropertiesVersion) || item->isDefault(); - }); + const auto defaultConfig = defaultProperties(); + bool allDefault = true; + for (const auto item : items) { + if (item->name() == "Timestamp") { + continue; + } + if (item->name() == "Version") { + if (m_node->version() != CurrentViewPropertiesVersion) { + allDefault = false; + break; + } else { + continue; + } + } + auto defaultItem = defaultConfig->findItem(item->name()); + if (!defaultItem || defaultItem->property() != item->property()) { + allDefault = false; + break; + } + } + if (allDefault) { if (metaData.hasAttribute(metaDataKey)) { qCDebug(DolphinDebug) << "clearing extended attributes for " << m_filePath;