Skip to content

Commit 9e76d4d

Browse files
author
Charles PIGNEROL
committed
Version 6.7.0. QtFileDialogUtilities::completeFileName method that adds an extension from a Qt extension filter to a file name if necessary.
1 parent a6af399 commit 9e76d4d

File tree

4 files changed

+63
-4
lines changed

4 files changed

+63
-4
lines changed

cmake/version.cmake

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#
44

55
set (QT_UTIL_MAJOR_VERSION "6")
6-
set (QT_UTIL_MINOR_VERSION "6")
7-
set (QT_UTIL_RELEASE_VERSION "1")
6+
set (QT_UTIL_MINOR_VERSION "7")
7+
set (QT_UTIL_RELEASE_VERSION "0")
88
set (QT_UTIL_VERSION ${QT_UTIL_MAJOR_VERSION}.${QT_UTIL_MINOR_VERSION}.${QT_UTIL_RELEASE_VERSION})
99

1010

src/QtUtil/QtFileDialogUtilities.cpp

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,38 @@
11
#include "QtUtil/QtFileDialogUtilities.h"
2+
#include "QtUtil/QtUnicodeHelper.h"
3+
#include <TkUtil/File.h>
4+
#include <TkUtil/UTF8String.h>
25
#include <assert.h>
6+
#include <sstream>
37

8+
using namespace TkUtil;
49
using namespace std;
510

11+
static const Charset charset ("àéèùô");
12+
USE_ENCODING_AUTODETECTION
13+
14+
15+
/**
16+
* @return La première extension du filtre Qt reçu en argument (format <I>NOM (*.ext1 *.ext2 ... *.extn)</I>.
17+
*/
18+
static string getFirstExtension (const string& filter)
19+
{
20+
UTF8String prepared (filter);
21+
prepared.replace (string ("("), string (" "), true); // => nom *.ext1)
22+
prepared.replace (string ("*"), string (""), true); // => nom .ext1)
23+
prepared.replace (string (")"), string (""), true); // => nom *.ext1
24+
istringstream stream (prepared.utf8 ( ));
25+
string name, ext;
26+
stream >> name >> ext;
27+
28+
29+
if ((false == stream.fail ( )) && (false == stream.bad ( )))
30+
return ext;
31+
32+
return string ( );
33+
} // getFirstExtension
34+
35+
636

737
QtFileDialogUtilities::QtFileDialogUtilities ( )
838
{
@@ -76,3 +106,18 @@ bool QtFileDialogUtilities::extensionMatches (const string& extension, const vec
76106

77107
return false;
78108
} // QtFileDialogUtilities::extensionMatches
109+
110+
111+
string QtFileDialogUtilities::completeFileName (const string& path, const string& filter)
112+
{
113+
File file (path);
114+
if (0 != file.getExtension ( ).length ( ))
115+
return path;
116+
117+
// Le fichier n'a pas d'extension, on rajoute la première du filtre
118+
const string ext = getFirstExtension (filter);
119+
UTF8String newPath (charset);
120+
newPath << path << ext;
121+
122+
return newPath.utf8 ( );
123+
} // QtFileDialogUtilities::completeFileName

src/QtUtil/public/QtUtil/QtFileDialogUtilities.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ class QtFileDialogUtilities
1919
static std::string extensionTail (const std::string& extension);
2020

2121
/**
22-
* @return Un veteur contenant les parties terminales des extensions du filtre Qt transmis en argument.
22+
* @return Un vecteur contenant les parties terminales des extensions du filtre Qt transmis en argument.
2323
*/
2424
static std::vector<std::string> nameFilterToExtensions (const QString& filters);
2525

@@ -29,6 +29,14 @@ class QtFileDialogUtilities
2929
*/
3030
static bool extensionMatches (const std::string& extension, const std::vector<std::string>& extensions);
3131

32+
/**
33+
* @param Nom de fichier proposé
34+
* @param Filtre Qt utilisé lors du choix du fichier
35+
* @return Le nom de fichier avec extension. Si le nom proposé n'en n'a pas alors la première du filtre est ajoutée.
36+
* @since 6.7.0
37+
*/
38+
static std::string completeFileName (const std::string& path, const std::string& filter);
39+
3240

3341
private :
3442

versions.txt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
Version 6.7.0 : 08/04/24
2+
===============
3+
4+
M�thode QtFileDialogUtilities::completeFileName qui ajoute si n�cessaire � un nom de fichier une extension issue d'un filtre
5+
Qt d'extensions.
6+
7+
18
Version 6.6.1 : 29/11/24
29
===============
310

@@ -13,7 +20,6 @@ Classe ActionCompletionNotifier permettant d'afficher automatiquement une notifi
1320
Les notifications syst�mes peuvent utiliser l'ic�ne de l'application.
1421

1522

16-
1723
Version 6.5.0 : 16/09/24
1824
===============
1925

0 commit comments

Comments
 (0)