The advantage of my proposal is that it always makes the extension visible in the "filename" field; it doesn't hide the extension the first time it's saved.
It's also easier to understand and occupies only one continuous block of code.
I've realized that it's not necessary to include the ".qtt" format in the conditional statement. Since it's a template, Qtractor will never suggest it as an extension in an open file, so there's no risk of duplicating the extension when saving a second time.
It would look like this:
// Always avoid to store session on extracted directories...
sFilename = sessionArchivePath(sFilename);
// Try to rename as if a backup is about...
sFilename = sessionBackupPath(sFilename);
// NEW>> We ensure that filename adds the default extension if it is missing
// and that it does not duplicate if it exists
if (! (sFilename.endsWith(".qtr") ||
sFilename.endsWith(".qts") ||
sFilename.endsWith(".qtz")) ) {
sFilename = sFilename + "." + sExt;
}
#if 1//QT_VERSION < QT_VERSION_CHECK(4, 4, 0)
sFilename = QFileDialog::getSaveFileName(pParentWidget,
sTitle, sFilename, sFilter, nullptr, options);
#else
But this is just my opinion; both options solve the problem.
The advantage of my proposal is that it always makes the extension visible in the "filename" field; it doesn't hide the extension the first time it's saved.
It's also easier to understand and occupies only one continuous block of code.
I've realized that it's not necessary to include the ".qtt" format in the conditional statement. Since it's a template, Qtractor will never suggest it as an extension in an open file, so there's no risk of duplicating the extension when saving a second time.
It would look like this:
// Always avoid to store session on extracted directories... sFilename = sessionArchivePath(sFilename); // Try to rename as if a backup is about... sFilename = sessionBackupPath(sFilename); // NEW>> We ensure that filename adds the default extension if it is missing // and that it does not duplicate if it exists if (! (sFilename.endsWith(".qtr") || sFilename.endsWith(".qts") || sFilename.endsWith(".qtz")) ) { sFilename = sFilename + "." + sExt; } #if 1//QT_VERSION < QT_VERSION_CHECK(4, 4, 0) sFilename = QFileDialog::getSaveFileName(pParentWidget, sTitle, sFilename, sFilter, nullptr, options); #elseBut this is just my opinion; both options solve the problem.
Thanks :).