diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 675ae98d6a12f035af96a10bec4bf407fa0ec540..6698230b8747d978ed59b5d57e2e1f545fb9650f 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -97,6 +97,28 @@ static QString customStylesPath() return path; } +static QString createColorSchemeFileName(const QString &pattern) +{ + const QString stylesPath = customStylesPath(); + QString baseFileName = stylesPath; + baseFileName += pattern; + + // Find an available file name + int i = 1; + QString fileName; + do { + fileName = baseFileName.arg((i == 1) ? QString() : QString::number(i)); + ++i; + } while (QFile::exists(fileName)); + + // Create the base directory when it doesn't exist + if (!QFile::exists(stylesPath) && !QDir().mkpath(stylesPath)) { + qWarning() << "Failed to create color scheme directory:" << stylesPath; + return QString(); + } + + return fileName; +} // ------- FontSettingsPagePrivate FontSettingsPagePrivate::FontSettingsPagePrivate(const TextEditor::FormatDescriptions &fd, @@ -135,9 +157,8 @@ FontSettingsPagePrivate::FontSettingsPagePrivate(const TextEditor::FormatDescrip } if (m_value.colorScheme() != defaultScheme) { // Save it as a color scheme file - QString stylesPath = customStylesPath(); - if (QFile::exists(stylesPath) || QDir().mkpath(stylesPath)) { - QString schemeFileName = stylesPath + QLatin1String("customized.xml"); + QString schemeFileName = createColorSchemeFileName(QLatin1String("customized%1.xml")); + if (!schemeFileName.isEmpty()) { if (m_value.saveColorScheme(schemeFileName) && settings) m_value.toSettings(m_category, settings); } @@ -335,31 +356,18 @@ void FontSettingsPage::cloneColorScheme() if (!d_ptr->m_value.loadColorScheme(entry.fileName, d_ptr->m_descriptions)) return; - QString baseDir = customStylesPath(); - QString baseFileName = baseDir; - baseFileName.append(QFileInfo(entry.fileName).completeBaseName()); + QString baseFileName = QFileInfo(entry.fileName).completeBaseName(); + baseFileName += QLatin1String("_copy%1.xml"); + QString fileName = createColorSchemeFileName(baseFileName); - // Find an available file name - int i = 1; - QString fileName; - do { - fileName = baseFileName; - fileName.append(QString("_copy%1.xml").arg((i == 1) ? QString() : QString::number(i))); - ++i; - } while (QFile::exists(fileName)); + if (!fileName.isEmpty()) { + ColorScheme scheme = d_ptr->m_value.colorScheme(); + scheme.setName(tr("%1 (copy)").arg(scheme.name())); + scheme.save(fileName); + d_ptr->m_value.setColorSchemeFileName(fileName); - // Create the base directory when it doesn't exist - if (!QFile::exists(baseDir) && !QDir().mkpath(baseDir)) { - qWarning() << "Failed to create color scheme directory:" << baseDir; - return; + refreshColorSchemeList(); } - - ColorScheme scheme = d_ptr->m_value.colorScheme(); - scheme.setName(tr("%1 (copy)").arg(scheme.name())); - scheme.save(fileName); - d_ptr->m_value.setColorSchemeFileName(fileName); - - refreshColorSchemeList(); } void FontSettingsPage::deleteColorScheme()