Preferences : Set initial selection when selecting plot templates

This commit is contained in:
Magne Sjaastad 2022-08-18 13:31:49 +02:00
parent bea90bc841
commit c6beb3b52d
4 changed files with 41 additions and 5 deletions

View File

@ -56,8 +56,23 @@ void RicSelectPlotTemplateUi::setMultiSelectMode( bool multiSelect )
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSelectPlotTemplateUi::setInitialSelection( std::vector<QString> selectedTemplates )
void RicSelectPlotTemplateUi::setInitialSelection( const std::vector<QString>& selectedTemplates )
{
auto plotTemplateRoot = RimProject::current()->rootPlotTemplateItem();
std::vector<RimPlotTemplateFileItem*> fileItems;
RimPlotTemplateFolderItem::allPlotTemplates( fileItems, plotTemplateRoot );
for ( const auto& selectedTemplate : selectedTemplates )
{
for ( const auto& fileItem : fileItems )
{
if ( fileItem->absoluteFilePath() == selectedTemplate )
{
m_selectedPlotTemplates.push_back( fileItem );
}
}
}
}
//--------------------------------------------------------------------------------------------------

View File

@ -39,7 +39,7 @@ public:
RicSelectPlotTemplateUi();
void setMultiSelectMode( bool multiSelect );
void setInitialSelection( std::vector<QString> selectedTemplates );
void setInitialSelection( const std::vector<QString>& selectedTemplates );
std::vector<RimPlotTemplateFileItem*> selectedPlotTemplates();

View File

@ -83,7 +83,7 @@ void RimPlotTemplateFolderItem::updateIconState() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<RimPlotTemplateFileItem*> RimPlotTemplateFolderItem::fileNames() const
std::vector<RimPlotTemplateFileItem*> RimPlotTemplateFolderItem::fileItems() const
{
return m_fileNames.children();
}
@ -105,6 +105,24 @@ void RimPlotTemplateFolderItem::appendOptionItemsForPlotTemplates( QList<caf::Pd
appendOptionItemsForPlotTemplatesRecursively( options, templateFolderItem, 0 );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimPlotTemplateFolderItem::allPlotTemplates( std::vector<RimPlotTemplateFileItem*>& fileTemplates,
RimPlotTemplateFolderItem* templateFolderItem )
{
auto fileItems = templateFolderItem->fileItems();
for ( auto fileItem : fileItems )
{
fileTemplates.push_back( fileItem );
}
for ( auto folder : templateFolderItem->subFolders() )
{
allPlotTemplates( fileTemplates, folder );
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -230,7 +248,7 @@ void RimPlotTemplateFolderItem::appendOptionItemsForPlotTemplatesRecursively( QL
caf::IconProvider templateIcon( ":/SummaryTemplate16x16.png" );
caf::IconProvider ensTemplateIcon( ":/SummaryEnsembleTemplate16x16.png" );
auto files = templateFolderItem->fileNames();
auto files = templateFolderItem->fileItems();
for ( auto file : files )
{
caf::IconProvider icon = templateIcon;

View File

@ -43,11 +43,14 @@ public:
void createRootFolderItemsFromFolderPaths( const QStringList& folderPaths );
std::vector<RimPlotTemplateFileItem*> fileNames() const;
std::vector<RimPlotTemplateFileItem*> fileItems() const;
std::vector<RimPlotTemplateFolderItem*> subFolders() const;
static void appendOptionItemsForPlotTemplates( QList<caf::PdmOptionItemInfo>& options,
RimPlotTemplateFolderItem* templateFolderItem );
static void allPlotTemplates( std::vector<RimPlotTemplateFileItem*>& fileItems,
RimPlotTemplateFolderItem* templateFolderItem );
void updateIconState() const;
private: