diff --git a/core/libs/settings/applicationsettings.cpp b/core/libs/settings/applicationsettings.cpp index 5061fef902..a64247c6a9 100644 --- a/core/libs/settings/applicationsettings.cpp +++ b/core/libs/settings/applicationsettings.cpp @@ -1,504 +1,504 @@ /* ============================================================ * * This file is a part of digiKam project * https://www.digikam.org * * Date : 2003-16-10 * Description : application settings interface * * Copyright (C) 2003-2004 by Renchi Raju * Copyright (C) 2003-2020 by Gilles Caulier * Copyright (C) 2007 by Arnd Baecker * Copyright (C) 2014-2015 by Mohamed_Anwer * Copyright (C) 2014 by Veaceslav Munteanu * Copyright (C) 2017 by Simon Frei * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General * Public License as published by the Free Software Foundation; * either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * ============================================================ */ #include "applicationsettings_p.h" // Qt includes #include #include // KDE includes #include #ifdef HAVE_KFILEMETADATA # include "baloowrap.h" #endif // Local includes #include "itemfiltersettings.h" #include "itemsortsettings.h" #include "mimefilter.h" #include "thumbnailsize.h" #include "thememanager.h" namespace Digikam { class Q_DECL_HIDDEN ApplicationSettingsCreator { public: ApplicationSettings object; }; Q_GLOBAL_STATIC(ApplicationSettingsCreator, creator) // ------------------------------------------------------------------------------------------------- ApplicationSettings* ApplicationSettings::instance() { return &creator->object; } ApplicationSettings::ApplicationSettings() : QObject(), d(new Private(this)) { d->config = KSharedConfig::openConfig(); d->init(); readSettings(); // Init Max Thumbnail Size at startup. ThumbnailSize::readSettings(generalConfigGroup()); } ApplicationSettings::~ApplicationSettings() { delete d; } QString ApplicationSettings::generalConfigGroupName() const { return d->configGroupGeneral; } KConfigGroup ApplicationSettings::generalConfigGroup() const { return d->config->group(generalConfigGroupName()); } void ApplicationSettings::emitSetupChanged() { emit setupChanged(); } void ApplicationSettings::applyBalooSettings() { #ifdef HAVE_KFILEMETADATA BalooWrap::instance()->setSyncToBaloo(d->syncToBaloo); BalooWrap::instance()->setSyncToDigikam(d->syncToDigikam); #endif } void ApplicationSettings::readSettings() { KSharedConfigPtr config = d->config; // --------------------------------------------------------------------- KConfigGroup group = config->group(d->configGroupDefault); QStringList collectionList = group.readEntry(d->configAlbumCollectionsEntry, QStringList()); if (!collectionList.isEmpty()) { collectionList.sort(); d->albumCategoryNames = collectionList; } d->albumSortRole = ApplicationSettings::AlbumSortRole(group.readEntry(d->configAlbumSortRoleEntry, (int)ApplicationSettings::ByFolder)); d->imageSortOrder = group.readEntry(d->configImageSortOrderEntry, (int)ItemSortSettings::SortByFileName); d->imageSorting = group.readEntry(d->configImageSortingEntry, (int)ItemSortSettings::AscendingOrder); d->imageSeparationMode = group.readEntry(d->configImageSeparationModeEntry, (int)ItemSortSettings::CategoryByAlbum); d->imageSeparationSortOrder = group.readEntry(d->configImageSeparationSortOrderEntry, (int)ItemSortSettings::AscendingOrder); d->itemLeftClickAction = ApplicationSettings::ItemLeftClickAction(group.readEntry(d->configItemLeftClickActionEntry, (int)ApplicationSettings::ShowPreview)); d->thumbnailSize = group.readEntry(d->configDefaultIconSizeEntry, (int)ThumbnailSize::Medium); d->treeThumbnailSize = group.readEntry(d->configDefaultTreeIconSizeEntry, 22); d->treeviewFont = group.readEntry(d->configTreeViewFontEntry, QFontDatabase::systemFont(QFontDatabase::GeneralFont)); d->currentTheme = group.readEntry(d->configThemeEntry, ThemeManager::instance()->defaultThemeName()); d->sidebarTitleStyle = (DMultiTabBar::TextStyle)group.readEntry(d->configSidebarTitleStyleEntry, (int)DMultiTabBar::AllIconsText); d->ratingFilterCond = group.readEntry(d->configRatingFilterConditionEntry, (int)ItemFilterSettings::GreaterEqualCondition); d->albumMonitoring = group.readEntry(d->configAlbumMonitoringEntry, false); d->recursiveAlbums = group.readEntry(d->configRecursiveAlbumsEntry, false); d->recursiveTags = group.readEntry(d->configRecursiveTagsEntry, true); d->allGroupsOpen = group.readEntry(d->configAllGroupsOpenEntry, false); d->iconShowName = group.readEntry(d->configIconShowNameEntry, false); d->iconShowResolution = group.readEntry(d->configIconShowResolutionEntry, false); d->iconShowAspectRatio = group.readEntry(d->configIconShowAspectRatioEntry, false); d->iconShowSize = group.readEntry(d->configIconShowSizeEntry, false); d->iconShowDate = group.readEntry(d->configIconShowDateEntry, false); d->iconShowModDate = group.readEntry(d->configIconShowModificationDateEntry, false); d->iconShowTitle = group.readEntry(d->configIconShowTitleEntry, true); d->iconShowComments = group.readEntry(d->configIconShowCommentsEntry, true); d->iconShowTags = group.readEntry(d->configIconShowTagsEntry, true); d->iconShowOverlays = group.readEntry(d->configIconShowOverlaysEntry, true); d->iconShowFullscreen = group.readEntry(d->configIconShowFullscreenEntry, true); d->iconShowRating = group.readEntry(d->configIconShowRatingEntry, true); d->iconShowImageFormat = group.readEntry(d->configIconShowImageFormatEntry, true); d->iconShowCoordinates = group.readEntry(d->configIconShowCoordinatesEntry, true); d->iconviewFont = group.readEntry(d->configIconViewFontEntry, QFontDatabase::systemFont(QFontDatabase::GeneralFont)); d->toolTipsFont = group.readEntry(d->configToolTipsFontEntry, QFontDatabase::systemFont(QFontDatabase::GeneralFont)); d->showToolTips = group.readEntry(d->configShowToolTipsEntry, false); d->tooltipShowFileName = group.readEntry(d->configToolTipsShowFileNameEntry, true); d->tooltipShowFileDate = group.readEntry(d->configToolTipsShowFileDateEntry, false); d->tooltipShowFileSize = group.readEntry(d->configToolTipsShowFileSizeEntry, false); d->tooltipShowImageType = group.readEntry(d->configToolTipsShowImageTypeEntry, false); d->tooltipShowImageDim = group.readEntry(d->configToolTipsShowImageDimEntry, true); d->tooltipShowImageAR = group.readEntry(d->configToolTipsShowImageAREntry, true); d->tooltipShowPhotoMake = group.readEntry(d->configToolTipsShowPhotoMakeEntry, true); d->tooltipShowPhotoLens = group.readEntry(d->configToolTipsShowPhotoLensEntry, true); d->tooltipShowPhotoDate = group.readEntry(d->configToolTipsShowPhotoDateEntry, true); d->tooltipShowPhotoFocal = group.readEntry(d->configToolTipsShowPhotoFocalEntry, true); d->tooltipShowPhotoExpo = group.readEntry(d->configToolTipsShowPhotoExpoEntry, true); d->tooltipShowPhotoMode = group.readEntry(d->configToolTipsShowPhotoModeEntry, true); d->tooltipShowPhotoFlash = group.readEntry(d->configToolTipsShowPhotoFlashEntry, false); d->tooltipShowPhotoWb = group.readEntry(d->configToolTipsShowPhotoWBEntry, false); d->tooltipShowAlbumName = group.readEntry(d->configToolTipsShowAlbumNameEntry, false); d->tooltipShowTitles = group.readEntry(d->configToolTipsShowTitlesEntry, true); d->tooltipShowComments = group.readEntry(d->configToolTipsShowCommentsEntry, true); d->tooltipShowTags = group.readEntry(d->configToolTipsShowTagsEntry, true); d->tooltipShowLabelRating = group.readEntry(d->configToolTipsShowLabelRatingEntry, true); d->tooltipShowVideoAspectRatio = group.readEntry(d->configToolTipsShowVideoAspectRatioEntry, true); d->tooltipShowVideoAudioBitRate = group.readEntry(d->configToolTipsShowVideoAudioBitRateEntry, true); d->tooltipShowVideoAudioChannelType = group.readEntry(d->configToolTipsShowVideoAudioChannelTypeEntry, true); d->tooltipShowVideoAudioCodec = group.readEntry(d->configToolTipsShowVideoAudioCodecEntry, true); d->tooltipShowVideoDuration = group.readEntry(d->configToolTipsShowVideoDurationEntry, true); d->tooltipShowVideoFrameRate = group.readEntry(d->configToolTipsShowVideoFrameRateEntry, true); d->tooltipShowVideoVideoCodec = group.readEntry(d->configToolTipsShowVideoVideoCodecEntry, true); d->showAlbumToolTips = group.readEntry(d->configShowAlbumToolTipsEntry, false); d->tooltipShowAlbumTitle = group.readEntry(d->configToolTipsShowAlbumTitleEntry, true); d->tooltipShowAlbumDate = group.readEntry(d->configToolTipsShowAlbumDateEntry, true); d->tooltipShowAlbumCollection = group.readEntry(d->configToolTipsShowAlbumCollectionEntry, true); d->tooltipShowAlbumCategory = group.readEntry(d->configToolTipsShowAlbumCategoryEntry, true); d->tooltipShowAlbumCaption = group.readEntry(d->configToolTipsShowAlbumCaptionEntry, true); d->tooltipShowAlbumPreview = group.readEntry(d->configToolTipsShowAlbumPreviewEntry, false); if (group.readEntry(d->configPreviewLoadFullItemSizeEntry, true)) { d->previewSettings.quality = PreviewSettings::HighQualityPreview; if (group.readEntry(d->configPreviewRawUseEmbeddedPreview, false)) { d->previewSettings.rawLoading = PreviewSettings::RawPreviewFromEmbeddedPreview; } else if (group.readEntry(d->configPreviewRawUseHalfSizeData, false)) { d->previewSettings.rawLoading = PreviewSettings::RawPreviewFromRawHalfSize; } else { d->previewSettings.rawLoading = PreviewSettings::RawPreviewAutomatic; } } else { d->previewSettings.quality = PreviewSettings::FastPreview; } d->previewSettings.convertToEightBit = group.readEntry(d->configPreviewConvertToEightBitEntry, true); d->previewShowIcons = group.readEntry(d->configPreviewShowIconsEntry, true); d->showThumbbar = group.readEntry(d->configShowThumbbarEntry, true); d->showFolderTreeViewItemsCount = group.readEntry(d->configShowFolderTreeViewItemsCountEntry, false); // --------------------------------------------------------------------- group = generalConfigGroup(); d->showSplash = group.readEntry(d->configShowSplashEntry, true); d->useTrash = group.readEntry(d->configUseTrashEntry, true); d->showTrashDeleteDialog = group.readEntry(d->configShowTrashDeleteDialogEntry, true); d->showPermanentDeleteDialog = group.readEntry(d->configShowPermanentDeleteDialogEntry, true); d->sidebarApplyDirectly = group.readEntry(d->configApplySidebarChangesDirectlyEntry, false); #ifdef Q_OS_OSX d->useNativeFileDialog = group.readEntry(d->configUseNativeFileDialogEntry, true); #else d->useNativeFileDialog = group.readEntry(d->configUseNativeFileDialogEntry, false); #endif d->drawFramesToGrouped = group.readEntry(d->configDrawFramesToGroupedEntry, true); d->scrollItemToCenter = group.readEntry(d->configScrollItemToCenterEntry, false); d->showOnlyPersonTagsInPeopleSidebar = group.readEntry(d->configShowOnlyPersonTagsInPeopleSidebarEntry, true); d->stringComparisonType = (StringComparisonType) group.readEntry(d->configStringComparisonTypeEntry, (int) Natural); #ifdef HAVE_APPSTYLE_SUPPORT QString applicationStyle = qApp->style()->objectName(); if (applicationStyle.compare(QLatin1String("windowsvista"), Qt::CaseInsensitive) == 0) { applicationStyle = QLatin1String("Windows"); } setApplicationStyle(group.readEntry(d->configApplicationStyleEntry, applicationStyle)); #else setApplicationStyle(QLatin1String("Fusion")); #endif d->applicationIcon = group.readEntry(d->configIconThemeEntry, QString()); setApplicationFont(group.readEntry(d->configApplicationFontEntry, QFontDatabase::systemFont(QFontDatabase::GeneralFont))); d->scanAtStart = group.readEntry(d->configScanAtStartEntry, true); d->cleanAtStart = group.readEntry(d->configCleanAtStartEntry, false); // --------------------------------------------------------------------- d->databaseParams.readFromConfig(); #ifdef HAVE_KFILEMETADATA group = config->group(d->configGroupBaloo); d->syncToDigikam = group.readEntry(d->configSyncBalootoDigikamEntry, false); d->syncToBaloo = group.readEntry(d->configSyncDigikamtoBalooEntry, false); emit balooSettingsChanged(); #endif // HAVE_KFILEMETADATA // --------------------------------------------------------------------- group = config->group(d->configGroupVersioning); d->versionSettings.readFromConfig(group); // --------------------------------------------------------------------- group = config->group(d->configGroupFaceDetection); - d->faceDetectionAccuracy = group.readEntry(d->configFaceDetectionAccuracyEntry, double(0.8)); + d->faceDetectionAccuracy = group.readEntry(d->configFaceDetectionAccuracyEntry, double(0.7)); // --------------------------------------------------------------------- group = config->group(d->configGroupDuplicatesSearch); d->minimumSimilarityBound = group.readEntry(d->configMinimumSimilarityBound, 40); d->duplicatesSearchLastMinSimilarity = group.readEntry(d->configDuplicatesSearchLastMinSimilarity, 90); d->duplicatesSearchLastMaxSimilarity = group.readEntry(d->configDuplicatesSearchLastMaxSimilarity, 100); d->duplicatesSearchLastAlbumTagRelation = group.readEntry(d->configDuplicatesSearchLastAlbumTagRelation, 0); d->duplicatesSearchLastRestrictions = group.readEntry(d->configDuplicatesSearchLastRestrictions, 0); // --------------------------------------------------------------------- group = config->group(d->configGroupGrouping); for (ApplicationSettings::OperationModes::key_iterator it = d->groupingOperateOnAll.keyBegin(); it != d->groupingOperateOnAll.keyEnd(); ++it) { d->groupingOperateOnAll.insert(*it, (ApplicationSettings::ApplyToEntireGroup)group.readEntry( d->configGroupingOperateOnAll.value(*it), (int)ApplicationSettings::Ask)); } emit setupChanged(); emit recurseSettingsChanged(); emit balooSettingsChanged(); } void ApplicationSettings::saveSettings() { KSharedConfigPtr config = d->config; // --------------------------------------------------------------------- KConfigGroup group = config->group(d->configGroupDefault); group.writeEntry(d->configAlbumCollectionsEntry, d->albumCategoryNames); group.writeEntry(d->configAlbumSortRoleEntry, (int)d->albumSortRole); group.writeEntry(d->configImageSortOrderEntry, (int)d->imageSortOrder); group.writeEntry(d->configImageSortingEntry, (int)d->imageSorting); group.writeEntry(d->configImageSeparationModeEntry, (int)d->imageSeparationMode); group.writeEntry(d->configImageSeparationSortOrderEntry, (int)d->imageSeparationSortOrder); group.writeEntry(d->configItemLeftClickActionEntry, (int)d->itemLeftClickAction); group.writeEntry(d->configDefaultIconSizeEntry, QString::number(d->thumbnailSize)); group.writeEntry(d->configDefaultTreeIconSizeEntry, QString::number(d->treeThumbnailSize)); group.writeEntry(d->configTreeViewFontEntry, d->treeviewFont); group.writeEntry(d->configRatingFilterConditionEntry, d->ratingFilterCond); group.writeEntry(d->configAlbumMonitoringEntry, d->albumMonitoring); group.writeEntry(d->configRecursiveAlbumsEntry, d->recursiveAlbums); group.writeEntry(d->configRecursiveTagsEntry, d->recursiveTags); group.writeEntry(d->configAllGroupsOpenEntry, d->allGroupsOpen); group.writeEntry(d->configThemeEntry, d->currentTheme); group.writeEntry(d->configSidebarTitleStyleEntry, (int)d->sidebarTitleStyle); group.writeEntry(d->configIconShowNameEntry, d->iconShowName); group.writeEntry(d->configIconShowResolutionEntry, d->iconShowResolution); group.writeEntry(d->configIconShowAspectRatioEntry, d->iconShowAspectRatio); group.writeEntry(d->configIconShowSizeEntry, d->iconShowSize); group.writeEntry(d->configIconShowDateEntry, d->iconShowDate); group.writeEntry(d->configIconShowModificationDateEntry, d->iconShowModDate); group.writeEntry(d->configIconShowTitleEntry, d->iconShowTitle); group.writeEntry(d->configIconShowCommentsEntry, d->iconShowComments); group.writeEntry(d->configIconShowTagsEntry, d->iconShowTags); group.writeEntry(d->configIconShowOverlaysEntry, d->iconShowOverlays); group.writeEntry(d->configIconShowFullscreenEntry, d->iconShowFullscreen); group.writeEntry(d->configIconShowRatingEntry, d->iconShowRating); group.writeEntry(d->configIconShowImageFormatEntry, d->iconShowImageFormat); group.writeEntry(d->configIconShowCoordinatesEntry, d->iconShowCoordinates); group.writeEntry(d->configIconViewFontEntry, d->iconviewFont); group.writeEntry(d->configToolTipsFontEntry, d->toolTipsFont); group.writeEntry(d->configShowToolTipsEntry, d->showToolTips); group.writeEntry(d->configToolTipsShowFileNameEntry, d->tooltipShowFileName); group.writeEntry(d->configToolTipsShowFileDateEntry, d->tooltipShowFileDate); group.writeEntry(d->configToolTipsShowFileSizeEntry, d->tooltipShowFileSize); group.writeEntry(d->configToolTipsShowImageTypeEntry, d->tooltipShowImageType); group.writeEntry(d->configToolTipsShowImageDimEntry, d->tooltipShowImageDim); group.writeEntry(d->configToolTipsShowImageAREntry, d->tooltipShowImageAR); group.writeEntry(d->configToolTipsShowPhotoMakeEntry, d->tooltipShowPhotoMake); group.writeEntry(d->configToolTipsShowPhotoLensEntry, d->tooltipShowPhotoLens); group.writeEntry(d->configToolTipsShowPhotoDateEntry, d->tooltipShowPhotoDate); group.writeEntry(d->configToolTipsShowPhotoFocalEntry, d->tooltipShowPhotoFocal); group.writeEntry(d->configToolTipsShowPhotoExpoEntry, d->tooltipShowPhotoExpo); group.writeEntry(d->configToolTipsShowPhotoModeEntry, d->tooltipShowPhotoMode); group.writeEntry(d->configToolTipsShowPhotoFlashEntry, d->tooltipShowPhotoFlash); group.writeEntry(d->configToolTipsShowPhotoWBEntry, d->tooltipShowPhotoWb); group.writeEntry(d->configToolTipsShowAlbumNameEntry, d->tooltipShowAlbumName); group.writeEntry(d->configToolTipsShowTitlesEntry, d->tooltipShowTitles); group.writeEntry(d->configToolTipsShowCommentsEntry, d->tooltipShowComments); group.writeEntry(d->configToolTipsShowTagsEntry, d->tooltipShowTags); group.writeEntry(d->configToolTipsShowLabelRatingEntry, d->tooltipShowLabelRating); group.writeEntry(d->configToolTipsShowVideoAspectRatioEntry, d->tooltipShowVideoAspectRatio); group.writeEntry(d->configToolTipsShowVideoAudioBitRateEntry, d->tooltipShowVideoAudioBitRate); group.writeEntry(d->configToolTipsShowVideoAudioChannelTypeEntry, d->tooltipShowVideoAudioChannelType); group.writeEntry(d->configToolTipsShowVideoAudioCodecEntry, d->tooltipShowVideoAudioCodec); group.writeEntry(d->configToolTipsShowVideoDurationEntry, d->tooltipShowVideoDuration); group.writeEntry(d->configToolTipsShowVideoFrameRateEntry, d->tooltipShowVideoFrameRate); group.writeEntry(d->configToolTipsShowVideoVideoCodecEntry, d->tooltipShowVideoVideoCodec); group.writeEntry(d->configShowAlbumToolTipsEntry, d->showAlbumToolTips); group.writeEntry(d->configToolTipsShowAlbumTitleEntry, d->tooltipShowAlbumTitle); group.writeEntry(d->configToolTipsShowAlbumDateEntry, d->tooltipShowAlbumDate); group.writeEntry(d->configToolTipsShowAlbumCollectionEntry, d->tooltipShowAlbumCollection); group.writeEntry(d->configToolTipsShowAlbumCategoryEntry, d->tooltipShowAlbumCategory); group.writeEntry(d->configToolTipsShowAlbumCaptionEntry, d->tooltipShowAlbumCaption); group.writeEntry(d->configToolTipsShowAlbumPreviewEntry, d->tooltipShowAlbumPreview); if (d->previewSettings.quality == PreviewSettings::HighQualityPreview) { group.writeEntry(d->configPreviewLoadFullItemSizeEntry, true); switch (d->previewSettings.rawLoading) { case PreviewSettings::RawPreviewAutomatic: group.writeEntry(d->configPreviewRawUseEmbeddedPreview, false); group.writeEntry(d->configPreviewRawUseHalfSizeData, false); break; case PreviewSettings::RawPreviewFromEmbeddedPreview: group.writeEntry(d->configPreviewRawUseEmbeddedPreview, true); group.writeEntry(d->configPreviewRawUseHalfSizeData, false); break; case PreviewSettings::RawPreviewFromRawHalfSize: group.writeEntry(d->configPreviewRawUseEmbeddedPreview, false); group.writeEntry(d->configPreviewRawUseHalfSizeData, true); break; } } else { group.writeEntry(d->configPreviewLoadFullItemSizeEntry, false); } group.writeEntry(d->configPreviewConvertToEightBitEntry, d->previewSettings.convertToEightBit); group.writeEntry(d->configPreviewShowIconsEntry, d->previewShowIcons); group.writeEntry(d->configShowThumbbarEntry, d->showThumbbar); group.writeEntry(d->configShowFolderTreeViewItemsCountEntry, d->showFolderTreeViewItemsCount); // --------------------------------------------------------------------- group = generalConfigGroup(); group.writeEntry(d->configShowSplashEntry, d->showSplash); group.writeEntry(d->configUseTrashEntry, d->useTrash); group.writeEntry(d->configShowTrashDeleteDialogEntry, d->showTrashDeleteDialog); group.writeEntry(d->configShowPermanentDeleteDialogEntry, d->showPermanentDeleteDialog); group.writeEntry(d->configApplySidebarChangesDirectlyEntry, d->sidebarApplyDirectly); group.writeEntry(d->configUseNativeFileDialogEntry, d->useNativeFileDialog); group.writeEntry(d->configDrawFramesToGroupedEntry, d->drawFramesToGrouped); group.writeEntry(d->configScrollItemToCenterEntry, d->scrollItemToCenter); group.writeEntry(d->configShowOnlyPersonTagsInPeopleSidebarEntry, d->showOnlyPersonTagsInPeopleSidebar); group.writeEntry(d->configStringComparisonTypeEntry, (int) d->stringComparisonType); #ifdef HAVE_APPSTYLE_SUPPORT group.writeEntry(d->configApplicationStyleEntry, d->applicationStyle); #endif group.writeEntry(d->configIconThemeEntry, d->applicationIcon); group.writeEntry(d->configApplicationFontEntry, d->applicationFont); group.writeEntry(d->configScanAtStartEntry, d->scanAtStart); group.writeEntry(d->configCleanAtStartEntry, d->cleanAtStart); // --------------------------------------------------------------------- d->databaseParams.writeToConfig(); #ifdef HAVE_KFILEMETADATA group = config->group(d->configGroupBaloo); group.writeEntry(d->configSyncBalootoDigikamEntry, d->syncToDigikam); group.writeEntry(d->configSyncDigikamtoBalooEntry, d->syncToBaloo); #endif // HAVE_KFILEMETADATA // --------------------------------------------------------------------- group = config->group(d->configGroupVersioning); d->versionSettings.writeToConfig(group); // --------------------------------------------------------------------- group = config->group(d->configGroupFaceDetection); group.writeEntry(d->configFaceDetectionAccuracyEntry, d->faceDetectionAccuracy); group = config->group(d->configGroupDuplicatesSearch); group.writeEntry(d->configMinimumSimilarityBound, d->minimumSimilarityBound); group.writeEntry(d->configDuplicatesSearchLastMinSimilarity, d->duplicatesSearchLastMinSimilarity); group.writeEntry(d->configDuplicatesSearchLastMaxSimilarity, d->duplicatesSearchLastMaxSimilarity); group.writeEntry(d->configDuplicatesSearchLastAlbumTagRelation, d->duplicatesSearchLastAlbumTagRelation); group.writeEntry(d->configDuplicatesSearchLastRestrictions, d->duplicatesSearchLastRestrictions); group = config->group(d->configGroupGrouping); for (ApplicationSettings::OperationModes::key_iterator it = d->groupingOperateOnAll.keyBegin(); it != d->groupingOperateOnAll.keyEnd(); ++it) { group.writeEntry(d->configGroupingOperateOnAll.value(*it), (int)d->groupingOperateOnAll.value(*it)); } config->sync(); } } // namespace Digikam diff --git a/core/libs/settings/applicationsettings_p.cpp b/core/libs/settings/applicationsettings_p.cpp index 6c6e66a810..0721000490 100644 --- a/core/libs/settings/applicationsettings_p.cpp +++ b/core/libs/settings/applicationsettings_p.cpp @@ -1,402 +1,402 @@ /* ============================================================ * * This file is a part of digiKam project * https://www.digikam.org * * Date : 2003-16-10 * Description : application settings interface * * Copyright (C) 2003-2020 by Gilles Caulier * Copyright (C) 2015 by Mohamed_Anwer * Copyright (C) 2017 by Simon Frei * * This program is free software; you can redistribute it * and/or modify it under the terms of the GNU General * Public License as published by the Free Software Foundation; * either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * ============================================================ */ #include "applicationsettings_p.h" // Qt includes #include #include // KDE includes #include // Local includes #include "itemfiltersettings.h" #include "itemsortsettings.h" #include "thumbnailsize.h" namespace Digikam { const QString ApplicationSettings::Private::configGroupDefault(QLatin1String("Album Settings")); const QString ApplicationSettings::Private::configGroupExif(QLatin1String("EXIF Settings")); const QString ApplicationSettings::Private::configGroupMetadata(QLatin1String("Metadata Settings")); const QString ApplicationSettings::Private::configGroupBaloo(QLatin1String("Baloo Settings")); const QString ApplicationSettings::Private::configGroupGeneral(QLatin1String("General Settings")); const QString ApplicationSettings::Private::configGroupVersioning(QLatin1String("Versioning Settings")); const QString ApplicationSettings::Private::configGroupFaceDetection(QLatin1String("Face Detection Settings")); const QString ApplicationSettings::Private::configGroupDuplicatesSearch(QLatin1String("Find Duplicates View")); const QString ApplicationSettings::Private::configGroupGrouping(QLatin1String("Grouping Behaviour")); const QString ApplicationSettings::Private::configAlbumCollectionsEntry(QLatin1String("Album Collections")); const QString ApplicationSettings::Private::configAlbumMonitoringEntry(QLatin1String("Album Monitoring")); const QString ApplicationSettings::Private::configAlbumSortRoleEntry(QLatin1String("Album Sort Role")); const QString ApplicationSettings::Private::configImageSortOrderEntry(QLatin1String("Image Sort Order")); const QString ApplicationSettings::Private::configImageSortingEntry(QLatin1String("Image Sorting")); const QString ApplicationSettings::Private::configImageSeparationModeEntry(QLatin1String("Image Group Mode")); const QString ApplicationSettings::Private::configImageSeparationSortOrderEntry(QLatin1String("Image Group Sort Order")); const QString ApplicationSettings::Private::configItemLeftClickActionEntry(QLatin1String("Item Left Click Action")); const QString ApplicationSettings::Private::configDefaultIconSizeEntry(QLatin1String("Default Icon Size")); const QString ApplicationSettings::Private::configDefaultTreeIconSizeEntry(QLatin1String("Default Tree Icon Size")); const QString ApplicationSettings::Private::configTreeViewFontEntry(QLatin1String("TreeView Font")); const QString ApplicationSettings::Private::configThemeEntry(QLatin1String("Theme")); const QString ApplicationSettings::Private::configSidebarTitleStyleEntry(QLatin1String("Sidebar Title Style")); const QString ApplicationSettings::Private::configRatingFilterConditionEntry(QLatin1String("Rating Filter Condition")); const QString ApplicationSettings::Private::configRecursiveAlbumsEntry(QLatin1String("Recursive Albums")); const QString ApplicationSettings::Private::configRecursiveTagsEntry(QLatin1String("Recursive Tags")); const QString ApplicationSettings::Private::configAllGroupsOpenEntry(QLatin1String("All Groups Open")); const QString ApplicationSettings::Private::configIconShowNameEntry(QLatin1String("Icon Show Name")); const QString ApplicationSettings::Private::configIconShowResolutionEntry(QLatin1String("Icon Show Resolution")); const QString ApplicationSettings::Private::configIconShowSizeEntry(QLatin1String("Icon Show Size")); const QString ApplicationSettings::Private::configIconShowDateEntry(QLatin1String("Icon Show Date")); const QString ApplicationSettings::Private::configIconShowModificationDateEntry(QLatin1String("Icon Show Modification Date")); const QString ApplicationSettings::Private::configIconShowTitleEntry(QLatin1String("Icon Show Title")); const QString ApplicationSettings::Private::configIconShowCommentsEntry(QLatin1String("Icon Show Comments")); const QString ApplicationSettings::Private::configIconShowTagsEntry(QLatin1String("Icon Show Tags")); const QString ApplicationSettings::Private::configIconShowRatingEntry(QLatin1String("Icon Show Rating")); const QString ApplicationSettings::Private::configIconShowImageFormatEntry(QLatin1String("Icon Show Image Format")); const QString ApplicationSettings::Private::configIconShowCoordinatesEntry(QLatin1String("Icon Show Coordinates")); const QString ApplicationSettings::Private::configIconShowAspectRatioEntry(QLatin1String("Icon Show Aspect Ratio")); const QString ApplicationSettings::Private::configIconShowOverlaysEntry(QLatin1String("Icon Show Overlays")); const QString ApplicationSettings::Private::configIconShowFullscreenEntry(QLatin1String("Icon Show Fullscreen")); const QString ApplicationSettings::Private::configIconViewFontEntry(QLatin1String("IconView Font")); const QString ApplicationSettings::Private::configToolTipsFontEntry(QLatin1String("ToolTips Font")); const QString ApplicationSettings::Private::configShowToolTipsEntry(QLatin1String("Show ToolTips")); const QString ApplicationSettings::Private::configToolTipsShowFileNameEntry(QLatin1String("ToolTips Show File Name")); const QString ApplicationSettings::Private::configToolTipsShowFileDateEntry(QLatin1String("ToolTips Show File Date")); const QString ApplicationSettings::Private::configToolTipsShowFileSizeEntry(QLatin1String("ToolTips Show File Size")); const QString ApplicationSettings::Private::configToolTipsShowImageTypeEntry(QLatin1String("ToolTips Show Image Type")); const QString ApplicationSettings::Private::configToolTipsShowImageDimEntry(QLatin1String("ToolTips Show Image Dim")); const QString ApplicationSettings::Private::configToolTipsShowImageAREntry(QLatin1String("ToolTips Show Image AR")); const QString ApplicationSettings::Private::configToolTipsShowPhotoMakeEntry(QLatin1String("ToolTips Show Photo Make")); const QString ApplicationSettings::Private::configToolTipsShowPhotoLensEntry(QLatin1String("ToolTips Show Photo Lens")); const QString ApplicationSettings::Private::configToolTipsShowPhotoDateEntry(QLatin1String("ToolTips Show Photo Date")); const QString ApplicationSettings::Private::configToolTipsShowPhotoFocalEntry(QLatin1String("ToolTips Show Photo Focal")); const QString ApplicationSettings::Private::configToolTipsShowPhotoExpoEntry(QLatin1String("ToolTips Show Photo Expo")); const QString ApplicationSettings::Private::configToolTipsShowPhotoModeEntry(QLatin1String("ToolTips Show Photo Mode")); const QString ApplicationSettings::Private::configToolTipsShowPhotoFlashEntry(QLatin1String("ToolTips Show Photo Flash")); const QString ApplicationSettings::Private::configToolTipsShowPhotoWBEntry(QLatin1String("ToolTips Show Photo WB")); const QString ApplicationSettings::Private::configToolTipsShowAlbumNameEntry(QLatin1String("ToolTips Show Album Name")); const QString ApplicationSettings::Private::configToolTipsShowTitlesEntry(QLatin1String("ToolTips Show Titles")); const QString ApplicationSettings::Private::configToolTipsShowCommentsEntry(QLatin1String("ToolTips Show Comments")); const QString ApplicationSettings::Private::configToolTipsShowTagsEntry(QLatin1String("ToolTips Show Tags")); const QString ApplicationSettings::Private::configToolTipsShowLabelRatingEntry(QLatin1String("ToolTips Show Label Rating")); const QString ApplicationSettings::Private::configToolTipsShowVideoAspectRatioEntry(QLatin1String("ToolTips Show Video Aspect Ratio")); const QString ApplicationSettings::Private::configToolTipsShowVideoAudioBitRateEntry(QLatin1String("ToolTips Show Audio Bit Rate")); const QString ApplicationSettings::Private::configToolTipsShowVideoAudioChannelTypeEntry(QLatin1String("ToolTips Show Audio Channel Type")); const QString ApplicationSettings::Private::configToolTipsShowVideoAudioCodecEntry(QLatin1String("ToolTips Show Audio Codec")); const QString ApplicationSettings::Private::configToolTipsShowVideoDurationEntry(QLatin1String("ToolTips Show Video Duration")); const QString ApplicationSettings::Private::configToolTipsShowVideoFrameRateEntry(QLatin1String("ToolTips Show Video Frame Rate")); const QString ApplicationSettings::Private::configToolTipsShowVideoVideoCodecEntry(QLatin1String("ToolTips Show Video Codec")); const QString ApplicationSettings::Private::configShowAlbumToolTipsEntry(QLatin1String("Show Album ToolTips")); const QString ApplicationSettings::Private::configToolTipsShowAlbumTitleEntry(QLatin1String("ToolTips Show Album Title")); const QString ApplicationSettings::Private::configToolTipsShowAlbumDateEntry(QLatin1String("ToolTips Show Album Date")); const QString ApplicationSettings::Private::configToolTipsShowAlbumCollectionEntry(QLatin1String("ToolTips Show Album Collection")); const QString ApplicationSettings::Private::configToolTipsShowAlbumCategoryEntry(QLatin1String("ToolTips Show Album Category")); const QString ApplicationSettings::Private::configToolTipsShowAlbumCaptionEntry(QLatin1String("ToolTips Show Album Caption")); const QString ApplicationSettings::Private::configToolTipsShowAlbumPreviewEntry(QLatin1String("ToolTips Show Album Preview")); const QString ApplicationSettings::Private::configPreviewLoadFullItemSizeEntry(QLatin1String("Preview Load Full Image Size")); const QString ApplicationSettings::Private::configPreviewRawUseEmbeddedPreview(QLatin1String("Preview Raw Use Embedded Preview")); const QString ApplicationSettings::Private::configPreviewRawUseHalfSizeData(QLatin1String("Preview Raw Use Half Size Data")); const QString ApplicationSettings::Private::configPreviewConvertToEightBitEntry(QLatin1String("Preview Convert To Eight Bit")); const QString ApplicationSettings::Private::configPreviewShowIconsEntry(QLatin1String("Preview Show Icons")); const QString ApplicationSettings::Private::configShowThumbbarEntry(QLatin1String("Show Thumbbar")); const QString ApplicationSettings::Private::configShowFolderTreeViewItemsCountEntry(QLatin1String("Show Folder Tree View Items Count")); const QString ApplicationSettings::Private::configShowSplashEntry(QLatin1String("Show Splash")); const QString ApplicationSettings::Private::configUseTrashEntry(QLatin1String("Use Trash")); const QString ApplicationSettings::Private::configShowTrashDeleteDialogEntry(QLatin1String("Show Trash Delete Dialog")); const QString ApplicationSettings::Private::configShowPermanentDeleteDialogEntry(QLatin1String("Show Permanent Delete Dialog")); const QString ApplicationSettings::Private::configApplySidebarChangesDirectlyEntry(QLatin1String("Apply Sidebar Changes Directly")); const QString ApplicationSettings::Private::configUseNativeFileDialogEntry(QLatin1String("Use Native File Dialog")); const QString ApplicationSettings::Private::configDrawFramesToGroupedEntry(QLatin1String("Draw Frames To Grouped Items")); const QString ApplicationSettings::Private::configScrollItemToCenterEntry(QLatin1String("Scroll Current Item To Center")); const QString ApplicationSettings::Private::configShowOnlyPersonTagsInPeopleSidebarEntry(QLatin1String("Show Only Face Tags For Assigning Name")); const QString ApplicationSettings::Private::configSyncBalootoDigikamEntry(QLatin1String("Sync Baloo to Digikam")); const QString ApplicationSettings::Private::configSyncDigikamtoBalooEntry(QLatin1String("Sync Digikam to Baloo")); const QString ApplicationSettings::Private::configStringComparisonTypeEntry(QLatin1String("String Comparison Type")); const QString ApplicationSettings::Private::configFaceDetectionAccuracyEntry(QLatin1String("Detection Accuracy")); const QString ApplicationSettings::Private::configApplicationStyleEntry(QLatin1String("Application Style")); const QString ApplicationSettings::Private::configIconThemeEntry(QLatin1String("Icon Theme")); const QString ApplicationSettings::Private::configApplicationFontEntry(QLatin1String("Application Font")); const QString ApplicationSettings::Private::configScanAtStartEntry(QLatin1String("Scan At Start")); const QString ApplicationSettings::Private::configCleanAtStartEntry(QLatin1String("Clean core DB At Start")); const QString ApplicationSettings::Private::configMinimumSimilarityBound(QLatin1String("Lower bound for minimum similarity")); const QString ApplicationSettings::Private::configDuplicatesSearchLastMinSimilarity(QLatin1String("Last minimum similarity")); const QString ApplicationSettings::Private::configDuplicatesSearchLastMaxSimilarity(QLatin1String("Last maximum similarity")); const QString ApplicationSettings::Private::configDuplicatesSearchLastAlbumTagRelation(QLatin1String("Last search album tag relation")); const QString ApplicationSettings::Private::configDuplicatesSearchLastRestrictions(QLatin1String("Last search results restriction")); const ApplicationSettings::OperationStrings ApplicationSettings::Private::configGroupingOperateOnAll = ApplicationSettings::Private::createConfigGroupingOperateOnAll(); ApplicationSettings::OperationStrings ApplicationSettings::Private::createConfigGroupingOperateOnAll() { ApplicationSettings::OperationStrings out; out.insert(ApplicationSettings::Metadata, QLatin1String("Do metadata operations on all")); out.insert(ApplicationSettings::ImportExport, QLatin1String("Do Import Export operations on all")); out.insert(ApplicationSettings::BQM, QLatin1String("Do BQM operations on all")); out.insert(ApplicationSettings::LightTable, QLatin1String("Do light table operations on all")); out.insert(ApplicationSettings::Slideshow, QLatin1String("Do slideshow operations on all")); out.insert(ApplicationSettings::Rename, QLatin1String("Rename all")); out.insert(ApplicationSettings::Tools, QLatin1String("Operate tools on all")); return out; } ApplicationSettings::Private::Private(ApplicationSettings* const qq) : showSplash(false), useTrash(false), showTrashDeleteDialog(false), showPermanentDeleteDialog(false), sidebarApplyDirectly(false), useNativeFileDialog(false), drawFramesToGrouped(true), scrollItemToCenter(false), showOnlyPersonTagsInPeopleSidebar(false), iconShowName(false), iconShowSize(false), iconShowDate(false), iconShowModDate(false), iconShowTitle(false), iconShowComments(false), iconShowResolution(false), iconShowTags(false), iconShowOverlays(false), iconShowFullscreen(false), iconShowRating(false), iconShowImageFormat(false), iconShowCoordinates(false), iconShowAspectRatio(false), showToolTips(false), tooltipShowFileName(false), tooltipShowFileDate(false), tooltipShowFileSize(false), tooltipShowImageType(false), tooltipShowImageDim(false), tooltipShowImageAR(false), tooltipShowPhotoMake(false), tooltipShowPhotoLens(false), tooltipShowPhotoDate(false), tooltipShowPhotoFocal(false), tooltipShowPhotoExpo(false), tooltipShowPhotoMode(false), tooltipShowPhotoFlash(false), tooltipShowPhotoWb(false), tooltipShowAlbumName(false), tooltipShowTitles(false), tooltipShowComments(false), tooltipShowTags(false), tooltipShowLabelRating(false), tooltipShowVideoAspectRatio(false), tooltipShowVideoAudioBitRate(false), tooltipShowVideoAudioChannelType(false), tooltipShowVideoAudioCodec(false), tooltipShowVideoDuration(false), tooltipShowVideoFrameRate(false), tooltipShowVideoVideoCodec(false), showAlbumToolTips(false), tooltipShowAlbumTitle(false), tooltipShowAlbumDate(false), tooltipShowAlbumCollection(false), tooltipShowAlbumCategory(false), tooltipShowAlbumCaption(false), tooltipShowAlbumPreview(false), previewShowIcons(true), showThumbbar(false), showFolderTreeViewItemsCount(false), treeThumbnailSize(0), thumbnailSize(0), ratingFilterCond(0), recursiveAlbums(false), recursiveTags(false), allGroupsOpen(false), scanAtStart(true), cleanAtStart(true), databaseDirSetAtCmd(false), albumMonitoring(false), sidebarTitleStyle(DMultiTabBar::AllIconsText), albumSortRole(ApplicationSettings::ByFolder), albumSortChanged(false), imageSortOrder(0), imageSorting(0), imageSeparationMode(0), imageSeparationSortOrder(0), itemLeftClickAction(ApplicationSettings::ShowPreview), syncToDigikam(false), syncToBaloo(false), - faceDetectionAccuracy(0.8), + faceDetectionAccuracy(0.7), stringComparisonType(ApplicationSettings::Natural), minimumSimilarityBound(40), duplicatesSearchLastMinSimilarity(90), duplicatesSearchLastMaxSimilarity(100), duplicatesSearchLastAlbumTagRelation(0), duplicatesSearchLastRestrictions(0), groupingOperateOnAll(ApplicationSettings::OperationModes()), q(qq) { for (int i = 0; i != ApplicationSettings::Unspecified; ++i) { groupingOperateOnAll.insert((ApplicationSettings::OperationType)i, ApplicationSettings::Ask); } } ApplicationSettings::Private::~Private() { } void ApplicationSettings::Private::init() { albumCategoryNames.clear(); albumCategoryNames.append(i18n("Category")); albumCategoryNames.append(i18n("Travel")); albumCategoryNames.append(i18n("Holidays")); albumCategoryNames.append(i18n("Friends")); albumCategoryNames.append(i18n("Nature")); albumCategoryNames.append(i18n("Party")); albumCategoryNames.append(i18n("Todo")); albumCategoryNames.append(i18n("Miscellaneous")); albumCategoryNames.sort(); albumSortRole = ApplicationSettings::ByFolder; imageSortOrder = ItemSortSettings::SortByFileName; imageSorting = ItemSortSettings::AscendingOrder; imageSeparationMode = ItemSortSettings::CategoryByAlbum; imageSeparationSortOrder = ItemSortSettings::AscendingOrder; itemLeftClickAction = ApplicationSettings::ShowPreview; thumbnailSize = ThumbnailSize::Medium; treeThumbnailSize = 22; treeviewFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont); sidebarTitleStyle = DMultiTabBar::AllIconsText; ratingFilterCond = ItemFilterSettings::GreaterEqualCondition; showSplash = true; useTrash = true; showTrashDeleteDialog = true; showPermanentDeleteDialog = true; sidebarApplyDirectly = false; useNativeFileDialog = false; drawFramesToGrouped = true; scrollItemToCenter = false; showOnlyPersonTagsInPeopleSidebar = false; iconShowName = false; iconShowSize = false; iconShowDate = false; iconShowModDate = false; iconShowTitle = false; iconShowComments = false; iconShowResolution = false; iconShowAspectRatio = false; iconShowTags = true; iconShowOverlays = true; iconShowFullscreen = true; iconShowRating = true; iconShowImageFormat = true; iconShowCoordinates = true; iconviewFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont); toolTipsFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont); showToolTips = false; tooltipShowFileName = true; tooltipShowFileDate = false; tooltipShowFileSize = false; tooltipShowImageType = false; tooltipShowImageDim = true; tooltipShowImageAR = true; tooltipShowPhotoMake = true; tooltipShowPhotoLens = true; tooltipShowPhotoDate = true; tooltipShowPhotoFocal = true; tooltipShowPhotoExpo = true; tooltipShowPhotoMode = true; tooltipShowPhotoFlash = false; tooltipShowPhotoWb = false; tooltipShowAlbumName = false; tooltipShowTitles = false; tooltipShowComments = true; tooltipShowTags = true; tooltipShowLabelRating = true; tooltipShowVideoAspectRatio = true; tooltipShowVideoAudioBitRate = true; tooltipShowVideoAudioChannelType = true; tooltipShowVideoAudioCodec = true; tooltipShowVideoDuration = true; tooltipShowVideoFrameRate = true; tooltipShowVideoVideoCodec = true; showAlbumToolTips = false; tooltipShowAlbumTitle = true; tooltipShowAlbumDate = true; tooltipShowAlbumCollection = true; tooltipShowAlbumCategory = true; tooltipShowAlbumCaption = true; tooltipShowAlbumPreview = false; previewShowIcons = true; showThumbbar = true; recursiveAlbums = false; recursiveTags = true; allGroupsOpen = false; showFolderTreeViewItemsCount = false; syncToDigikam = false; syncToBaloo = false; albumSortChanged = false; - faceDetectionAccuracy = 0.8; + faceDetectionAccuracy = 0.7; minimumSimilarityBound = 40; duplicatesSearchLastMinSimilarity = 90; duplicatesSearchLastMaxSimilarity = 100; duplicatesSearchLastAlbumTagRelation = 0; duplicatesSearchLastRestrictions = 0; scanAtStart = true; cleanAtStart = true; databaseDirSetAtCmd = false; albumMonitoring = false; stringComparisonType = ApplicationSettings::Natural; applicationStyle = qApp->style()->objectName(); applicationIcon = QString(); applicationFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont); for (int i = 0 ; i != ApplicationSettings::Unspecified ; ++i) { groupingOperateOnAll.insert((ApplicationSettings::OperationType)i, ApplicationSettings::Ask); } q->connect(q, SIGNAL(balooSettingsChanged()), q, SLOT(applyBalooSettings())); } } // namespace Digikam