Skip to content

Commit bfa8eff

Browse files
committed
RiaPreferences: Add option to use recently used folder as default in file dialogs
1 parent 37f5359 commit bfa8eff

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

ApplicationLibCode/Application/RiaPreferences.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,16 @@ RiaPreferences::RiaPreferences()
233233
CAF_PDM_InitField( &m_writeEchoInGrdeclFiles, "writeEchoInGrdeclFiles", false, "Write NOECHO and ECHO in GRDECL files" );
234234
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_writeEchoInGrdeclFiles );
235235

236+
CAF_PDM_InitField( &m_useRecentlyUsedFolderAsDefault,
237+
"useRecentlyUsedFolderAsDefault",
238+
false,
239+
"Use Recently Used Folder/File as Default",
240+
"",
241+
"When enabled, file dialogs will open at the most recently used folder/file path. "
242+
"When disabled, the last used directory combined with the default filter pattern is used.",
243+
"" );
244+
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_useRecentlyUsedFolderAsDefault );
245+
236246
CAF_PDM_InitFieldNoDefault( &m_gridCalculationExpressionFolder, "gridCalculationExpressionFolder", "Grid Calculation Expression Folder" );
237247
CAF_PDM_InitFieldNoDefault( &m_summaryCalculationExpressionFolder,
238248
"summaryCalculationExpressionFolder",
@@ -504,6 +514,9 @@ void RiaPreferences::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering&
504514
#endif
505515
else if ( uiConfigName == RiaPreferences::tabNameImportExport() )
506516
{
517+
caf::PdmUiGroup* diskOpsGroup = uiOrdering.addNewGroup( "Disk Operations" );
518+
diskOpsGroup->add( &m_useRecentlyUsedFolderAsDefault );
519+
507520
caf::PdmUiGroup* importGroup = uiOrdering.addNewGroup( "Import" );
508521
importGroup->add( &m_surfaceImportResamplingDistance );
509522
importGroup->add( &m_multiLateralWellPattern );
@@ -857,6 +870,14 @@ bool RiaPreferences::writeEchoInGrdeclFiles() const
857870
return m_writeEchoInGrdeclFiles;
858871
}
859872

873+
//--------------------------------------------------------------------------------------------------
874+
///
875+
//--------------------------------------------------------------------------------------------------
876+
bool RiaPreferences::useRecentlyUsedFolderAsDefault() const
877+
{
878+
return m_useRecentlyUsedFolderAsDefault;
879+
}
880+
860881
//--------------------------------------------------------------------------------------------------
861882
///
862883
//--------------------------------------------------------------------------------------------------

ApplicationLibCode/Application/RiaPreferences.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ class RiaPreferences : public caf::PdmObject
8888
void setLastUsedPlotTemplatePath( const QString& templatePath );
8989
bool openExportedPdfInViewer() const;
9090
bool writeEchoInGrdeclFiles() const;
91+
bool useRecentlyUsedFolderAsDefault() const;
9192

9293
RiaDefines::ThemeEnum guiTheme() const;
9394

@@ -196,6 +197,7 @@ class RiaPreferences : public caf::PdmObject
196197
caf::PdmField<double> m_pageBottomMargin;
197198
caf::PdmField<bool> m_openExportedPdfInViewer;
198199
caf::PdmField<bool> m_writeEchoInGrdeclFiles;
200+
caf::PdmField<bool> m_useRecentlyUsedFolderAsDefault;
199201

200202
caf::PdmField<QString> m_plotTemplateFolders;
201203
caf::PdmField<int> m_maxPlotTemplateFoldersDepth;

ApplicationLibCode/Commands/RicRecursiveFileSearchDialog.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include "RiaFilePathTools.h"
2323
#include "RiaFileSearchTools.h"
2424
#include "RiaGuiApplication.h"
25+
#include "RiaPreferences.h"
2526
#include "RiaStdStringTools.h"
2627
#include "RiaStringListSerializer.h"
2728

@@ -234,7 +235,15 @@ RicRecursiveFileSearchDialogResult RicRecursiveFileSearchDialog::runRecursiveSea
234235
dialog.m_fileFilterField->setCurrentText( fileNameFilter );
235236
dialog.m_fileFilterField->setEditable( true );
236237

237-
dialog.m_pathFilterField->setCurrentText( QDir::toNativeSeparators( pathFilterText ) );
238+
// Use most recently used path from registry (index 1) when preference is enabled, otherwise use constructed fallback (index 0)
239+
if ( RiaPreferences::current()->useRecentlyUsedFolderAsDefault() && dialog.m_pathFilterField->count() > 1 )
240+
{
241+
dialog.m_pathFilterField->setCurrentIndex( 1 );
242+
}
243+
else
244+
{
245+
dialog.m_pathFilterField->setCurrentText( QDir::toNativeSeparators( pathFilterText ) );
246+
}
238247
dialog.m_pathFilterField->setEditable( true );
239248

240249
if ( !fileTypes.empty() )

0 commit comments

Comments
 (0)