From e1e7c542c6267c14486cf8041743b439559dca65 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 14 Aug 2015 16:45:23 +0200 Subject: [PATCH] OS X: Provide a setting for file system case sensitivity in preferences Change-Id: Idaafb55ab4cf1fb1b525f3f911ecff291e035bb2 Task-number: QTCREATORBUG-13507 Reviewed-by: Daniel Teske Reviewed-by: Leena Miettinen --- .../editormanager/editormanager.cpp | 30 +++ src/plugins/coreplugin/systemsettings.cpp | 36 +++ src/plugins/coreplugin/systemsettings.ui | 248 +++++++++++------- 3 files changed, 212 insertions(+), 102 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 8cdc6a12339..493d928fa75 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -110,6 +110,7 @@ static const char autoSaveEnabledKey[] = "EditorManager/AutoSaveEnabled"; static const char autoSaveIntervalKey[] = "EditorManager/AutoSaveInterval"; static const char warnBeforeOpeningBigTextFilesKey[] = "EditorManager/WarnBeforeOpeningBigTextFiles"; static const char bigTextFileSizeLimitKey[] = "EditorManager/BigTextFileSizeLimitInMB"; +static const char fileSystemCaseSensitivityKey[] = "Core/FileSystemCaseSensitivity"; static const char scratchBufferKey[] = "_q_emScratchBuffer"; @@ -1014,6 +1015,14 @@ void EditorManagerPrivate::saveSettings() qsettings->setValue(QLatin1String(warnBeforeOpeningBigTextFilesKey), d->m_warnBeforeOpeningBigFilesEnabled); qsettings->setValue(QLatin1String(bigTextFileSizeLimitKey), d->m_bigFileSizeLimitInMB); + + Qt::CaseSensitivity defaultSensitivity + = OsSpecificAspects(HostOsInfo::hostOs()).fileNameCaseSensitivity(); + Qt::CaseSensitivity sensitivity = HostOsInfo::fileNameCaseSensitivity(); + if (defaultSensitivity == sensitivity) + qsettings->remove(QLatin1String(fileSystemCaseSensitivityKey)); + else + qsettings->setValue(QLatin1String(fileSystemCaseSensitivityKey), sensitivity); } void EditorManagerPrivate::readSettings() @@ -1033,6 +1042,27 @@ void EditorManagerPrivate::readSettings() d->m_bigFileSizeLimitInMB = qs->value(QLatin1String(bigTextFileSizeLimitKey)).toInt(); } + if (qs->contains(QLatin1String(fileSystemCaseSensitivityKey))) { + Qt::CaseSensitivity defaultSensitivity + = OsSpecificAspects(HostOsInfo::hostOs()).fileNameCaseSensitivity(); + bool ok = false; + Qt::CaseSensitivity sensitivity = defaultSensitivity; + int sensitivitySetting = qs->value(QLatin1String(fileSystemCaseSensitivityKey)).toInt(&ok); + if (ok) { + switch (Qt::CaseSensitivity(sensitivitySetting)) { + case Qt::CaseSensitive: + sensitivity = Qt::CaseSensitive; + break; + case Qt::CaseInsensitive: + sensitivity = Qt::CaseInsensitive; + } + } + if (sensitivity == defaultSensitivity) + HostOsInfo::unsetOverrideFileNameCaseSensitivity(); + else + HostOsInfo::setOverrideFileNameCaseSensitivity(sensitivity); + } + SettingsDatabase *settings = ICore::settingsDatabase(); if (settings->contains(QLatin1String(documentStatesKey))) d->m_editorStates = settings->value(QLatin1String(documentStatesKey)) diff --git a/src/plugins/coreplugin/systemsettings.cpp b/src/plugins/coreplugin/systemsettings.cpp index f7b30f134b2..deff823007c 100644 --- a/src/plugins/coreplugin/systemsettings.cpp +++ b/src/plugins/coreplugin/systemsettings.cpp @@ -112,6 +112,31 @@ QWidget *SystemSettings::widget() } } + if (HostOsInfo::isMacHost()) { + Qt::CaseSensitivity defaultSensitivity + = OsSpecificAspects(HostOsInfo::hostOs()).fileNameCaseSensitivity(); + if (defaultSensitivity == Qt::CaseSensitive) { + m_page->fileSystemCaseSensitivityChooser->addItem(tr("Case Sensitive (Default)"), + Qt::CaseSensitive); + } else { + m_page->fileSystemCaseSensitivityChooser->addItem(tr("Case Sensitive"), + Qt::CaseSensitive); + } + if (defaultSensitivity == Qt::CaseInsensitive) { + m_page->fileSystemCaseSensitivityChooser->addItem(tr("Case Insensitive (Default)"), + Qt::CaseInsensitive); + } else { + m_page->fileSystemCaseSensitivityChooser->addItem(tr("Case Insensitive"), + Qt::CaseInsensitive); + } + if (HostOsInfo::fileNameCaseSensitivity() == Qt::CaseSensitive) + m_page->fileSystemCaseSensitivityChooser->setCurrentIndex(0); + else + m_page->fileSystemCaseSensitivityChooser->setCurrentIndex(1); + } else { + m_page->fileSystemCaseSensitivityWidget->hide(); + } + updatePath(); connect(VcsManager::instance(), SIGNAL(configurationChanged(const IVersionControl*)), @@ -139,6 +164,17 @@ void SystemSettings::apply() EditorManagerPrivate::setWarnBeforeOpeningBigFilesEnabled( m_page->warnBeforeOpeningBigFiles->isChecked()); EditorManagerPrivate::setBigFileSizeLimit(m_page->bigFilesLimitSpinBox->value()); + + if (HostOsInfo::isMacHost()) { + Qt::CaseSensitivity defaultSensitivity + = OsSpecificAspects(HostOsInfo::hostOs()).fileNameCaseSensitivity(); + Qt::CaseSensitivity selectedSensitivity = Qt::CaseSensitivity( + m_page->fileSystemCaseSensitivityChooser->currentData().toInt()); + if (defaultSensitivity == selectedSensitivity) + HostOsInfo::unsetOverrideFileNameCaseSensitivity(); + else + HostOsInfo::setOverrideFileNameCaseSensitivity(selectedSensitivity); + } } void SystemSettings::finish() diff --git a/src/plugins/coreplugin/systemsettings.ui b/src/plugins/coreplugin/systemsettings.ui index 945dd7a0128..0133031d984 100644 --- a/src/plugins/coreplugin/systemsettings.ui +++ b/src/plugins/coreplugin/systemsettings.ui @@ -17,6 +17,9 @@ System + + + @@ -24,97 +27,36 @@ - - - - true - - - - - - - Reset to default. - - - Reset - - - - - - - External file browser: - - - - - - - - - - Reset to default. - - - Reset - - - - - - - ? - - - - :/core/images/help.png:/core/images/help.png - - - - - - - Patch command: - - - - - - - - + + - + - When files are externally modified: + Warn before opening text files greater than + + + true - - - 0 + + + MB + + + 1 + + + 500 + + + 5 - - - Always Ask - - - - - Reload All Unchanged Editors - - - - - Ignore Modifications - - - + Qt::Horizontal @@ -128,7 +70,7 @@ - + @@ -191,36 +133,39 @@ - - + + - + - Warn before opening text files greater than - - - true + When files are externally modified: - - - MB - - - 1 - - - 500 - - - 5 + + + 0 + + + Always Ask + + + + + Reload All Unchanged Editors + + + + + Ignore Modifications + + - + Qt::Horizontal @@ -234,6 +179,105 @@ + + + + Patch command: + + + + + + + ? + + + + :/core/images/help.png:/core/images/help.png + + + + + + + Reset to default. + + + Reset + + + + + + + + + + External file browser: + + + + + + + Reset to default. + + + Reset + + + + + + + true + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + <html>Influences how file names are matched to decide if they are the same. + + + File system case sensitivity: + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + +