From 15a249eb546885a6fe69c3292000da175526c966 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sat, 16 Jan 2021 22:35:48 +0800 Subject: [PATCH] Improve detection of file extension string --- src/base/utils/fs.cpp | 12 +++++++++--- src/gui/autoexpandabledialog.cpp | 10 ++++------ 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/src/base/utils/fs.cpp b/src/base/utils/fs.cpp index e48429f3f..47921ce53 100644 --- a/src/base/utils/fs.cpp +++ b/src/base/utils/fs.cpp @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -76,9 +77,14 @@ QString Utils::Fs::toUniformPath(const QString &path) */ QString Utils::Fs::fileExtension(const QString &filename) { - const QString ext = QString(filename).remove(QB_EXT); - const int pointIndex = ext.lastIndexOf('.'); - return (pointIndex >= 0) ? ext.mid(pointIndex + 1) : QString(); + const QString name = filename.endsWith(QB_EXT) +#if (QT_VERSION >= QT_VERSION_CHECK(5, 10, 0)) + ? filename.chopped(QB_EXT.length()) +#else + ? filename.left(filename.length() - QB_EXT.length()) +#endif + : filename; + return QMimeDatabase().suffixForFileName(name); } QString Utils::Fs::fileName(const QString &filePath) diff --git a/src/gui/autoexpandabledialog.cpp b/src/gui/autoexpandabledialog.cpp index aa5f470d2..b59a0c1b1 100644 --- a/src/gui/autoexpandabledialog.cpp +++ b/src/gui/autoexpandabledialog.cpp @@ -28,6 +28,7 @@ #include "autoexpandabledialog.h" +#include "base/utils/fs.h" #include "ui_autoexpandabledialog.h" #include "utils.h" @@ -57,12 +58,9 @@ QString AutoExpandableDialog::getText(QWidget *parent, const QString &title, con d.m_ui->textEdit->selectAll(); if (excludeExtension) { - int lastDotIndex = text.lastIndexOf('.'); - if ((lastDotIndex > 3) && (text.mid(lastDotIndex - 4, 4).toLower() == ".tar")) - lastDotIndex -= 4; - // Select file name without extension, except dot files like .gitignore - if (lastDotIndex > 0) - d.m_ui->textEdit->setSelection(0, lastDotIndex); + const QString extension = Utils::Fs::fileExtension(text); + if (!extension.isEmpty()) + d.m_ui->textEdit->setSelection(0, (text.length() - extension.length() - 1)); } bool res = d.exec();